vc-create-dashboard 2.9.8 → 3.0.1

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.
@@ -1,4 +1,5 @@
1
- import { Component, EventEmitter, HostListener, Input, Output, ViewChild, } from '@angular/core';
1
+ import { Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild, } from '@angular/core';
2
+ import * as dayjs from 'dayjs';
2
3
  import { TextCountPipe } from './pipes/text-count.pipe';
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "./services/create-dashboard.service";
@@ -10,16 +11,16 @@ import * as i6 from "./pipes/text-count.pipe";
10
11
  import * as i7 from "@angular/common";
11
12
  import * as i8 from "@vcomply/editor";
12
13
  import * as i9 from "../ui-kit/formgroup/cs-radio/cs-radio.component";
13
- import * as i10 from "ng2-date-picker";
14
- import * as i11 from "@angular/forms";
15
- import * as i12 from "../ui-kit/tooltip/tooltip.directive";
16
- import * as i13 from "./configure-widgets/configure-widgets/configure-widgets.component";
17
- import * as i14 from "../ui-kit/popover/popover.component";
18
- import * as i15 from "../ui-kit/popover/popover.directive";
19
- import * as i16 from "../ui-kit/v-loader/loader-inline/loader-inline.component";
20
- import * as i17 from "../ui-kit/snack-bar/snack-bar/snack-bar.component";
21
- import * as i18 from "./directives/scroll-in-view.directive";
22
- import * as i19 from "../ui-kit/smiley-dialog/smiley-dialog.component";
14
+ import * as i10 from "@angular/forms";
15
+ import * as i11 from "../ui-kit/tooltip/tooltip.directive";
16
+ import * as i12 from "./configure-widgets/configure-widgets/configure-widgets.component";
17
+ import * as i13 from "../ui-kit/popover/popover.component";
18
+ import * as i14 from "../ui-kit/popover/popover.directive";
19
+ import * as i15 from "../ui-kit/v-loader/loader-inline/loader-inline.component";
20
+ import * as i16 from "../ui-kit/snack-bar/snack-bar/snack-bar.component";
21
+ import * as i17 from "./directives/scroll-in-view.directive";
22
+ import * as i18 from "../ui-kit/smiley-dialog/smiley-dialog.component";
23
+ import * as i19 from "ng2-date-picker";
23
24
  import * as i20 from "./user-list/user-list.component";
24
25
  import * as i21 from "./responsibility-center/responsibility-center.component";
25
26
  import * as i22 from "./categories/categories.component";
@@ -173,6 +174,9 @@ export class CreateDashboardComponent {
173
174
  groupList;
174
175
  groupsEnabled = false;
175
176
  totalgroups;
177
+ fromDatePickerPopup;
178
+ toDatePickerPopup;
179
+ openedDatePicker = '';
176
180
  constructor(createDashboardService, paginationService, cdr, snackBar, popoverService, configureWidgetsService, textCount) {
177
181
  this.createDashboardService = createDashboardService;
178
182
  this.paginationService = paginationService;
@@ -215,7 +219,7 @@ export class CreateDashboardComponent {
215
219
  this.showRiskCategory = false;
216
220
  }
217
221
  }, (error) => {
218
- console.log(error);
222
+ console.error(error);
219
223
  });
220
224
  }
221
225
  /**
@@ -233,14 +237,17 @@ export class CreateDashboardComponent {
233
237
  this.activeSelector = event ? type : '';
234
238
  }
235
239
  openFromDatePicker() {
240
+ this.openedDatePicker = 'FROM_DATE';
236
241
  this.fromDatePicker?.api?.open();
237
242
  this.datePickerOverlay = true;
238
243
  }
239
244
  openToDatePicker() {
245
+ this.openedDatePicker = 'TO_DATE';
240
246
  this.toDatePicker?.api?.open();
241
247
  this.datePickerOverlay = true;
242
248
  }
243
249
  closeFromDatePicker() {
250
+ this.fromDatePicker?.api?.close();
244
251
  if (!this.dashboardForm.selectedFromDate) {
245
252
  this.dashboardForm.selectedToDate = undefined;
246
253
  this.hideToDate = true;
@@ -263,7 +270,6 @@ export class CreateDashboardComponent {
263
270
  this.hideToDate = false;
264
271
  }, 20);
265
272
  }
266
- this.fromDatePicker?.api?.close();
267
273
  this.datePickerOverlay = false;
268
274
  }
269
275
  closeToDatePicker() {
@@ -282,16 +288,11 @@ export class CreateDashboardComponent {
282
288
  }
283
289
  getCurrentDate() {
284
290
  let today = new Date();
285
- return (today.getDate() + '-' + (today.getMonth() + 1) + '-' + today.getFullYear());
291
+ return dayjs(today).format('DD-MM-YYYY');
286
292
  }
287
293
  setToDate(data) {
288
294
  let today = new Date(data);
289
- return (today.getDate() +
290
- 1 +
291
- '-' +
292
- (today.getMonth() + 1) +
293
- '-' +
294
- today.getFullYear());
295
+ return dayjs(today).format('DD-MM-YYYY');
295
296
  }
296
297
  getFromDate(data) {
297
298
  let today = new Date(data);
@@ -464,9 +465,6 @@ export class CreateDashboardComponent {
464
465
  this.complianceCategoriesListLoaded = true;
465
466
  });
466
467
  }
467
- saveSelectedCategory(event) {
468
- console.log('event==>>>', event);
469
- }
470
468
  getCategoryList() {
471
469
  this.createDashboardService.getCategoryList().subscribe((res) => {
472
470
  this.riskCategoryList.strategic.list = res.strategic_arr;
@@ -891,7 +889,6 @@ export class CreateDashboardComponent {
891
889
  }
892
890
  populateDashboardForm(data) {
893
891
  try {
894
- console.log(' datattttta ===> ', data, this.groupList);
895
892
  (this.dashboardForm.dashboardName = data?.dashboard_name),
896
893
  (this.dashboardForm.dashboardDescriptionText =
897
894
  data?.description[0]?.content ?? ''),
@@ -929,7 +926,7 @@ export class CreateDashboardComponent {
929
926
  }, 20);
930
927
  }
931
928
  catch (error) {
932
- console.log('populate dashboard error =>', error);
929
+ console.error('populate dashboard error =>', error);
933
930
  }
934
931
  }
935
932
  setFrequency(event, mode) {
@@ -1049,12 +1046,35 @@ export class CreateDashboardComponent {
1049
1046
  });
1050
1047
  });
1051
1048
  }
1049
+ documentClick(event) {
1050
+ const fromDateInputElement = document.getElementById(this.openedDatePicker.toLowerCase()) || null;
1051
+ const datePickerCalendarContainer = document.getElementsByClassName('dp-day-calendar-container')[0];
1052
+ const openedElement = this.openedDatePicker === 'FROM_DATE'
1053
+ ? this.fromDatePickerPopup
1054
+ : this.toDatePickerPopup;
1055
+ const isOutsideFromDateInput = !openedElement.nativeElement.contains(event.target);
1056
+ const isNotFromDateElement = event.target !== fromDateInputElement;
1057
+ const isNotInsideCalendar = !datePickerCalendarContainer.contains(event.target);
1058
+ const selectedDatePicker = this.openedDatePicker === 'FROM_DATE'
1059
+ ? this.fromDatePicker
1060
+ : this.toDatePicker;
1061
+ if (isOutsideFromDateInput && isNotFromDateElement && isNotInsideCalendar) {
1062
+ this.documentClickListener(event.target, openedElement, selectedDatePicker);
1063
+ }
1064
+ }
1065
+ documentClickListener(target, openedElements, selectedDatePicker) {
1066
+ if (!openedElements.nativeElement.contains(target) &&
1067
+ selectedDatePicker?.areCalendarsShown) {
1068
+ selectedDatePicker?.api?.close();
1069
+ this.datePickerOverlay = false;
1070
+ }
1071
+ }
1052
1072
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CreateDashboardComponent, deps: [{ token: i1.CreateDashboardService }, { token: i2.PaginationService }, { token: i0.ChangeDetectorRef }, { token: i3.SnackBarService }, { token: i4.PopoverService }, { token: i5.ConfigureWidgetsService }, { token: i6.TextCountPipe }], target: i0.ɵɵFactoryTarget.Component });
1053
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CreateDashboardComponent, selector: "app-create-dashboard", inputs: { feature: "feature", mode: "mode", dashboardId: "dashboardId", createdBy: "createdBy", configureWidget: "configureWidget" }, outputs: { close: "close" }, host: { listeners: { "document:keydown.escape": "onKeydownHandler($event)" } }, providers: [TextCountPipe], viewQueries: [{ propertyName: "fromDatePicker", first: true, predicate: ["fromDatePicker"], descendants: true }, { propertyName: "toDatePicker", first: true, predicate: ["toDatePicker"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<app-snack-bar></app-snack-bar>\r\n<div class=\"create-dashboard\" *ngIf=\"!openConfigureWidgets\">\r\n <div\r\n class=\"create-dashboard-container vx-d-flex vx-justify-end\"\r\n [class.animate-slideInRight]=\"animation\"\r\n >\r\n <div\r\n class=\"more-option\"\r\n *ngIf=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <app-user-list\r\n *ngIf=\"activeSelector === 'whoCanView'\"\r\n (saveSelectedUsers)=\"saveSelectedList('whoCanView', $event)\"\r\n (closeUserList)=\"activateSelector('', false)\"\r\n [totalPages]=\"totalPages\"\r\n [totalList]=\"totalList\"\r\n [listDetails]=\"listDetails\"\r\n [totalgroupscount]=\"totalgroups\"\r\n [feature]=\"feature\"\r\n ></app-user-list>\r\n <app-responsibility-center\r\n *ngIf=\"activeSelector === 'rcList'\"\r\n [responsibilityCentersList]=\"responsibilityCentersList\"\r\n [radioSelection]=\"false\"\r\n [selectedResponsibilityCenters]=\"\r\n dashboardForm.selectedResponsibilityCenters\r\n \"\r\n [rcIdKey]=\"'item_id'\"\r\n (saveSelectedList)=\"saveSelectedList('rc', $event)\"\r\n (closeRcList)=\"activateSelector('', false)\"\r\n >\r\n </app-responsibility-center>\r\n <app-categories\r\n *ngIf=\"activeSelector === 'responsibilityCategories'\"\r\n [categoryList]=\"responsibilityCategoriesTree\"\r\n [allCategories]=\"allComplianceCategories\"\r\n [categoryIdKey]=\"'category_id'\"\r\n [selectedCategories]=\"dashboardForm.selectedResponsibilityCategories\"\r\n (saveSelectedCategory)=\"\r\n saveSelectedList('responsibilityCategories', $event)\r\n \"\r\n (closeCategoriesList)=\"activateSelector('', false)\"\r\n ></app-categories>\r\n <app-risk-categories\r\n *ngIf=\"activeSelector === 'riskCategories'\"\r\n [categoryList]=\"riskCategoryList\"\r\n [allCategories]=\"allRiskCategories\"\r\n [categoryIdKey]=\"'category_id'\"\r\n [selectedCategories]=\"dashboardForm.selectedRiskCategories\"\r\n (saveSelectedCategory)=\"saveSelectedList('riskCategory', $event)\"\r\n (closeCategoriesList)=\"activateSelector('', false)\"\r\n ></app-risk-categories>\r\n\r\n <app-frequency\r\n *ngIf=\"activeSelector === 'frequency'\"\r\n (closeFrequencyPopup)=\"activateSelector('', false)\"\r\n (saveFrequency)=\"saveFrequency($event)\"\r\n [savedFrequencyTab]=\"dashboardForm.selectedFrequencyType\"\r\n [selectedDate]=\"dashboardForm.frequencyDate\"\r\n [savedFrequencies]=\"dashboardForm.selectedFrequencies\"\r\n >\r\n </app-frequency>\r\n </div>\r\n <div\r\n class=\"vx-dialog-container side-dialog\"\r\n [class.tablet-width]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <app-loader-inline *ngIf=\"vLoader\"></app-loader-inline>\r\n\r\n <div class=\"form-group\" [class.disabled]=\"disabled\">\r\n <div\r\n class=\"vx-dialog-body-container\"\r\n (scroll)=\"animateImage()\"\r\n [class.hidden-scroll]=\"popoverService.stopScroll\"\r\n >\r\n <!-- Dashboard Name -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <div class=\"image\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/what.svg\"\r\n *ngIf=\"\r\n !dashboardForm.dashboardName || activeSelector === 'name'\r\n \"\r\n alt=\"\"\r\n />\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"dashboardForm.dashboardName && activeSelector !== 'name'\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\">\r\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >Dashboard Name\r\n <span class=\"require vx-txt-red vx-fs-16 vx-fw-400\"\r\n >*</span\r\n ></label\r\n >\r\n <div class=\"vx-input-group\">\r\n <input\r\n class=\"textField\"\r\n placeholder=\"Add dashboard name (Max limit: 30 characters).\"\r\n [(ngModel)]=\"dashboardForm.dashboardName\"\r\n (keydown)=\"activeSelector = 'name'\"\r\n (focusin)=\"activateSelector('name', true)\"\r\n (focusout)=\"activateSelector('name', false)\"\r\n />\r\n\r\n <span\r\n class=\"counter\"\r\n *ngIf=\"dashboardForm?.dashboardName?.length > 0\"\r\n >{{ 30 - dashboardForm.dashboardName.length }}</span\r\n >\r\n </div>\r\n\r\n <p\r\n class=\"vx-txt-error\"\r\n [appScrollInView]=\"true\"\r\n *ngIf=\"\r\n submitted &&\r\n (dashboardForm?.dashboardName?.length > 30 ||\r\n !dashboardForm?.dashboardName)\r\n \"\r\n >\r\n {{\r\n dashboardForm.dashboardName.length > 30\r\n ? \"You have exceeded the maximum character limit of 30 characters.\"\r\n : \"Please enter a name for this Dashboard.\"\r\n }}\r\n </p>\r\n\r\n <div class=\"vx-input-group vx-mt-2\">\r\n <vcomply-editor\r\n [editorConfig]=\"dashboardDescription\"\r\n [(ngModel)]=\"dashboardForm.dashboardDescriptionText\"\r\n ></vcomply-editor>\r\n <span\r\n class=\"counter\"\r\n *ngIf=\"dashboardForm?.dashboardDescriptionText?.length > 0\"\r\n >{{\r\n 250 -\r\n (dashboardForm?.dashboardDescriptionText | textCount)\r\n }}</span\r\n >\r\n </div>\r\n\r\n <p\r\n class=\"vx-txt-error\"\r\n [appScrollInView]=\"true\"\r\n *ngIf=\"\r\n submitted &&\r\n (dashboardForm?.dashboardDescriptionText | textCount) > 250\r\n \"\r\n >\r\n You have exceeded the maximum character limit of 250\r\n characters.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Who -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'whoCanView'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'whoCanView' &&\r\n activeSelector !== 'name'\r\n \"\r\n >\r\n <div class=\"image\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/who.svg\"\r\n *ngIf=\"\r\n dashboardForm?.selectedViewers?.length == 0 ||\r\n activeSelector === 'whoCanView'\r\n \"\r\n alt=\"\"\r\n />\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"\r\n dashboardForm?.selectedViewers?.length > 0 &&\r\n activeSelector !== 'whoCanView'\r\n \"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\">\r\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >Who can view this dashboard?<span\r\n class=\"require vx-txt-red vx-fs-16 vx-fw-400\"\r\n >*</span\r\n ></label\r\n >\r\n <div\r\n *ngIf=\"dashboardForm?.selectedViewers?.length == 0\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('whoCanView', true)\"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Who can view this dashboard?\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"dashboardForm?.selectedViewers?.length > 0\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <ng-container *ngIf=\"!groupsEnabled\" id=\"onlyuserslist\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngFor=\"\r\n let user of dashboardForm?.selectedViewers?.slice(0, 1)\r\n \"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\"\r\n *ngIf=\"\r\n !listDetails.nonRemovableUsersList.includes(\r\n user.member_id\r\n )\r\n \"\r\n (click)=\"remove('whoCanView', user)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [arTooltip]=\"user.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ user.member_name }}</span\r\n >\r\n <button\r\n *ngIf=\"\r\n dashboardForm?.selectedViewers?.length > 1 &&\r\n !groupsEnabled\r\n \"\r\n class=\"countBtn greenBg vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"userList.popover()\"\r\n placement=\"left\"\r\n >\r\n +{{ dashboardForm?.selectedViewers?.slice(1).length }}\r\n </button>\r\n </div>\r\n <app-popover #userList [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let user of dashboardForm?.selectedViewers\r\n | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [arTooltip]=\"user?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n class=\"icons cross-icon\"\r\n *ngIf=\"\r\n !listDetails.nonRemovableUsersList.includes(\r\n user.member_id\r\n ) && !groupsEnabled\r\n \"\r\n (click)=\"remove('whoCanView', user)\"\r\n >&#xe90d;</i\r\n >\r\n {{ user?.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </ng-container>\r\n\r\n <div *ngIf=\"groupsEnabled\" class=\"vx-d-flex vx-align-center\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <span class=\"chipName vx-fs-11 vx-label-txt\"\r\n >USER(S)</span\r\n >\r\n <button\r\n class=\"countBtn greenBg vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"userCount.popover()\"\r\n placement=\"left\"\r\n >\r\n {{ dashboardForm?.selectedViewers?.length }}\r\n </button>\r\n </div>\r\n <span\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"\r\n dashboardForm?.selectedGroup?.length &&\r\n dashboardForm?.selectedViewers?.length\r\n \"\r\n >&</span\r\n >\r\n <div\r\n *ngIf=\"dashboardForm?.selectedGroup?.length\"\r\n id=\"usersandgroups\"\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <span class=\"chipName vx-fs-11 vx-label-txt\"\r\n >USER GROUP(S)</span\r\n >\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"groupCount.popover()\"\r\n placement=\"right\"\r\n >\r\n {{ dashboardForm?.selectedGroup?.length }}\r\n </button>\r\n </div>\r\n\r\n <app-popover #userCount [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"let data of dashboardForm?.selectedViewers\"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [arTooltip]=\"data.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n class=\"icons cross-icon\"\r\n *ngIf=\"\r\n !listDetails.nonRemovableUsersList.includes(\r\n data.member_id\r\n )\r\n \"\r\n (click)=\"remove('whoCanView', data)\"\r\n >&#xe90d;</i\r\n >\r\n {{ data.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n\r\n <app-popover #groupCount [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of dashboardForm?.selectedGroup\">\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [arTooltip]=\"data.group_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n class=\"icons cross-icon\"\r\n (click)=\"remove('whoCanViewGroup', data)\"\r\n >&#xe90d;</i\r\n >\r\n {{ data.group_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'whoCanView'\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('whoCanView', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\">&#xe90c;</i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Responsibility Center -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'rcList'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'rcList' &&\r\n activeSelector !== 'name'\r\n \"\r\n >\r\n <div class=\"image\">\r\n <img\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCenters?.length == 0 ||\r\n activeSelector === 'rcList'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/responsibility-center.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCenters?.length > 0 &&\r\n activeSelector !== 'rcList'\r\n \"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\">\r\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >RESPONSIBILITY CENTER(S)</label\r\n >\r\n <div\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCenters?.length == 0\r\n \"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('rcList', true)\"\r\n [class.error]=\"\r\n submitted &&\r\n dashboardForm?.selectedResponsibilityCenters?.length == 0 &&\r\n dashboardForm?.selectedResponsibilityCategories?.length ==\r\n 0 &&\r\n dashboardForm?.selectedRiskCategories?.length == 0\r\n \"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Select the Responsibility Center(s) that you would like<br />displayed\r\n in the Dashboard, if any.\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCenters?.length > 0\r\n \"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngFor=\"\r\n let rc of dashboardForm?.selectedResponsibilityCenters?.slice(\r\n 0,\r\n 1\r\n )\r\n \"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('rc', rc)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [arTooltip]=\"rc.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ rc.item_name }}</span\r\n >\r\n <button\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCenters?.length > 1\r\n \"\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"rcList.popover()\"\r\n placement=\"left\"\r\n >\r\n +{{\r\n dashboardForm?.selectedResponsibilityCenters?.slice(1)\r\n .length\r\n }}\r\n </button>\r\n\r\n <app-popover #rcList [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let rc of dashboardForm?.selectedResponsibilityCenters\r\n | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [arTooltip]=\"rc?.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n class=\"icons cross-icon\"\r\n (click)=\"remove('rc', rc)\"\r\n >&#xe90d;</i\r\n >\r\n {{ rc?.item_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'rcList'\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('rcList', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\">&#xe90c;</i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Program -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'responsibilityCategories'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'responsibilityCategories' &&\r\n activeSelector !== 'name'\r\n \"\r\n >\r\n <div class=\"image\">\r\n <img\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCategories?.length ==\r\n 0 || activeSelector === 'responsibilityCategories'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCategories?.length > 0 &&\r\n activeSelector !== 'responsibilityCategories'\r\n \"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\">\r\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >PROGRAM</label\r\n >\r\n <div\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCategories?.length == 0\r\n \"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('responsibilityCategories', true)\"\r\n [class.error]=\"\r\n submitted &&\r\n dashboardForm?.selectedResponsibilityCenters?.length == 0 &&\r\n dashboardForm?.selectedResponsibilityCategories?.length ==\r\n 0 &&\r\n dashboardForm?.selectedRiskCategories?.length == 0\r\n \"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Select the Program(s) that you would like displayed in\r\n the<br />Dashboard, if any.\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCategories?.length > 0\r\n \"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngFor=\"\r\n let rCategory of dashboardForm?.selectedResponsibilityCategories?.slice(\r\n 0,\r\n 1\r\n )\r\n \"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('responsibilityCategories', rCategory)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [arTooltip]=\"rCategory.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ rCategory.item_name }}</span\r\n >\r\n <button\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCategories\r\n ?.length > 1\r\n \"\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"rCategoryList.popover()\"\r\n placement=\"left\"\r\n >\r\n +{{\r\n dashboardForm?.selectedResponsibilityCategories?.slice(\r\n 1\r\n ).length\r\n }}\r\n </button>\r\n\r\n <app-popover #rCategoryList [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let rCategory of dashboardForm?.selectedResponsibilityCategories\r\n | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [arTooltip]=\"rCategory?.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n class=\"icons cross-icon\"\r\n (click)=\"\r\n remove(\r\n 'responsibilityCategories',\r\n rCategory\r\n )\r\n \"\r\n >&#xe90d;</i\r\n >\r\n {{ rCategory?.item_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'responsibilityCategories'\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('responsibilityCategories', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\">&#xe90c;</i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Category -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'riskCategories'\"\r\n *ngIf=\"showRiskCategory && isManageRisk\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'riskCategories' &&\r\n activeSelector !== 'name'\r\n \"\r\n >\r\n <div class=\"image\">\r\n <img\r\n *ngIf=\"\r\n dashboardForm?.selectedRiskCategories?.length == 0 ||\r\n activeSelector === 'riskCategories'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n *ngIf=\"\r\n dashboardForm?.selectedRiskCategories?.length > 0 &&\r\n activeSelector !== 'riskCategories'\r\n \"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\" *ngIf=\"isManageRisk\">\r\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >RISK CATEGORIES</label\r\n >\r\n <div\r\n *ngIf=\"dashboardForm?.selectedRiskCategories?.length == 0\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('riskCategories', true)\"\r\n [class.error]=\"\r\n submitted &&\r\n dashboardForm?.selectedResponsibilityCenters?.length == 0 &&\r\n dashboardForm?.selectedResponsibilityCategories?.length ==\r\n 0 &&\r\n dashboardForm?.selectedRiskCategories?.length == 0\r\n \"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Select the Risk Categories that you would like displayed<br />in\r\n the Dashboard, if any.\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"dashboardForm?.selectedRiskCategories?.length > 0\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngFor=\"\r\n let riskCategory of dashboardForm?.selectedRiskCategories?.slice(\r\n 0,\r\n 1\r\n )\r\n \"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('riskCategory', riskCategory)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [arTooltip]=\"riskCategory.category_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ riskCategory.category_name }}</span\r\n >\r\n <button\r\n *ngIf=\"dashboardForm?.selectedRiskCategories?.length > 1\"\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"riskList.popover()\"\r\n placement=\"left\"\r\n >\r\n +{{\r\n dashboardForm?.selectedRiskCategories?.slice(1).length\r\n }}\r\n </button>\r\n\r\n <app-popover #riskList [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let riskCategory of dashboardForm?.selectedRiskCategories\r\n | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [arTooltip]=\"riskCategory?.category_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n class=\"icons cross-icon\"\r\n (click)=\"remove('riskCategory', riskCategory)\"\r\n >&#xe90d;</i\r\n >\r\n {{ riskCategory?.category_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'riskCategories'\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('riskCategories', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\">&#xe90c;</i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Display Criteria -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <div class=\"image\">\r\n <img\r\n *ngIf=\"dashboardForm?.displayCriteria?.length == 0\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/who.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n *ngIf=\"dashboardForm?.displayCriteria?.length > 0\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\">\r\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >DISPLAY CRITERIA</label\r\n >\r\n <div class=\"radio-group\" *ngIf=\"showCriteria\">\r\n <app-cs-radio\r\n [checked]=\"dashboardForm.displayCriteria == 'or'\"\r\n (checkedEvent)=\"dashboardForm.displayCriteria = 'or'\"\r\n >\r\n Those Items that have been assigned to either the selected\r\n Responsibility Center(s) or the selected\r\n Categories.</app-cs-radio\r\n >\r\n\r\n <app-cs-radio\r\n [checked]=\"dashboardForm.displayCriteria == 'and'\"\r\n (checkedEvent)=\"dashboardForm.displayCriteria = 'and'\"\r\n >\r\n Those Items that have been assigned to both the selected\r\n Responsibility Center(s) and the selected\r\n Categories.</app-cs-radio\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Timeframe -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <div class=\"image\">\r\n <img\r\n *ngIf=\"\r\n !dashboardForm?.selectedFromDate ||\r\n !dashboardForm?.selectedToDate\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/when.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n *ngIf=\"\r\n dashboardForm?.selectedFromDate &&\r\n dashboardForm?.selectedToDate\r\n \"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\">\r\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >TIMEFRAME</label\r\n >\r\n <label class=\"vx-control-panel-sub-label\"\r\n >Select how long you would like the information selected to be\r\n displayed for. If no timeframe is selected, the information\r\n will be displayed permanently.</label\r\n >\r\n <div class=\"input-group vx-d-flex vx-justify-between\">\r\n <div class=\"date-select\">\r\n <i class=\"icons\">&#xe92d;</i>\r\n <input\r\n type=\"text\"\r\n [value]=\"\r\n dashboardForm?.selectedFromDate | date : 'dd MMM yyyy'\r\n \"\r\n [placeholder]=\"'From'\"\r\n (click)=\"openFromDatePicker()\"\r\n readonly\r\n />\r\n <dp-date-picker\r\n #fromDatePicker\r\n [(ngModel)]=\"dashboardForm.selectedFromDate\"\r\n placeholder=\"Select Date\"\r\n (onSelect)=\"\r\n closeFromDatePicker(); datePickerOverlay = false\r\n \"\r\n [config]=\"fromDatePickerConfig\"\r\n ></dp-date-picker>\r\n <div\r\n class=\"overlay\"\r\n (click)=\"closeFromDatePicker()\"\r\n *ngIf=\"datePickerOverlay\"\r\n ></div>\r\n </div>\r\n <div\r\n class=\"date-select\"\r\n *ngIf=\"!hideToDate\"\r\n [class.disabled]=\"!dashboardForm?.selectedFromDate\"\r\n >\r\n <i class=\"icons\">&#xe92d;</i>\r\n <input\r\n type=\"text\"\r\n [value]=\"\r\n dashboardForm?.selectedToDate | date : 'dd MMM yyyy'\r\n \"\r\n [placeholder]=\"'To'\"\r\n (click)=\"openToDatePicker()\"\r\n readonly\r\n />\r\n <dp-date-picker\r\n #toDatePicker\r\n [(ngModel)]=\"dashboardForm.selectedToDate\"\r\n placeholder=\"Select Date\"\r\n (onSelect)=\"\r\n closeToDatePicker(); datePickerOverlay = false\r\n \"\r\n [config]=\"toDatePickerConfig\"\r\n ></dp-date-picker>\r\n <div\r\n class=\"overlay\"\r\n (click)=\"closeToDatePicker()\"\r\n *ngIf=\"datePickerOverlay\"\r\n ></div>\r\n </div>\r\n </div>\r\n <p\r\n class=\"vx-txt-error\"\r\n [appScrollInView]=\"true\"\r\n *ngIf=\"\r\n submitted &&\r\n dashboardForm.selectedFromDate &&\r\n !dashboardForm.selectedToDate\r\n \"\r\n >\r\n Select a time-frame.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Email Summary -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'frequency'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'frequency' &&\r\n activeSelector !== 'name'\r\n \"\r\n >\r\n <div class=\"image\">\r\n <img\r\n *ngIf=\"!dashboardForm.frequencyMessage\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/send-resolution.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n *ngIf=\"dashboardForm.frequencyMessage\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\">\r\n <div class=\"vx-form-group vx-d-block\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >Email Summaries</label\r\n >\r\n <label class=\"vx-control-panel-sub-label\"\r\n >If you would like to send a summary of this Dashboard, please\r\n select a frequency(By default VComply sends a weekly\r\n Summary).</label\r\n >\r\n <div\r\n *ngIf=\"!dashboardForm.frequencyMessage\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Email Summaries\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"dashboardForm.frequencyMessage\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"selectBoxText vx-fs-13 vx-paragraph-txt\"\r\n [arTooltip]=\"dashboardForm.frequencyMessage\"\r\n placement=\"bottom-left\"\r\n type=\"black\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"false\"\r\n [innerHTML]=\"dashboardForm.frequencyMessage\"\r\n ></div>\r\n\r\n <button\r\n *ngIf=\"\r\n dashboardForm.frequencyMessage &&\r\n activeSelector !== 'frequency'\r\n \"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\">&#xe90c;</i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"button-block\">\r\n <button\r\n class=\"vx-btn block primary\"\r\n [disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n (click)=\"configureDashboard()\"\r\n >\r\n Next: Configure Widgets\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <button\r\n class=\"close-dialog\"\r\n type=\"button\"\r\n [disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n (click)=\"close.emit({ mode: 'discard' })\"\r\n [arTooltip]=\"'[Esc] to close'\"\r\n placement=\"left\"\r\n type=\"black\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n [class.hide]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <i class=\"icons\">&#xe93f;</i>\r\n </button>\r\n <div\r\n class=\"global-confirmation-alert\"\r\n *ngIf=\"\r\n submitted &&\r\n dashboardForm?.selectedResponsibilityCenters?.length == 0 &&\r\n dashboardForm?.selectedResponsibilityCategories?.length == 0 &&\r\n dashboardForm?.selectedRiskCategories?.length == 0\r\n \"\r\n >\r\n <div class=\"global-confirmation-alert-top\">\r\n <span class=\"icon-block\">\r\n <i class=\"icons\">&#xe930;</i>\r\n </span>\r\n <p class=\"text\" *ngIf=\"showRiskCategory\">\r\n Select a Responsibility Center, Program or Risk Category.\r\n </p>\r\n <p class=\"text\" *ngIf=\"!showRiskCategory\">\r\n Select a Responsibility Center or Program.\r\n </p>\r\n </div>\r\n <div class=\"global-confirmation-alert-bottom\">\r\n <p class=\"message\"></p>\r\n <div class=\"button-group\">\r\n <button class=\"fill\" type=\"button\" (click)=\"submitted = false\">\r\n OKAY\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<app-smiley-dialog\r\n *ngIf=\"isSmiley\"\r\n [message]=\"smileyMessage\"\r\n></app-smiley-dialog>\r\n\r\n<app-configure-widgets\r\n *ngIf=\"openConfigureWidgets\"\r\n [mode]=\"mode\"\r\n [displayedWidgets]=\"displayedWidgets\"\r\n [showRisk]=\"showRiskWidgets\"\r\n [showCompliance]=\"showComplianceWidgets\"\r\n [selectedWidgetsData]=\"selectedWidgets\"\r\n (widgetsDataModified)=\"setSelectedWidgets($event)\"\r\n (closeConfigureWidgets)=\"closeConfigureWidgets($event)\"\r\n></app-configure-widgets>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/dialog/dialog.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.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-right.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-left.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-right.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/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/animate/animation.css\";@import\"https://cdn.v-comply.com/design-system/css/animate/animate-slide-right.css\";::ng-deep .create-dashboard-container{width:100vw;background:#161b2fcc}::ng-deep .create-dashboard-container .vx-dialog-container{background-color:#fff;border:none;position:relative}@media screen and (max-width: 1280px){::ng-deep .create-dashboard-container .vx-dialog-container.tablet-width{width:28px}::ng-deep .create-dashboard-container .vx-dialog-container.tablet-width .form-group .vx-dialog-body-container{overflow:hidden}}::ng-deep .create-dashboard-container .vx-dialog-container button.close-dialog{display:flex;position:absolute;top:8px;right:8px;height:32px;width:32px;font-size:16px;color:#161b2f;cursor:pointer;background:transparent;border:none;border-radius:2px;z-index:2;align-items:center;justify-content:center}::ng-deep .create-dashboard-container .vx-dialog-container button.close-dialog:hover{background:#f1f1f1}::ng-deep .create-dashboard-container .vx-dialog-container button.close-dialog:disabled{pointer-events:none;filter:grayscale(1);opacity:.3}@media screen and (max-width: 1280px){::ng-deep .create-dashboard-container .vx-dialog-container button.close-dialog.hide{display:none}}::ng-deep .create-dashboard .more-option{width:calc(100% - 500px);border-right:1px solid #F1F1F1;float:left}@media screen and (max-width: 1280px){::ng-deep .create-dashboard .more-option{width:calc(100vw - 28px)}::ng-deep .create-dashboard .more-option app-user-list .user-list{right:28px}::ng-deep .create-dashboard .more-option app-responsibility-center .responsibility-center{right:28px}::ng-deep .create-dashboard .more-option app-categories .category-list{right:28px}::ng-deep .create-dashboard .more-option app-risk-categories .risk-category-list{right:28px}::ng-deep .create-dashboard .more-option app-frequency .create-frequency{right:28px}}::ng-deep .form-group{position:relative}::ng-deep .form-group .vx-dialog-body-container{padding:36px 28px 0 40px!important;height:calc(100vh - 50px);overflow:auto;margin-left:-22px;background-color:transparent;position:relative;border-radius:0 0 0 30px;background:transparent}@-moz-document url-prefix(){::ng-deep .form-group .vx-dialog-body-container.hidden-scroll{overflow:hidden}}::ng-deep .form-group .vx-dialog-body-container .form-group-row{display:flex}::ng-deep .form-group .vx-dialog-body-container .form-group-row .image{width:36px;min-width:36px;height:36px;margin-left:-36px;margin-right:20px;margin-top:28px;display:flex;align-items:center;justify-content:center}::ng-deep .form-group .vx-dialog-body-container .form-group-row .image img{width:100%}::ng-deep .form-group .vx-dialog-body-container .form-group-row .image .checkIcon{width:32px;height:32px;background:#fff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 #34aa44;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin-top:0}::ng-deep .form-group .vx-dialog-body-container .form-group-row .image .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}::ng-deep .form-group .vx-dialog-body-container .form-group-row .image .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form{width:100%}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group{position:relative}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group input{height:40px;border-radius:4px;border:1px solid #dbdbdb;outline:none;transition:all .2s ease-in-out}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group input::placeholder{color:#747576}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group input+marx-editor,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group input+vcomply-editor{margin-top:8px;display:block}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group input:hover{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group input:focus{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selectbox:after{border-left:none;border-bottom:1px solid #707070;border-right:1px solid #707070;border-top:none;content:\"\";display:inline-block;right:15px;position:absolute;top:calc(50% + 8px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selectbox:hover .custom-input{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected{height:40px;border-radius:4px;border:1px solid #f1f1f1;background:#fbfbfb;outline:none;position:relative;transition:all .2s ease-in-out}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .edit{border:1px solid #F1F1F1;border-radius:2px;background:#fff;outline:none;cursor:pointer;height:24px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .left{width:auto;display:flex}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .left.frequency-left{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:block;width:calc(100% - 70px)}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .chip-container{width:auto}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .chip-container .chip{border-radius:2px;box-shadow:0 0 3px #1e5dd31a;height:24px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:24px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .chip-container .chip i{cursor:pointer}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .chip-container .chip .value{max-width:100px;display:block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .chip-container span.chip+span.chip{margin-left:4px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .count{border-radius:2px;height:24px;padding:2px 8px;border:1px solid #1E5DD3;cursor:pointer;outline:none}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .user-group-chip-container{display:flex;width:calc(100% - 60px);align-items:center}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .user-group-chip-container .chip-inner{background:#fff;border-radius:2px;box-shadow:0 2px 4px #1e5dd31a;line-height:24px;padding:0 4px 0 8px;display:flex;align-items:center}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .user-group-chip-container .chip-inner .chip{background:transparent;border-radius:0;box-shadow:none;height:auto;line-height:unset;padding:0;color:#747576;max-width:300px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .user-group-chip-container .chip-inner button.count{background:#1e5dd3;border-radius:20px;color:#fff;height:16px;padding:0 6px;border:none;font-size:9px;line-height:16px;margin-left:4px;min-width:20px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .user-group-chip-container .chip-inner button.count.user{background:#34aa44}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group{display:flex;position:relative}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group input::placeholder{color:#747576}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group span.counter{background:transparent;color:#161b2f;font-size:9px;font-weight:500;position:absolute;top:0;right:0;border-radius:3px;height:16px;text-align:center;line-height:16px;padding:0 2px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group marx-editor,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group vcomply-editor{width:100%}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group marx-editor .editor-container .editable-block.bottom:before,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group vcomply-editor .editor-container .editable-block.bottom:before{opacity:1}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group.vx-input-group{margin-top:8px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor{display:block}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container{border-radius:4px;border-color:#dbdbdb}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container:focus-within,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container:focus-within,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container:hover,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container:hover{border-color:#1e5dd3}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container:focus-within .editor-tools,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container:focus-within .editor-tools,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container:hover .editor-tools,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container:hover .editor-tools{border-top-color:#1e5dd3!important;transition:none}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container .editable-block,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container .editable-block{min-height:60px;padding:11px 15px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;max-height:90px}@media not all and (min-resolution: .001dpcm){@supports (-webkit-appearance: none){::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container .editable-block:before,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container .editable-block:before{opacity:.72}}}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container .editor-tools,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container .editor-tools{border-color:#dbdbdb;border-radius:0 0 2px 2px;transition:none}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .custom-input{height:2.5rem;border-radius:.25rem;border:1px solid #DBDBDB;background:#fff;outline:none;padding:.1875rem .75rem;line-height:1.25rem;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;cursor:pointer}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .custom-input:empty:not(:focus):before{content:attr(aria-placeholder);line-height:16px;font-size:12px;width:94%;display:block;pointer-events:none}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .custom-input.error{border:1px solid #d93b41}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form label.vx-control-panel i{font-size:12px;color:#1e5dd3;margin-left:7px;cursor:pointer}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-control-panel-sub-label{color:#747576;font-size:.6875rem;font-weight:400;line-height:1rem;margin-bottom:.5rem;display:block;text-transform:none;width:100%;margin-top:0}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-control-panel-sub-label span.required{color:#eb2424}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form label.vx-control-panel+.vx-control-panel-sub-label{margin-top:-.5rem}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio label.radio-item span.radio{position:absolute;top:17px;left:12px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #DBDBDB;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio label.radio-item svg{position:absolute;top:17px;left:12px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio+app-cs-radio{margin-top:.5rem}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .date-select{position:relative;width:calc(50% - .25rem);overflow:hidden;height:40px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .date-select input{padding-left:36px!important;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;font-weight:400;width:100%;cursor:pointer}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .date-select input::placeholder{color:#747576}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .date-select i{display:flex;justify-content:center;align-items:center;height:39px;width:14px;position:absolute;left:12px;top:0;color:#bcbcbc;font-size:14px;pointer-events:none;z-index:1}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .date-select.disabled{pointer-events:none;filter:grayscale(1);opacity:1}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .date-select.disabled input{background:#f1f1f1}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form label.vx-control-panel span.sub-label{color:#747576;font-size:.6875rem;font-weight:400;line-height:1rem;text-transform:none;width:100%}::ng-deep .form-group .vx-dialog-body-container .form-group-row.disabled{pointer-events:none;filter:grayscale(1);opacity:.3}::ng-deep .form-group .vx-dialog-body-container .form-group-row.active{pointer-events:none;filter:grayscale(0);opacity:1}::ng-deep .form-group .vx-dialog-body-container .form-group-row.active .image{filter:grayscale(0)}::ng-deep .form-group .vx-dialog-body-container .form-group-row.active .image:before{display:none}::ng-deep .form-group .vx-dialog-body-container .form-group-row.active .form{opacity:1;filter:grayscale(0)}::ng-deep .form-group .vx-dialog-body-container .form-group-row.active .form .custom-input,::ng-deep .form-group .vx-dialog-body-container .form-group-row.active .form input[type=text]{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .form-group .vx-dialog-body-container .form-group-row.active .selectBoxEnable{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a;pointer-events:none}::ng-deep .form-group .vx-dialog-body-container:after{content:\"\";width:100%;display:block;height:30px;position:sticky;right:0;bottom:0;left:0;z-index:6;background:linear-gradient(to bottom,#fff0,#ffffffbf 22%,#fff);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#00ffffff\",endColorstr=\"#ffffff\",GradientType=0)}::ng-deep .form-group .button-block{position:relative;z-index:2}::ng-deep .form-group .button-block button{font-size:13px!important;letter-spacing:1.3px!important;height:50px;line-height:48px!important}::ng-deep .form-group .button-block button:disabled{background:#f1f1f1!important;border-color:#f1f1f1!important;color:#747576!important;opacity:1!important;filter:unset!important}::ng-deep .form-group.disabled{pointer-events:none;z-index:2}::ng-deep .form-group.disabled .image{position:relative;filter:grayscale(1)}::ng-deep .form-group.disabled .image:before{content:\"\";position:absolute;inset:0;background:#fff;opacity:.7}::ng-deep .form-group.disabled .form{opacity:.3;filter:grayscale(1)}@keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}.action-list{width:220px}.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}.action-list ul.action-item{display:block}.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}.action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}.action-list ul.action-item li button i{font-size:17px;margin-right:10px;color:#1c5bd1}.action-list ul.action-item li button:hover{background:#f3f3f3}.action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}.action-list ul.action-item li .avatar-card.within-con{display:block}.action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#4681ef;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}.action-list ul.action-item li .avatar-card .avatar img{width:100%}.action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}.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}.action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#1c5bd1;cursor:pointer;margin-right:4px}.action-list ul.action-item li .avatar-card span.value i.cross-icon{color:#747576}.action-list ul.action-item li .avatar-card.no-image{display:block}.action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}.action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}.action-list ul.action-item li .chip-item i{margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}.action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}.action-list ul.action-item li .chip-item span.id{font-size:9px}.action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}.action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}.action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}.action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}.global-confirmation-alert{display:block;position:absolute;z-index:9;right:0;bottom:0;left:0;background:#d93b41}.global-confirmation-alert-top{display:flex;align-items:center;justify-content:flex-start;padding:20px 20px 12px}.global-confirmation-alert span.icon-block{height:36px;width:36px;border-radius:50%;background:#fff;border:1px solid #DCDCDC;display:flex;justify-content:center;align-items:center;margin-right:16px}.global-confirmation-alert span.icon-block i{color:#d93b41;font-size:12px}.global-confirmation-alert p.text{color:#fff;font-size:14px;font-weight:300;margin:0;width:calc(100% - 52px)}.global-confirmation-alert-bottom{display:flex;align-items:center;padding:0 12px 12px 72px;background:#d93b41}.global-confirmation-alert-bottom .button-group{display:flex}.global-confirmation-alert-bottom p.message{font-size:14px;font-weight:500;margin:0;line-height:20px;color:#fff}.global-confirmation-alert button{height:24px;width:64px;border:1px solid #000;border-radius:2px;display:flex;align-items:center;justify-content:center;line-height:22px;cursor:pointer;font-size:11px;text-transform:uppercase;font-weight:500;padding:0}.global-confirmation-alert button+button{margin-left:4px}.global-confirmation-alert button.fill{background:#fff;color:#1e5dd3;border-color:#fff}.global-confirmation-alert button.outline{background:transparent;color:#fff;border-color:#fff}::ng-deep marx-modal .popup-modal-background,::ng-deep vcomply-modal .popup-modal-background{background-color:#161b2fcc!important}::ng-deep input.textField{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;font-size:13px;color:#747576;padding:8px 12px;position:relative;height:2.5rem;width:100%;transition:all .2s ease-in-out}::ng-deep input.textField::placeholder{font-size:13px;color:#747576}::ng-deep input.textField:hover,::ng-deep input.textField:focus{outline:none;border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectBoxEnable:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#747576;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .selectBoxEnable:hover,::ng-deep .selectBoxEnable:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable.disabled{background:#f1f1f1;pointer-events:none;opacity:1}::ng-deep .selectBoxEnable.error{border-color:#eb2424}::ng-deep .selectBoxSuccess{background:#f8f8f8;border-radius:.25rem;border:1px solid #f1f1f1;min-height:2.5rem;position:relative}::ng-deep .selectBoxSuccess .selectBoxText{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:22rem}::ng-deep .selectBoxSuccess button{background:transparent;border-radius:0;border:none}::ng-deep .selectBoxSuccess button.deleteBtn{color:#d93b41}::ng-deep .selectBoxSuccess .level-left{border-right:1px solid #f1f1f1;height:2.375rem;width:5rem}::ng-deep .selectBoxSuccess .level-left .level-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:4.5rem}::ng-deep .chipContainer{background:#fff;border-radius:.125rem;box-shadow:0 0 2px #1e5dd340;height:1.5rem}::ng-deep .chipContainer .cross{cursor:pointer;min-width:16px;width:16px;height:16px;display:flex;align-items:center;justify-content:center;background:transparent;border-radius:2px;margin-left:-4px}::ng-deep .chipContainer .cross:hover{background:#f1f1f1}::ng-deep .chipContainer .chipName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:6rem}::ng-deep .chipContainer .chipName.no-width{max-width:unset}::ng-deep .chipContainer button.countBtn{background:#1e5dd3;border-radius:1.25rem;border:none;min-width:1.5rem;height:1rem;margin:0 0 0 .5rem;padding:0 .25rem}::ng-deep .chipContainer button.countBtn.greenBg{background:#34aa44}\n"], dependencies: [{ kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.MarxEditorComponent, selector: "vcomply-editor", inputs: ["editorConfig"], outputs: ["comment", "sendSavedFiles", "popup"] }, { kind: "component", type: i9.CsRadioComponent, selector: "app-cs-radio", inputs: ["disabled", "readonly", "name", "checked", "value"], outputs: ["checkedEvent"] }, { kind: "component", type: i10.DatePickerComponent, selector: "dp-date-picker", inputs: ["config", "mode", "placeholder", "disabled", "displayDate", "theme", "minDate", "maxDate", "minTime", "maxTime"], outputs: ["open", "close", "onChange", "onGoToCurrent", "onLeftNav", "onRightNav", "onSelect"] }, { kind: "directive", type: i11.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: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i11.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i12.ToolTipDirective, selector: "[arTooltip]", inputs: ["arTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i13.ConfigureWidgetsComponent, selector: "app-configure-widgets", inputs: ["selectedWidgetsData", "displayedWidgets", "showRisk", "showCompliance", "mode"], outputs: ["widgetsDataModified", "closeConfigureWidgets"] }, { kind: "component", type: i14.PopoverComponent, selector: "app-popover", inputs: ["dontCloseonClick"], outputs: ["closedOnOverlay"] }, { kind: "directive", type: i15.PopoverDirective, selector: "[appPopover]", inputs: ["refrence", "placement"] }, { kind: "component", type: i16.LoaderInlineComponent, selector: "app-loader-inline" }, { kind: "component", type: i17.SnackBarComponent, selector: "app-snack-bar" }, { kind: "directive", type: i18.ScrollInViewDirective, selector: "[appScrollInView]", inputs: ["appScrollInView"] }, { kind: "component", type: i19.SmileyDialogComponent, selector: "app-smiley-dialog", inputs: ["message", "autoClose", "actionButtons"], outputs: ["action", "closeSmiley"] }, { kind: "component", type: i20.UserListComponent, selector: "app-user-list", inputs: ["selectionType", "listDetails", "totalPages", "limit", "totalList", "feature", "totalgroupscount"], outputs: ["closeUserList", "saveSelectedUsers"] }, { kind: "component", type: i21.ResponsibilityCenterComponent, selector: "app-responsibility-center", inputs: ["responsibilityCentersList", "selectedResponsibilityCenters", "rcIdKey", "radioSelection"], outputs: ["saveSelectedList", "closeRcList"] }, { kind: "component", type: i22.CategoriesComponent, selector: "app-categories", inputs: ["categoryList", "allCategories", "categoryIdKey", "selectedCategories"], outputs: ["saveSelectedCategory", "closeList", "closeCategoriesList"] }, { kind: "component", type: i23.RiskCategoriesComponent, selector: "app-risk-categories", inputs: ["categoryList", "allCategories", "categoryIdKey", "selectedCategories"], outputs: ["saveSelectedCategory", "closeList", "closeCategoriesList"] }, { kind: "component", type: i24.FrequencyComponent, selector: "app-frequency", inputs: ["savedFrequencyTab", "savedFrequencies", "selectedDate"], outputs: ["closeFrequencyPopup", "saveFrequency"] }, { kind: "pipe", type: i7.SlicePipe, name: "slice" }, { kind: "pipe", type: i7.DatePipe, name: "date" }, { kind: "pipe", type: i6.TextCountPipe, name: "textCount" }] });
1073
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CreateDashboardComponent, selector: "app-create-dashboard", inputs: { feature: "feature", mode: "mode", dashboardId: "dashboardId", createdBy: "createdBy", configureWidget: "configureWidget" }, outputs: { close: "close" }, host: { listeners: { "document:keydown.escape": "onKeydownHandler($event)", "document:click": "documentClick($event)" } }, providers: [TextCountPipe], viewQueries: [{ propertyName: "fromDatePicker", first: true, predicate: ["fromDatePicker"], descendants: true }, { propertyName: "toDatePicker", first: true, predicate: ["toDatePicker"], descendants: true }, { propertyName: "fromDatePickerPopup", first: true, predicate: ["fromDatePicker"], descendants: true, read: ElementRef }, { propertyName: "toDatePickerPopup", first: true, predicate: ["toDatePicker"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<app-snack-bar></app-snack-bar>\r\n<div class=\"create-dashboard\" *ngIf=\"!openConfigureWidgets\">\r\n <div\r\n class=\"create-dashboard-container vx-d-flex vx-justify-end\"\r\n [class.animate-slideInRight]=\"animation\"\r\n >\r\n <div\r\n class=\"more-option\"\r\n *ngIf=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <app-user-list\r\n *ngIf=\"activeSelector === 'whoCanView'\"\r\n (saveSelectedUsers)=\"saveSelectedList('whoCanView', $event)\"\r\n (closeUserList)=\"activateSelector('', false)\"\r\n [totalPages]=\"totalPages\"\r\n [totalList]=\"totalList\"\r\n [listDetails]=\"listDetails\"\r\n [totalgroupscount]=\"totalgroups\"\r\n [feature]=\"feature\"\r\n ></app-user-list>\r\n <app-responsibility-center\r\n *ngIf=\"activeSelector === 'rcList'\"\r\n [responsibilityCentersList]=\"responsibilityCentersList\"\r\n [radioSelection]=\"false\"\r\n [selectedResponsibilityCenters]=\"\r\n dashboardForm.selectedResponsibilityCenters\r\n \"\r\n [rcIdKey]=\"'item_id'\"\r\n (saveSelectedList)=\"saveSelectedList('rc', $event)\"\r\n (closeRcList)=\"activateSelector('', false)\"\r\n >\r\n </app-responsibility-center>\r\n <app-categories\r\n *ngIf=\"activeSelector === 'responsibilityCategories'\"\r\n [categoryList]=\"responsibilityCategoriesTree\"\r\n [allCategories]=\"allComplianceCategories\"\r\n [categoryIdKey]=\"'category_id'\"\r\n [selectedCategories]=\"dashboardForm.selectedResponsibilityCategories\"\r\n (saveSelectedCategory)=\"\r\n saveSelectedList('responsibilityCategories', $event)\r\n \"\r\n (closeCategoriesList)=\"activateSelector('', false)\"\r\n ></app-categories>\r\n <app-risk-categories\r\n *ngIf=\"activeSelector === 'riskCategories'\"\r\n [categoryList]=\"riskCategoryList\"\r\n [allCategories]=\"allRiskCategories\"\r\n [categoryIdKey]=\"'category_id'\"\r\n [selectedCategories]=\"dashboardForm.selectedRiskCategories\"\r\n (saveSelectedCategory)=\"saveSelectedList('riskCategory', $event)\"\r\n (closeCategoriesList)=\"activateSelector('', false)\"\r\n ></app-risk-categories>\r\n\r\n <app-frequency\r\n *ngIf=\"activeSelector === 'frequency'\"\r\n (closeFrequencyPopup)=\"activateSelector('', false)\"\r\n (saveFrequency)=\"saveFrequency($event)\"\r\n [savedFrequencyTab]=\"dashboardForm.selectedFrequencyType\"\r\n [selectedDate]=\"dashboardForm.frequencyDate\"\r\n [savedFrequencies]=\"dashboardForm.selectedFrequencies\"\r\n >\r\n </app-frequency>\r\n </div>\r\n <div\r\n class=\"vx-dialog-container side-dialog\"\r\n [class.tablet-width]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <app-loader-inline *ngIf=\"vLoader\"></app-loader-inline>\r\n\r\n <div class=\"form-group\" [class.disabled]=\"disabled\">\r\n <div\r\n class=\"vx-dialog-body-container\"\r\n (scroll)=\"animateImage()\"\r\n [class.hidden-scroll]=\"popoverService.stopScroll\"\r\n >\r\n <!-- Dashboard Name -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <div class=\"image\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/what.svg\"\r\n *ngIf=\"\r\n !dashboardForm.dashboardName || activeSelector === 'name'\r\n \"\r\n alt=\"\"\r\n />\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"dashboardForm.dashboardName && activeSelector !== 'name'\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\">\r\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >Dashboard Name\r\n <span class=\"require vx-txt-red vx-fs-16 vx-fw-400\"\r\n >*</span\r\n ></label\r\n >\r\n <div class=\"vx-input-group\">\r\n <input\r\n class=\"textField\"\r\n placeholder=\"Add dashboard name (Max limit: 30 characters).\"\r\n [(ngModel)]=\"dashboardForm.dashboardName\"\r\n (keydown)=\"activeSelector = 'name'\"\r\n (focusin)=\"activateSelector('name', true)\"\r\n (focusout)=\"activateSelector('name', false)\"\r\n />\r\n\r\n <span\r\n class=\"counter\"\r\n *ngIf=\"dashboardForm?.dashboardName?.length > 0\"\r\n >{{ 30 - dashboardForm.dashboardName.length }}</span\r\n >\r\n </div>\r\n\r\n <p\r\n class=\"vx-txt-error\"\r\n [appScrollInView]=\"true\"\r\n *ngIf=\"\r\n submitted &&\r\n (dashboardForm?.dashboardName?.length > 30 ||\r\n !dashboardForm?.dashboardName)\r\n \"\r\n >\r\n {{\r\n dashboardForm.dashboardName.length > 30\r\n ? \"You have exceeded the maximum character limit of 30 characters.\"\r\n : \"Please enter a name for this Dashboard.\"\r\n }}\r\n </p>\r\n\r\n <div class=\"vx-input-group vx-mt-2\">\r\n <vcomply-editor\r\n [editorConfig]=\"dashboardDescription\"\r\n [(ngModel)]=\"dashboardForm.dashboardDescriptionText\"\r\n ></vcomply-editor>\r\n <span\r\n class=\"counter\"\r\n *ngIf=\"dashboardForm?.dashboardDescriptionText?.length > 0\"\r\n >{{\r\n 250 -\r\n (dashboardForm?.dashboardDescriptionText | textCount)\r\n }}</span\r\n >\r\n </div>\r\n\r\n <p\r\n class=\"vx-txt-error\"\r\n [appScrollInView]=\"true\"\r\n *ngIf=\"\r\n submitted &&\r\n (dashboardForm?.dashboardDescriptionText | textCount) > 250\r\n \"\r\n >\r\n You have exceeded the maximum character limit of 250\r\n characters.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Who -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'whoCanView'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'whoCanView' &&\r\n activeSelector !== 'name'\r\n \"\r\n >\r\n <div class=\"image\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/who.svg\"\r\n *ngIf=\"\r\n dashboardForm?.selectedViewers?.length == 0 ||\r\n activeSelector === 'whoCanView'\r\n \"\r\n alt=\"\"\r\n />\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"\r\n dashboardForm?.selectedViewers?.length > 0 &&\r\n activeSelector !== 'whoCanView'\r\n \"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\">\r\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >Who can view this dashboard?<span\r\n class=\"require vx-txt-red vx-fs-16 vx-fw-400\"\r\n >*</span\r\n ></label\r\n >\r\n <div\r\n *ngIf=\"dashboardForm?.selectedViewers?.length == 0\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('whoCanView', true)\"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Who can view this dashboard?\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"dashboardForm?.selectedViewers?.length > 0\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <ng-container *ngIf=\"!groupsEnabled\" id=\"onlyuserslist\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngFor=\"\r\n let user of dashboardForm?.selectedViewers?.slice(0, 1)\r\n \"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\"\r\n *ngIf=\"\r\n !listDetails.nonRemovableUsersList.includes(\r\n user.member_id\r\n )\r\n \"\r\n (click)=\"remove('whoCanView', user)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [arTooltip]=\"user.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ user.member_name }}</span\r\n >\r\n <button\r\n *ngIf=\"\r\n dashboardForm?.selectedViewers?.length > 1 &&\r\n !groupsEnabled\r\n \"\r\n class=\"countBtn greenBg vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"userList.popover()\"\r\n placement=\"left\"\r\n >\r\n +{{ dashboardForm?.selectedViewers?.slice(1).length }}\r\n </button>\r\n </div>\r\n <app-popover #userList [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let user of dashboardForm?.selectedViewers\r\n | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [arTooltip]=\"user?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n class=\"icons cross-icon\"\r\n *ngIf=\"\r\n !listDetails.nonRemovableUsersList.includes(\r\n user.member_id\r\n ) && !groupsEnabled\r\n \"\r\n (click)=\"remove('whoCanView', user)\"\r\n >&#xe90d;</i\r\n >\r\n {{ user?.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </ng-container>\r\n\r\n <div *ngIf=\"groupsEnabled\" class=\"vx-d-flex vx-align-center\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <span class=\"chipName vx-fs-11 vx-label-txt\"\r\n >USER(S)</span\r\n >\r\n <button\r\n class=\"countBtn greenBg vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"userCount.popover()\"\r\n placement=\"left\"\r\n >\r\n {{ dashboardForm?.selectedViewers?.length }}\r\n </button>\r\n </div>\r\n <span\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"\r\n dashboardForm?.selectedGroup?.length &&\r\n dashboardForm?.selectedViewers?.length\r\n \"\r\n >&</span\r\n >\r\n <div\r\n *ngIf=\"dashboardForm?.selectedGroup?.length\"\r\n id=\"usersandgroups\"\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <span class=\"chipName vx-fs-11 vx-label-txt\"\r\n >USER GROUP(S)</span\r\n >\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"groupCount.popover()\"\r\n placement=\"right\"\r\n >\r\n {{ dashboardForm?.selectedGroup?.length }}\r\n </button>\r\n </div>\r\n\r\n <app-popover #userCount [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"let data of dashboardForm?.selectedViewers\"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [arTooltip]=\"data.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n class=\"icons cross-icon\"\r\n *ngIf=\"\r\n !listDetails.nonRemovableUsersList.includes(\r\n data.member_id\r\n )\r\n \"\r\n (click)=\"remove('whoCanView', data)\"\r\n >&#xe90d;</i\r\n >\r\n {{ data.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n\r\n <app-popover #groupCount [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of dashboardForm?.selectedGroup\">\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [arTooltip]=\"data.group_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n class=\"icons cross-icon\"\r\n (click)=\"remove('whoCanViewGroup', data)\"\r\n >&#xe90d;</i\r\n >\r\n {{ data.group_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'whoCanView'\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('whoCanView', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\">&#xe90c;</i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Responsibility Center -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'rcList'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'rcList' &&\r\n activeSelector !== 'name'\r\n \"\r\n >\r\n <div class=\"image\">\r\n <img\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCenters?.length == 0 ||\r\n activeSelector === 'rcList'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/responsibility-center.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCenters?.length > 0 &&\r\n activeSelector !== 'rcList'\r\n \"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\">\r\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >RESPONSIBILITY CENTER(S)</label\r\n >\r\n <div\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCenters?.length == 0\r\n \"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('rcList', true)\"\r\n [class.error]=\"\r\n submitted &&\r\n dashboardForm?.selectedResponsibilityCenters?.length == 0 &&\r\n dashboardForm?.selectedResponsibilityCategories?.length ==\r\n 0 &&\r\n dashboardForm?.selectedRiskCategories?.length == 0\r\n \"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Select the Responsibility Center(s) that you would like<br />displayed\r\n in the Dashboard, if any.\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCenters?.length > 0\r\n \"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngFor=\"\r\n let rc of dashboardForm?.selectedResponsibilityCenters?.slice(\r\n 0,\r\n 1\r\n )\r\n \"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('rc', rc)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [arTooltip]=\"rc.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ rc.item_name }}</span\r\n >\r\n <button\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCenters?.length > 1\r\n \"\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"rcList.popover()\"\r\n placement=\"left\"\r\n >\r\n +{{\r\n dashboardForm?.selectedResponsibilityCenters?.slice(1)\r\n .length\r\n }}\r\n </button>\r\n\r\n <app-popover #rcList [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let rc of dashboardForm?.selectedResponsibilityCenters\r\n | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [arTooltip]=\"rc?.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n class=\"icons cross-icon\"\r\n (click)=\"remove('rc', rc)\"\r\n >&#xe90d;</i\r\n >\r\n {{ rc?.item_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'rcList'\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('rcList', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\">&#xe90c;</i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Program -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'responsibilityCategories'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'responsibilityCategories' &&\r\n activeSelector !== 'name'\r\n \"\r\n >\r\n <div class=\"image\">\r\n <img\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCategories?.length ==\r\n 0 || activeSelector === 'responsibilityCategories'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCategories?.length > 0 &&\r\n activeSelector !== 'responsibilityCategories'\r\n \"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\">\r\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >PROGRAM</label\r\n >\r\n <div\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCategories?.length == 0\r\n \"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('responsibilityCategories', true)\"\r\n [class.error]=\"\r\n submitted &&\r\n dashboardForm?.selectedResponsibilityCenters?.length == 0 &&\r\n dashboardForm?.selectedResponsibilityCategories?.length ==\r\n 0 &&\r\n dashboardForm?.selectedRiskCategories?.length == 0\r\n \"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Select the Program(s) that you would like displayed in\r\n the<br />Dashboard, if any.\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCategories?.length > 0\r\n \"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngFor=\"\r\n let rCategory of dashboardForm?.selectedResponsibilityCategories?.slice(\r\n 0,\r\n 1\r\n )\r\n \"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('responsibilityCategories', rCategory)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [arTooltip]=\"rCategory.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ rCategory.item_name }}</span\r\n >\r\n <button\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCategories\r\n ?.length > 1\r\n \"\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"rCategoryList.popover()\"\r\n placement=\"left\"\r\n >\r\n +{{\r\n dashboardForm?.selectedResponsibilityCategories?.slice(\r\n 1\r\n ).length\r\n }}\r\n </button>\r\n\r\n <app-popover #rCategoryList [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let rCategory of dashboardForm?.selectedResponsibilityCategories\r\n | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [arTooltip]=\"rCategory?.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n class=\"icons cross-icon\"\r\n (click)=\"\r\n remove(\r\n 'responsibilityCategories',\r\n rCategory\r\n )\r\n \"\r\n >&#xe90d;</i\r\n >\r\n {{ rCategory?.item_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'responsibilityCategories'\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('responsibilityCategories', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\">&#xe90c;</i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Category -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'riskCategories'\"\r\n *ngIf=\"showRiskCategory && isManageRisk\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'riskCategories' &&\r\n activeSelector !== 'name'\r\n \"\r\n >\r\n <div class=\"image\">\r\n <img\r\n *ngIf=\"\r\n dashboardForm?.selectedRiskCategories?.length == 0 ||\r\n activeSelector === 'riskCategories'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n *ngIf=\"\r\n dashboardForm?.selectedRiskCategories?.length > 0 &&\r\n activeSelector !== 'riskCategories'\r\n \"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\" *ngIf=\"isManageRisk\">\r\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >RISK CATEGORIES</label\r\n >\r\n <div\r\n *ngIf=\"dashboardForm?.selectedRiskCategories?.length == 0\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('riskCategories', true)\"\r\n [class.error]=\"\r\n submitted &&\r\n dashboardForm?.selectedResponsibilityCenters?.length == 0 &&\r\n dashboardForm?.selectedResponsibilityCategories?.length ==\r\n 0 &&\r\n dashboardForm?.selectedRiskCategories?.length == 0\r\n \"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Select the Risk Categories that you would like displayed<br />in\r\n the Dashboard, if any.\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"dashboardForm?.selectedRiskCategories?.length > 0\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngFor=\"\r\n let riskCategory of dashboardForm?.selectedRiskCategories?.slice(\r\n 0,\r\n 1\r\n )\r\n \"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('riskCategory', riskCategory)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [arTooltip]=\"riskCategory.category_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ riskCategory.category_name }}</span\r\n >\r\n <button\r\n *ngIf=\"dashboardForm?.selectedRiskCategories?.length > 1\"\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"riskList.popover()\"\r\n placement=\"left\"\r\n >\r\n +{{\r\n dashboardForm?.selectedRiskCategories?.slice(1).length\r\n }}\r\n </button>\r\n\r\n <app-popover #riskList [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let riskCategory of dashboardForm?.selectedRiskCategories\r\n | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [arTooltip]=\"riskCategory?.category_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n class=\"icons cross-icon\"\r\n (click)=\"remove('riskCategory', riskCategory)\"\r\n >&#xe90d;</i\r\n >\r\n {{ riskCategory?.category_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'riskCategories'\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('riskCategories', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\">&#xe90c;</i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Display Criteria -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <div class=\"image\">\r\n <img\r\n *ngIf=\"dashboardForm?.displayCriteria?.length == 0\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/who.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n *ngIf=\"dashboardForm?.displayCriteria?.length > 0\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\">\r\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >DISPLAY CRITERIA</label\r\n >\r\n <div class=\"radio-group\" *ngIf=\"showCriteria\">\r\n <app-cs-radio\r\n [checked]=\"dashboardForm.displayCriteria == 'or'\"\r\n (checkedEvent)=\"dashboardForm.displayCriteria = 'or'\"\r\n >\r\n Those Items that have been assigned to either the selected\r\n Responsibility Center(s) or the selected\r\n Categories.</app-cs-radio\r\n >\r\n\r\n <app-cs-radio\r\n [checked]=\"dashboardForm.displayCriteria == 'and'\"\r\n (checkedEvent)=\"dashboardForm.displayCriteria = 'and'\"\r\n >\r\n Those Items that have been assigned to both the selected\r\n Responsibility Center(s) and the selected\r\n Categories.</app-cs-radio\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Timeframe -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <div class=\"image\">\r\n <img\r\n *ngIf=\"\r\n !dashboardForm?.selectedFromDate ||\r\n !dashboardForm?.selectedToDate\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/when.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n *ngIf=\"\r\n dashboardForm?.selectedFromDate &&\r\n dashboardForm?.selectedToDate\r\n \"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\">\r\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >TIMEFRAME</label\r\n >\r\n <label class=\"vx-control-panel-sub-label\"\r\n >Select how long you would like the information selected to be\r\n displayed for. If no timeframe is selected, the information\r\n will be displayed permanently.</label\r\n >\r\n <div class=\"input-group vx-d-flex vx-justify-between\">\r\n <div class=\"date-select\">\r\n <i class=\"icons\">&#xe92d;</i>\r\n <input\r\n type=\"text\"\r\n id=\"from_date\"\r\n [value]=\"\r\n dashboardForm?.selectedFromDate | date : 'dd MMM yyyy'\r\n \"\r\n [placeholder]=\"'From'\"\r\n (click)=\"openFromDatePicker()\"\r\n readonly\r\n />\r\n <dp-date-picker\r\n #fromDatePicker\r\n [(ngModel)]=\"dashboardForm.selectedFromDate\"\r\n placeholder=\"Select Date\"\r\n (onSelect)=\"\r\n closeFromDatePicker(); datePickerOverlay = false\r\n \"\r\n [config]=\"fromDatePickerConfig\"\r\n ></dp-date-picker>\r\n <div\r\n class=\"overlay\"\r\n (click)=\"closeFromDatePicker()\"\r\n *ngIf=\"datePickerOverlay\"\r\n ></div>\r\n </div>\r\n <div\r\n class=\"date-select\"\r\n *ngIf=\"!hideToDate\"\r\n [class.disabled]=\"!dashboardForm?.selectedFromDate\"\r\n >\r\n <i class=\"icons\">&#xe92d;</i>\r\n <input\r\n type=\"text\"\r\n id=\"to_date\"\r\n [value]=\"\r\n dashboardForm?.selectedToDate | date : 'dd MMM yyyy'\r\n \"\r\n [placeholder]=\"'To'\"\r\n (click)=\"openToDatePicker()\"\r\n readonly\r\n />\r\n <dp-date-picker\r\n #toDatePicker\r\n [(ngModel)]=\"dashboardForm.selectedToDate\"\r\n placeholder=\"Select Date\"\r\n (onSelect)=\"\r\n closeToDatePicker(); datePickerOverlay = false\r\n \"\r\n [config]=\"toDatePickerConfig\"\r\n ></dp-date-picker>\r\n <div\r\n class=\"overlay\"\r\n (click)=\"closeToDatePicker()\"\r\n *ngIf=\"datePickerOverlay\"\r\n ></div>\r\n </div>\r\n </div>\r\n <p\r\n class=\"vx-txt-error\"\r\n [appScrollInView]=\"true\"\r\n *ngIf=\"\r\n submitted &&\r\n dashboardForm.selectedFromDate &&\r\n !dashboardForm.selectedToDate\r\n \"\r\n >\r\n Select a time-frame.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Email Summary -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'frequency'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'frequency' &&\r\n activeSelector !== 'name'\r\n \"\r\n >\r\n <div class=\"image\">\r\n <img\r\n *ngIf=\"!dashboardForm.frequencyMessage\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/send-resolution.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n *ngIf=\"dashboardForm.frequencyMessage\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\">\r\n <div class=\"vx-form-group vx-d-block\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >Email Summaries</label\r\n >\r\n <label class=\"vx-control-panel-sub-label\"\r\n >If you would like to send a summary of this Dashboard, please\r\n select a frequency(By default VComply sends a weekly\r\n Summary).</label\r\n >\r\n <div\r\n *ngIf=\"!dashboardForm.frequencyMessage\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Email Summaries\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"dashboardForm.frequencyMessage\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"selectBoxText vx-fs-13 vx-paragraph-txt\"\r\n [arTooltip]=\"dashboardForm.frequencyMessage\"\r\n placement=\"bottom-left\"\r\n type=\"black\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"false\"\r\n [innerHTML]=\"dashboardForm.frequencyMessage\"\r\n ></div>\r\n\r\n <button\r\n *ngIf=\"\r\n dashboardForm.frequencyMessage &&\r\n activeSelector !== 'frequency'\r\n \"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\">&#xe90c;</i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"button-block\">\r\n <button\r\n class=\"vx-btn block primary\"\r\n [disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n (click)=\"configureDashboard()\"\r\n >\r\n Next: Configure Widgets\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <button\r\n class=\"close-dialog\"\r\n type=\"button\"\r\n [disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n (click)=\"close.emit({ mode: 'discard' })\"\r\n [arTooltip]=\"'[Esc] to close'\"\r\n placement=\"left\"\r\n type=\"black\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n [class.hide]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <i class=\"icons\">&#xe93f;</i>\r\n </button>\r\n <div\r\n class=\"global-confirmation-alert\"\r\n *ngIf=\"\r\n submitted &&\r\n dashboardForm?.selectedResponsibilityCenters?.length == 0 &&\r\n dashboardForm?.selectedResponsibilityCategories?.length == 0 &&\r\n dashboardForm?.selectedRiskCategories?.length == 0\r\n \"\r\n >\r\n <div class=\"global-confirmation-alert-top\">\r\n <span class=\"icon-block\">\r\n <i class=\"icons\">&#xe930;</i>\r\n </span>\r\n <p class=\"text\" *ngIf=\"showRiskCategory\">\r\n Select a Responsibility Center, Program or Risk Category.\r\n </p>\r\n <p class=\"text\" *ngIf=\"!showRiskCategory\">\r\n Select a Responsibility Center or Program.\r\n </p>\r\n </div>\r\n <div class=\"global-confirmation-alert-bottom\">\r\n <p class=\"message\"></p>\r\n <div class=\"button-group\">\r\n <button class=\"fill\" type=\"button\" (click)=\"submitted = false\">\r\n OKAY\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<app-smiley-dialog\r\n *ngIf=\"isSmiley\"\r\n [message]=\"smileyMessage\"\r\n></app-smiley-dialog>\r\n\r\n<app-configure-widgets\r\n *ngIf=\"openConfigureWidgets\"\r\n [mode]=\"mode\"\r\n [displayedWidgets]=\"displayedWidgets\"\r\n [showRisk]=\"showRiskWidgets\"\r\n [showCompliance]=\"showComplianceWidgets\"\r\n [selectedWidgetsData]=\"selectedWidgets\"\r\n (widgetsDataModified)=\"setSelectedWidgets($event)\"\r\n (closeConfigureWidgets)=\"closeConfigureWidgets($event)\"\r\n></app-configure-widgets>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/dialog/dialog.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.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-right.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-left.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-right.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/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/animate/animation.css\";@import\"https://cdn.v-comply.com/design-system/css/animate/animate-slide-right.css\";::ng-deep .create-dashboard-container{width:100vw;background:#161b2fcc}::ng-deep .create-dashboard-container .vx-dialog-container{background-color:#fff;border:none;position:relative}@media screen and (max-width: 1280px){::ng-deep .create-dashboard-container .vx-dialog-container.tablet-width{width:28px!important}::ng-deep .create-dashboard-container .vx-dialog-container.tablet-width .form-group .vx-dialog-body-container{overflow:hidden}}::ng-deep .create-dashboard-container .vx-dialog-container button.close-dialog{display:flex;position:absolute;top:8px;right:8px;height:32px;width:32px;font-size:16px;color:#161b2f;cursor:pointer;background:transparent;border:none;border-radius:2px;z-index:2;align-items:center;justify-content:center}::ng-deep .create-dashboard-container .vx-dialog-container button.close-dialog:hover{background:#f1f1f1}::ng-deep .create-dashboard-container .vx-dialog-container button.close-dialog:disabled{pointer-events:none;filter:grayscale(1);opacity:.3}@media screen and (max-width: 1280px){::ng-deep .create-dashboard-container .vx-dialog-container button.close-dialog.hide{display:none}}::ng-deep .create-dashboard .more-option{width:calc(100% - 500px);border-right:1px solid #f1f1f1;float:left}@media screen and (max-width: 1280px){::ng-deep .create-dashboard .more-option{width:calc(100vw - 28px)}::ng-deep .create-dashboard .more-option app-user-list .user-list{right:28px}::ng-deep .create-dashboard .more-option app-responsibility-center .responsibility-center{right:28px}::ng-deep .create-dashboard .more-option app-categories .category-list{right:28px}::ng-deep .create-dashboard .more-option app-risk-categories .risk-category-list{right:28px}::ng-deep .create-dashboard .more-option app-frequency .create-frequency{right:28px}}::ng-deep .form-group{position:relative}::ng-deep .form-group .vx-dialog-body-container{padding:36px 28px 0 40px!important;height:calc(100vh - 50px);overflow:auto;margin-left:-22px;background-color:transparent;position:relative;border-radius:0 0 0 30px;background:transparent}@-moz-document url-prefix(){::ng-deep .form-group .vx-dialog-body-container.hidden-scroll{overflow:hidden}}::ng-deep .form-group .vx-dialog-body-container .form-group-row{display:flex}::ng-deep .form-group .vx-dialog-body-container .form-group-row .image{width:36px;min-width:36px;height:36px;margin-left:-36px;margin-right:20px;margin-top:28px;display:flex;align-items:center;justify-content:center}::ng-deep .form-group .vx-dialog-body-container .form-group-row .image img{width:100%}::ng-deep .form-group .vx-dialog-body-container .form-group-row .image .checkIcon{width:32px;height:32px;background:#fff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 #34aa44;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin-top:0}::ng-deep .form-group .vx-dialog-body-container .form-group-row .image .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}::ng-deep .form-group .vx-dialog-body-container .form-group-row .image .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form{width:100%}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group{position:relative}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group input{height:40px;border-radius:4px;border:1px solid #dbdbdb;outline:none;transition:all .2s ease-in-out}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group input::placeholder{color:#747576}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group input+marx-editor,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group input+vcomply-editor{margin-top:8px;display:block}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group input:hover{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group input:focus{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selectbox:after{border-left:none;border-bottom:1px solid #707070;border-right:1px solid #707070;border-top:none;content:\"\";display:inline-block;right:15px;position:absolute;top:calc(50% + 8px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selectbox:hover .custom-input{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected{height:40px;border-radius:4px;border:1px solid #f1f1f1;background:#fbfbfb;outline:none;position:relative;transition:all .2s ease-in-out}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .edit{border:1px solid #f1f1f1;border-radius:2px;background:#fff;outline:none;cursor:pointer;height:24px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .left{width:auto;display:flex}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .left.frequency-left{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:block;width:calc(100% - 70px)}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .chip-container{width:auto}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .chip-container .chip{border-radius:2px;box-shadow:0 0 3px #1e5dd31a;height:24px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:24px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .chip-container .chip i{cursor:pointer}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .chip-container .chip .value{max-width:100px;display:block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .chip-container span.chip+span.chip{margin-left:4px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .count{border-radius:2px;height:24px;padding:2px 8px;border:1px solid #1e5dd3;cursor:pointer;outline:none}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .user-group-chip-container{display:flex;width:calc(100% - 60px);align-items:center}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .user-group-chip-container .chip-inner{background:#fff;border-radius:2px;box-shadow:0 2px 4px #1e5dd31a;line-height:24px;padding:0 4px 0 8px;display:flex;align-items:center}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .user-group-chip-container .chip-inner .chip{background:transparent;border-radius:0;box-shadow:none;height:auto;line-height:unset;padding:0;color:#747576;max-width:300px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .user-group-chip-container .chip-inner button.count{background:#1e5dd3;border-radius:20px;color:#fff;height:16px;padding:0 6px;border:none;font-size:9px;line-height:16px;margin-left:4px;min-width:20px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .user-group-chip-container .chip-inner button.count.user{background:#34aa44}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group{display:flex;position:relative}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group input::placeholder{color:#747576}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group span.counter{background:transparent;color:#161b2f;font-size:9px;font-weight:500;position:absolute;top:0;right:0;border-radius:3px;height:16px;text-align:center;line-height:16px;padding:0 2px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group marx-editor,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group vcomply-editor{width:100%}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group marx-editor .editor-container .editable-block.bottom:before,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group vcomply-editor .editor-container .editable-block.bottom:before{opacity:1}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group.vx-input-group{margin-top:8px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor{display:block}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container{border-radius:4px;border-color:#dbdbdb}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container:focus-within,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container:focus-within,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container:hover,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container:hover{border-color:#1e5dd3}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container:focus-within .editor-tools,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container:focus-within .editor-tools,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container:hover .editor-tools,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container:hover .editor-tools{border-top-color:#1e5dd3!important;transition:none}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container .editable-block,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container .editable-block{min-height:60px;padding:11px 15px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;max-height:90px}@media not all and (min-resolution: .001dpcm){@supports (-webkit-appearance: none){::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container .editable-block:before,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container .editable-block:before{opacity:.72}}}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container .editor-tools,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container .editor-tools{border-color:#dbdbdb;border-radius:0 0 2px 2px;transition:none}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .custom-input{height:2.5rem;border-radius:.25rem;border:1px solid #dbdbdb;background:#fff;outline:none;padding:.1875rem .75rem;line-height:1.25rem;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;cursor:pointer}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .custom-input:empty:not(:focus):before{content:attr(aria-placeholder);line-height:16px;font-size:12px;width:94%;display:block;pointer-events:none}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .custom-input.error{border:1px solid #d93b41}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form label.vx-control-panel i{font-size:12px;color:#1e5dd3;margin-left:7px;cursor:pointer}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-control-panel-sub-label{color:#747576;font-size:.6875rem;font-weight:400;line-height:1rem;margin-bottom:.5rem;display:block;text-transform:none;width:100%;margin-top:0}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-control-panel-sub-label span.required{color:#eb2424}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form label.vx-control-panel+.vx-control-panel-sub-label{margin-top:-.5rem}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio label.radio-item span.radio{position:absolute;top:17px;left:12px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio label.radio-item svg{position:absolute;top:17px;left:12px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio+app-cs-radio{margin-top:.5rem}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .date-select{position:relative;width:calc(50% - .25rem);overflow:hidden;height:40px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .date-select input{padding-left:36px!important;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;font-weight:400;width:100%;cursor:pointer}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .date-select input::placeholder{color:#747576}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .date-select i{display:flex;justify-content:center;align-items:center;height:39px;width:14px;position:absolute;left:12px;top:0;color:#bcbcbc;font-size:14px;pointer-events:none;z-index:1}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .date-select.disabled{pointer-events:none;filter:grayscale(1);opacity:1}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .date-select.disabled input{background:#f1f1f1}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form label.vx-control-panel span.sub-label{color:#747576;font-size:.6875rem;font-weight:400;line-height:1rem;text-transform:none;width:100%}::ng-deep .form-group .vx-dialog-body-container .form-group-row.disabled{pointer-events:none;filter:grayscale(1);opacity:.3}::ng-deep .form-group .vx-dialog-body-container .form-group-row.active{pointer-events:none;filter:grayscale(0);opacity:1}::ng-deep .form-group .vx-dialog-body-container .form-group-row.active .image{filter:grayscale(0)}::ng-deep .form-group .vx-dialog-body-container .form-group-row.active .image:before{display:none}::ng-deep .form-group .vx-dialog-body-container .form-group-row.active .form{opacity:1;filter:grayscale(0)}::ng-deep .form-group .vx-dialog-body-container .form-group-row.active .form .custom-input,::ng-deep .form-group .vx-dialog-body-container .form-group-row.active .form input[type=text]{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .form-group .vx-dialog-body-container .form-group-row.active .selectBoxEnable{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a;pointer-events:none}::ng-deep .form-group .vx-dialog-body-container:after{content:\"\";width:100%;display:block;height:30px;position:sticky;right:0;bottom:0;left:0;z-index:6;background:linear-gradient(to bottom,#fff0,#ffffffbf 22%,#fff);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#00ffffff\",endColorstr=\"#ffffff\",GradientType=0)}::ng-deep .form-group .button-block{position:relative;z-index:2}::ng-deep .form-group .button-block button{font-size:13px!important;letter-spacing:1.3px!important;height:50px;line-height:48px!important}::ng-deep .form-group .button-block button:disabled{background:#f1f1f1!important;border-color:#f1f1f1!important;color:#747576!important;opacity:1!important;filter:unset!important}::ng-deep .form-group.disabled{pointer-events:none;z-index:2}::ng-deep .form-group.disabled .image{position:relative;filter:grayscale(1)}::ng-deep .form-group.disabled .image:before{content:\"\";position:absolute;inset:0;background:#fff;opacity:.7}::ng-deep .form-group.disabled .form{opacity:.3;filter:grayscale(1)}@keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}.action-list{width:220px}.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}.action-list ul.action-item{display:block}.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}.action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}.action-list ul.action-item li button i{font-size:17px;margin-right:10px;color:#1c5bd1}.action-list ul.action-item li button:hover{background:#f3f3f3}.action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}.action-list ul.action-item li .avatar-card.within-con{display:block}.action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#4681ef;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}.action-list ul.action-item li .avatar-card .avatar img{width:100%}.action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}.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}.action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#1c5bd1;cursor:pointer;margin-right:4px}.action-list ul.action-item li .avatar-card span.value i.cross-icon{color:#747576}.action-list ul.action-item li .avatar-card.no-image{display:block}.action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}.action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}.action-list ul.action-item li .chip-item i{margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}.action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}.action-list ul.action-item li .chip-item span.id{font-size:9px}.action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}.action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}.action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}.action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}.global-confirmation-alert{display:block;position:absolute;z-index:9;right:0;bottom:0;left:0;background:#d93b41}.global-confirmation-alert-top{display:flex;align-items:center;justify-content:flex-start;padding:20px 20px 12px}.global-confirmation-alert span.icon-block{height:36px;width:36px;border-radius:50%;background:#fff;border:1px solid #dcdcdc;display:flex;justify-content:center;align-items:center;margin-right:16px}.global-confirmation-alert span.icon-block i{color:#d93b41;font-size:12px}.global-confirmation-alert p.text{color:#fff;font-size:14px;font-weight:300;margin:0;width:calc(100% - 52px)}.global-confirmation-alert-bottom{display:flex;align-items:center;padding:0 12px 12px 72px;background:#d93b41}.global-confirmation-alert-bottom .button-group{display:flex}.global-confirmation-alert-bottom p.message{font-size:14px;font-weight:500;margin:0;line-height:20px;color:#fff}.global-confirmation-alert button{height:24px;width:64px;border:1px solid #000;border-radius:2px;display:flex;align-items:center;justify-content:center;line-height:22px;cursor:pointer;font-size:11px;text-transform:uppercase;font-weight:500;padding:0}.global-confirmation-alert button+button{margin-left:4px}.global-confirmation-alert button.fill{background:#fff;color:#1e5dd3;border-color:#fff}.global-confirmation-alert button.outline{background:transparent;color:#fff;border-color:#fff}::ng-deep marx-modal .popup-modal-background,::ng-deep vcomply-modal .popup-modal-background{background-color:#161b2fcc!important}::ng-deep input.textField{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;font-size:13px;color:#747576;padding:8px 12px;position:relative;height:2.5rem;width:100%;transition:all .2s ease-in-out}::ng-deep input.textField::placeholder{font-size:13px;color:#747576}::ng-deep input.textField:hover,::ng-deep input.textField:focus{outline:none;border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectBoxEnable:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#747576;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .selectBoxEnable:hover,::ng-deep .selectBoxEnable:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable.disabled{background:#f1f1f1;pointer-events:none;opacity:1}::ng-deep .selectBoxEnable.error{border-color:#eb2424}::ng-deep .selectBoxSuccess{background:#f8f8f8;border-radius:.25rem;border:1px solid #f1f1f1;min-height:2.5rem;position:relative}::ng-deep .selectBoxSuccess .selectBoxText{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:22rem}::ng-deep .selectBoxSuccess button{background:transparent;border-radius:0;border:none}::ng-deep .selectBoxSuccess button.deleteBtn{color:#d93b41}::ng-deep .selectBoxSuccess .level-left{border-right:1px solid #f1f1f1;height:2.375rem;width:5rem}::ng-deep .selectBoxSuccess .level-left .level-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:4.5rem}::ng-deep .chipContainer{background:#fff;border-radius:.125rem;box-shadow:0 0 2px #1e5dd340;height:1.5rem}::ng-deep .chipContainer .cross{cursor:pointer;min-width:16px;width:16px;height:16px;display:flex;align-items:center;justify-content:center;background:transparent;border-radius:2px;margin-left:-4px}::ng-deep .chipContainer .cross:hover{background:#f1f1f1}::ng-deep .chipContainer .chipName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:6rem}::ng-deep .chipContainer .chipName.no-width{max-width:unset}::ng-deep .chipContainer button.countBtn{background:#1e5dd3;border-radius:1.25rem;border:none;min-width:1.5rem;height:1rem;margin:0 0 0 .5rem;padding:0 .25rem}::ng-deep .chipContainer button.countBtn.greenBg{background:#34aa44}::ng-deep .cdk-overlay-pane{inset:0!important;align-items:center;justify-content:center}::ng-deep .cdk-overlay-pane .dp-popup{z-index:999;display:flex!important;align-items:center;justify-content:center;width:100vw;height:100vh;background:transparent!important;border:none!important;box-shadow:unset!important}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar{width:412px!important;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar{width:100%;pointer-events:auto}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar button,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar button.dp-current-location-btn,::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar button.dp-calendar-nav-left,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar button.dp-calendar-nav-left,::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar button.dp-calendar-nav-right,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar button.dp-calendar-nav-right{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar button.dp-current-location-btn:hover,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar button.dp-current-location-btn:hover,::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar button.dp-current-location-btn:before,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000;display:inline-flex}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-weekdays,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-weekdays,::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-calendar-week,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-weekdays button,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-weekdays button,::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-calendar-week button,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-calendar-week button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-weekdays button:hover,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-weekdays button:hover,::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-calendar-week button:hover,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-day-calendar-container,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-calendar-nav-container,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-calendar-nav-container .dp-nav-header button{color:#000;font-size:17px;font-weight:500;margin:0 0 0 12px;padding:0}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-nav-btns-container,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-calendar-wrapper,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}\n"], dependencies: [{ kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.MarxEditorComponent, selector: "vcomply-editor", inputs: ["editorConfig"], outputs: ["comment", "sendSavedFiles", "popup"] }, { kind: "component", type: i9.CsRadioComponent, selector: "app-cs-radio", inputs: ["disabled", "readonly", "name", "checked", "value"], outputs: ["checkedEvent"] }, { kind: "directive", type: i10.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: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i11.ToolTipDirective, selector: "[arTooltip]", inputs: ["arTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i12.ConfigureWidgetsComponent, selector: "app-configure-widgets", inputs: ["selectedWidgetsData", "displayedWidgets", "showRisk", "showCompliance", "mode"], outputs: ["widgetsDataModified", "closeConfigureWidgets"] }, { kind: "component", type: i13.PopoverComponent, selector: "app-popover", inputs: ["dontCloseonClick"], outputs: ["closedOnOverlay"] }, { kind: "directive", type: i14.PopoverDirective, selector: "[appPopover]", inputs: ["refrence", "placement"] }, { kind: "component", type: i15.LoaderInlineComponent, selector: "app-loader-inline" }, { kind: "component", type: i16.SnackBarComponent, selector: "app-snack-bar" }, { kind: "directive", type: i17.ScrollInViewDirective, selector: "[appScrollInView]", inputs: ["appScrollInView"] }, { kind: "component", type: i18.SmileyDialogComponent, selector: "app-smiley-dialog", inputs: ["message", "autoClose", "actionButtons"], outputs: ["action", "closeSmiley"] }, { kind: "component", type: i19.DatePickerComponent, selector: "dp-date-picker", inputs: ["config", "mode", "placeholder", "disabled", "displayDate", "theme", "minDate", "maxDate", "minTime", "maxTime"], outputs: ["open", "close", "onChange", "onGoToCurrent", "onLeftNav", "onRightNav", "onSelect"] }, { kind: "component", type: i20.UserListComponent, selector: "app-user-list", inputs: ["selectionType", "listDetails", "totalPages", "limit", "totalList", "feature", "totalgroupscount"], outputs: ["closeUserList", "saveSelectedUsers"] }, { kind: "component", type: i21.ResponsibilityCenterComponent, selector: "app-responsibility-center", inputs: ["responsibilityCentersList", "selectedResponsibilityCenters", "rcIdKey", "radioSelection"], outputs: ["saveSelectedList", "closeRcList"] }, { kind: "component", type: i22.CategoriesComponent, selector: "app-categories", inputs: ["categoryList", "allCategories", "categoryIdKey", "selectedCategories"], outputs: ["saveSelectedCategory", "closeList", "closeCategoriesList"] }, { kind: "component", type: i23.RiskCategoriesComponent, selector: "app-risk-categories", inputs: ["categoryList", "allCategories", "categoryIdKey", "selectedCategories"], outputs: ["saveSelectedCategory", "closeList", "closeCategoriesList"] }, { kind: "component", type: i24.FrequencyComponent, selector: "app-frequency", inputs: ["savedFrequencyTab", "savedFrequencies", "selectedDate"], outputs: ["closeFrequencyPopup", "saveFrequency"] }, { kind: "pipe", type: i7.SlicePipe, name: "slice" }, { kind: "pipe", type: i7.DatePipe, name: "date" }, { kind: "pipe", type: i6.TextCountPipe, name: "textCount" }] });
1054
1074
  }
1055
1075
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CreateDashboardComponent, decorators: [{
1056
1076
  type: Component,
1057
- args: [{ selector: 'app-create-dashboard', providers: [TextCountPipe], template: "<app-snack-bar></app-snack-bar>\r\n<div class=\"create-dashboard\" *ngIf=\"!openConfigureWidgets\">\r\n <div\r\n class=\"create-dashboard-container vx-d-flex vx-justify-end\"\r\n [class.animate-slideInRight]=\"animation\"\r\n >\r\n <div\r\n class=\"more-option\"\r\n *ngIf=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <app-user-list\r\n *ngIf=\"activeSelector === 'whoCanView'\"\r\n (saveSelectedUsers)=\"saveSelectedList('whoCanView', $event)\"\r\n (closeUserList)=\"activateSelector('', false)\"\r\n [totalPages]=\"totalPages\"\r\n [totalList]=\"totalList\"\r\n [listDetails]=\"listDetails\"\r\n [totalgroupscount]=\"totalgroups\"\r\n [feature]=\"feature\"\r\n ></app-user-list>\r\n <app-responsibility-center\r\n *ngIf=\"activeSelector === 'rcList'\"\r\n [responsibilityCentersList]=\"responsibilityCentersList\"\r\n [radioSelection]=\"false\"\r\n [selectedResponsibilityCenters]=\"\r\n dashboardForm.selectedResponsibilityCenters\r\n \"\r\n [rcIdKey]=\"'item_id'\"\r\n (saveSelectedList)=\"saveSelectedList('rc', $event)\"\r\n (closeRcList)=\"activateSelector('', false)\"\r\n >\r\n </app-responsibility-center>\r\n <app-categories\r\n *ngIf=\"activeSelector === 'responsibilityCategories'\"\r\n [categoryList]=\"responsibilityCategoriesTree\"\r\n [allCategories]=\"allComplianceCategories\"\r\n [categoryIdKey]=\"'category_id'\"\r\n [selectedCategories]=\"dashboardForm.selectedResponsibilityCategories\"\r\n (saveSelectedCategory)=\"\r\n saveSelectedList('responsibilityCategories', $event)\r\n \"\r\n (closeCategoriesList)=\"activateSelector('', false)\"\r\n ></app-categories>\r\n <app-risk-categories\r\n *ngIf=\"activeSelector === 'riskCategories'\"\r\n [categoryList]=\"riskCategoryList\"\r\n [allCategories]=\"allRiskCategories\"\r\n [categoryIdKey]=\"'category_id'\"\r\n [selectedCategories]=\"dashboardForm.selectedRiskCategories\"\r\n (saveSelectedCategory)=\"saveSelectedList('riskCategory', $event)\"\r\n (closeCategoriesList)=\"activateSelector('', false)\"\r\n ></app-risk-categories>\r\n\r\n <app-frequency\r\n *ngIf=\"activeSelector === 'frequency'\"\r\n (closeFrequencyPopup)=\"activateSelector('', false)\"\r\n (saveFrequency)=\"saveFrequency($event)\"\r\n [savedFrequencyTab]=\"dashboardForm.selectedFrequencyType\"\r\n [selectedDate]=\"dashboardForm.frequencyDate\"\r\n [savedFrequencies]=\"dashboardForm.selectedFrequencies\"\r\n >\r\n </app-frequency>\r\n </div>\r\n <div\r\n class=\"vx-dialog-container side-dialog\"\r\n [class.tablet-width]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <app-loader-inline *ngIf=\"vLoader\"></app-loader-inline>\r\n\r\n <div class=\"form-group\" [class.disabled]=\"disabled\">\r\n <div\r\n class=\"vx-dialog-body-container\"\r\n (scroll)=\"animateImage()\"\r\n [class.hidden-scroll]=\"popoverService.stopScroll\"\r\n >\r\n <!-- Dashboard Name -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <div class=\"image\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/what.svg\"\r\n *ngIf=\"\r\n !dashboardForm.dashboardName || activeSelector === 'name'\r\n \"\r\n alt=\"\"\r\n />\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"dashboardForm.dashboardName && activeSelector !== 'name'\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\">\r\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >Dashboard Name\r\n <span class=\"require vx-txt-red vx-fs-16 vx-fw-400\"\r\n >*</span\r\n ></label\r\n >\r\n <div class=\"vx-input-group\">\r\n <input\r\n class=\"textField\"\r\n placeholder=\"Add dashboard name (Max limit: 30 characters).\"\r\n [(ngModel)]=\"dashboardForm.dashboardName\"\r\n (keydown)=\"activeSelector = 'name'\"\r\n (focusin)=\"activateSelector('name', true)\"\r\n (focusout)=\"activateSelector('name', false)\"\r\n />\r\n\r\n <span\r\n class=\"counter\"\r\n *ngIf=\"dashboardForm?.dashboardName?.length > 0\"\r\n >{{ 30 - dashboardForm.dashboardName.length }}</span\r\n >\r\n </div>\r\n\r\n <p\r\n class=\"vx-txt-error\"\r\n [appScrollInView]=\"true\"\r\n *ngIf=\"\r\n submitted &&\r\n (dashboardForm?.dashboardName?.length > 30 ||\r\n !dashboardForm?.dashboardName)\r\n \"\r\n >\r\n {{\r\n dashboardForm.dashboardName.length > 30\r\n ? \"You have exceeded the maximum character limit of 30 characters.\"\r\n : \"Please enter a name for this Dashboard.\"\r\n }}\r\n </p>\r\n\r\n <div class=\"vx-input-group vx-mt-2\">\r\n <vcomply-editor\r\n [editorConfig]=\"dashboardDescription\"\r\n [(ngModel)]=\"dashboardForm.dashboardDescriptionText\"\r\n ></vcomply-editor>\r\n <span\r\n class=\"counter\"\r\n *ngIf=\"dashboardForm?.dashboardDescriptionText?.length > 0\"\r\n >{{\r\n 250 -\r\n (dashboardForm?.dashboardDescriptionText | textCount)\r\n }}</span\r\n >\r\n </div>\r\n\r\n <p\r\n class=\"vx-txt-error\"\r\n [appScrollInView]=\"true\"\r\n *ngIf=\"\r\n submitted &&\r\n (dashboardForm?.dashboardDescriptionText | textCount) > 250\r\n \"\r\n >\r\n You have exceeded the maximum character limit of 250\r\n characters.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Who -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'whoCanView'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'whoCanView' &&\r\n activeSelector !== 'name'\r\n \"\r\n >\r\n <div class=\"image\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/who.svg\"\r\n *ngIf=\"\r\n dashboardForm?.selectedViewers?.length == 0 ||\r\n activeSelector === 'whoCanView'\r\n \"\r\n alt=\"\"\r\n />\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"\r\n dashboardForm?.selectedViewers?.length > 0 &&\r\n activeSelector !== 'whoCanView'\r\n \"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\">\r\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >Who can view this dashboard?<span\r\n class=\"require vx-txt-red vx-fs-16 vx-fw-400\"\r\n >*</span\r\n ></label\r\n >\r\n <div\r\n *ngIf=\"dashboardForm?.selectedViewers?.length == 0\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('whoCanView', true)\"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Who can view this dashboard?\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"dashboardForm?.selectedViewers?.length > 0\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <ng-container *ngIf=\"!groupsEnabled\" id=\"onlyuserslist\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngFor=\"\r\n let user of dashboardForm?.selectedViewers?.slice(0, 1)\r\n \"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\"\r\n *ngIf=\"\r\n !listDetails.nonRemovableUsersList.includes(\r\n user.member_id\r\n )\r\n \"\r\n (click)=\"remove('whoCanView', user)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [arTooltip]=\"user.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ user.member_name }}</span\r\n >\r\n <button\r\n *ngIf=\"\r\n dashboardForm?.selectedViewers?.length > 1 &&\r\n !groupsEnabled\r\n \"\r\n class=\"countBtn greenBg vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"userList.popover()\"\r\n placement=\"left\"\r\n >\r\n +{{ dashboardForm?.selectedViewers?.slice(1).length }}\r\n </button>\r\n </div>\r\n <app-popover #userList [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let user of dashboardForm?.selectedViewers\r\n | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [arTooltip]=\"user?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n class=\"icons cross-icon\"\r\n *ngIf=\"\r\n !listDetails.nonRemovableUsersList.includes(\r\n user.member_id\r\n ) && !groupsEnabled\r\n \"\r\n (click)=\"remove('whoCanView', user)\"\r\n >&#xe90d;</i\r\n >\r\n {{ user?.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </ng-container>\r\n\r\n <div *ngIf=\"groupsEnabled\" class=\"vx-d-flex vx-align-center\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <span class=\"chipName vx-fs-11 vx-label-txt\"\r\n >USER(S)</span\r\n >\r\n <button\r\n class=\"countBtn greenBg vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"userCount.popover()\"\r\n placement=\"left\"\r\n >\r\n {{ dashboardForm?.selectedViewers?.length }}\r\n </button>\r\n </div>\r\n <span\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"\r\n dashboardForm?.selectedGroup?.length &&\r\n dashboardForm?.selectedViewers?.length\r\n \"\r\n >&</span\r\n >\r\n <div\r\n *ngIf=\"dashboardForm?.selectedGroup?.length\"\r\n id=\"usersandgroups\"\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <span class=\"chipName vx-fs-11 vx-label-txt\"\r\n >USER GROUP(S)</span\r\n >\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"groupCount.popover()\"\r\n placement=\"right\"\r\n >\r\n {{ dashboardForm?.selectedGroup?.length }}\r\n </button>\r\n </div>\r\n\r\n <app-popover #userCount [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"let data of dashboardForm?.selectedViewers\"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [arTooltip]=\"data.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n class=\"icons cross-icon\"\r\n *ngIf=\"\r\n !listDetails.nonRemovableUsersList.includes(\r\n data.member_id\r\n )\r\n \"\r\n (click)=\"remove('whoCanView', data)\"\r\n >&#xe90d;</i\r\n >\r\n {{ data.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n\r\n <app-popover #groupCount [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of dashboardForm?.selectedGroup\">\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [arTooltip]=\"data.group_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n class=\"icons cross-icon\"\r\n (click)=\"remove('whoCanViewGroup', data)\"\r\n >&#xe90d;</i\r\n >\r\n {{ data.group_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'whoCanView'\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('whoCanView', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\">&#xe90c;</i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Responsibility Center -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'rcList'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'rcList' &&\r\n activeSelector !== 'name'\r\n \"\r\n >\r\n <div class=\"image\">\r\n <img\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCenters?.length == 0 ||\r\n activeSelector === 'rcList'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/responsibility-center.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCenters?.length > 0 &&\r\n activeSelector !== 'rcList'\r\n \"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\">\r\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >RESPONSIBILITY CENTER(S)</label\r\n >\r\n <div\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCenters?.length == 0\r\n \"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('rcList', true)\"\r\n [class.error]=\"\r\n submitted &&\r\n dashboardForm?.selectedResponsibilityCenters?.length == 0 &&\r\n dashboardForm?.selectedResponsibilityCategories?.length ==\r\n 0 &&\r\n dashboardForm?.selectedRiskCategories?.length == 0\r\n \"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Select the Responsibility Center(s) that you would like<br />displayed\r\n in the Dashboard, if any.\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCenters?.length > 0\r\n \"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngFor=\"\r\n let rc of dashboardForm?.selectedResponsibilityCenters?.slice(\r\n 0,\r\n 1\r\n )\r\n \"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('rc', rc)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [arTooltip]=\"rc.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ rc.item_name }}</span\r\n >\r\n <button\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCenters?.length > 1\r\n \"\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"rcList.popover()\"\r\n placement=\"left\"\r\n >\r\n +{{\r\n dashboardForm?.selectedResponsibilityCenters?.slice(1)\r\n .length\r\n }}\r\n </button>\r\n\r\n <app-popover #rcList [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let rc of dashboardForm?.selectedResponsibilityCenters\r\n | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [arTooltip]=\"rc?.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n class=\"icons cross-icon\"\r\n (click)=\"remove('rc', rc)\"\r\n >&#xe90d;</i\r\n >\r\n {{ rc?.item_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'rcList'\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('rcList', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\">&#xe90c;</i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Program -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'responsibilityCategories'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'responsibilityCategories' &&\r\n activeSelector !== 'name'\r\n \"\r\n >\r\n <div class=\"image\">\r\n <img\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCategories?.length ==\r\n 0 || activeSelector === 'responsibilityCategories'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCategories?.length > 0 &&\r\n activeSelector !== 'responsibilityCategories'\r\n \"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\">\r\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >PROGRAM</label\r\n >\r\n <div\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCategories?.length == 0\r\n \"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('responsibilityCategories', true)\"\r\n [class.error]=\"\r\n submitted &&\r\n dashboardForm?.selectedResponsibilityCenters?.length == 0 &&\r\n dashboardForm?.selectedResponsibilityCategories?.length ==\r\n 0 &&\r\n dashboardForm?.selectedRiskCategories?.length == 0\r\n \"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Select the Program(s) that you would like displayed in\r\n the<br />Dashboard, if any.\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCategories?.length > 0\r\n \"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngFor=\"\r\n let rCategory of dashboardForm?.selectedResponsibilityCategories?.slice(\r\n 0,\r\n 1\r\n )\r\n \"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('responsibilityCategories', rCategory)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [arTooltip]=\"rCategory.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ rCategory.item_name }}</span\r\n >\r\n <button\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCategories\r\n ?.length > 1\r\n \"\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"rCategoryList.popover()\"\r\n placement=\"left\"\r\n >\r\n +{{\r\n dashboardForm?.selectedResponsibilityCategories?.slice(\r\n 1\r\n ).length\r\n }}\r\n </button>\r\n\r\n <app-popover #rCategoryList [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let rCategory of dashboardForm?.selectedResponsibilityCategories\r\n | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [arTooltip]=\"rCategory?.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n class=\"icons cross-icon\"\r\n (click)=\"\r\n remove(\r\n 'responsibilityCategories',\r\n rCategory\r\n )\r\n \"\r\n >&#xe90d;</i\r\n >\r\n {{ rCategory?.item_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'responsibilityCategories'\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('responsibilityCategories', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\">&#xe90c;</i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Category -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'riskCategories'\"\r\n *ngIf=\"showRiskCategory && isManageRisk\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'riskCategories' &&\r\n activeSelector !== 'name'\r\n \"\r\n >\r\n <div class=\"image\">\r\n <img\r\n *ngIf=\"\r\n dashboardForm?.selectedRiskCategories?.length == 0 ||\r\n activeSelector === 'riskCategories'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n *ngIf=\"\r\n dashboardForm?.selectedRiskCategories?.length > 0 &&\r\n activeSelector !== 'riskCategories'\r\n \"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\" *ngIf=\"isManageRisk\">\r\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >RISK CATEGORIES</label\r\n >\r\n <div\r\n *ngIf=\"dashboardForm?.selectedRiskCategories?.length == 0\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('riskCategories', true)\"\r\n [class.error]=\"\r\n submitted &&\r\n dashboardForm?.selectedResponsibilityCenters?.length == 0 &&\r\n dashboardForm?.selectedResponsibilityCategories?.length ==\r\n 0 &&\r\n dashboardForm?.selectedRiskCategories?.length == 0\r\n \"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Select the Risk Categories that you would like displayed<br />in\r\n the Dashboard, if any.\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"dashboardForm?.selectedRiskCategories?.length > 0\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngFor=\"\r\n let riskCategory of dashboardForm?.selectedRiskCategories?.slice(\r\n 0,\r\n 1\r\n )\r\n \"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('riskCategory', riskCategory)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [arTooltip]=\"riskCategory.category_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ riskCategory.category_name }}</span\r\n >\r\n <button\r\n *ngIf=\"dashboardForm?.selectedRiskCategories?.length > 1\"\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"riskList.popover()\"\r\n placement=\"left\"\r\n >\r\n +{{\r\n dashboardForm?.selectedRiskCategories?.slice(1).length\r\n }}\r\n </button>\r\n\r\n <app-popover #riskList [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let riskCategory of dashboardForm?.selectedRiskCategories\r\n | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [arTooltip]=\"riskCategory?.category_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n class=\"icons cross-icon\"\r\n (click)=\"remove('riskCategory', riskCategory)\"\r\n >&#xe90d;</i\r\n >\r\n {{ riskCategory?.category_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'riskCategories'\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('riskCategories', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\">&#xe90c;</i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Display Criteria -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <div class=\"image\">\r\n <img\r\n *ngIf=\"dashboardForm?.displayCriteria?.length == 0\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/who.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n *ngIf=\"dashboardForm?.displayCriteria?.length > 0\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\">\r\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >DISPLAY CRITERIA</label\r\n >\r\n <div class=\"radio-group\" *ngIf=\"showCriteria\">\r\n <app-cs-radio\r\n [checked]=\"dashboardForm.displayCriteria == 'or'\"\r\n (checkedEvent)=\"dashboardForm.displayCriteria = 'or'\"\r\n >\r\n Those Items that have been assigned to either the selected\r\n Responsibility Center(s) or the selected\r\n Categories.</app-cs-radio\r\n >\r\n\r\n <app-cs-radio\r\n [checked]=\"dashboardForm.displayCriteria == 'and'\"\r\n (checkedEvent)=\"dashboardForm.displayCriteria = 'and'\"\r\n >\r\n Those Items that have been assigned to both the selected\r\n Responsibility Center(s) and the selected\r\n Categories.</app-cs-radio\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Timeframe -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <div class=\"image\">\r\n <img\r\n *ngIf=\"\r\n !dashboardForm?.selectedFromDate ||\r\n !dashboardForm?.selectedToDate\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/when.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n *ngIf=\"\r\n dashboardForm?.selectedFromDate &&\r\n dashboardForm?.selectedToDate\r\n \"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\">\r\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >TIMEFRAME</label\r\n >\r\n <label class=\"vx-control-panel-sub-label\"\r\n >Select how long you would like the information selected to be\r\n displayed for. If no timeframe is selected, the information\r\n will be displayed permanently.</label\r\n >\r\n <div class=\"input-group vx-d-flex vx-justify-between\">\r\n <div class=\"date-select\">\r\n <i class=\"icons\">&#xe92d;</i>\r\n <input\r\n type=\"text\"\r\n [value]=\"\r\n dashboardForm?.selectedFromDate | date : 'dd MMM yyyy'\r\n \"\r\n [placeholder]=\"'From'\"\r\n (click)=\"openFromDatePicker()\"\r\n readonly\r\n />\r\n <dp-date-picker\r\n #fromDatePicker\r\n [(ngModel)]=\"dashboardForm.selectedFromDate\"\r\n placeholder=\"Select Date\"\r\n (onSelect)=\"\r\n closeFromDatePicker(); datePickerOverlay = false\r\n \"\r\n [config]=\"fromDatePickerConfig\"\r\n ></dp-date-picker>\r\n <div\r\n class=\"overlay\"\r\n (click)=\"closeFromDatePicker()\"\r\n *ngIf=\"datePickerOverlay\"\r\n ></div>\r\n </div>\r\n <div\r\n class=\"date-select\"\r\n *ngIf=\"!hideToDate\"\r\n [class.disabled]=\"!dashboardForm?.selectedFromDate\"\r\n >\r\n <i class=\"icons\">&#xe92d;</i>\r\n <input\r\n type=\"text\"\r\n [value]=\"\r\n dashboardForm?.selectedToDate | date : 'dd MMM yyyy'\r\n \"\r\n [placeholder]=\"'To'\"\r\n (click)=\"openToDatePicker()\"\r\n readonly\r\n />\r\n <dp-date-picker\r\n #toDatePicker\r\n [(ngModel)]=\"dashboardForm.selectedToDate\"\r\n placeholder=\"Select Date\"\r\n (onSelect)=\"\r\n closeToDatePicker(); datePickerOverlay = false\r\n \"\r\n [config]=\"toDatePickerConfig\"\r\n ></dp-date-picker>\r\n <div\r\n class=\"overlay\"\r\n (click)=\"closeToDatePicker()\"\r\n *ngIf=\"datePickerOverlay\"\r\n ></div>\r\n </div>\r\n </div>\r\n <p\r\n class=\"vx-txt-error\"\r\n [appScrollInView]=\"true\"\r\n *ngIf=\"\r\n submitted &&\r\n dashboardForm.selectedFromDate &&\r\n !dashboardForm.selectedToDate\r\n \"\r\n >\r\n Select a time-frame.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Email Summary -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'frequency'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'frequency' &&\r\n activeSelector !== 'name'\r\n \"\r\n >\r\n <div class=\"image\">\r\n <img\r\n *ngIf=\"!dashboardForm.frequencyMessage\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/send-resolution.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n *ngIf=\"dashboardForm.frequencyMessage\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\">\r\n <div class=\"vx-form-group vx-d-block\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >Email Summaries</label\r\n >\r\n <label class=\"vx-control-panel-sub-label\"\r\n >If you would like to send a summary of this Dashboard, please\r\n select a frequency(By default VComply sends a weekly\r\n Summary).</label\r\n >\r\n <div\r\n *ngIf=\"!dashboardForm.frequencyMessage\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Email Summaries\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"dashboardForm.frequencyMessage\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"selectBoxText vx-fs-13 vx-paragraph-txt\"\r\n [arTooltip]=\"dashboardForm.frequencyMessage\"\r\n placement=\"bottom-left\"\r\n type=\"black\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"false\"\r\n [innerHTML]=\"dashboardForm.frequencyMessage\"\r\n ></div>\r\n\r\n <button\r\n *ngIf=\"\r\n dashboardForm.frequencyMessage &&\r\n activeSelector !== 'frequency'\r\n \"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\">&#xe90c;</i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"button-block\">\r\n <button\r\n class=\"vx-btn block primary\"\r\n [disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n (click)=\"configureDashboard()\"\r\n >\r\n Next: Configure Widgets\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <button\r\n class=\"close-dialog\"\r\n type=\"button\"\r\n [disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n (click)=\"close.emit({ mode: 'discard' })\"\r\n [arTooltip]=\"'[Esc] to close'\"\r\n placement=\"left\"\r\n type=\"black\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n [class.hide]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <i class=\"icons\">&#xe93f;</i>\r\n </button>\r\n <div\r\n class=\"global-confirmation-alert\"\r\n *ngIf=\"\r\n submitted &&\r\n dashboardForm?.selectedResponsibilityCenters?.length == 0 &&\r\n dashboardForm?.selectedResponsibilityCategories?.length == 0 &&\r\n dashboardForm?.selectedRiskCategories?.length == 0\r\n \"\r\n >\r\n <div class=\"global-confirmation-alert-top\">\r\n <span class=\"icon-block\">\r\n <i class=\"icons\">&#xe930;</i>\r\n </span>\r\n <p class=\"text\" *ngIf=\"showRiskCategory\">\r\n Select a Responsibility Center, Program or Risk Category.\r\n </p>\r\n <p class=\"text\" *ngIf=\"!showRiskCategory\">\r\n Select a Responsibility Center or Program.\r\n </p>\r\n </div>\r\n <div class=\"global-confirmation-alert-bottom\">\r\n <p class=\"message\"></p>\r\n <div class=\"button-group\">\r\n <button class=\"fill\" type=\"button\" (click)=\"submitted = false\">\r\n OKAY\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<app-smiley-dialog\r\n *ngIf=\"isSmiley\"\r\n [message]=\"smileyMessage\"\r\n></app-smiley-dialog>\r\n\r\n<app-configure-widgets\r\n *ngIf=\"openConfigureWidgets\"\r\n [mode]=\"mode\"\r\n [displayedWidgets]=\"displayedWidgets\"\r\n [showRisk]=\"showRiskWidgets\"\r\n [showCompliance]=\"showComplianceWidgets\"\r\n [selectedWidgetsData]=\"selectedWidgets\"\r\n (widgetsDataModified)=\"setSelectedWidgets($event)\"\r\n (closeConfigureWidgets)=\"closeConfigureWidgets($event)\"\r\n></app-configure-widgets>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/dialog/dialog.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.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-right.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-left.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-right.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/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/animate/animation.css\";@import\"https://cdn.v-comply.com/design-system/css/animate/animate-slide-right.css\";::ng-deep .create-dashboard-container{width:100vw;background:#161b2fcc}::ng-deep .create-dashboard-container .vx-dialog-container{background-color:#fff;border:none;position:relative}@media screen and (max-width: 1280px){::ng-deep .create-dashboard-container .vx-dialog-container.tablet-width{width:28px}::ng-deep .create-dashboard-container .vx-dialog-container.tablet-width .form-group .vx-dialog-body-container{overflow:hidden}}::ng-deep .create-dashboard-container .vx-dialog-container button.close-dialog{display:flex;position:absolute;top:8px;right:8px;height:32px;width:32px;font-size:16px;color:#161b2f;cursor:pointer;background:transparent;border:none;border-radius:2px;z-index:2;align-items:center;justify-content:center}::ng-deep .create-dashboard-container .vx-dialog-container button.close-dialog:hover{background:#f1f1f1}::ng-deep .create-dashboard-container .vx-dialog-container button.close-dialog:disabled{pointer-events:none;filter:grayscale(1);opacity:.3}@media screen and (max-width: 1280px){::ng-deep .create-dashboard-container .vx-dialog-container button.close-dialog.hide{display:none}}::ng-deep .create-dashboard .more-option{width:calc(100% - 500px);border-right:1px solid #F1F1F1;float:left}@media screen and (max-width: 1280px){::ng-deep .create-dashboard .more-option{width:calc(100vw - 28px)}::ng-deep .create-dashboard .more-option app-user-list .user-list{right:28px}::ng-deep .create-dashboard .more-option app-responsibility-center .responsibility-center{right:28px}::ng-deep .create-dashboard .more-option app-categories .category-list{right:28px}::ng-deep .create-dashboard .more-option app-risk-categories .risk-category-list{right:28px}::ng-deep .create-dashboard .more-option app-frequency .create-frequency{right:28px}}::ng-deep .form-group{position:relative}::ng-deep .form-group .vx-dialog-body-container{padding:36px 28px 0 40px!important;height:calc(100vh - 50px);overflow:auto;margin-left:-22px;background-color:transparent;position:relative;border-radius:0 0 0 30px;background:transparent}@-moz-document url-prefix(){::ng-deep .form-group .vx-dialog-body-container.hidden-scroll{overflow:hidden}}::ng-deep .form-group .vx-dialog-body-container .form-group-row{display:flex}::ng-deep .form-group .vx-dialog-body-container .form-group-row .image{width:36px;min-width:36px;height:36px;margin-left:-36px;margin-right:20px;margin-top:28px;display:flex;align-items:center;justify-content:center}::ng-deep .form-group .vx-dialog-body-container .form-group-row .image img{width:100%}::ng-deep .form-group .vx-dialog-body-container .form-group-row .image .checkIcon{width:32px;height:32px;background:#fff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 #34aa44;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin-top:0}::ng-deep .form-group .vx-dialog-body-container .form-group-row .image .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}::ng-deep .form-group .vx-dialog-body-container .form-group-row .image .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form{width:100%}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group{position:relative}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group input{height:40px;border-radius:4px;border:1px solid #dbdbdb;outline:none;transition:all .2s ease-in-out}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group input::placeholder{color:#747576}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group input+marx-editor,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group input+vcomply-editor{margin-top:8px;display:block}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group input:hover{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group input:focus{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selectbox:after{border-left:none;border-bottom:1px solid #707070;border-right:1px solid #707070;border-top:none;content:\"\";display:inline-block;right:15px;position:absolute;top:calc(50% + 8px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selectbox:hover .custom-input{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected{height:40px;border-radius:4px;border:1px solid #f1f1f1;background:#fbfbfb;outline:none;position:relative;transition:all .2s ease-in-out}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .edit{border:1px solid #F1F1F1;border-radius:2px;background:#fff;outline:none;cursor:pointer;height:24px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .left{width:auto;display:flex}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .left.frequency-left{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:block;width:calc(100% - 70px)}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .chip-container{width:auto}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .chip-container .chip{border-radius:2px;box-shadow:0 0 3px #1e5dd31a;height:24px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:24px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .chip-container .chip i{cursor:pointer}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .chip-container .chip .value{max-width:100px;display:block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .chip-container span.chip+span.chip{margin-left:4px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .count{border-radius:2px;height:24px;padding:2px 8px;border:1px solid #1E5DD3;cursor:pointer;outline:none}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .user-group-chip-container{display:flex;width:calc(100% - 60px);align-items:center}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .user-group-chip-container .chip-inner{background:#fff;border-radius:2px;box-shadow:0 2px 4px #1e5dd31a;line-height:24px;padding:0 4px 0 8px;display:flex;align-items:center}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .user-group-chip-container .chip-inner .chip{background:transparent;border-radius:0;box-shadow:none;height:auto;line-height:unset;padding:0;color:#747576;max-width:300px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .user-group-chip-container .chip-inner button.count{background:#1e5dd3;border-radius:20px;color:#fff;height:16px;padding:0 6px;border:none;font-size:9px;line-height:16px;margin-left:4px;min-width:20px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .user-group-chip-container .chip-inner button.count.user{background:#34aa44}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group{display:flex;position:relative}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group input::placeholder{color:#747576}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group span.counter{background:transparent;color:#161b2f;font-size:9px;font-weight:500;position:absolute;top:0;right:0;border-radius:3px;height:16px;text-align:center;line-height:16px;padding:0 2px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group marx-editor,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group vcomply-editor{width:100%}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group marx-editor .editor-container .editable-block.bottom:before,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group vcomply-editor .editor-container .editable-block.bottom:before{opacity:1}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group.vx-input-group{margin-top:8px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor{display:block}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container{border-radius:4px;border-color:#dbdbdb}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container:focus-within,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container:focus-within,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container:hover,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container:hover{border-color:#1e5dd3}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container:focus-within .editor-tools,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container:focus-within .editor-tools,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container:hover .editor-tools,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container:hover .editor-tools{border-top-color:#1e5dd3!important;transition:none}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container .editable-block,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container .editable-block{min-height:60px;padding:11px 15px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;max-height:90px}@media not all and (min-resolution: .001dpcm){@supports (-webkit-appearance: none){::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container .editable-block:before,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container .editable-block:before{opacity:.72}}}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container .editor-tools,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container .editor-tools{border-color:#dbdbdb;border-radius:0 0 2px 2px;transition:none}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .custom-input{height:2.5rem;border-radius:.25rem;border:1px solid #DBDBDB;background:#fff;outline:none;padding:.1875rem .75rem;line-height:1.25rem;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;cursor:pointer}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .custom-input:empty:not(:focus):before{content:attr(aria-placeholder);line-height:16px;font-size:12px;width:94%;display:block;pointer-events:none}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .custom-input.error{border:1px solid #d93b41}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form label.vx-control-panel i{font-size:12px;color:#1e5dd3;margin-left:7px;cursor:pointer}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-control-panel-sub-label{color:#747576;font-size:.6875rem;font-weight:400;line-height:1rem;margin-bottom:.5rem;display:block;text-transform:none;width:100%;margin-top:0}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-control-panel-sub-label span.required{color:#eb2424}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form label.vx-control-panel+.vx-control-panel-sub-label{margin-top:-.5rem}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio label.radio-item span.radio{position:absolute;top:17px;left:12px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #DBDBDB;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio label.radio-item svg{position:absolute;top:17px;left:12px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio+app-cs-radio{margin-top:.5rem}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .date-select{position:relative;width:calc(50% - .25rem);overflow:hidden;height:40px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .date-select input{padding-left:36px!important;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;font-weight:400;width:100%;cursor:pointer}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .date-select input::placeholder{color:#747576}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .date-select i{display:flex;justify-content:center;align-items:center;height:39px;width:14px;position:absolute;left:12px;top:0;color:#bcbcbc;font-size:14px;pointer-events:none;z-index:1}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .date-select.disabled{pointer-events:none;filter:grayscale(1);opacity:1}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .date-select.disabled input{background:#f1f1f1}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form label.vx-control-panel span.sub-label{color:#747576;font-size:.6875rem;font-weight:400;line-height:1rem;text-transform:none;width:100%}::ng-deep .form-group .vx-dialog-body-container .form-group-row.disabled{pointer-events:none;filter:grayscale(1);opacity:.3}::ng-deep .form-group .vx-dialog-body-container .form-group-row.active{pointer-events:none;filter:grayscale(0);opacity:1}::ng-deep .form-group .vx-dialog-body-container .form-group-row.active .image{filter:grayscale(0)}::ng-deep .form-group .vx-dialog-body-container .form-group-row.active .image:before{display:none}::ng-deep .form-group .vx-dialog-body-container .form-group-row.active .form{opacity:1;filter:grayscale(0)}::ng-deep .form-group .vx-dialog-body-container .form-group-row.active .form .custom-input,::ng-deep .form-group .vx-dialog-body-container .form-group-row.active .form input[type=text]{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .form-group .vx-dialog-body-container .form-group-row.active .selectBoxEnable{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a;pointer-events:none}::ng-deep .form-group .vx-dialog-body-container:after{content:\"\";width:100%;display:block;height:30px;position:sticky;right:0;bottom:0;left:0;z-index:6;background:linear-gradient(to bottom,#fff0,#ffffffbf 22%,#fff);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#00ffffff\",endColorstr=\"#ffffff\",GradientType=0)}::ng-deep .form-group .button-block{position:relative;z-index:2}::ng-deep .form-group .button-block button{font-size:13px!important;letter-spacing:1.3px!important;height:50px;line-height:48px!important}::ng-deep .form-group .button-block button:disabled{background:#f1f1f1!important;border-color:#f1f1f1!important;color:#747576!important;opacity:1!important;filter:unset!important}::ng-deep .form-group.disabled{pointer-events:none;z-index:2}::ng-deep .form-group.disabled .image{position:relative;filter:grayscale(1)}::ng-deep .form-group.disabled .image:before{content:\"\";position:absolute;inset:0;background:#fff;opacity:.7}::ng-deep .form-group.disabled .form{opacity:.3;filter:grayscale(1)}@keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}.action-list{width:220px}.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}.action-list ul.action-item{display:block}.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}.action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}.action-list ul.action-item li button i{font-size:17px;margin-right:10px;color:#1c5bd1}.action-list ul.action-item li button:hover{background:#f3f3f3}.action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}.action-list ul.action-item li .avatar-card.within-con{display:block}.action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#4681ef;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}.action-list ul.action-item li .avatar-card .avatar img{width:100%}.action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}.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}.action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#1c5bd1;cursor:pointer;margin-right:4px}.action-list ul.action-item li .avatar-card span.value i.cross-icon{color:#747576}.action-list ul.action-item li .avatar-card.no-image{display:block}.action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}.action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}.action-list ul.action-item li .chip-item i{margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}.action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}.action-list ul.action-item li .chip-item span.id{font-size:9px}.action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}.action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}.action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}.action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}.global-confirmation-alert{display:block;position:absolute;z-index:9;right:0;bottom:0;left:0;background:#d93b41}.global-confirmation-alert-top{display:flex;align-items:center;justify-content:flex-start;padding:20px 20px 12px}.global-confirmation-alert span.icon-block{height:36px;width:36px;border-radius:50%;background:#fff;border:1px solid #DCDCDC;display:flex;justify-content:center;align-items:center;margin-right:16px}.global-confirmation-alert span.icon-block i{color:#d93b41;font-size:12px}.global-confirmation-alert p.text{color:#fff;font-size:14px;font-weight:300;margin:0;width:calc(100% - 52px)}.global-confirmation-alert-bottom{display:flex;align-items:center;padding:0 12px 12px 72px;background:#d93b41}.global-confirmation-alert-bottom .button-group{display:flex}.global-confirmation-alert-bottom p.message{font-size:14px;font-weight:500;margin:0;line-height:20px;color:#fff}.global-confirmation-alert button{height:24px;width:64px;border:1px solid #000;border-radius:2px;display:flex;align-items:center;justify-content:center;line-height:22px;cursor:pointer;font-size:11px;text-transform:uppercase;font-weight:500;padding:0}.global-confirmation-alert button+button{margin-left:4px}.global-confirmation-alert button.fill{background:#fff;color:#1e5dd3;border-color:#fff}.global-confirmation-alert button.outline{background:transparent;color:#fff;border-color:#fff}::ng-deep marx-modal .popup-modal-background,::ng-deep vcomply-modal .popup-modal-background{background-color:#161b2fcc!important}::ng-deep input.textField{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;font-size:13px;color:#747576;padding:8px 12px;position:relative;height:2.5rem;width:100%;transition:all .2s ease-in-out}::ng-deep input.textField::placeholder{font-size:13px;color:#747576}::ng-deep input.textField:hover,::ng-deep input.textField:focus{outline:none;border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectBoxEnable:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#747576;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .selectBoxEnable:hover,::ng-deep .selectBoxEnable:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable.disabled{background:#f1f1f1;pointer-events:none;opacity:1}::ng-deep .selectBoxEnable.error{border-color:#eb2424}::ng-deep .selectBoxSuccess{background:#f8f8f8;border-radius:.25rem;border:1px solid #f1f1f1;min-height:2.5rem;position:relative}::ng-deep .selectBoxSuccess .selectBoxText{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:22rem}::ng-deep .selectBoxSuccess button{background:transparent;border-radius:0;border:none}::ng-deep .selectBoxSuccess button.deleteBtn{color:#d93b41}::ng-deep .selectBoxSuccess .level-left{border-right:1px solid #f1f1f1;height:2.375rem;width:5rem}::ng-deep .selectBoxSuccess .level-left .level-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:4.5rem}::ng-deep .chipContainer{background:#fff;border-radius:.125rem;box-shadow:0 0 2px #1e5dd340;height:1.5rem}::ng-deep .chipContainer .cross{cursor:pointer;min-width:16px;width:16px;height:16px;display:flex;align-items:center;justify-content:center;background:transparent;border-radius:2px;margin-left:-4px}::ng-deep .chipContainer .cross:hover{background:#f1f1f1}::ng-deep .chipContainer .chipName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:6rem}::ng-deep .chipContainer .chipName.no-width{max-width:unset}::ng-deep .chipContainer button.countBtn{background:#1e5dd3;border-radius:1.25rem;border:none;min-width:1.5rem;height:1rem;margin:0 0 0 .5rem;padding:0 .25rem}::ng-deep .chipContainer button.countBtn.greenBg{background:#34aa44}\n"] }]
1077
+ args: [{ selector: 'app-create-dashboard', providers: [TextCountPipe], template: "<app-snack-bar></app-snack-bar>\r\n<div class=\"create-dashboard\" *ngIf=\"!openConfigureWidgets\">\r\n <div\r\n class=\"create-dashboard-container vx-d-flex vx-justify-end\"\r\n [class.animate-slideInRight]=\"animation\"\r\n >\r\n <div\r\n class=\"more-option\"\r\n *ngIf=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <app-user-list\r\n *ngIf=\"activeSelector === 'whoCanView'\"\r\n (saveSelectedUsers)=\"saveSelectedList('whoCanView', $event)\"\r\n (closeUserList)=\"activateSelector('', false)\"\r\n [totalPages]=\"totalPages\"\r\n [totalList]=\"totalList\"\r\n [listDetails]=\"listDetails\"\r\n [totalgroupscount]=\"totalgroups\"\r\n [feature]=\"feature\"\r\n ></app-user-list>\r\n <app-responsibility-center\r\n *ngIf=\"activeSelector === 'rcList'\"\r\n [responsibilityCentersList]=\"responsibilityCentersList\"\r\n [radioSelection]=\"false\"\r\n [selectedResponsibilityCenters]=\"\r\n dashboardForm.selectedResponsibilityCenters\r\n \"\r\n [rcIdKey]=\"'item_id'\"\r\n (saveSelectedList)=\"saveSelectedList('rc', $event)\"\r\n (closeRcList)=\"activateSelector('', false)\"\r\n >\r\n </app-responsibility-center>\r\n <app-categories\r\n *ngIf=\"activeSelector === 'responsibilityCategories'\"\r\n [categoryList]=\"responsibilityCategoriesTree\"\r\n [allCategories]=\"allComplianceCategories\"\r\n [categoryIdKey]=\"'category_id'\"\r\n [selectedCategories]=\"dashboardForm.selectedResponsibilityCategories\"\r\n (saveSelectedCategory)=\"\r\n saveSelectedList('responsibilityCategories', $event)\r\n \"\r\n (closeCategoriesList)=\"activateSelector('', false)\"\r\n ></app-categories>\r\n <app-risk-categories\r\n *ngIf=\"activeSelector === 'riskCategories'\"\r\n [categoryList]=\"riskCategoryList\"\r\n [allCategories]=\"allRiskCategories\"\r\n [categoryIdKey]=\"'category_id'\"\r\n [selectedCategories]=\"dashboardForm.selectedRiskCategories\"\r\n (saveSelectedCategory)=\"saveSelectedList('riskCategory', $event)\"\r\n (closeCategoriesList)=\"activateSelector('', false)\"\r\n ></app-risk-categories>\r\n\r\n <app-frequency\r\n *ngIf=\"activeSelector === 'frequency'\"\r\n (closeFrequencyPopup)=\"activateSelector('', false)\"\r\n (saveFrequency)=\"saveFrequency($event)\"\r\n [savedFrequencyTab]=\"dashboardForm.selectedFrequencyType\"\r\n [selectedDate]=\"dashboardForm.frequencyDate\"\r\n [savedFrequencies]=\"dashboardForm.selectedFrequencies\"\r\n >\r\n </app-frequency>\r\n </div>\r\n <div\r\n class=\"vx-dialog-container side-dialog\"\r\n [class.tablet-width]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <app-loader-inline *ngIf=\"vLoader\"></app-loader-inline>\r\n\r\n <div class=\"form-group\" [class.disabled]=\"disabled\">\r\n <div\r\n class=\"vx-dialog-body-container\"\r\n (scroll)=\"animateImage()\"\r\n [class.hidden-scroll]=\"popoverService.stopScroll\"\r\n >\r\n <!-- Dashboard Name -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <div class=\"image\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/what.svg\"\r\n *ngIf=\"\r\n !dashboardForm.dashboardName || activeSelector === 'name'\r\n \"\r\n alt=\"\"\r\n />\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"dashboardForm.dashboardName && activeSelector !== 'name'\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\">\r\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >Dashboard Name\r\n <span class=\"require vx-txt-red vx-fs-16 vx-fw-400\"\r\n >*</span\r\n ></label\r\n >\r\n <div class=\"vx-input-group\">\r\n <input\r\n class=\"textField\"\r\n placeholder=\"Add dashboard name (Max limit: 30 characters).\"\r\n [(ngModel)]=\"dashboardForm.dashboardName\"\r\n (keydown)=\"activeSelector = 'name'\"\r\n (focusin)=\"activateSelector('name', true)\"\r\n (focusout)=\"activateSelector('name', false)\"\r\n />\r\n\r\n <span\r\n class=\"counter\"\r\n *ngIf=\"dashboardForm?.dashboardName?.length > 0\"\r\n >{{ 30 - dashboardForm.dashboardName.length }}</span\r\n >\r\n </div>\r\n\r\n <p\r\n class=\"vx-txt-error\"\r\n [appScrollInView]=\"true\"\r\n *ngIf=\"\r\n submitted &&\r\n (dashboardForm?.dashboardName?.length > 30 ||\r\n !dashboardForm?.dashboardName)\r\n \"\r\n >\r\n {{\r\n dashboardForm.dashboardName.length > 30\r\n ? \"You have exceeded the maximum character limit of 30 characters.\"\r\n : \"Please enter a name for this Dashboard.\"\r\n }}\r\n </p>\r\n\r\n <div class=\"vx-input-group vx-mt-2\">\r\n <vcomply-editor\r\n [editorConfig]=\"dashboardDescription\"\r\n [(ngModel)]=\"dashboardForm.dashboardDescriptionText\"\r\n ></vcomply-editor>\r\n <span\r\n class=\"counter\"\r\n *ngIf=\"dashboardForm?.dashboardDescriptionText?.length > 0\"\r\n >{{\r\n 250 -\r\n (dashboardForm?.dashboardDescriptionText | textCount)\r\n }}</span\r\n >\r\n </div>\r\n\r\n <p\r\n class=\"vx-txt-error\"\r\n [appScrollInView]=\"true\"\r\n *ngIf=\"\r\n submitted &&\r\n (dashboardForm?.dashboardDescriptionText | textCount) > 250\r\n \"\r\n >\r\n You have exceeded the maximum character limit of 250\r\n characters.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Who -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'whoCanView'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'whoCanView' &&\r\n activeSelector !== 'name'\r\n \"\r\n >\r\n <div class=\"image\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/who.svg\"\r\n *ngIf=\"\r\n dashboardForm?.selectedViewers?.length == 0 ||\r\n activeSelector === 'whoCanView'\r\n \"\r\n alt=\"\"\r\n />\r\n <svg\r\n class=\"checkIcon\"\r\n *ngIf=\"\r\n dashboardForm?.selectedViewers?.length > 0 &&\r\n activeSelector !== 'whoCanView'\r\n \"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\">\r\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >Who can view this dashboard?<span\r\n class=\"require vx-txt-red vx-fs-16 vx-fw-400\"\r\n >*</span\r\n ></label\r\n >\r\n <div\r\n *ngIf=\"dashboardForm?.selectedViewers?.length == 0\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('whoCanView', true)\"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Who can view this dashboard?\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"dashboardForm?.selectedViewers?.length > 0\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <ng-container *ngIf=\"!groupsEnabled\" id=\"onlyuserslist\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngFor=\"\r\n let user of dashboardForm?.selectedViewers?.slice(0, 1)\r\n \"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\"\r\n *ngIf=\"\r\n !listDetails.nonRemovableUsersList.includes(\r\n user.member_id\r\n )\r\n \"\r\n (click)=\"remove('whoCanView', user)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [arTooltip]=\"user.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ user.member_name }}</span\r\n >\r\n <button\r\n *ngIf=\"\r\n dashboardForm?.selectedViewers?.length > 1 &&\r\n !groupsEnabled\r\n \"\r\n class=\"countBtn greenBg vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"userList.popover()\"\r\n placement=\"left\"\r\n >\r\n +{{ dashboardForm?.selectedViewers?.slice(1).length }}\r\n </button>\r\n </div>\r\n <app-popover #userList [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let user of dashboardForm?.selectedViewers\r\n | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [arTooltip]=\"user?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n class=\"icons cross-icon\"\r\n *ngIf=\"\r\n !listDetails.nonRemovableUsersList.includes(\r\n user.member_id\r\n ) && !groupsEnabled\r\n \"\r\n (click)=\"remove('whoCanView', user)\"\r\n >&#xe90d;</i\r\n >\r\n {{ user?.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </ng-container>\r\n\r\n <div *ngIf=\"groupsEnabled\" class=\"vx-d-flex vx-align-center\">\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <span class=\"chipName vx-fs-11 vx-label-txt\"\r\n >USER(S)</span\r\n >\r\n <button\r\n class=\"countBtn greenBg vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"userCount.popover()\"\r\n placement=\"left\"\r\n >\r\n {{ dashboardForm?.selectedViewers?.length }}\r\n </button>\r\n </div>\r\n <span\r\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\r\n *ngIf=\"\r\n dashboardForm?.selectedGroup?.length &&\r\n dashboardForm?.selectedViewers?.length\r\n \"\r\n >&</span\r\n >\r\n <div\r\n *ngIf=\"dashboardForm?.selectedGroup?.length\"\r\n id=\"usersandgroups\"\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n >\r\n <span class=\"chipName vx-fs-11 vx-label-txt\"\r\n >USER GROUP(S)</span\r\n >\r\n <button\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"groupCount.popover()\"\r\n placement=\"right\"\r\n >\r\n {{ dashboardForm?.selectedGroup?.length }}\r\n </button>\r\n </div>\r\n\r\n <app-popover #userCount [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"let data of dashboardForm?.selectedViewers\"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [arTooltip]=\"data.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n class=\"icons cross-icon\"\r\n *ngIf=\"\r\n !listDetails.nonRemovableUsersList.includes(\r\n data.member_id\r\n )\r\n \"\r\n (click)=\"remove('whoCanView', data)\"\r\n >&#xe90d;</i\r\n >\r\n {{ data.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n\r\n <app-popover #groupCount [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let data of dashboardForm?.selectedGroup\">\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [arTooltip]=\"data.group_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n class=\"icons cross-icon\"\r\n (click)=\"remove('whoCanViewGroup', data)\"\r\n >&#xe90d;</i\r\n >\r\n {{ data.group_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'whoCanView'\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('whoCanView', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\">&#xe90c;</i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Responsibility Center -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'rcList'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'rcList' &&\r\n activeSelector !== 'name'\r\n \"\r\n >\r\n <div class=\"image\">\r\n <img\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCenters?.length == 0 ||\r\n activeSelector === 'rcList'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/responsibility-center.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCenters?.length > 0 &&\r\n activeSelector !== 'rcList'\r\n \"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\">\r\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >RESPONSIBILITY CENTER(S)</label\r\n >\r\n <div\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCenters?.length == 0\r\n \"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('rcList', true)\"\r\n [class.error]=\"\r\n submitted &&\r\n dashboardForm?.selectedResponsibilityCenters?.length == 0 &&\r\n dashboardForm?.selectedResponsibilityCategories?.length ==\r\n 0 &&\r\n dashboardForm?.selectedRiskCategories?.length == 0\r\n \"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Select the Responsibility Center(s) that you would like<br />displayed\r\n in the Dashboard, if any.\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCenters?.length > 0\r\n \"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngFor=\"\r\n let rc of dashboardForm?.selectedResponsibilityCenters?.slice(\r\n 0,\r\n 1\r\n )\r\n \"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('rc', rc)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [arTooltip]=\"rc.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ rc.item_name }}</span\r\n >\r\n <button\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCenters?.length > 1\r\n \"\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"rcList.popover()\"\r\n placement=\"left\"\r\n >\r\n +{{\r\n dashboardForm?.selectedResponsibilityCenters?.slice(1)\r\n .length\r\n }}\r\n </button>\r\n\r\n <app-popover #rcList [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let rc of dashboardForm?.selectedResponsibilityCenters\r\n | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [arTooltip]=\"rc?.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n class=\"icons cross-icon\"\r\n (click)=\"remove('rc', rc)\"\r\n >&#xe90d;</i\r\n >\r\n {{ rc?.item_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'rcList'\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('rcList', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\">&#xe90c;</i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Program -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'responsibilityCategories'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'responsibilityCategories' &&\r\n activeSelector !== 'name'\r\n \"\r\n >\r\n <div class=\"image\">\r\n <img\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCategories?.length ==\r\n 0 || activeSelector === 'responsibilityCategories'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCategories?.length > 0 &&\r\n activeSelector !== 'responsibilityCategories'\r\n \"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\">\r\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >PROGRAM</label\r\n >\r\n <div\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCategories?.length == 0\r\n \"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('responsibilityCategories', true)\"\r\n [class.error]=\"\r\n submitted &&\r\n dashboardForm?.selectedResponsibilityCenters?.length == 0 &&\r\n dashboardForm?.selectedResponsibilityCategories?.length ==\r\n 0 &&\r\n dashboardForm?.selectedRiskCategories?.length == 0\r\n \"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Select the Program(s) that you would like displayed in\r\n the<br />Dashboard, if any.\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCategories?.length > 0\r\n \"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngFor=\"\r\n let rCategory of dashboardForm?.selectedResponsibilityCategories?.slice(\r\n 0,\r\n 1\r\n )\r\n \"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('responsibilityCategories', rCategory)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [arTooltip]=\"rCategory.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ rCategory.item_name }}</span\r\n >\r\n <button\r\n *ngIf=\"\r\n dashboardForm?.selectedResponsibilityCategories\r\n ?.length > 1\r\n \"\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"rCategoryList.popover()\"\r\n placement=\"left\"\r\n >\r\n +{{\r\n dashboardForm?.selectedResponsibilityCategories?.slice(\r\n 1\r\n ).length\r\n }}\r\n </button>\r\n\r\n <app-popover #rCategoryList [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let rCategory of dashboardForm?.selectedResponsibilityCategories\r\n | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [arTooltip]=\"rCategory?.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n class=\"icons cross-icon\"\r\n (click)=\"\r\n remove(\r\n 'responsibilityCategories',\r\n rCategory\r\n )\r\n \"\r\n >&#xe90d;</i\r\n >\r\n {{ rCategory?.item_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'responsibilityCategories'\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('responsibilityCategories', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\">&#xe90c;</i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Risk Category -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'riskCategories'\"\r\n *ngIf=\"showRiskCategory && isManageRisk\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'riskCategories' &&\r\n activeSelector !== 'name'\r\n \"\r\n >\r\n <div class=\"image\">\r\n <img\r\n *ngIf=\"\r\n dashboardForm?.selectedRiskCategories?.length == 0 ||\r\n activeSelector === 'riskCategories'\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n *ngIf=\"\r\n dashboardForm?.selectedRiskCategories?.length > 0 &&\r\n activeSelector !== 'riskCategories'\r\n \"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\" *ngIf=\"isManageRisk\">\r\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >RISK CATEGORIES</label\r\n >\r\n <div\r\n *ngIf=\"dashboardForm?.selectedRiskCategories?.length == 0\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('riskCategories', true)\"\r\n [class.error]=\"\r\n submitted &&\r\n dashboardForm?.selectedResponsibilityCenters?.length == 0 &&\r\n dashboardForm?.selectedResponsibilityCategories?.length ==\r\n 0 &&\r\n dashboardForm?.selectedRiskCategories?.length == 0\r\n \"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Select the Risk Categories that you would like displayed<br />in\r\n the Dashboard, if any.\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"dashboardForm?.selectedRiskCategories?.length > 0\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\r\n *ngFor=\"\r\n let riskCategory of dashboardForm?.selectedRiskCategories?.slice(\r\n 0,\r\n 1\r\n )\r\n \"\r\n >\r\n <i\r\n class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\"\r\n (click)=\"remove('riskCategory', riskCategory)\"\r\n >&#xe9ae;</i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [arTooltip]=\"riskCategory.category_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ riskCategory.category_name }}</span\r\n >\r\n <button\r\n *ngIf=\"dashboardForm?.selectedRiskCategories?.length > 1\"\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"riskList.popover()\"\r\n placement=\"left\"\r\n >\r\n +{{\r\n dashboardForm?.selectedRiskCategories?.slice(1).length\r\n }}\r\n </button>\r\n\r\n <app-popover #riskList [dontCloseonClick]=\"true\">\r\n <div class=\"action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let riskCategory of dashboardForm?.selectedRiskCategories\r\n | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [arTooltip]=\"riskCategory?.category_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n class=\"icons cross-icon\"\r\n (click)=\"remove('riskCategory', riskCategory)\"\r\n >&#xe90d;</i\r\n >\r\n {{ riskCategory?.category_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n\r\n <button\r\n *ngIf=\"activeSelector !== 'riskCategories'\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('riskCategories', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\">&#xe90c;</i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Display Criteria -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <div class=\"image\">\r\n <img\r\n *ngIf=\"dashboardForm?.displayCriteria?.length == 0\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/who.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n *ngIf=\"dashboardForm?.displayCriteria?.length > 0\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\">\r\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >DISPLAY CRITERIA</label\r\n >\r\n <div class=\"radio-group\" *ngIf=\"showCriteria\">\r\n <app-cs-radio\r\n [checked]=\"dashboardForm.displayCriteria == 'or'\"\r\n (checkedEvent)=\"dashboardForm.displayCriteria = 'or'\"\r\n >\r\n Those Items that have been assigned to either the selected\r\n Responsibility Center(s) or the selected\r\n Categories.</app-cs-radio\r\n >\r\n\r\n <app-cs-radio\r\n [checked]=\"dashboardForm.displayCriteria == 'and'\"\r\n (checkedEvent)=\"dashboardForm.displayCriteria = 'and'\"\r\n >\r\n Those Items that have been assigned to both the selected\r\n Responsibility Center(s) and the selected\r\n Categories.</app-cs-radio\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Timeframe -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <div class=\"image\">\r\n <img\r\n *ngIf=\"\r\n !dashboardForm?.selectedFromDate ||\r\n !dashboardForm?.selectedToDate\r\n \"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/when.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n *ngIf=\"\r\n dashboardForm?.selectedFromDate &&\r\n dashboardForm?.selectedToDate\r\n \"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\">\r\n <div class=\"vx-form-group vx-d-block vx-mb-4\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >TIMEFRAME</label\r\n >\r\n <label class=\"vx-control-panel-sub-label\"\r\n >Select how long you would like the information selected to be\r\n displayed for. If no timeframe is selected, the information\r\n will be displayed permanently.</label\r\n >\r\n <div class=\"input-group vx-d-flex vx-justify-between\">\r\n <div class=\"date-select\">\r\n <i class=\"icons\">&#xe92d;</i>\r\n <input\r\n type=\"text\"\r\n id=\"from_date\"\r\n [value]=\"\r\n dashboardForm?.selectedFromDate | date : 'dd MMM yyyy'\r\n \"\r\n [placeholder]=\"'From'\"\r\n (click)=\"openFromDatePicker()\"\r\n readonly\r\n />\r\n <dp-date-picker\r\n #fromDatePicker\r\n [(ngModel)]=\"dashboardForm.selectedFromDate\"\r\n placeholder=\"Select Date\"\r\n (onSelect)=\"\r\n closeFromDatePicker(); datePickerOverlay = false\r\n \"\r\n [config]=\"fromDatePickerConfig\"\r\n ></dp-date-picker>\r\n <div\r\n class=\"overlay\"\r\n (click)=\"closeFromDatePicker()\"\r\n *ngIf=\"datePickerOverlay\"\r\n ></div>\r\n </div>\r\n <div\r\n class=\"date-select\"\r\n *ngIf=\"!hideToDate\"\r\n [class.disabled]=\"!dashboardForm?.selectedFromDate\"\r\n >\r\n <i class=\"icons\">&#xe92d;</i>\r\n <input\r\n type=\"text\"\r\n id=\"to_date\"\r\n [value]=\"\r\n dashboardForm?.selectedToDate | date : 'dd MMM yyyy'\r\n \"\r\n [placeholder]=\"'To'\"\r\n (click)=\"openToDatePicker()\"\r\n readonly\r\n />\r\n <dp-date-picker\r\n #toDatePicker\r\n [(ngModel)]=\"dashboardForm.selectedToDate\"\r\n placeholder=\"Select Date\"\r\n (onSelect)=\"\r\n closeToDatePicker(); datePickerOverlay = false\r\n \"\r\n [config]=\"toDatePickerConfig\"\r\n ></dp-date-picker>\r\n <div\r\n class=\"overlay\"\r\n (click)=\"closeToDatePicker()\"\r\n *ngIf=\"datePickerOverlay\"\r\n ></div>\r\n </div>\r\n </div>\r\n <p\r\n class=\"vx-txt-error\"\r\n [appScrollInView]=\"true\"\r\n *ngIf=\"\r\n submitted &&\r\n dashboardForm.selectedFromDate &&\r\n !dashboardForm.selectedToDate\r\n \"\r\n >\r\n Select a time-frame.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Email Summary -->\r\n <div\r\n class=\"form-group-row\"\r\n [class.active]=\"activeSelector === 'frequency'\"\r\n [class.disabled]=\"\r\n activeSelector &&\r\n activeSelector !== 'frequency' &&\r\n activeSelector !== 'name'\r\n \"\r\n >\r\n <div class=\"image\">\r\n <img\r\n *ngIf=\"!dashboardForm.frequencyMessage\"\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/send-resolution.svg\"\r\n alt=\"\"\r\n />\r\n <svg\r\n *ngIf=\"dashboardForm.frequencyMessage\"\r\n class=\"checkIcon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 52 52\"\r\n >\r\n <circle\r\n class=\"checkIcon__circle\"\r\n cx=\"26\"\r\n cy=\"26\"\r\n r=\"25\"\r\n fill=\"none\"\r\n />\r\n <path\r\n class=\"checkIcon__check\"\r\n fill=\"none\"\r\n d=\"M14.1 27.2l7.1 7.2 16.7-16.8\"\r\n />\r\n </svg>\r\n </div>\r\n <div class=\"form\">\r\n <div class=\"vx-form-group vx-d-block\">\r\n <label\r\n class=\"vx-fs-11 vx-fw-500 vx-label-txt vx-d-block vx-tt-uppercase vx-mb-2 vx-w-100 vx-lh-4\"\r\n >Email Summaries</label\r\n >\r\n <label class=\"vx-control-panel-sub-label\"\r\n >If you would like to send a summary of this Dashboard, please\r\n select a frequency(By default VComply sends a weekly\r\n Summary).</label\r\n >\r\n <div\r\n *ngIf=\"!dashboardForm.frequencyMessage\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Email Summaries\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"dashboardForm.frequencyMessage\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"selectBoxText vx-fs-13 vx-paragraph-txt\"\r\n [arTooltip]=\"dashboardForm.frequencyMessage\"\r\n placement=\"bottom-left\"\r\n type=\"black\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"false\"\r\n [innerHTML]=\"dashboardForm.frequencyMessage\"\r\n ></div>\r\n\r\n <button\r\n *ngIf=\"\r\n dashboardForm.frequencyMessage &&\r\n activeSelector !== 'frequency'\r\n \"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n (click)=\"activateSelector('frequency', true)\"\r\n >\r\n <i class=\"icons vx-mr-1\">&#xe90c;</i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"button-block\">\r\n <button\r\n class=\"vx-btn block primary\"\r\n [disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n (click)=\"configureDashboard()\"\r\n >\r\n Next: Configure Widgets\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <button\r\n class=\"close-dialog\"\r\n type=\"button\"\r\n [disabled]=\"activeSelector && activeSelector !== 'name'\"\r\n (click)=\"close.emit({ mode: 'discard' })\"\r\n [arTooltip]=\"'[Esc] to close'\"\r\n placement=\"left\"\r\n type=\"black\"\r\n delay=\"0\"\r\n [tooltipMandatory]=\"true\"\r\n [class.hide]=\"activeSelector && activeSelector !== 'name'\"\r\n >\r\n <i class=\"icons\">&#xe93f;</i>\r\n </button>\r\n <div\r\n class=\"global-confirmation-alert\"\r\n *ngIf=\"\r\n submitted &&\r\n dashboardForm?.selectedResponsibilityCenters?.length == 0 &&\r\n dashboardForm?.selectedResponsibilityCategories?.length == 0 &&\r\n dashboardForm?.selectedRiskCategories?.length == 0\r\n \"\r\n >\r\n <div class=\"global-confirmation-alert-top\">\r\n <span class=\"icon-block\">\r\n <i class=\"icons\">&#xe930;</i>\r\n </span>\r\n <p class=\"text\" *ngIf=\"showRiskCategory\">\r\n Select a Responsibility Center, Program or Risk Category.\r\n </p>\r\n <p class=\"text\" *ngIf=\"!showRiskCategory\">\r\n Select a Responsibility Center or Program.\r\n </p>\r\n </div>\r\n <div class=\"global-confirmation-alert-bottom\">\r\n <p class=\"message\"></p>\r\n <div class=\"button-group\">\r\n <button class=\"fill\" type=\"button\" (click)=\"submitted = false\">\r\n OKAY\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<app-smiley-dialog\r\n *ngIf=\"isSmiley\"\r\n [message]=\"smileyMessage\"\r\n></app-smiley-dialog>\r\n\r\n<app-configure-widgets\r\n *ngIf=\"openConfigureWidgets\"\r\n [mode]=\"mode\"\r\n [displayedWidgets]=\"displayedWidgets\"\r\n [showRisk]=\"showRiskWidgets\"\r\n [showCompliance]=\"showComplianceWidgets\"\r\n [selectedWidgetsData]=\"selectedWidgets\"\r\n (widgetsDataModified)=\"setSelectedWidgets($event)\"\r\n (closeConfigureWidgets)=\"closeConfigureWidgets($event)\"\r\n></app-configure-widgets>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/dialog/dialog.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.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-right.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-left.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-right.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/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/animate/animation.css\";@import\"https://cdn.v-comply.com/design-system/css/animate/animate-slide-right.css\";::ng-deep .create-dashboard-container{width:100vw;background:#161b2fcc}::ng-deep .create-dashboard-container .vx-dialog-container{background-color:#fff;border:none;position:relative}@media screen and (max-width: 1280px){::ng-deep .create-dashboard-container .vx-dialog-container.tablet-width{width:28px!important}::ng-deep .create-dashboard-container .vx-dialog-container.tablet-width .form-group .vx-dialog-body-container{overflow:hidden}}::ng-deep .create-dashboard-container .vx-dialog-container button.close-dialog{display:flex;position:absolute;top:8px;right:8px;height:32px;width:32px;font-size:16px;color:#161b2f;cursor:pointer;background:transparent;border:none;border-radius:2px;z-index:2;align-items:center;justify-content:center}::ng-deep .create-dashboard-container .vx-dialog-container button.close-dialog:hover{background:#f1f1f1}::ng-deep .create-dashboard-container .vx-dialog-container button.close-dialog:disabled{pointer-events:none;filter:grayscale(1);opacity:.3}@media screen and (max-width: 1280px){::ng-deep .create-dashboard-container .vx-dialog-container button.close-dialog.hide{display:none}}::ng-deep .create-dashboard .more-option{width:calc(100% - 500px);border-right:1px solid #f1f1f1;float:left}@media screen and (max-width: 1280px){::ng-deep .create-dashboard .more-option{width:calc(100vw - 28px)}::ng-deep .create-dashboard .more-option app-user-list .user-list{right:28px}::ng-deep .create-dashboard .more-option app-responsibility-center .responsibility-center{right:28px}::ng-deep .create-dashboard .more-option app-categories .category-list{right:28px}::ng-deep .create-dashboard .more-option app-risk-categories .risk-category-list{right:28px}::ng-deep .create-dashboard .more-option app-frequency .create-frequency{right:28px}}::ng-deep .form-group{position:relative}::ng-deep .form-group .vx-dialog-body-container{padding:36px 28px 0 40px!important;height:calc(100vh - 50px);overflow:auto;margin-left:-22px;background-color:transparent;position:relative;border-radius:0 0 0 30px;background:transparent}@-moz-document url-prefix(){::ng-deep .form-group .vx-dialog-body-container.hidden-scroll{overflow:hidden}}::ng-deep .form-group .vx-dialog-body-container .form-group-row{display:flex}::ng-deep .form-group .vx-dialog-body-container .form-group-row .image{width:36px;min-width:36px;height:36px;margin-left:-36px;margin-right:20px;margin-top:28px;display:flex;align-items:center;justify-content:center}::ng-deep .form-group .vx-dialog-body-container .form-group-row .image img{width:100%}::ng-deep .form-group .vx-dialog-body-container .form-group-row .image .checkIcon{width:32px;height:32px;background:#fff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 #34aa44;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin-top:0}::ng-deep .form-group .vx-dialog-body-container .form-group-row .image .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}::ng-deep .form-group .vx-dialog-body-container .form-group-row .image .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form{width:100%}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group{position:relative}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group input{height:40px;border-radius:4px;border:1px solid #dbdbdb;outline:none;transition:all .2s ease-in-out}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group input::placeholder{color:#747576}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group input+marx-editor,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group input+vcomply-editor{margin-top:8px;display:block}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group input:hover{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group input:focus{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selectbox:after{border-left:none;border-bottom:1px solid #707070;border-right:1px solid #707070;border-top:none;content:\"\";display:inline-block;right:15px;position:absolute;top:calc(50% + 8px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selectbox:hover .custom-input{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected{height:40px;border-radius:4px;border:1px solid #f1f1f1;background:#fbfbfb;outline:none;position:relative;transition:all .2s ease-in-out}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .edit{border:1px solid #f1f1f1;border-radius:2px;background:#fff;outline:none;cursor:pointer;height:24px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .left{width:auto;display:flex}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .left.frequency-left{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:block;width:calc(100% - 70px)}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .chip-container{width:auto}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .chip-container .chip{border-radius:2px;box-shadow:0 0 3px #1e5dd31a;height:24px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:24px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .chip-container .chip i{cursor:pointer}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .chip-container .chip .value{max-width:100px;display:block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .chip-container span.chip+span.chip{margin-left:4px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .count{border-radius:2px;height:24px;padding:2px 8px;border:1px solid #1e5dd3;cursor:pointer;outline:none}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .user-group-chip-container{display:flex;width:calc(100% - 60px);align-items:center}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .user-group-chip-container .chip-inner{background:#fff;border-radius:2px;box-shadow:0 2px 4px #1e5dd31a;line-height:24px;padding:0 4px 0 8px;display:flex;align-items:center}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .user-group-chip-container .chip-inner .chip{background:transparent;border-radius:0;box-shadow:none;height:auto;line-height:unset;padding:0;color:#747576;max-width:300px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .user-group-chip-container .chip-inner button.count{background:#1e5dd3;border-radius:20px;color:#fff;height:16px;padding:0 6px;border:none;font-size:9px;line-height:16px;margin-left:4px;min-width:20px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .selected .user-group-chip-container .chip-inner button.count.user{background:#34aa44}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group{display:flex;position:relative}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group input::placeholder{color:#747576}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group span.counter{background:transparent;color:#161b2f;font-size:9px;font-weight:500;position:absolute;top:0;right:0;border-radius:3px;height:16px;text-align:center;line-height:16px;padding:0 2px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group marx-editor,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group vcomply-editor{width:100%}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group marx-editor .editor-container .editable-block.bottom:before,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group vcomply-editor .editor-container .editable-block.bottom:before{opacity:1}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-form-group .vx-input-group.vx-input-group{margin-top:8px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor{display:block}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container{border-radius:4px;border-color:#dbdbdb}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container:focus-within,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container:focus-within,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container:hover,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container:hover{border-color:#1e5dd3}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container:focus-within .editor-tools,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container:focus-within .editor-tools,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container:hover .editor-tools,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container:hover .editor-tools{border-top-color:#1e5dd3!important;transition:none}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container .editable-block,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container .editable-block{min-height:60px;padding:11px 15px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;max-height:90px}@media not all and (min-resolution: .001dpcm){@supports (-webkit-appearance: none){::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container .editable-block:before,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container .editable-block:before{opacity:.72}}}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container .editor-tools,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container .editor-tools{border-color:#dbdbdb;border-radius:0 0 2px 2px;transition:none}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form marx-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button,::ng-deep .form-group .vx-dialog-body-container .form-group-row .form vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .custom-input{height:2.5rem;border-radius:.25rem;border:1px solid #dbdbdb;background:#fff;outline:none;padding:.1875rem .75rem;line-height:1.25rem;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;cursor:pointer}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .custom-input:empty:not(:focus):before{content:attr(aria-placeholder);line-height:16px;font-size:12px;width:94%;display:block;pointer-events:none}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .custom-input.error{border:1px solid #d93b41}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form label.vx-control-panel i{font-size:12px;color:#1e5dd3;margin-left:7px;cursor:pointer}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-control-panel-sub-label{color:#747576;font-size:.6875rem;font-weight:400;line-height:1rem;margin-bottom:.5rem;display:block;text-transform:none;width:100%;margin-top:0}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .vx-control-panel-sub-label span.required{color:#eb2424}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form label.vx-control-panel+.vx-control-panel-sub-label{margin-top:-.5rem}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio label.radio-item span.radio{position:absolute;top:17px;left:12px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio label.radio-item svg{position:absolute;top:17px;left:12px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .radio-group app-cs-radio+app-cs-radio{margin-top:.5rem}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .date-select{position:relative;width:calc(50% - .25rem);overflow:hidden;height:40px}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .date-select input{padding-left:36px!important;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;font-weight:400;width:100%;cursor:pointer}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .date-select input::placeholder{color:#747576}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .date-select i{display:flex;justify-content:center;align-items:center;height:39px;width:14px;position:absolute;left:12px;top:0;color:#bcbcbc;font-size:14px;pointer-events:none;z-index:1}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .date-select.disabled{pointer-events:none;filter:grayscale(1);opacity:1}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form .date-select.disabled input{background:#f1f1f1}::ng-deep .form-group .vx-dialog-body-container .form-group-row .form label.vx-control-panel span.sub-label{color:#747576;font-size:.6875rem;font-weight:400;line-height:1rem;text-transform:none;width:100%}::ng-deep .form-group .vx-dialog-body-container .form-group-row.disabled{pointer-events:none;filter:grayscale(1);opacity:.3}::ng-deep .form-group .vx-dialog-body-container .form-group-row.active{pointer-events:none;filter:grayscale(0);opacity:1}::ng-deep .form-group .vx-dialog-body-container .form-group-row.active .image{filter:grayscale(0)}::ng-deep .form-group .vx-dialog-body-container .form-group-row.active .image:before{display:none}::ng-deep .form-group .vx-dialog-body-container .form-group-row.active .form{opacity:1;filter:grayscale(0)}::ng-deep .form-group .vx-dialog-body-container .form-group-row.active .form .custom-input,::ng-deep .form-group .vx-dialog-body-container .form-group-row.active .form input[type=text]{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .form-group .vx-dialog-body-container .form-group-row.active .selectBoxEnable{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a;pointer-events:none}::ng-deep .form-group .vx-dialog-body-container:after{content:\"\";width:100%;display:block;height:30px;position:sticky;right:0;bottom:0;left:0;z-index:6;background:linear-gradient(to bottom,#fff0,#ffffffbf 22%,#fff);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#00ffffff\",endColorstr=\"#ffffff\",GradientType=0)}::ng-deep .form-group .button-block{position:relative;z-index:2}::ng-deep .form-group .button-block button{font-size:13px!important;letter-spacing:1.3px!important;height:50px;line-height:48px!important}::ng-deep .form-group .button-block button:disabled{background:#f1f1f1!important;border-color:#f1f1f1!important;color:#747576!important;opacity:1!important;filter:unset!important}::ng-deep .form-group.disabled{pointer-events:none;z-index:2}::ng-deep .form-group.disabled .image{position:relative;filter:grayscale(1)}::ng-deep .form-group.disabled .image:before{content:\"\";position:absolute;inset:0;background:#fff;opacity:.7}::ng-deep .form-group.disabled .form{opacity:.3;filter:grayscale(1)}@keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}.action-list{width:220px}.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}.action-list ul.action-item{display:block}.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}.action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}.action-list ul.action-item li button i{font-size:17px;margin-right:10px;color:#1c5bd1}.action-list ul.action-item li button:hover{background:#f3f3f3}.action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}.action-list ul.action-item li .avatar-card.within-con{display:block}.action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#4681ef;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}.action-list ul.action-item li .avatar-card .avatar img{width:100%}.action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}.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}.action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#1c5bd1;cursor:pointer;margin-right:4px}.action-list ul.action-item li .avatar-card span.value i.cross-icon{color:#747576}.action-list ul.action-item li .avatar-card.no-image{display:block}.action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}.action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}.action-list ul.action-item li .chip-item i{margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}.action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}.action-list ul.action-item li .chip-item span.id{font-size:9px}.action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}.action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}.action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}.action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}.action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}.global-confirmation-alert{display:block;position:absolute;z-index:9;right:0;bottom:0;left:0;background:#d93b41}.global-confirmation-alert-top{display:flex;align-items:center;justify-content:flex-start;padding:20px 20px 12px}.global-confirmation-alert span.icon-block{height:36px;width:36px;border-radius:50%;background:#fff;border:1px solid #dcdcdc;display:flex;justify-content:center;align-items:center;margin-right:16px}.global-confirmation-alert span.icon-block i{color:#d93b41;font-size:12px}.global-confirmation-alert p.text{color:#fff;font-size:14px;font-weight:300;margin:0;width:calc(100% - 52px)}.global-confirmation-alert-bottom{display:flex;align-items:center;padding:0 12px 12px 72px;background:#d93b41}.global-confirmation-alert-bottom .button-group{display:flex}.global-confirmation-alert-bottom p.message{font-size:14px;font-weight:500;margin:0;line-height:20px;color:#fff}.global-confirmation-alert button{height:24px;width:64px;border:1px solid #000;border-radius:2px;display:flex;align-items:center;justify-content:center;line-height:22px;cursor:pointer;font-size:11px;text-transform:uppercase;font-weight:500;padding:0}.global-confirmation-alert button+button{margin-left:4px}.global-confirmation-alert button.fill{background:#fff;color:#1e5dd3;border-color:#fff}.global-confirmation-alert button.outline{background:transparent;color:#fff;border-color:#fff}::ng-deep marx-modal .popup-modal-background,::ng-deep vcomply-modal .popup-modal-background{background-color:#161b2fcc!important}::ng-deep input.textField{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;font-size:13px;color:#747576;padding:8px 12px;position:relative;height:2.5rem;width:100%;transition:all .2s ease-in-out}::ng-deep input.textField::placeholder{font-size:13px;color:#747576}::ng-deep input.textField:hover,::ng-deep input.textField:focus{outline:none;border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectBoxEnable:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#747576;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .selectBoxEnable:hover,::ng-deep .selectBoxEnable:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable.disabled{background:#f1f1f1;pointer-events:none;opacity:1}::ng-deep .selectBoxEnable.error{border-color:#eb2424}::ng-deep .selectBoxSuccess{background:#f8f8f8;border-radius:.25rem;border:1px solid #f1f1f1;min-height:2.5rem;position:relative}::ng-deep .selectBoxSuccess .selectBoxText{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:22rem}::ng-deep .selectBoxSuccess button{background:transparent;border-radius:0;border:none}::ng-deep .selectBoxSuccess button.deleteBtn{color:#d93b41}::ng-deep .selectBoxSuccess .level-left{border-right:1px solid #f1f1f1;height:2.375rem;width:5rem}::ng-deep .selectBoxSuccess .level-left .level-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:4.5rem}::ng-deep .chipContainer{background:#fff;border-radius:.125rem;box-shadow:0 0 2px #1e5dd340;height:1.5rem}::ng-deep .chipContainer .cross{cursor:pointer;min-width:16px;width:16px;height:16px;display:flex;align-items:center;justify-content:center;background:transparent;border-radius:2px;margin-left:-4px}::ng-deep .chipContainer .cross:hover{background:#f1f1f1}::ng-deep .chipContainer .chipName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:6rem}::ng-deep .chipContainer .chipName.no-width{max-width:unset}::ng-deep .chipContainer button.countBtn{background:#1e5dd3;border-radius:1.25rem;border:none;min-width:1.5rem;height:1rem;margin:0 0 0 .5rem;padding:0 .25rem}::ng-deep .chipContainer button.countBtn.greenBg{background:#34aa44}::ng-deep .cdk-overlay-pane{inset:0!important;align-items:center;justify-content:center}::ng-deep .cdk-overlay-pane .dp-popup{z-index:999;display:flex!important;align-items:center;justify-content:center;width:100vw;height:100vh;background:transparent!important;border:none!important;box-shadow:unset!important}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar{width:412px!important;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar{width:100%;pointer-events:auto}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar button,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar button.dp-current-location-btn,::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar button.dp-calendar-nav-left,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar button.dp-calendar-nav-left,::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar button.dp-calendar-nav-right,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar button.dp-calendar-nav-right{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar button.dp-current-location-btn:hover,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar button.dp-current-location-btn:hover,::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar button.dp-current-location-btn:before,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000;display:inline-flex}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-weekdays,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-weekdays,::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-calendar-week,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-weekdays button,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-weekdays button,::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-calendar-week button,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-calendar-week button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-weekdays button:hover,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-weekdays button:hover,::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-calendar-week button:hover,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-day-calendar-container,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-calendar-nav-container,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-calendar-nav-container .dp-nav-header button{color:#000;font-size:17px;font-weight:500;margin:0 0 0 12px;padding:0}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-nav-btns-container,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}::ng-deep .cdk-overlay-pane .dp-popup dp-day-calendar .dp-calendar-wrapper,::ng-deep .cdk-overlay-pane .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}\n"] }]
1058
1078
  }], ctorParameters: function () { return [{ type: i1.CreateDashboardService }, { type: i2.PaginationService }, { type: i0.ChangeDetectorRef }, { type: i3.SnackBarService }, { type: i4.PopoverService }, { type: i5.ConfigureWidgetsService }, { type: i6.TextCountPipe }]; }, propDecorators: { feature: [{
1059
1079
  type: Input
1060
1080
  }], mode: [{
@@ -1073,8 +1093,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1073
1093
  args: ['toDatePicker']
1074
1094
  }], configureWidget: [{
1075
1095
  type: Input
1096
+ }], fromDatePickerPopup: [{
1097
+ type: ViewChild,
1098
+ args: ['fromDatePicker', { read: ElementRef, static: false }]
1099
+ }], toDatePickerPopup: [{
1100
+ type: ViewChild,
1101
+ args: ['toDatePicker', { read: ElementRef, static: false }]
1076
1102
  }], onKeydownHandler: [{
1077
1103
  type: HostListener,
1078
1104
  args: ['document:keydown.escape', ['$event']]
1105
+ }], documentClick: [{
1106
+ type: HostListener,
1107
+ args: ['document:click', ['$event']]
1079
1108
  }] } });
1080
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWRhc2hib2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcmVhdGUtZGFzaGJvYXJkL3NyYy9saWIvY3JlYXRlLWRhc2hib2FyZC1jb250YWluZXIvY3JlYXRlLWRhc2hib2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcmVhdGUtZGFzaGJvYXJkL3NyYy9saWIvY3JlYXRlLWRhc2hib2FyZC1jb250YWluZXIvY3JlYXRlLWRhc2hib2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFjdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUN4RCxtQ0FBbUM7QUFRbkMsTUFBTSxPQUFPLHdCQUF3QjtJQXlKekI7SUFDQTtJQUNBO0lBQ0E7SUFDRDtJQUNDO0lBQ0E7SUE5SkQsT0FBTyxDQUFNO0lBRXRCLGNBQWMsR0FBRyxFQUFFLENBQUM7SUFDcEIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNSLElBQUksR0FBRyxRQUFRLENBQUM7SUFDaEIsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUNoQixLQUFLLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUM1QixTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBRU0sY0FBYyxDQUF1QjtJQUN2QyxZQUFZLENBQXVCO0lBQzlELFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDUixlQUFlLEdBQUcsS0FBSyxDQUFDO0lBRWpDLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFDZixTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsU0FBUyxHQUFVLEVBQUUsQ0FBQztJQUN0QixP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XG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFZGl0b3JDb25maWcgfSBmcm9tICdAdmNvbXBseS9lZGl0b3InO1xyXG5pbXBvcnQgeyBEYXRlUGlja2VyQ29tcG9uZW50LCBJRGF0ZVBpY2tlckNvbmZpZyB9IGZyb20gJ25nMi1kYXRlLXBpY2tlcic7XHJcbmltcG9ydCB7IENyZWF0ZURhc2hib2FyZFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2NyZWF0ZS1kYXNoYm9hcmQuc2VydmljZSc7XHJcbmltcG9ydCB7IFBhZ2luYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wYWdpbmF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyTGlzdENvbmZpZ3VyYXRpb24gfSBmcm9tICcuL3VzZXItbGlzdC91c2VyLWxpc3QuY29uZmlnJztcclxuaW1wb3J0IHsgQ3JlYXRlRGFzaGJvYXJkRm9ybSB9IGZyb20gJy4vY3JlYXRlLWRhc2hib2FyZC1jb25maWcnO1xyXG5pbXBvcnQgeyBTbmFja0JhclNlcnZpY2UgfSBmcm9tICcuLi91aS1raXQvc25hY2stYmFyL3NuYWNrLWJhci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29uZmlndXJlV2lkZ2V0c1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2NvbmZpZ3VyZS13aWRnZXRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBmaW5kSW5kZXggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgKiBhcyBkYXlqcyBmcm9tICdkYXlqcyc7XHJcbi8vIGltcG9ydCAqIGFzIGN1c3RvbVBhcnNlRm9ybWF0IGZyb20gJ2RheWpzL3BsdWdpbi9jdXN0b21QYXJzZUZvcm1hdCc7XHJcbmltcG9ydCB7IFBvcG92ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vdWkta2l0L3BvcG92ZXIvcG9wb3Zlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGV4dENvdW50UGlwZSB9IGZyb20gJy4vcGlwZXMvdGV4dC1jb3VudC5waXBlJztcclxuLy8gZGF5anMuZXh0ZW5kKGN1c3RvbVBhcnNlRm9ybWF0KTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWNyZWF0ZS1kYXNoYm9hcmQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUtZGFzaGJvYXJkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jcmVhdGUtZGFzaGJvYXJkLmNvbXBvbmVudC5sZXNzJ10sXHJcbiAgcHJvdmlkZXJzOiBbVGV4dENvdW50UGlwZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDcmVhdGVEYXNoYm9hcmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCkgZmVhdHVyZTogYW55O1xyXG5cclxuICBhY3RpdmVTZWxlY3RvciA9ICcnO1xyXG4gIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbW9kZSA9ICdDUkVBVEUnO1xyXG4gIEBJbnB1dCgpIGRhc2hib2FyZElkID0gJyc7XHJcbiAgQE91dHB1dCgpIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBJbnB1dCgpIGNyZWF0ZWRCeSA9IDA7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2Zyb21EYXRlUGlja2VyJykgZnJvbURhdGVQaWNrZXIhOiBEYXRlUGlja2VyQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ3RvRGF0ZVBpY2tlcicpIHRvRGF0ZVBpY2tlciE6IERhdGVQaWNrZXJDb21wb25lbnQ7XHJcbiAgYW5pbWF0aW9uID0gdHJ1ZTtcclxuICBASW5wdXQoKSBjb25maWd1cmVXaWRnZXQgPSBmYWxzZTtcclxuXHJcbiAgdG90YWxQYWdlcyA9IDE7XHJcbiAgdG90YWxMaXN0ID0gMTtcclxuICB1c2Vyc0xpc3Q6IGFueVtdID0gW107XHJcbiAgdkxvYWRlciA9IHRydWU7XHJcbiAgdXNlckxpc3RMb2FkZWQgPSBmYWxzZTtcclxuICByY0xpc3RMb2FkZWQgPSBmYWxzZTtcclxuICBjb21wbGlhbmNlQ2F0ZWdvcmllc0xpc3RMb2FkZWQgPSBmYWxzZTtcclxuICByaXNrQ2F0ZWdvcnlMaXN0TG9hZGVkID0gZmFsc2U7XHJcbiAgaGlkZVRvRGF0ZSA9IGZhbHNlO1xyXG4gIGxpc3REZXRhaWxzOiBVc2VyTGlzdENvbmZpZ3VyYXRpb24gPSB7XHJcbiAgICBzZWxlY3RlZFVzZXJzTGlzdDogW10sXHJcbiAgICBzZWxlY3RlZEdyb3VwTGlzdDogW10sXHJcbiAgICBub25SZW1vdmFibGVVc2Vyc0xpc3Q6IFtdLFxyXG4gICAgZGlzcGxheUVsZW1lbnRLZXk6ICdtZW1iZXJfbmFtZScsXHJcbiAgICBkaXNwbGF5R3JvdXBLZXk6ICdncm91cF9uYW1lJyxcclxuICAgIGdyb3VwSWRrZXk6ICdncm91cF9pZCcsXHJcbiAgICBlbGVtZW50SWRLZXk6ICdtZW1iZXJfaWQnLFxyXG4gICAgdG9vbHRpcEtleTogJ21lbWJlcl9lbWFpbCcsXHJcbiAgfTtcclxuICBkYXNoYm9hcmREZXNjcmlwdGlvbjogRWRpdG9yQ29uZmlnID0ge1xyXG4gICAgcGxhY2Vob2xkZXI6ICdEZXNjcmlwdGlvbiAoTWF4IGxpbWl0OiAyNTAgY2hhcmFjdGVycyknLFxyXG4gICAgbW9kZTogJ3ByaW1lJyxcclxuICAgIGlkOiAnZGVzY3JpcHRpb24nLFxyXG4gIH07XHJcbiAgcmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzVHJlZTogYW55ID0ge1xyXG4gICAgcmVndWxhdGlvbnM6IHtcclxuICAgICAgbGlzdDogW10sXHJcbiAgICAgIHNlbGVjdGVkTGlzdDogW10sXHJcbiAgICB9LFxyXG4gICAgc3RhbmRhcmRzOiB7XHJcbiAgICAgIGxpc3Q6IFtdLFxyXG4gICAgICBzZWxlY3RlZExpc3Q6IFtdLFxyXG4gICAgfSxcclxuICAgIGludGVybmFsQ29udHJvbHM6IHtcclxuICAgICAgbGlzdDogW10sXHJcbiAgICAgIHNlbGVjdGVkTGlzdDogW10sXHJcbiAgICB9LFxyXG4gICAgb3RoZXJzOiB7XHJcbiAgICAgIGxpc3Q6IFtdLFxyXG4gICAgICBzZWxlY3RlZExpc3Q6IFtdLFxyXG4gICAgfSxcclxuICB9O1xyXG4gIGFsbENvbXBsaWFuY2VDYXRlZ29yaWVzOiBhbnlbXSA9IFtdO1xyXG4gIGFsbFJpc2tDYXRlZ29yaWVzOiBhbnlbXSA9IFtdO1xyXG4gIHNob3dSaXNrQ2F0ZWdvcnkgPSBmYWxzZTtcclxuICBzaG93Q3JpdGVyaWEgPSB0cnVlO1xyXG5cclxuICBkYXNoYm9hcmRGb3JtOiBDcmVhdGVEYXNoYm9hcmRGb3JtID0ge1xyXG4gICAgZGFzaGJvYXJkTmFtZTogJycsXHJcbiAgICBkYXNoYm9hcmREZXNjcmlwdGlvblRleHQ6ICcnLFxyXG4gICAgc2VsZWN0ZWRWaWV3ZXJzOiBbXSxcclxuICAgIHNlbGVjdGVkR3JvdXA6IFtdLFxyXG4gICAgc2VsZWN0ZWRGcm9tRGF0ZTogdW5kZWZpbmVkLFxyXG4gICAgc2VsZWN0ZWRUb0RhdGU6IHVuZGVmaW5lZCxcclxuICAgIHNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzOiBbXSxcclxuICAgIHNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzOiBbXSxcclxuICAgIHNlbGVjdGVkUmlza0NhdGVnb3JpZXM6IFtdLFxyXG4gICAgZGlzcGxheUNyaXRlcmlhOiAnb3InLFxyXG4gICAgY29uZmlndXJlV2lkZ2V0OiBbXSxcclxuICAgIGZyZXF1ZW5jeURldGFpbHM6ICcnLFxyXG4gICAgc2VsZWN0ZWRGcmVxdWVuY3lUeXBlOiAnJyxcclxuICAgIHNlbGVjdGVkRnJlcXVlbmNpZXM6IFswXSxcclxuICAgIGZyZXF1ZW5jeU1lc3NhZ2U6ICcnLFxyXG4gICAgZnJlcXVlbmN5RGF0ZTogMSxcclxuICB9O1xyXG5cclxuICBvcGVuQ29uZmlndXJlV2lkZ2V0cyA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkV2lkZ2V0czogYW55ID0gW107XHJcbiAgZGlzcGxheWVkV2lkZ2V0czogYW55ID0gW107XHJcblxyXG4gIHJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QgPSBbXTtcclxuICBkYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlO1xyXG4gIGRheU5hbWVzID0gW1xyXG4gICAgJ01vbmRheScsXHJcbiAgICAnVHVlc2RheScsXHJcbiAgICAnV2VkbmVzZGF5JyxcclxuICAgICdUaHVyc2RheScsXHJcbiAgICAnRnJpZGF5JyxcclxuICAgICdTYXR1cmRheScsXHJcbiAgICAnU3VuZGF5JyxcclxuICBdO1xyXG4gIG1vbnRoTmFtZXMgPSBbXHJcbiAgICAnSmFudWFyeScsXHJcbiAgICAnRmVicnVhcnknLFxyXG4gICAgJ01hcmNoJyxcclxuICAgICdBcHJpbCcsXHJcbiAgICAnTWF5JyxcclxuICAgICdKdW5lJyxcclxuICAgICdKdWx5JyxcclxuICAgICdBdWd1c3QnLFxyXG4gICAgJ1NlcHRlbWJlcicsXHJcbiAgICAnT2N0b2JlcicsXHJcbiAgICAnTm92ZW1iZXInLFxyXG4gICAgJ0RlY2VtYmVyJyxcclxuICBdO1xyXG4gIHF1YXJ0ZXJzID0gW1xyXG4gICAgJ0phbnVhcnksIEFwcmlsLCBKdWx5LCBPY3RvYmVyJyxcclxuICAgICdGZWJydWFyeSwgTWF5LCBBdWd1c3QsIE5vdmVtYmVyJyxcclxuICAgICdNYXJjaCwgSnVuZSwgU2VwdGVtYmVyLCBEZWNlbWJlcicsXHJcbiAgXTtcclxuXHJcbiAgY2F0ZWdvcnlMaXN0TG9hZGVkID0gZmFsc2U7XHJcbiAgc2hvd1Jpc2tXaWRnZXRzID0gZmFsc2U7XHJcbiAgc2hvd0NvbXBsaWFuY2VXaWRnZXRzID0gZmFsc2U7XHJcbiAgaXNNYW5hZ2VSaXNrOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHJpc2tDYXRlZ29yeUxpc3QgPSB7XHJcbiAgICBzdHJhdGVnaWM6IHtcclxuICAgICAgbGlzdDogW10sXHJcbiAgICAgIHNlbGVjdGVkTGlzdDogW10sXHJcbiAgICB9LFxyXG4gICAgb3BlcmF0aW9uYWw6IHtcclxuICAgICAgbGlzdDogW10sXHJcbiAgICAgIHNlbGVjdGVkTGlzdDogW10sXHJcbiAgICB9LFxyXG4gICAgY29tcGxpYW5jZToge1xyXG4gICAgICBsaXN0OiBbXSxcclxuICAgICAgc2VsZWN0ZWRMaXN0OiBbXSxcclxuICAgIH0sXHJcbiAgICBvdGhlcnM6IHtcclxuICAgICAgbGlzdDogW10sXHJcbiAgICAgIHNlbGVjdGVkTGlzdDogW10sXHJcbiAgICB9LFxyXG4gIH07XHJcblxyXG4gIGZyb21EYXRlUGlja2VyQ29uZmlnOiBJRGF0ZVBpY2tlckNvbmZpZyA9IHtcclxuICAgIG1pbjogdGhpcy5nZXRDdXJyZW50RGF0ZSgpLFxyXG4gIH07XHJcblxyXG4gIHRvRGF0ZVBpY2tlckNvbmZpZzogSURhdGVQaWNrZXJDb25maWcgPSB7fTtcclxuXHJcbiAgaXNTbWlsZXkhOiBib29sZWFuO1xyXG4gIHNtaWxleU1lc3NhZ2U6IHN0cmluZyA9ICcnO1xyXG4gIGdyb3VwTGlzdDogYW55O1xyXG4gIGdyb3Vwc0VuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB0b3RhbGdyb3VwczogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY3JlYXRlRGFzaGJvYXJkU2VydmljZTogQ3JlYXRlRGFzaGJvYXJkU2VydmljZSxcclxuICAgIHByaXZhdGUgcGFnaW5hdGlvblNlcnZpY2U6IFBhZ2luYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogU25hY2tCYXJTZXJ2aWNlLFxyXG4gICAgcHVibGljIHBvcG92ZXJTZXJ2aWNlOiBQb3BvdmVyU2VydmljZSxcclxuICAgIHByaXZhdGUgY29uZmlndXJlV2lkZ2V0c1NlcnZpY2U6IENvbmZpZ3VyZVdpZGdldHNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0ZXh0Q291bnQ6IFRleHRDb3VudFBpcGVcclxuICApIHt9XHJcblxyXG4gIG5nT25DaGFuZ2VzKCkge1xyXG4gICAgaWYgKHRoaXMuY3JlYXRlZEJ5KSB7XHJcbiAgICAgIHRoaXMubGlzdERldGFpbHMubm9uUmVtb3ZhYmxlVXNlcnNMaXN0LnB1c2godGhpcy5jcmVhdGVkQnkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnLCBbJyRldmVudCddKSBvbktleWRvd25IYW5kbGVyKFxyXG4gICAgZXZlbnQ6IEtleWJvYXJkRXZlbnRcclxuICApIHtcclxuICAgIHRoaXMuY2xvc2UuZW1pdCh7IG1vZGU6ICdkaXNjYXJkJyB9KTtcclxuICAgIHRoaXMuaXNTbWlsZXkgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5ncm91cHNFbmFibGVkID0gdGhpcy5mZWF0dXJlPy5pc0ZlYXR1cmVFbmFibGVkKFxyXG4gICAgICAnZmZfZ3JvdXBzX2ltcHJvdmVtZW50cydcclxuICAgICk7XHJcbiAgICB0aGlzLmFuaW1hdGlvbiA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5hbmltYXRpb24gPSBmYWxzZTtcclxuICAgIH0sIDMwMCk7XHJcbiAgICAvLyB0aGlzLmdldE9yZ2FuaXphdGlvblVzZXJzQ291bnQoJycpO1xyXG4gICAgdGhpcy5nZXRDYXRlZ29yeUxpc3QoKTtcclxuICAgIHRoaXMuZ2V0UkNMaXN0KCk7XHJcbiAgICB0aGlzLmdldENvbXBsaWFuY2VDYXRlZ29yeUxpc3QoKTtcclxuICAgIHRoaXMuc2V0RnJlcXVlbmN5KCcyfjF+MH4wJywgJ2ltcG9ydCcpO1xyXG4gICAgdGhpcy5jaGVja1doZXRoZXJBbGxMaXN0c0xvYWRlZCgpO1xyXG4gICAgdGhpcy5nZXRVc2Vyc0xpc3QoJycpO1xyXG4gICAgdGhpcy5nZXRHcm91cExpc3QoKTtcclxuICAgIHRoaXMuY3JlYXRlRGFzaGJvYXJkU2VydmljZS5nZXRVc2VySW5mb3JtYXRpb24oKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0UGVybWlzc2lvbihyZXM/LnJvbGVBY3Rpb25zKTtcclxuICAgICAgICBjb25zdCBxdWlja0xpbmsgPSByZXMucXVpY2tfbGluaztcclxuICAgICAgICBpZiAocXVpY2tMaW5rLnJpc2spIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1Jpc2tDYXRlZ29yeSA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1Jpc2tDYXRlZ29yeSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheXMgdGhlIGxpc3RpbmcgcGFnZXMgdGhlIGxlZnQgc2lkZSBvZiBwb2xpY3kgZm9ybSB0byBzZXQgYW5kIGVkaXQgdGhlIGRyb3Bkb3duIGZpZWxkcyB2YWx1ZXNcclxuICAgKiBAcGFyYW0gdHlwZSBob2xkcyBuYW1lIG9mIHBhcnRpY3VsYXIgbGlzdCBpcyB0byBiZSBkaXNwbGF5ZWRcclxuICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgYm9vbGVhbiB2YWx1ZSB0byBkaXNwbGF5IHRoZSBsaXN0IG9yIG5vdFxyXG4gICAqL1xyXG4gIGFjdGl2YXRlU2VsZWN0b3IodHlwZTogYW55LCBldmVudDogYm9vbGVhbikge1xyXG4gICAgaWYgKHR5cGUgPT0gJ2ZyZXF1ZW5jeScgfHwgdGhpcy5hY3RpdmVTZWxlY3RvciA9PSAnZnJlcXVlbmN5Jykge1xyXG4gICAgICB0aGlzLnNob3dDcml0ZXJpYSA9IGZhbHNlO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnNob3dDcml0ZXJpYSA9IHRydWU7XHJcbiAgICAgIH0sIDEpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hY3RpdmVTZWxlY3RvciA9IGV2ZW50ID8gdHlwZSA6ICcnO1xyXG4gIH1cclxuXHJcbiAgb3BlbkZyb21EYXRlUGlja2VyKCkge1xyXG4gICAgdGhpcy5mcm9tRGF0ZVBpY2tlcj8uYXBpPy5vcGVuKCk7XHJcbiAgICB0aGlzLmRhdGVQaWNrZXJPdmVybGF5ID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9wZW5Ub0RhdGVQaWNrZXIoKSB7XHJcbiAgICB0aGlzLnRvRGF0ZVBpY2tlcj8uYXBpPy5vcGVuKCk7XHJcbiAgICB0aGlzLmRhdGVQaWNrZXJPdmVybGF5ID0gdHJ1ZTtcclxuICB9XHJcbiAgY2xvc2VGcm9tRGF0ZVBpY2tlcigpIHtcclxuICAgIGlmICghdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkRnJvbURhdGUpIHtcclxuICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkVG9EYXRlID0gdW5kZWZpbmVkO1xyXG4gICAgICB0aGlzLmhpZGVUb0RhdGUgPSB0cnVlO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmhpZGVUb0RhdGUgPSBmYWxzZTtcclxuICAgICAgfSwgMjApO1xyXG4gICAgICB0aGlzLmZyb21EYXRlUGlja2VyLmFwaS5jbG9zZSgpO1xyXG4gICAgICB0aGlzLmRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBtaW5Ub0RhdGUgPSB0aGlzLnNldFRvRGF0ZSh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRGcm9tRGF0ZSk7XHJcbiAgICB0aGlzLnRvRGF0ZVBpY2tlckNvbmZpZyA9IHsgbWluOiBtaW5Ub0RhdGUgfTtcclxuXHJcbiAgICBjb25zdCBmcm9tRGF0ZSA9IG5ldyBEYXRlKG1pblRvRGF0ZS5zcGxpdCgnLScpLnJldmVyc2UoKS5qb2luKCctJykpO1xyXG4gICAgY29uc3QgdG9EYXRlID0gbmV3IERhdGUodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkVG9EYXRlKTtcclxuICAgIGNvbnN0IGluVmFsaWREYXRlID0gZnJvbURhdGUgPj0gdG9EYXRlID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgaWYgKGluVmFsaWREYXRlKSB7XHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFRvRGF0ZSA9IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy5oaWRlVG9EYXRlID0gdHJ1ZTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5oaWRlVG9EYXRlID0gZmFsc2U7XHJcbiAgICAgIH0sIDIwKTtcclxuICAgIH1cclxuICAgIHRoaXMuZnJvbURhdGVQaWNrZXI/LmFwaT8uY2xvc2UoKTtcclxuICAgIHRoaXMuZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNsb3NlVG9EYXRlUGlja2VyKCkge1xyXG4gICAgdGhpcy50b0RhdGVQaWNrZXI/LmFwaT8uY2xvc2UoKTtcclxuICAgIHRoaXMuZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGFuaW1hdGVJbWFnZSgpIHtcclxuICAgIGNvbnN0IGNpcmNsZUltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW1hZ2UnKTtcclxuICB9XHJcblxyXG4gIHNhdmVGcmVxdWVuY3koZXZlbnRWYWx1ZXM6IGFueSkge1xyXG4gICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkRnJlcXVlbmN5VHlwZSA9IGV2ZW50VmFsdWVzLmZyZXF1ZW5jeVR5cGU7XHJcbiAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRGcmVxdWVuY2llcyA9IGV2ZW50VmFsdWVzLmZyZXF1ZW5jaWVzO1xyXG4gICAgdGhpcy5kYXNoYm9hcmRGb3JtLmZyZXF1ZW5jeU1lc3NhZ2UgPSBldmVudFZhbHVlcy5mcmVxdWVuY3lTdHJpbmc7XHJcbiAgICB0aGlzLmRhc2hib2FyZEZvcm0uZnJlcXVlbmN5RGF0ZSA9IGV2ZW50VmFsdWVzLnNlbGVjdGVkRGF0ZTtcclxuICAgIHRoaXMuYWN0aXZhdGVTZWxlY3RvcignJywgZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q3VycmVudERhdGUoKSB7XHJcbiAgICBsZXQgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdG9kYXkuZ2V0RGF0ZSgpICsgJy0nICsgKHRvZGF5LmdldE1vbnRoKCkgKyAxKSArICctJyArIHRvZGF5LmdldEZ1bGxZZWFyKClcclxuICAgICk7XHJcbiAgfVxyXG4gIHNldFRvRGF0ZShkYXRhOiBzdHJpbmcpIHtcclxuICAgIGxldCB0b2RheSA9IG5ldyBEYXRlKGRhdGEpO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdG9kYXkuZ2V0RGF0ZSgpICtcclxuICAgICAgMSArXHJcbiAgICAgICctJyArXHJcbiAgICAgICh0b2RheS5nZXRNb250aCgpICsgMSkgK1xyXG4gICAgICAnLScgK1xyXG4gICAgICB0b2RheS5nZXRGdWxsWWVhcigpXHJcbiAgICApO1xyXG4gIH1cclxuICBnZXRGcm9tRGF0ZShkYXRhOiBzdHJpbmcpIHtcclxuICAgIGxldCB0b2RheSA9IG5ldyBEYXRlKGRhdGEpO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdG9kYXkuZ2V0RGF0ZSgpICsgJy0nICsgKHRvZGF5LmdldE1vbnRoKCkgKyAxKSArICctJyArIHRvZGF5LmdldEZ1bGxZZWFyKClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJdCB0YWtlcyBhIHN0cmluZywgY29udmVydHMgaXQgdG8gYSBkYXRlLCB0aGVuIHJldHVybnMgYSBzdHJpbmcgaW4gdGhlIGZvcm1hdCBvZiBZWVlZLU1NLURELlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhIC0gdGhlIGRhdGUgeW91IHdhbnQgdG8gZm9ybWF0XHJcbiAgICogQHJldHVybnMgQSBzdHJpbmcgaW4gdGhlIGZvcm1hdCBvZiBZWVlZLU1NLUREXHJcbiAgICovXHJcbiAgZ2V0RGF0ZUZvcm1hdGUoZGF0YTogc3RyaW5nKSB7XHJcbiAgICBsZXQgdG9kYXkgPSBuZXcgRGF0ZShkYXRhKTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRvZGF5LmdldEZ1bGxZZWFyKCkgK1xyXG4gICAgICAnLScgK1xyXG4gICAgICBTdHJpbmcodG9kYXkuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJykgK1xyXG4gICAgICAnLScgK1xyXG4gICAgICBTdHJpbmcodG9kYXkuZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY29uZmlndXJlRGFzaGJvYXJkKCkge1xyXG4gICAgbGV0IGZpZWxkc1N0YXR1cyA9IHRoaXMudmFsaWRhdGVEYXNoYm9hcmQoKTtcclxuICAgIGlmIChmaWVsZHNTdGF0dXMpIHtcclxuICAgICAgaWYgKHRoaXMubW9kZSA9PSAnQ1JFQVRFJykge1xyXG4gICAgICAgIHRoaXMudkxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgICAgIGRhc2hib2FyZF9uYW1lOiB0aGlzLmRhc2hib2FyZEZvcm0uZGFzaGJvYXJkTmFtZSxcclxuICAgICAgICAgIGRhc2hib2FyZF9pZDogJycsXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmNyZWF0ZURhc2hib2FyZFNlcnZpY2VcclxuICAgICAgICAgIC5jaGVja0R1cGxpY2F0ZURhc2hib2FyZE5hbWUocGF5bG9hZClcclxuICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgIChyZXMpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoIXJlcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dSaXNrV2lkZ2V0cyA9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXNNYW5hZ2VSaXNrICYmXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd1Jpc2tDYXRlZ29yeSAmJlxyXG4gICAgICAgICAgICAgICAgICAodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmlza0NhdGVnb3JpZXMubGVuZ3RoID4gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycy5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgIDogZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dDb21wbGlhbmNlV2lkZ2V0cyA9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcy5sZW5ndGggPlxyXG4gICAgICAgICAgICAgICAgICAgIDAgfHxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzLmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgICAgICAgICA/IHRydWVcclxuICAgICAgICAgICAgICAgICAgICA6IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuQ29uZmlndXJlV2lkZ2V0cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxyXG4gICAgICAgICAgICAgICAgICAnQSBkYXNoYm9hcmQgd2l0aCB0aGlzIG5hbWUgYWxyZWFkeSBleGlzdHMuIFNwZWNpZnkgYSBkaWZmZXJlbnQgbmFtZSBmb3IgdGhlIGRhc2hib2FyZC4nLFxyXG4gICAgICAgICAgICAgICAgICAnYWxlcnQnXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgICAgdGhpcy52TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09ICdFRElUJykge1xyXG4gICAgICAgIHRoaXMudkxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgICAgIGRhc2hib2FyZF9uYW1lOiB0aGlzLmRhc2hib2FyZEZvcm0uZGFzaGJvYXJkTmFtZSxcclxuICAgICAgICAgIGRhc2hib2FyZF9pZDogdGhpcy5kYXNoYm9hcmRJZCxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuY3JlYXRlRGFzaGJvYXJkU2VydmljZVxyXG4gICAgICAgICAgLmNoZWNrRHVwbGljYXRlRGFzaGJvYXJkTmFtZShwYXlsb2FkKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICghcmVzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd1Jpc2tXaWRnZXRzID1cclxuICAgICAgICAgICAgICAgICAgdGhpcy5pc01hbmFnZVJpc2sgJiZcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zaG93Umlza0NhdGVnb3J5ICYmXHJcbiAgICAgICAgICAgICAgICAgICh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcy5sZW5ndGggPiAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzLmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgICAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgOiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0NvbXBsaWFuY2VXaWRnZXRzID1cclxuICAgICAgICAgICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzLmxlbmd0aCA+XHJcbiAgICAgICAgICAgICAgICAgICAgMCB8fFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnMubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgIDogZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5Db25maWd1cmVXaWRnZXRzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coXHJcbiAgICAgICAgICAgICAgICAgICdBIGRhc2hib2FyZCB3aXRoIHRoaXMgbmFtZSBhbHJlYWR5IGV4aXN0cy4gU3BlY2lmeSBhIGRpZmZlcmVudCBuYW1lIGZvciB0aGUgZGFzaGJvYXJkLicsXHJcbiAgICAgICAgICAgICAgICAgICdhbGVydCdcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnZMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyBvcmdhbml6YXRpb24gdXNlcnMgY291bnQgYXBpIHRvIGdldCB0b3RhbCBudW1iZXIgb2YgcGFnZXNcclxuICAgKiBAcGFyYW0gVXJsIGNvbnRhaW5zIHByYW1zXHJcbiAgICovXHJcbiAgZ2V0T3JnYW5pemF0aW9uVXNlcnNDb3VudChVcmw6IGFueSkge1xyXG4gICAgdGhpcy5jcmVhdGVEYXNoYm9hcmRTZXJ2aWNlXHJcbiAgICAgIC5nZXRPcmdhbml6YXRpb25Vc2Vyc0NvdW50KFVybClcclxuICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy50b3RhbExpc3QgPSByZXMudG90YWxfbWVtYmVycztcclxuICAgICAgICBpZiAocmVzLnRvdGFsX21lbWJlcnMgJiYgcmVzLmxpbWl0X3Blcl9wYWdlID4gMSkge1xyXG4gICAgICAgICAgdGhpcy50b3RhbFBhZ2VzID0gcmVzLmNyZWF0ZV9wYWdlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsUGFnZXMgPSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdXNlcnMgbGlzdCBieSBtYWtpbmcgYXBpIGNhbGwgYW5kIHByZSBzZWxlY3RzIGFsbCBhZG1pbnMgYnkgYWRkaW5nIHRvIHZpZXdlcnNcclxuICAgKiBAcGFyYW0gdXJsIGNvbnRhaW5zIHF1ZXJ5IHBhcmFtcyBmb3Igb3JnYW5pemF0aW9uIHVzZXJzIGFwaVxyXG4gICAqL1xyXG4gIGdldFVzZXJzTGlzdCh1cmw6IGFueSkge1xyXG4gICAgdGhpcy5jcmVhdGVEYXNoYm9hcmRTZXJ2aWNlLmdldEFsbFVzZXJzKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnVzZXJzTGlzdCA9IHJlcztcclxuICAgICAgdGhpcy51c2VyTGlzdExvYWRlZCA9IHRydWU7XHJcblxyXG4gICAgICBpZiAodGhpcy5tb2RlID09PSAnRURJVCcpIHtcclxuICAgICAgICB0aGlzLnZMb2FkZXIgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFZpZXdlcnMgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICB0aGlzLnVzZXJzTGlzdCxcclxuICAgICAgICAgIFt0aGlzLmNyZWF0ZWRCeV0sXHJcbiAgICAgICAgICAnbWVtYmVyX2lkJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5saXN0RGV0YWlscy5zZWxlY3RlZFVzZXJzTGlzdCA9IHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFZpZXdlcnM7XHJcbiAgICAgICAgdGhpcy52TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0R3JvdXBMaXN0KCkge1xyXG4gICAgdGhpcy5jcmVhdGVEYXNoYm9hcmRTZXJ2aWNlLmdldEFsbEdyb3VwcygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy50b3RhbGdyb3VwcyA9IHJlcy50b3RhbF9pdGVtcztcclxuICAgICAgdGhpcy5ncm91cExpc3QgPSByZXMuZGF0YTtcclxuICAgICAgdGhpcy51c2VyTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJykge1xyXG4gICAgICAgIHRoaXMudkxvYWRlciA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkR3JvdXAgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICB0aGlzLmdyb3VwTGlzdCxcclxuICAgICAgICAgIFt0aGlzLmNyZWF0ZWRCeV0sXHJcbiAgICAgICAgICAnZ3JvdXBfaWQnXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmxpc3REZXRhaWxzLnNlbGVjdGVkR3JvdXBMaXN0ID0gdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkR3JvdXA7XHJcbiAgICAgICAgdGhpcy52TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29tcGxpYW5jZUNhdGVnb3J5TGlzdCgpIHtcclxuICAgIHRoaXMuY3JlYXRlRGFzaGJvYXJkU2VydmljZVxyXG4gICAgICAuZ2V0Q29tcGxpYW5jZUNhdGVnb3JpZXNMaXN0RnJvbUdsb2JhbCgpXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBkYXRhID0gcmVzO1xyXG4gICAgICAgICAgdGhpcy5hbGxDb21wbGlhbmNlQ2F0ZWdvcmllcyA9IE9iamVjdC5hc3NpZ24ocmVzKTtcclxuICAgICAgICAgIC8vIGNsb25lRGVlcChyZXMpO1xyXG4gICAgICAgICAgZGF0YS5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5jb21wbGlhbmNlX3R5cGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzVHJlZS5vdGhlcnMubGlzdC5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuY29tcGxpYW5jZV90eXBlID09IDEpIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllc1RyZWUucmVndWxhdGlvbnMubGlzdC5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuY29tcGxpYW5jZV90eXBlID09IDIpIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllc1RyZWUuc3RhbmRhcmRzLmxpc3QucHVzaChlbGVtZW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LmNvbXBsaWFuY2VfdHlwZSA9PSAzKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUNhdGVnb3JpZXNUcmVlLmludGVybmFsQ29udHJvbHMubGlzdC5wdXNoKFxyXG4gICAgICAgICAgICAgICAgZWxlbWVudFxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb21wbGlhbmNlQ2F0ZWdvcmllc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgICB0aGlzLmNvbXBsaWFuY2VDYXRlZ29yaWVzTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgc2F2ZVNlbGVjdGVkQ2F0ZWdvcnkoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coJ2V2ZW50PT0+Pj4nLCBldmVudCk7XHJcbiAgfVxyXG5cclxuICBnZXRDYXRlZ29yeUxpc3QoKSB7XHJcbiAgICB0aGlzLmNyZWF0ZURhc2hib2FyZFNlcnZpY2UuZ2V0Q2F0ZWdvcnlMaXN0KCkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnJpc2tDYXRlZ29yeUxpc3Quc3RyYXRlZ2ljLmxpc3QgPSByZXMuc3RyYXRlZ2ljX2FycjtcclxuICAgICAgICB0aGlzLnJpc2tDYXRlZ29yeUxpc3Qub3BlcmF0aW9uYWwubGlzdCA9IHJlcy5vcGVyYXRpb25hbF9hcnI7XHJcbiAgICAgICAgdGhpcy5yaXNrQ2F0ZWdvcnlMaXN0LmNvbXBsaWFuY2UubGlzdCA9IHJlcy5jb21wbGlhbmNlX2FycjtcclxuICAgICAgICB0aGlzLnJpc2tDYXRlZ29yeUxpc3Qub3RoZXJzLmxpc3QgPSByZXMub3RoZXJzX2FycjtcclxuICAgICAgICB0aGlzLnJpc2tDYXRlZ29yeUxpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWxsUmlza0NhdGVnb3JpZXMgPSBbXHJcbiAgICAgICAgICAuLi5uZXcgU2V0KFxyXG4gICAgICAgICAgICB0aGlzLmFsbFJpc2tDYXRlZ29yaWVzLmNvbmNhdChcclxuICAgICAgICAgICAgICByZXMuc3RyYXRlZ2ljX2FycixcclxuICAgICAgICAgICAgICByZXMub3BlcmF0aW9uYWxfYXJyLFxyXG4gICAgICAgICAgICAgIHJlcy5jb21wbGlhbmNlX2FycixcclxuICAgICAgICAgICAgICByZXMub3RoZXJzX2FyclxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgIF07XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgdGhpcy5yaXNrQ2F0ZWdvcnlMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEl0IGlzIHRvIGVuc3VyZSB3aGV0aGVyIGFsbCByZXF1aXJlZCBsaXN0cyBvbiBQb2xpY3kgZnJvbSBpcyBsb2FkZWQgZnJvbSB0aGUgYXBpIGNhbGwgb3Igbm90XHJcbiAgICovXHJcbiAgY2hlY2tXaGV0aGVyQWxsTGlzdHNMb2FkZWQoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucmNMaXN0TG9hZGVkICYmXHJcbiAgICAgIHRoaXMuY29tcGxpYW5jZUNhdGVnb3JpZXNMaXN0TG9hZGVkICYmXHJcbiAgICAgIHRoaXMucmlza0NhdGVnb3J5TGlzdExvYWRlZCAmJlxyXG4gICAgICB0aGlzLnVzZXJMaXN0TG9hZGVkXHJcbiAgICApIHtcclxuICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0RGFzaGJvYXJkKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy52TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2hlY2tXaGV0aGVyQWxsTGlzdHNMb2FkZWQoKTtcclxuICAgICAgfSwgMzAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFNlbGVjdGVkV2lkZ2V0cyhkYXRhOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdDUkVBVEUnKSB7XHJcbiAgICAgIGNvbnN0IHdpZGdldHNBcnJheTogYW55ID0gW107XHJcbiAgICAgIGRhdGEuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IG9iajogYW55ID0ge307XHJcbiAgICAgICAgb2JqLm1vZHVsZV9uYW1lID0gZWxlbWVudC5tb2R1bGU7XHJcbiAgICAgICAgb2JqLl9pZCA9ICcnO1xyXG4gICAgICAgIG9iai53aWRnZXRfbmFtZSA9IGVsZW1lbnQudGl0bGU7XHJcbiAgICAgICAgb2JqLndpZGdldF9jb2RlID0gZWxlbWVudC5pZDtcclxuICAgICAgICBvYmouc3ViX3dpZGdldHMgPSBbXTtcclxuICAgICAgICBvYmouc3RhdGUgPSAnQUNUSVZFJztcclxuICAgICAgICBpZiAoZWxlbWVudC5zdWJXaWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGVsZW1lbnQuc3ViV2lkZ2V0cy5mb3JFYWNoKChzdWJXaWRnZXQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgc3ViV2lkZ2V0T2JqZWN0OiBhbnkgPSB7fTtcclxuICAgICAgICAgICAgc3ViV2lkZ2V0T2JqZWN0Ll9pZCA9ICcnO1xyXG4gICAgICAgICAgICBzdWJXaWRnZXRPYmplY3Qud2lkZ2V0X25hbWUgPSBzdWJXaWRnZXQudGl0bGU7XHJcbiAgICAgICAgICAgIHN1YldpZGdldE9iamVjdC53aWRnZXRfY29kZSA9IHN1YldpZGdldC5pZDtcclxuICAgICAgICAgICAgc3ViV2lkZ2V0T2JqZWN0LnN0YXRlID0gc3ViV2lkZ2V0LnZhbHVlID8gJ0FDVElWRScgOiAnSU5BQ1RJVkUnO1xyXG4gICAgICAgICAgICBvYmouc3ViX3dpZGdldHMucHVzaChPYmplY3QuYXNzaWduKHN1YldpZGdldE9iamVjdCkpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHdpZGdldHNBcnJheS5wdXNoKG9iaik7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLmNvbmZpZ3VyZVdpZGdldCA9IHdpZGdldHNBcnJheTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSAnRURJVCcpIHtcclxuICAgICAgY29uc3Qgd2lkZ2V0c0FycmF5OiBhbnkgPSBbXTtcclxuXHJcbiAgICAgIGRhdGEuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgIUpTT04uc3RyaW5naWZ5KHRoaXMuZGFzaGJvYXJkRm9ybS5jb25maWd1cmVXaWRnZXQpLmluY2x1ZGVzKFxyXG4gICAgICAgICAgICBlbGVtZW50LmlkXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBsZXQgb2JqOiBhbnkgPSB7fTtcclxuICAgICAgICAgIG9iai5tb2R1bGVfbmFtZSA9IGVsZW1lbnQubW9kdWxlO1xyXG4gICAgICAgICAgb2JqLl9pZCA9ICcnO1xyXG4gICAgICAgICAgb2JqLndpZGdldF9uYW1lID0gZWxlbWVudC50aXRsZTtcclxuICAgICAgICAgIG9iai53aWRnZXRfY29kZSA9IGVsZW1lbnQuaWQ7XHJcbiAgICAgICAgICBvYmouc3ViX3dpZGdldHMgPSBbXTtcclxuICAgICAgICAgIG9iai5zdGF0ZSA9ICdBQ1RJVkUnO1xyXG4gICAgICAgICAgaWYgKGVsZW1lbnQuc3ViV2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQuc3ViV2lkZ2V0cy5mb3JFYWNoKChzdWJXaWRnZXQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCBzdWJXaWRnZXRPYmplY3Q6IGFueSA9IHt9O1xyXG4gICAgICAgICAgICAgIHN1YldpZGdldE9iamVjdC5faWQgPSAnJztcclxuICAgICAgICAgICAgICBzdWJXaWRnZXRPYmplY3Qud2lkZ2V0X25hbWUgPSBzdWJXaWRnZXQudGl0bGU7XHJcbiAgICAgICAgICAgICAgc3ViV2lkZ2V0T2JqZWN0LndpZGdldF9jb2RlID0gc3ViV2lkZ2V0LmlkO1xyXG4gICAgICAgICAgICAgIHN1YldpZGdldE9iamVjdC5zdGF0ZSA9IHN1YldpZGdldC52YWx1ZSA/ICdBQ1RJVkUnIDogJ0lOQUNUSVZFJztcclxuICAgICAgICAgICAgICBvYmouc3ViX3dpZGdldHMucHVzaChzdWJXaWRnZXRPYmplY3QpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5jb25maWd1cmVXaWRnZXQucHVzaChvYmopO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRXaWRnZXRzLmZpbmRJbmRleChcclxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGUud2lkZ2V0X2NvZGUgPT0gZWxlbWVudC5pZFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmIChpbmRleCAhPSAtMSkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0c1tpbmRleF0uc3RhdGUgPSAnQUNUSVZFJztcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRXaWRnZXRzW2luZGV4XS5zdWJfd2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldHNbaW5kZXhdLnN1Yl93aWRnZXRzLmZvckVhY2goXHJcbiAgICAgICAgICAgICAgICAoc3ViV2lkZ2V0RGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRJbmRleCA9IGVsZW1lbnQuc3ViV2lkZ2V0cy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGUuaWQgPT0gc3ViV2lkZ2V0RGF0YS53aWRnZXRfY29kZVxyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudEluZGV4ICE9IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3ViV2lkZ2V0RGF0YS5zdGF0ZSA9IGVsZW1lbnQuc3ViV2lkZ2V0c1tlbGVtZW50SW5kZXhdLnZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICA/ICdBQ1RJVkUnXHJcbiAgICAgICAgICAgICAgICAgICAgICA6ICdJTkFDVElWRSc7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLmNvbmZpZ3VyZVdpZGdldC5mb3JFYWNoKChzYXZlZFdpZGdldDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSBkYXRhLmZpbmRJbmRleChcclxuICAgICAgICAgIChkYXRhRWxlbWVudDogYW55KSA9PiBkYXRhRWxlbWVudC5pZCA9PSBzYXZlZFdpZGdldC53aWRnZXRfY29kZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKGluZGV4ID09IC0xKSB7XHJcbiAgICAgICAgICBzYXZlZFdpZGdldC5zdGF0ZSA9ICdJTkFDVElWRSc7XHJcbiAgICAgICAgICBpZiAoc2F2ZWRXaWRnZXQuc3ViX3dpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBzYXZlZFdpZGdldC5zdWJfd2lkZ2V0cy5mb3JFYWNoKChzYXZlU3ViV2lkZ2V0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBzYXZlU3ViV2lkZ2V0LnN0YXRlID0gJ0lOQUNUSVZFJztcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzID0gZGF0YTtcclxuICAgIHRoaXMub3BlbkNvbmZpZ3VyZVdpZGdldHMgPSBmYWxzZTtcclxuICAgIHRoaXMuc3VibWl0RGFzaGJvYXJkKCk7XHJcbiAgfVxyXG5cclxuICBjbG9zZUNvbmZpZ3VyZVdpZGdldHMoZXZlbnQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMub3BlbkNvbmZpZ3VyZVdpZGdldHMgPSBldmVudDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbHRlciBsaXN0IHVzZXIncyBsaXN0IGJhc2VkIG9uIHBhZ2luYXRpb24gYnkgbWFraW5nIGFwaSBjYWxsXHJcbiAgICogQHBhcmFtIGV2ZW50IHNwZWNpZmllcyBhIGJvb2xlYW4gdmFsdWUgdG8gY2FsbCBhcGlcclxuICAgKi9cclxuICBwYWdpbmF0aW9uRmlsdGVyKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudCkge1xyXG4gICAgICB0aGlzLmdldFVzZXJzTGlzdCh7XHJcbiAgICAgICAgcDpcclxuICAgICAgICAgIHRoaXMucGFnaW5hdGlvblNlcnZpY2UuY3VycmVudFBhZ2UgPT09IDFcclxuICAgICAgICAgICAgPyAnJ1xyXG4gICAgICAgICAgICA6IHRoaXMucGFnaW5hdGlvblNlcnZpY2UuY3VycmVudFBhZ2UsXHJcbiAgICAgICAgdHlwZTogJ2FsbF9leGNlcHRfZXhlY3V0aXZlJyxcclxuICAgICAgICBxOiAhdGhpcy5wYWdpbmF0aW9uU2VydmljZS5zZWFyY2hWYWx1ZVxyXG4gICAgICAgICAgPyAnJ1xyXG4gICAgICAgICAgOiB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLnNlYXJjaFZhbHVlLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFJDTGlzdCgpIHtcclxuICAgIHRoaXMuY3JlYXRlRGFzaGJvYXJkU2VydmljZS5nZXRSZXNwb25zaWJpbGl0eUNlbnRlckxpc3QoKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdCA9IHJlcztcclxuICAgICAgICB0aGlzLnJjTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICB0aGlzLnJjTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqICMjIyMgRGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIFJldHVybnMgdGhlIHVuaXF1ZSBhcnJheSBvZiBvYmplY3QgYmFzZWQgb24gdW5pcXVlIGtleVxyXG4gICAqIEBwYXJhbSBhcnJheVxyXG4gICAqIEBwYXJhbSBrZXlcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIHVuaXF1ZUJ5UHJvcChhcnJheTogYW55LCBrZXk6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIEFycmF5LmZyb20oXHJcbiAgICAgIGFycmF5XHJcbiAgICAgICAgLnJlZHVjZShcclxuICAgICAgICAgIChhY2M6IGFueSwgaXRlbTogYW55KSA9PiAoXHJcbiAgICAgICAgICAgIGl0ZW0gJiYgaXRlbVtrZXldICYmIGFjYy5zZXQoaXRlbVtrZXldLCBpdGVtKSwgYWNjXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICAgbmV3IE1hcCgpXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC52YWx1ZXMoKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHNhdmVTZWxlY3RlZExpc3QodHlwZTogc3RyaW5nLCBzZWxlY3RlZEl0ZW1zOiBhbnkpIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlICdyYyc6XHJcbiAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0LFxyXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcyxcclxuICAgICAgICAgICdpdGVtX2lkJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0cyA9IHRoaXMuc2VsZWN0ZWRXaWRnZXRzLmZpbHRlcihcclxuICAgICAgICAgICAgICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50Lm1vZHVsZV9uYW1lICE9ICdDT01QTElBTkNFJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0cyA9IHRoaXMuc2VsZWN0ZWRXaWRnZXRzLmZpbHRlcihcclxuICAgICAgICAgICAgICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50Lm1vZHVsZV9uYW1lICE9ICdSSVNLJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnd2hvQ2FuVmlldyc6XHJcbiAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkVmlld2VycyA9IHRoaXMudW5pcXVlQnlQcm9wKFxyXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz8udXNlcnMsXHJcbiAgICAgICAgICAnbWVtYmVyX2lkJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5saXN0RGV0YWlscy5zZWxlY3RlZFVzZXJzTGlzdCA9IHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFZpZXdlcnM7XHJcbiAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkR3JvdXAgPSB0aGlzLnVuaXF1ZUJ5UHJvcChcclxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/Lmdyb3VwcyxcclxuICAgICAgICAgICdncm91cF9pZCdcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMubGlzdERldGFpbHMuc2VsZWN0ZWRHcm91cExpc3QgPSB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRHcm91cDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzJzpcclxuICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXMgPSBzZWxlY3RlZEl0ZW1zO1xyXG4gICAgICAgIGlmICh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnMubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgIGlmICh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXMubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldHMgPSB0aGlzLnNlbGVjdGVkV2lkZ2V0cy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5tb2R1bGVfbmFtZSAhPSAnQ09NUExJQU5DRSdcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmlza0NhdGVnb3JpZXMubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldHMgPSB0aGlzLnNlbGVjdGVkV2lkZ2V0cy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5tb2R1bGVfbmFtZSAhPSAnUklTSydcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3Jpc2tDYXRlZ29yeSc6XHJcbiAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmlza0NhdGVnb3JpZXMgPSBzZWxlY3RlZEl0ZW1zO1xyXG4gICAgICAgIGlmICh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnMubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgIGlmICh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXMubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldHMgPSB0aGlzLnNlbGVjdGVkV2lkZ2V0cy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5tb2R1bGVfbmFtZSAhPSAnQ09NUExJQU5DRSdcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmlza0NhdGVnb3JpZXMubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldHMgPSB0aGlzLnNlbGVjdGVkV2lkZ2V0cy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5tb2R1bGVfbmFtZSAhPSAnUklTSydcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFjdGl2YXRlU2VsZWN0b3IoJycsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZSh0eXBlOiBhbnksIGV2ZW50OiBhbnksIHJlbW92ZUluZGV4PzogYW55KSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAncmMnOlxyXG4gICAgICAgIGNvbnN0IHJjSW5kZXggPVxyXG4gICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzLmZpbmRJbmRleChcclxuICAgICAgICAgICAgKHJjOiBhbnkpID0+IHJjLnJjX2lkID09IGV2ZW50LnJjX2lkXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmIChyY0luZGV4ICE9PSAtMSkge1xyXG4gICAgICAgICAgY29uc3QgcGFyZW50UmM6IGFueSA9XHJcbiAgICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVyc1tyY0luZGV4XTtcclxuICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycy5zcGxpY2UocmNJbmRleCwgMSk7XHJcblxyXG4gICAgICAgICAgaWYgKHBhcmVudFJjPy5pdGVtX2NoaWxkX2lkcz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBwYXJlbnRSYy5pdGVtX2NoaWxkX2lkcy5mb3JFYWNoKChjaGlsZEVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHJlbW92ZUluZGV4ID1cclxuICAgICAgICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgICAgICAgIChyZW1vdmVFbGVtZW50OiBhbnkpID0+IHJlbW92ZUVsZW1lbnQucmNfaWQgPT0gY2hpbGRFbGVtZW50XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycy5zcGxpY2UoXHJcbiAgICAgICAgICAgICAgICByZW1vdmVJbmRleCxcclxuICAgICAgICAgICAgICAgIDFcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0cyA9IHRoaXMuc2VsZWN0ZWRXaWRnZXRzLmZpbHRlcihcclxuICAgICAgICAgICAgICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50Lm1vZHVsZV9uYW1lICE9ICdDT01QTElBTkNFJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0cyA9IHRoaXMuc2VsZWN0ZWRXaWRnZXRzLmZpbHRlcihcclxuICAgICAgICAgICAgICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50Lm1vZHVsZV9uYW1lICE9ICdSSVNLJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ3dob0NhblZpZXcnOlxyXG4gICAgICAgIGNvbnN0IHJldmlld2VySW5kZXggPSB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRWaWV3ZXJzLmZpbmRJbmRleChcclxuICAgICAgICAgICh2aWV3ZXI6IGFueSkgPT4gdmlld2VyLm1lbWJlcl9pZCA9PSBldmVudC5tZW1iZXJfaWRcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFZpZXdlcnMuc3BsaWNlKHJldmlld2VySW5kZXgsIDEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd3aG9DYW5WaWV3R3JvdXAnOlxyXG4gICAgICAgIGNvbnN0IGdyb3VwcyA9IHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEdyb3VwLmZpbmRJbmRleChcclxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCA9PSBldmVudD8uZ3JvdXBfaWRcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEdyb3VwLnNwbGljZShncm91cHMsIDEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdyZXNwb25zaWJpbGl0eUNhdGVnb3JpZXMnOlxyXG4gICAgICAgIGNvbnN0IENDY2F0ZWdvcnlJbmRleCA9XHJcbiAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXMuZmluZEluZGV4KFxyXG4gICAgICAgICAgICAoQ0NjYXRlZ29yeTogYW55KSA9PiBDQ2NhdGVnb3J5LmNhdGVnb3J5X2lkID09IGV2ZW50LmNhdGVnb3J5X2lkXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcy5zcGxpY2UoXHJcbiAgICAgICAgICBDQ2NhdGVnb3J5SW5kZXgsXHJcbiAgICAgICAgICAxXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzID0gdGhpcy5zZWxlY3RlZFdpZGdldHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQubW9kdWxlX25hbWUgIT0gJ0NPTVBMSUFOQ0UnXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzID0gdGhpcy5zZWxlY3RlZFdpZGdldHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQubW9kdWxlX25hbWUgIT0gJ1JJU0snXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAncmlza0NhdGVnb3J5JzpcclxuICAgICAgICBjb25zdCByaXNrQ2F0ZWdvcnlJbmRleCA9XHJcbiAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgIChyaXNrQ2F0ZWdvcnk6IGFueSkgPT4gcmlza0NhdGVnb3J5LmNhdGVnb3J5X2lkID09IGV2ZW50LmNhdGVnb3J5X2lkXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmIChyaXNrQ2F0ZWdvcnlJbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgIGNvbnN0IHBhcmVudDogYW55ID1cclxuICAgICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmlza0NhdGVnb3JpZXNbcmlza0NhdGVnb3J5SW5kZXhdO1xyXG4gICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmlza0NhdGVnb3JpZXMuc3BsaWNlKFxyXG4gICAgICAgICAgICByaXNrQ2F0ZWdvcnlJbmRleCxcclxuICAgICAgICAgICAgMVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmIChwYXJlbnQ/LmNoaWxkX2NhdF9pZHM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgcGFyZW50LmNoaWxkX2NhdF9pZHMuZm9yRWFjaCgoY2hpbGRFbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCByZW1vdmVJbmRleCA9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgICAgICAgIChyZW1vdmVFbGVtZW50OiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlRWxlbWVudC5jYXRlZ29yeV9pZCA9PSBjaGlsZEVsZW1lbnRcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmlza0NhdGVnb3JpZXMuc3BsaWNlKHJlbW92ZUluZGV4LCAxKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzLnNwbGljZShyaXNrQ2F0ZWdvcnlJbmRleCwgMSk7XHJcbiAgICAgICAgaWYgKHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0cyA9IHRoaXMuc2VsZWN0ZWRXaWRnZXRzLmZpbHRlcihcclxuICAgICAgICAgICAgICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50Lm1vZHVsZV9uYW1lICE9ICdDT01QTElBTkNFJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0cyA9IHRoaXMuc2VsZWN0ZWRXaWRnZXRzLmZpbHRlcihcclxuICAgICAgICAgICAgICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50Lm1vZHVsZV9uYW1lICE9ICdSSVNLJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldExpc3QobGlzdDogYW55W10sIGlkczogYW55W10sIGtleTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBkYXRhOiBhbnkgPSBbXTtcclxuXHJcbiAgICBpZHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gbGlzdC5maW5kSW5kZXgoXHJcbiAgICAgICAgKGxpc3RFbGVtZW50OiBhbnkpID0+IGxpc3RFbGVtZW50W2tleV0gPT0gZWxlbWVudFxyXG4gICAgICApO1xyXG4gICAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgZGF0YS5wdXNoKGxpc3RbaW5kZXhdKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcbiAgc3VibWl0dGVkID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgaWQncyBmcm9tIGEgcGFydGljdWxhciBsaXN0IGVsZW1lbnRzXHJcbiAgICogQHBhcmFtIGxpc3QgYWN0dWFsIHNlbGVjdGVkIGxpc3RcclxuICAgKiBAcGFyYW0ga2V5IGNvbnRhaW5zIGtleSB0byBleHRyYWN0IGlkIGZyb20gdGhlIGxpc3RcclxuICAgKi9cclxuICByZXR1cm5JZHMobGlzdDogYW55W10sIGtleTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gbGlzdD8ubWFwKChlbGUpID0+IHtcclxuICAgICAgaWYgKGVsZVtrZXldKSB7XHJcbiAgICAgICAgcmV0dXJuIGVsZVtrZXldO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkYXRlcyB0aGUgZGF0YSBzdWJtaXR0ZWQgb24gY3JlYXRlIGRhc2hib2FyZCBmb3JtXHJcbiAgICovXHJcbiAgdmFsaWRhdGVEYXNoYm9hcmQoKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xyXG4gICAgfSwgMTAwKTtcclxuICAgIGNvbnN0IGV2ZW50ID0gdGhpcy5kYXNoYm9hcmRGb3JtLmRhc2hib2FyZE5hbWU7XHJcbiAgICBjb25zdCByZSA9IC8mbmJzcDt8PGJyPi9nO1xyXG4gICAgdGhpcy5kYXNoYm9hcmRGb3JtLmRhc2hib2FyZE5hbWUgPSBldmVudC5yZXBsYWNlKHJlLCAnJykudHJpbSgpO1xyXG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSB0aGlzLmRhc2hib2FyZEZvcm0uZGFzaGJvYXJkRGVzY3JpcHRpb25UZXh0O1xyXG4gICAgdGhpcy5kYXNoYm9hcmRGb3JtLmRhc2hib2FyZERlc2NyaXB0aW9uVGV4dCA9IGRlc2NyaXB0aW9uXHJcbiAgICAgIC5yZXBsYWNlKHJlLCAnJylcclxuICAgICAgLnRyaW0oKTtcclxuICAgIGlmIChcclxuICAgICAgIXRoaXMuZGFzaGJvYXJkRm9ybS5kYXNoYm9hcmROYW1lIHx8XHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5kYXNoYm9hcmROYW1lLnRyaW0oKSA9PSAnJyB8fFxyXG4gICAgICB0aGlzLmRhc2hib2FyZEZvcm0uZGFzaGJvYXJkTmFtZS5sZW5ndGggPiAzMCB8fFxyXG4gICAgICB0aGlzLnRleHRDb3VudC50cmFuc2Zvcm0odGhpcy5kYXNoYm9hcmRGb3JtPy5kYXNoYm9hcmREZXNjcmlwdGlvblRleHQpID5cclxuICAgICAgICAyNTAgfHxcclxuICAgICAgKHRoaXMuZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRGcm9tRGF0ZSAmJlxyXG4gICAgICAgICF0aGlzLmRhc2hib2FyZEZvcm0/LnNlbGVjdGVkVG9EYXRlKSB8fFxyXG4gICAgICAodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzLmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzLmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmlza0NhdGVnb3JpZXMubGVuZ3RoID09IDApXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNYWtlcyBhbiBhcGkgY2FsbCB0byBjcmVhdGUgYSBwb2xpY3lcclxuICAgKiBAcGFyYW0gZGFzaGJvYXJkIGNvbnRhaW5zIGRhc2hib2FyZEZvcm0gZGF0YVxyXG4gICAqL1xyXG4gIHN1Ym1pdERhc2hib2FyZCgpIHtcclxuICAgIHRoaXMuc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgICBjb25zdCB2YWxpZCA9IHRoaXMudmFsaWRhdGVEYXNoYm9hcmQoKTtcclxuICAgIGlmICghdmFsaWQpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy52TG9hZGVyID0gdHJ1ZTtcclxuICAgIGNvbnN0IGRhc2hib2FyZCA9IHRoaXMuZGFzaGJvYXJkRm9ybTtcclxuICAgIGNvbnN0IHBheWxvYWQ6IGFueSA9IHtcclxuICAgICAgZGFzaGJvYXJkX25hbWU6IGRhc2hib2FyZC5kYXNoYm9hcmROYW1lLFxyXG4gICAgICBkZXNjcmlwdGlvbjogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGNvbnRlbnQ6IGRhc2hib2FyZC5kYXNoYm9hcmREZXNjcmlwdGlvblRleHQsXHJcbiAgICAgICAgICBhdHRhY2htZW50czogW10sXHJcbiAgICAgICAgfSxcclxuICAgICAgXSxcclxuICAgICAgdmlzaWJsZV90b191c2VyczogdGhpcy5yZXR1cm5JZHMoZGFzaGJvYXJkLnNlbGVjdGVkVmlld2VycywgJ21lbWJlcl9pZCcpLFxyXG4gICAgICB2aXNpYmxlX3RvX2dyb3VwczogdGhpcy5yZXR1cm5JZHMoZGFzaGJvYXJkLnNlbGVjdGVkR3JvdXAsICdncm91cF9pZCcpLFxyXG4gICAgICByZXNwb25zaWJpbGl0eV9jZW50ZXI6IHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICAgIGRhc2hib2FyZC5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycyxcclxuICAgICAgICAnaXRlbV9pZCdcclxuICAgICAgKSxcclxuICAgICAgcmVzcG9uc2liaWxpdHlfY2F0ZWdvcnk6IHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICAgIGRhc2hib2FyZC5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcyxcclxuICAgICAgICAnY2F0ZWdvcnlfaWQnXHJcbiAgICAgICksXHJcbiAgICAgIHJpc2tfY2F0ZWdvcnk6IHRoaXMucmV0dXJuSWRzKFxyXG4gICAgICAgIGRhc2hib2FyZC5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzLFxyXG4gICAgICAgICdjYXRlZ29yeV9pZCdcclxuICAgICAgKSxcclxuICAgICAgZGlzcGxheV9jcml0ZXJpYTpcclxuICAgICAgICBkYXNoYm9hcmQuZGlzcGxheUNyaXRlcmlhID09PSAnYW5kJ1xyXG4gICAgICAgICAgPyAnQk9USF9SQ19BTkRfQ0FURUdPUlknXHJcbiAgICAgICAgICA6ICdSQ19PUl9DQVRFR09SWScsXHJcbiAgICAgIHRpbWVmcmFtZToge1xyXG4gICAgICAgIHN0YXJ0X2RhdGU6IGRhc2hib2FyZC5zZWxlY3RlZEZyb21EYXRlXHJcbiAgICAgICAgICA/IHRoaXMuZ2V0RGF0ZUZvcm1hdGUoZGFzaGJvYXJkPy5zZWxlY3RlZEZyb21EYXRlKVxyXG4gICAgICAgICAgOiAnJyxcclxuICAgICAgICBlbmRfZGF0ZTogZGFzaGJvYXJkLnNlbGVjdGVkVG9EYXRlXHJcbiAgICAgICAgICA/IHRoaXMuZ2V0RGF0ZUZvcm1hdGUoZGFzaGJvYXJkPy5zZWxlY3RlZFRvRGF0ZSlcclxuICAgICAgICAgIDogJycsXHJcbiAgICAgIH0sXHJcbiAgICAgIGVtYWlsX3N1bW1hcnk6IHRoaXMuc2V0RnJlcXVlbmN5KCcnLCAnZXhwb3J0JyksIC8vc2V0Rm9ybWF0XHJcbiAgICAgIHdpZGdldF9kZXRhaWxzOiBkYXNoYm9hcmQuY29uZmlndXJlV2lkZ2V0LFxyXG4gICAgfTtcclxuICAgIGlmICh0aGlzLm1vZGUgPT0gJ0NSRUFURScpIHtcclxuICAgICAgdGhpcy5jcmVhdGVEYXNoYm9hcmRTZXJ2aWNlLnN1Ym1pdERhc2hib2FyZChwYXlsb2FkKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnZMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIC8vIHRoaXMuc25hY2tCYXIuc2hvdygnVGhlIGRhc2hib2FyZCBoYXMgYmVlbiBjcmVhdGVkLicsJ2luZm8nKTtcclxuICAgICAgICAgIHRoaXMuaXNTbWlsZXkgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zbWlsZXlNZXNzYWdlID0gJ1RoZSBkYXNoYm9hcmQgaGFzIGJlZW4gY3JlYXRlZC4nO1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTbWlsZXkgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jbG9zZS5lbWl0KHsgbW9kZTogJ2NyZWF0ZWQnLCBpZDogcmVzLl9pZCB9KTtcclxuICAgICAgICAgIH0sIDMwMDApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgICAgaWYgKGVyci5zdGF0dXMgPT09IDQwOSkge1xyXG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coXHJcbiAgICAgICAgICAgICAgJ0EgZGFzaGJvYXJkIHdpdGggdGhpcyBuYW1lIGFscmVhZHkgZXhpc3RzLiBTcGVjaWZ5IGEgZGlmZmVyZW50IG5hbWUgZm9yIHRoZSBkYXNoYm9hcmQuJyxcclxuICAgICAgICAgICAgICAnYWxlcnQnXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMudkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgICB0aGlzLnZMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxyXG4gICAgICAgICAgICAgICdPT1BTISBTb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgdGhlIHBhZ2UgY291bGQgbm90IGJlIGxvYWRlZC4gQ291bGQgeW91IHBsZWFzZSB0cnkgb25lIG1vcmUgdGltZT8nLFxyXG4gICAgICAgICAgICAgICdhbGVydCdcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tb2RlID09PSAnRURJVCcpIHtcclxuICAgICAgcGF5bG9hZC53aWRnZXRfdXBkYXRlX2ZsYWcgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNyZWF0ZURhc2hib2FyZFNlcnZpY2VcclxuICAgICAgICAudXBkYXRlRGFzaGJvYXJkKHRoaXMuZGFzaGJvYXJkSWQsIHBheWxvYWQpXHJcbiAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy52TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIC8vIHRoaXMuc25hY2tCYXIuc2hvdygnVGhlIGRhc2hib2FyZCBoYXMgYmVlbiB1cGRhdGVkJywnaW5mbycpO1xyXG4gICAgICAgICAgICB0aGlzLmlzU21pbGV5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zbWlsZXlNZXNzYWdlID0gJ1RoZSBkYXNoYm9hcmQgaGFzIGJlZW4gdXBkYXRlZCc7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuaXNTbWlsZXkgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmNsb3NlLmVtaXQoeyBtb2RlOiAndXBkYXRlZCcgfSk7XHJcbiAgICAgICAgICAgIH0sIDMwMDApO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgICAgICAgdGhpcy52TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdyhcclxuICAgICAgICAgICAgICAnT09QUyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHRoZSBwYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENvdWxkIHlvdSBwbGVhc2UgdHJ5IG9uZSBtb3JlIHRpbWU/JyxcclxuICAgICAgICAgICAgICAnYWxlcnQnXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZWRpdERhc2hib2FyZCgpIHtcclxuICAgIGlmICh0aGlzLmRhc2hib2FyZElkKSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlRGFzaGJvYXJkU2VydmljZS5mZXRjaERhc2hib2FyZCh0aGlzLmRhc2hib2FyZElkKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBkYXRhID0gcmVzO1xyXG4gICAgICAgICAgdGhpcy5saXN0RGV0YWlscy5ub25SZW1vdmFibGVVc2Vyc0xpc3QgPSBbcmVzLmNyZWF0ZWRfYnldO1xyXG4gICAgICAgICAgZGF0YS52aXNpYmxlX3RvX2dyb3VwcyA9XHJcbiAgICAgICAgICAgIGRhdGE/LnZpc2libGVfdG9fZ3JvdXBzICYmIGRhdGEudmlzaWJsZV90b19ncm91cHMubGVuZ3RoXHJcbiAgICAgICAgICAgICAgPyBkYXRhLnZpc2libGVfdG9fZ3JvdXBzXHJcbiAgICAgICAgICAgICAgOiBbXTtcclxuICAgICAgICAgIHRoaXMucG9wdWxhdGVEYXNoYm9hcmRGb3JtKGRhdGEpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwb3B1bGF0ZURhc2hib2FyZEZvcm0oZGF0YTogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zb2xlLmxvZygnIGRhdGF0dHR0dGEgPT09PiAnLCBkYXRhLCB0aGlzLmdyb3VwTGlzdCk7XHJcbiAgICAgICh0aGlzLmRhc2hib2FyZEZvcm0uZGFzaGJvYXJkTmFtZSA9IGRhdGE/LmRhc2hib2FyZF9uYW1lKSxcclxuICAgICAgICAodGhpcy5kYXNoYm9hcmRGb3JtLmRhc2hib2FyZERlc2NyaXB0aW9uVGV4dCA9XHJcbiAgICAgICAgICBkYXRhPy5kZXNjcmlwdGlvblswXT8uY29udGVudCA/PyAnJyksXHJcbiAgICAgICAgKHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFZpZXdlcnMgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICB0aGlzLnVzZXJzTGlzdCxcclxuICAgICAgICAgIGRhdGE/LnZpc2libGVfdG9fdXNlcnMsXHJcbiAgICAgICAgICAnbWVtYmVyX2lkJ1xyXG4gICAgICAgICkpO1xyXG4gICAgICB0aGlzLmxpc3REZXRhaWxzLnNlbGVjdGVkVXNlcnNMaXN0ID0gdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkVmlld2VycztcclxuICAgICAgZGF0YS52aXNpYmxlX3RvX2dyb3VwcyA9XHJcbiAgICAgICAgZGF0YT8udmlzaWJsZV90b19ncm91cHMgJiYgZGF0YT8udmlzaWJsZV90b19ncm91cHMubGVuZ3RoXHJcbiAgICAgICAgICA/IGRhdGE/LnZpc2libGVfdG9fZ3JvdXBzXHJcbiAgICAgICAgICA6IFtdO1xyXG4gICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRHcm91cCA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICB0aGlzLmdyb3VwTGlzdCxcclxuICAgICAgICBkYXRhPy52aXNpYmxlX3RvX2dyb3VwcyA/PyBbXSxcclxuICAgICAgICAnZ3JvdXBfaWQnXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMubGlzdERldGFpbHMuc2VsZWN0ZWRHcm91cExpc3QgPSB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRHcm91cDtcclxuICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdCxcclxuICAgICAgICBkYXRhPy5yZXNwb25zaWJpbGl0eV9jZW50ZXIsXHJcbiAgICAgICAgJ2l0ZW1faWQnXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcyA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICB0aGlzLmFsbENvbXBsaWFuY2VDYXRlZ29yaWVzLFxyXG4gICAgICAgIGRhdGE/LnJlc3BvbnNpYmlsaXR5X2NhdGVnb3J5LFxyXG4gICAgICAgICdjYXRlZ29yeV9pZCdcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmlza0NhdGVnb3JpZXMgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgdGhpcy5hbGxSaXNrQ2F0ZWdvcmllcyxcclxuICAgICAgICBkYXRhPy5yaXNrX2NhdGVnb3J5LFxyXG4gICAgICAgICdjYXRlZ29yeV9pZCdcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLmRpc3BsYXlDcml0ZXJpYSA9XHJcbiAgICAgICAgZGF0YT8uZGlzcGxheV9jcml0ZXJpYSA9PT0gJ0JPVEhfUkNfQU5EX0NBVEVHT1JZJyA/ICdhbmQnIDogJ29yJztcclxuICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkRnJvbURhdGUgPSBkYXRhPy50aW1lZnJhbWU/LnN0YXJ0X2RhdGVcclxuICAgICAgICA/IG5ldyBEYXRlKGRhdGE/LnRpbWVmcmFtZT8uc3RhcnRfZGF0ZSlcclxuICAgICAgICA6IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkVG9EYXRlID0gZGF0YT8udGltZWZyYW1lPy5lbmRfZGF0ZVxyXG4gICAgICAgID8gbmV3IERhdGUoZGF0YT8udGltZWZyYW1lPy5lbmRfZGF0ZSlcclxuICAgICAgICA6IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy52TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5jb25maWd1cmVXaWRnZXQgPSBkYXRhLndpZGdldF9kZXRhaWxzO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0cyA9XHJcbiAgICAgICAgZGF0YS53aWRnZXRfZGV0YWlscy5sZW5ndGggPiAwID8gWy4uLm5ldyBTZXQoZGF0YS53aWRnZXRfZGV0YWlscyldIDogW107XHJcbiAgICAgIHRoaXMuZGlzcGxheWVkV2lkZ2V0cyA9XHJcbiAgICAgICAgZGF0YS5hbGxfd2lkZ2V0cy5sZW5ndGggPiAwID8gWy4uLm5ldyBTZXQoZGF0YS5hbGxfd2lkZ2V0cyldIDogW107XHJcbiAgICAgIHRoaXMuc2V0RnJlcXVlbmN5KGRhdGE/LmVtYWlsX3N1bW1hcnksICdpbXBvcnQnKTtcclxuICAgICAgbGV0IG1pblRvRGF0ZSA9IHRoaXMuc2V0VG9EYXRlKGRhdGE/LnRpbWVmcmFtZT8uc3RhcnRfZGF0ZSk7XHJcbiAgICAgIHRoaXMudG9EYXRlUGlja2VyQ29uZmlnID0geyBtaW46IG1pblRvRGF0ZSB9O1xyXG4gICAgICB0aGlzLmhpZGVUb0RhdGUgPSB0cnVlO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmhpZGVUb0RhdGUgPSBmYWxzZTtcclxuICAgICAgfSwgMjApO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5sb2coJ3BvcHVsYXRlIGRhc2hib2FyZCBlcnJvciA9PicsIGVycm9yKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEZyZXF1ZW5jeShldmVudDogYW55LCBtb2RlOiBhbnkpIHtcclxuICAgIGlmIChtb2RlID09PSAnZXhwb3J0Jykge1xyXG4gICAgICBzd2l0Y2ggKHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEZyZXF1ZW5jeVR5cGUpIHtcclxuICAgICAgICBjYXNlICd3ZWVrbHknOlxyXG4gICAgICAgICAgY29uc3Qgd2Vla2x5VmFsdWVEYXRhID0gdGhpcy5kYXNoYm9hcmRGb3JtPy5zZWxlY3RlZEZyZXF1ZW5jaWVzPy5tYXAoXHJcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gTnVtYmVyKGVsZSkgKyAxXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgY29uc3Qgd2Vla2x5VmFsdWUgPSB3ZWVrbHlWYWx1ZURhdGE/LmpvaW4oKTtcclxuICAgICAgICAgIHJldHVybiAnMn4nICsgd2Vla2x5VmFsdWUgKyAnfjB+MCc7XHJcbiAgICAgICAgY2FzZSAnbW9udGhseSc6XHJcbiAgICAgICAgICBjb25zdCBtb250aGx5VmFsdWVEYXRhID0gdGhpcy5kYXNoYm9hcmRGb3JtPy5zZWxlY3RlZEZyZXF1ZW5jaWVzPy5tYXAoXHJcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gTnVtYmVyKGVsZSkgKyAxXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgY29uc3QgbW9udGhseVZhbHVlID0gbW9udGhseVZhbHVlRGF0YT8uam9pbigpO1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgJzN+JyArIHRoaXMuZGFzaGJvYXJkRm9ybT8uZnJlcXVlbmN5RGF0ZSArICd+JyArIG1vbnRobHlWYWx1ZSArICd+MCdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgY2FzZSAncXVhcnRlcmx5JzpcclxuICAgICAgICAgIGNvbnN0IHF1YXJ0ZXJseVZhbHVlRGF0YSA9XHJcbiAgICAgICAgICAgIE51bWJlcih0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRGcmVxdWVuY2llcykgKyAxO1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgJzd+JyArXHJcbiAgICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lEYXRlICtcclxuICAgICAgICAgICAgJ34nICtcclxuICAgICAgICAgICAgcXVhcnRlcmx5VmFsdWVEYXRhICtcclxuICAgICAgICAgICAgJ34wJ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKG1vZGUgPT09ICdpbXBvcnQnKSB7XHJcbiAgICAgIGNvbnN0IHZhbCA9IGV2ZW50LnNwbGl0KCd+Jyk7XHJcbiAgICAgIHN3aXRjaCAodmFsWzBdKSB7XHJcbiAgICAgICAgY2FzZSAnMic6XHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGxldCBzdHJpbmdWYWwgPSAnRXZlcnkgJztcclxuICAgICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkRnJlcXVlbmN5VHlwZSA9ICd3ZWVrbHknO1xyXG4gICAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRGcmVxdWVuY2llcyA9IHZhbFsxXVxyXG4gICAgICAgICAgICAgID8uc3BsaXQoJywnKVxyXG4gICAgICAgICAgICAgID8ubWFwKChlbGVtZW50OiBhbnkpID0+IE51bWJlcihlbGVtZW50KSAtIDEpO1xyXG4gICAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRGcmVxdWVuY2llcz8uZm9yRWFjaChcclxuICAgICAgICAgICAgICAoZGF5SW5kZXg6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgc3RyaW5nVmFsICs9XHJcbiAgICAgICAgICAgICAgICAgIGluZGV4ID09PSAwXHJcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmRheU5hbWVzW2RheUluZGV4XVxyXG4gICAgICAgICAgICAgICAgICAgIDogJywgJyArIHRoaXMuZGF5TmFtZXNbZGF5SW5kZXhdO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLmZyZXF1ZW5jeU1lc3NhZ2UgPSBzdHJpbmdWYWw7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnMyc6XHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGxldCBzdHJpbmdWYWwgPSAnZXZlcnkgJztcclxuICAgICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkRnJlcXVlbmN5VHlwZSA9ICdtb250aGx5JztcclxuICAgICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLmZyZXF1ZW5jeURhdGUgPSB2YWxbMV07XHJcbiAgICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEZyZXF1ZW5jaWVzID0gdmFsWzJdXHJcbiAgICAgICAgICAgICAgPy5zcGxpdCgnLCcpXHJcbiAgICAgICAgICAgICAgPy5tYXAoKGVsZW1lbnQ6IGFueSkgPT4gTnVtYmVyKGVsZW1lbnQpIC0gMSk7XHJcbiAgICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEZyZXF1ZW5jaWVzLmZvckVhY2goXHJcbiAgICAgICAgICAgICAgKG1vbnRoSW5kZXg6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgc3RyaW5nVmFsICs9XHJcbiAgICAgICAgICAgICAgICAgIGluZGV4ID09PSAwXHJcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLm1vbnRoTmFtZXNbbW9udGhJbmRleF1cclxuICAgICAgICAgICAgICAgICAgICA6ICcsICcgKyB0aGlzLm1vbnRoTmFtZXNbbW9udGhJbmRleF07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBsZXQgbW9udGhEYXRlTmFtZTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lEYXRlID09ICcxJykge1xyXG4gICAgICAgICAgICAgIG1vbnRoRGF0ZU5hbWUgPSAnMXN0JztcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhc2hib2FyZEZvcm0uZnJlcXVlbmN5RGF0ZSA9PSAnMicpIHtcclxuICAgICAgICAgICAgICBtb250aERhdGVOYW1lID0gJzJuZCc7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXNoYm9hcmRGb3JtLmZyZXF1ZW5jeURhdGUgPT0gJzMnKSB7XHJcbiAgICAgICAgICAgICAgbW9udGhEYXRlTmFtZSA9ICczcmQnO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIG1vbnRoRGF0ZU5hbWUgPSB0aGlzLmRhc2hib2FyZEZvcm0uZnJlcXVlbmN5RGF0ZSArICd0aCc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLmZyZXF1ZW5jeU1lc3NhZ2UgPVxyXG4gICAgICAgICAgICAgIG1vbnRoRGF0ZU5hbWUgKyAnIG9mICcgKyBzdHJpbmdWYWw7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICc3JzpcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbGV0IHN0cmluZ1ZhbCA9ICdldmVyeSAnO1xyXG4gICAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRGcmVxdWVuY3lUeXBlID0gJ3F1YXJ0ZXJseSc7XHJcbiAgICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lEYXRlID0gdmFsWzFdO1xyXG4gICAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRGcmVxdWVuY2llcyA9XHJcbiAgICAgICAgICAgICAgTnVtYmVyKHZhbFsyXS5zcGxpdCgnLCcpWzBdKSAtIDE7XHJcbiAgICAgICAgICAgIHN0cmluZ1ZhbCArPSB0aGlzLnF1YXJ0ZXJzW3RoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEZyZXF1ZW5jaWVzXTtcclxuICAgICAgICAgICAgbGV0IG1vbnRoRGF0ZU5hbWU7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRhc2hib2FyZEZvcm0uZnJlcXVlbmN5RGF0ZSA9PSAnMScpIHtcclxuICAgICAgICAgICAgICBtb250aERhdGVOYW1lID0gJzFzdCc7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXNoYm9hcmRGb3JtLmZyZXF1ZW5jeURhdGUgPT0gJzInKSB7XHJcbiAgICAgICAgICAgICAgbW9udGhEYXRlTmFtZSA9ICcybmQnO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lEYXRlID09ICczJykge1xyXG4gICAgICAgICAgICAgIG1vbnRoRGF0ZU5hbWUgPSAnM3JkJztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBtb250aERhdGVOYW1lID0gdGhpcy5kYXNoYm9hcmRGb3JtLmZyZXF1ZW5jeURhdGUgKyAndGgnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lNZXNzYWdlID1cclxuICAgICAgICAgICAgICBtb250aERhdGVOYW1lICsgJyBvZiAnICsgc3RyaW5nVmFsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcclxuICAgIC8veW91ciBjb2RlIHRvIHVwZGF0ZSB0aGUgbW9kZWxcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHNldFBlcm1pc3Npb24ocm9sZUFjdGlvbnM6IGFueSkge1xyXG4gICAgbGV0IGlmRXhpc3RSaXNrID0gcm9sZUFjdGlvbnM/LmZpbmQoKGVsOiBhbnkpID0+IGVsLm1vZHVsZU5hbWUgPT0gJ3Jpc2snKTtcclxuICAgIGlmRXhpc3RSaXNrPy5zdWJNb2R1bGU/LmZvckVhY2goKG1vZHVsZTogYW55KSA9PiB7XHJcbiAgICAgIG1vZHVsZT8ucGVybWlzc2lvbnM/LmZvckVhY2goKHBlcm1pc3Npb246IGFueSkgPT4ge1xyXG4gICAgICAgIHN3aXRjaCAocGVybWlzc2lvbj8uY29kZSkge1xyXG4gICAgICAgICAgY2FzZSAnUlJNUic6IHtcclxuICAgICAgICAgICAgaWYgKHBlcm1pc3Npb24/LmRlZmF1bHRQZXJtaXNzaW9uID09IDEgfHwgcGVybWlzc2lvbj8uZW5hYmxlID09IDEpIHtcclxuICAgICAgICAgICAgICB0aGlzLmlzTWFuYWdlUmlzayA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8YXBwLXNuYWNrLWJhcj48L2FwcC1zbmFjay1iYXI+XHJcbjxkaXYgY2xhc3M9XCJjcmVhdGUtZGFzaGJvYXJkXCIgKm5nSWY9XCIhb3BlbkNvbmZpZ3VyZVdpZGdldHNcIj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImNyZWF0ZS1kYXNoYm9hcmQtY29udGFpbmVyIHZ4LWQtZmxleCB2eC1qdXN0aWZ5LWVuZFwiXHJcbiAgICBbY2xhc3MuYW5pbWF0ZS1zbGlkZUluUmlnaHRdPVwiYW5pbWF0aW9uXCJcclxuICA+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwibW9yZS1vcHRpb25cIlxyXG4gICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcIlxyXG4gICAgPlxyXG4gICAgICA8YXBwLXVzZXItbGlzdFxyXG4gICAgICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICd3aG9DYW5WaWV3J1wiXHJcbiAgICAgICAgKHNhdmVTZWxlY3RlZFVzZXJzKT1cInNhdmVTZWxlY3RlZExpc3QoJ3dob0NhblZpZXcnLCAkZXZlbnQpXCJcclxuICAgICAgICAoY2xvc2VVc2VyTGlzdCk9XCJhY3RpdmF0ZVNlbGVjdG9yKCcnLCBmYWxzZSlcIlxyXG4gICAgICAgIFt0b3RhbFBhZ2VzXT1cInRvdGFsUGFnZXNcIlxyXG4gICAgICAgIFt0b3RhbExpc3RdPVwidG90YWxMaXN0XCJcclxuICAgICAgICBbbGlzdERldGFpbHNdPVwibGlzdERldGFpbHNcIlxyXG4gICAgICAgIFt0b3RhbGdyb3Vwc2NvdW50XT1cInRvdGFsZ3JvdXBzXCJcclxuICAgICAgICBbZmVhdHVyZV09XCJmZWF0dXJlXCJcclxuICAgICAgPjwvYXBwLXVzZXItbGlzdD5cclxuICAgICAgPGFwcC1yZXNwb25zaWJpbGl0eS1jZW50ZXJcclxuICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAncmNMaXN0J1wiXHJcbiAgICAgICAgW3Jlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3RdPVwicmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdFwiXHJcbiAgICAgICAgW3JhZGlvU2VsZWN0aW9uXT1cImZhbHNlXCJcclxuICAgICAgICBbc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnNdPVwiXHJcbiAgICAgICAgICBkYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzXHJcbiAgICAgICAgXCJcclxuICAgICAgICBbcmNJZEtleV09XCInaXRlbV9pZCdcIlxyXG4gICAgICAgIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ3JjJywgJGV2ZW50KVwiXHJcbiAgICAgICAgKGNsb3NlUmNMaXN0KT1cImFjdGl2YXRlU2VsZWN0b3IoJycsIGZhbHNlKVwiXHJcbiAgICAgID5cclxuICAgICAgPC9hcHAtcmVzcG9uc2liaWxpdHktY2VudGVyPlxyXG4gICAgICA8YXBwLWNhdGVnb3JpZXNcclxuICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAncmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzJ1wiXHJcbiAgICAgICAgW2NhdGVnb3J5TGlzdF09XCJyZXNwb25zaWJpbGl0eUNhdGVnb3JpZXNUcmVlXCJcclxuICAgICAgICBbYWxsQ2F0ZWdvcmllc109XCJhbGxDb21wbGlhbmNlQ2F0ZWdvcmllc1wiXHJcbiAgICAgICAgW2NhdGVnb3J5SWRLZXldPVwiJ2NhdGVnb3J5X2lkJ1wiXHJcbiAgICAgICAgW3NlbGVjdGVkQ2F0ZWdvcmllc109XCJkYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzXCJcclxuICAgICAgICAoc2F2ZVNlbGVjdGVkQ2F0ZWdvcnkpPVwiXHJcbiAgICAgICAgICBzYXZlU2VsZWN0ZWRMaXN0KCdyZXNwb25zaWJpbGl0eUNhdGVnb3JpZXMnLCAkZXZlbnQpXHJcbiAgICAgICAgXCJcclxuICAgICAgICAoY2xvc2VDYXRlZ29yaWVzTGlzdCk9XCJhY3RpdmF0ZVNlbGVjdG9yKCcnLCBmYWxzZSlcIlxyXG4gICAgICA+PC9hcHAtY2F0ZWdvcmllcz5cclxuICAgICAgPGFwcC1yaXNrLWNhdGVnb3JpZXNcclxuICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAncmlza0NhdGVnb3JpZXMnXCJcclxuICAgICAgICBbY2F0ZWdvcnlMaXN0XT1cInJpc2tDYXRlZ29yeUxpc3RcIlxyXG4gICAgICAgIFthbGxDYXRlZ29yaWVzXT1cImFsbFJpc2tDYXRlZ29yaWVzXCJcclxuICAgICAgICBbY2F0ZWdvcnlJZEtleV09XCInY2F0ZWdvcnlfaWQnXCJcclxuICAgICAgICBbc2VsZWN0ZWRDYXRlZ29yaWVzXT1cImRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllc1wiXHJcbiAgICAgICAgKHNhdmVTZWxlY3RlZENhdGVnb3J5KT1cInNhdmVTZWxlY3RlZExpc3QoJ3Jpc2tDYXRlZ29yeScsICRldmVudClcIlxyXG4gICAgICAgIChjbG9zZUNhdGVnb3JpZXNMaXN0KT1cImFjdGl2YXRlU2VsZWN0b3IoJycsIGZhbHNlKVwiXHJcbiAgICAgID48L2FwcC1yaXNrLWNhdGVnb3JpZXM+XHJcblxyXG4gICAgICA8YXBwLWZyZXF1ZW5jeVxyXG4gICAgICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdmcmVxdWVuY3knXCJcclxuICAgICAgICAoY2xvc2VGcmVxdWVuY3lQb3B1cCk9XCJhY3RpdmF0ZVNlbGVjdG9yKCcnLCBmYWxzZSlcIlxyXG4gICAgICAgIChzYXZlRnJlcXVlbmN5KT1cInNhdmVGcmVxdWVuY3koJGV2ZW50KVwiXHJcbiAgICAgICAgW3NhdmVkRnJlcXVlbmN5VGFiXT1cImRhc2hib2FyZEZvcm0uc2VsZWN0ZWRGcmVxdWVuY3lUeXBlXCJcclxuICAgICAgICBbc2VsZWN0ZWREYXRlXT1cImRhc2hib2FyZEZvcm0uZnJlcXVlbmN5RGF0ZVwiXHJcbiAgICAgICAgW3NhdmVkRnJlcXVlbmNpZXNdPVwiZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEZyZXF1ZW5jaWVzXCJcclxuICAgICAgPlxyXG4gICAgICA8L2FwcC1mcmVxdWVuY3k+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJ2eC1kaWFsb2ctY29udGFpbmVyIHNpZGUtZGlhbG9nXCJcclxuICAgICAgW2NsYXNzLnRhYmxldC13aWR0aF09XCJhY3RpdmVTZWxlY3RvciAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnXCJcclxuICAgID5cclxuICAgICAgPGFwcC1sb2FkZXItaW5saW5lICpuZ0lmPVwidkxvYWRlclwiPjwvYXBwLWxvYWRlci1pbmxpbmU+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwidngtZGlhbG9nLWJvZHktY29udGFpbmVyXCJcclxuICAgICAgICAgIChzY3JvbGwpPVwiYW5pbWF0ZUltYWdlKClcIlxyXG4gICAgICAgICAgW2NsYXNzLmhpZGRlbi1zY3JvbGxdPVwicG9wb3ZlclNlcnZpY2Uuc3RvcFNjcm9sbFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPCEtLSBEYXNoYm9hcmQgTmFtZSAtLT5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJhY3RpdmVTZWxlY3RvciAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlXCI+XHJcbiAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3doYXQuc3ZnXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICFkYXNoYm9hcmRGb3JtLmRhc2hib2FyZE5hbWUgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICduYW1lJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGFsdD1cIlwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImRhc2hib2FyZEZvcm0uZGFzaGJvYXJkTmFtZSAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnXCJcclxuICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGNpcmNsZVxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcclxuICAgICAgICAgICAgICAgICAgY3g9XCIyNlwiXHJcbiAgICAgICAgICAgICAgICAgIGN5PVwiMjZcIlxyXG4gICAgICAgICAgICAgICAgICByPVwiMjVcIlxyXG4gICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1cIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cCB2eC1kLWJsb2NrIHZ4LW1iLTRcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtZC1ibG9jayB2eC10dC11cHBlcmNhc2UgdngtbWItMiB2eC13LTEwMCB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgICAgPkRhc2hib2FyZCBOYW1lXHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZSB2eC10eHQtcmVkIHZ4LWZzLTE2IHZ4LWZ3LTQwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPio8L3NwYW5cclxuICAgICAgICAgICAgICAgICAgPjwvbGFiZWxcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1pbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHRGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJBZGQgZGFzaGJvYXJkIG5hbWUgKE1heCBsaW1pdDogMzAgY2hhcmFjdGVycykuXCJcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRhc2hib2FyZEZvcm0uZGFzaGJvYXJkTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwiYWN0aXZlU2VsZWN0b3IgPSAnbmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgIChmb2N1c2luKT1cImFjdGl2YXRlU2VsZWN0b3IoJ25hbWUnLCB0cnVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cImFjdGl2YXRlU2VsZWN0b3IoJ25hbWUnLCBmYWxzZSlcIlxyXG4gICAgICAgICAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGFzaGJvYXJkRm9ybT8uZGFzaGJvYXJkTmFtZT8ubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPnt7IDMwIC0gZGFzaGJvYXJkRm9ybS5kYXNoYm9hcmROYW1lLmxlbmd0aCB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8cFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LXR4dC1lcnJvclwiXHJcbiAgICAgICAgICAgICAgICAgIFthcHBTY3JvbGxJblZpZXddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3VibWl0dGVkICYmXHJcbiAgICAgICAgICAgICAgICAgICAgKGRhc2hib2FyZEZvcm0/LmRhc2hib2FyZE5hbWU/Lmxlbmd0aCA+IDMwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAhZGFzaGJvYXJkRm9ybT8uZGFzaGJvYXJkTmFtZSlcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRGb3JtLmRhc2hib2FyZE5hbWUubGVuZ3RoID4gMzBcclxuICAgICAgICAgICAgICAgICAgICAgID8gXCJZb3UgaGF2ZSBleGNlZWRlZCB0aGUgbWF4aW11bSBjaGFyYWN0ZXIgbGltaXQgb2YgMzAgY2hhcmFjdGVycy5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgOiBcIlBsZWFzZSBlbnRlciBhIG5hbWUgZm9yIHRoaXMgRGFzaGJvYXJkLlwiXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICA8L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWlucHV0LWdyb3VwIHZ4LW10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgPHZjb21wbHktZWRpdG9yXHJcbiAgICAgICAgICAgICAgICAgICAgW2VkaXRvckNvbmZpZ109XCJkYXNoYm9hcmREZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkYXNoYm9hcmRGb3JtLmRhc2hib2FyZERlc2NyaXB0aW9uVGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgID48L3Zjb21wbHktZWRpdG9yPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkYXNoYm9hcmRGb3JtPy5kYXNoYm9hcmREZXNjcmlwdGlvblRleHQ/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgID57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgMjUwIC1cclxuICAgICAgICAgICAgICAgICAgICAgICAgKGRhc2hib2FyZEZvcm0/LmRhc2hib2FyZERlc2NyaXB0aW9uVGV4dCB8IHRleHRDb3VudClcclxuICAgICAgICAgICAgICAgICAgICB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8cFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LXR4dC1lcnJvclwiXHJcbiAgICAgICAgICAgICAgICAgIFthcHBTY3JvbGxJblZpZXddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3VibWl0dGVkICYmXHJcbiAgICAgICAgICAgICAgICAgICAgKGRhc2hib2FyZEZvcm0/LmRhc2hib2FyZERlc2NyaXB0aW9uVGV4dCB8IHRleHRDb3VudCkgPiAyNTBcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgWW91IGhhdmUgZXhjZWVkZWQgdGhlIG1heGltdW0gY2hhcmFjdGVyIGxpbWl0IG9mIDI1MFxyXG4gICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzLlxyXG4gICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gV2hvIC0tPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3dob0NhblZpZXcnXCJcclxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICd3aG9DYW5WaWV3JyAmJlxyXG4gICAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlXCI+XHJcbiAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3doby5zdmdcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRWaWV3ZXJzPy5sZW5ndGggPT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ3dob0NhblZpZXcnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkVmlld2Vycz8ubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3dob0NhblZpZXcnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8Y2lyY2xlXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxyXG4gICAgICAgICAgICAgICAgICBjeD1cIjI2XCJcclxuICAgICAgICAgICAgICAgICAgY3k9XCIyNlwiXHJcbiAgICAgICAgICAgICAgICAgIHI9XCIyNVwiXHJcbiAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwIHZ4LWQtYmxvY2sgdngtbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC1kLWJsb2NrIHZ4LXR0LXVwcGVyY2FzZSB2eC1tYi0yIHZ4LXctMTAwIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgICAgICA+V2hvIGNhbiB2aWV3IHRoaXMgZGFzaGJvYXJkPzxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZXF1aXJlIHZ4LXR4dC1yZWQgdngtZnMtMTYgdngtZnctNDAwXCJcclxuICAgICAgICAgICAgICAgICAgICA+Kjwvc3BhblxyXG4gICAgICAgICAgICAgICAgICA+PC9sYWJlbFxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImRhc2hib2FyZEZvcm0/LnNlbGVjdGVkVmlld2Vycz8ubGVuZ3RoID09IDBcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveEVuYWJsZSB2eC1wbC0zIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCd3aG9DYW5WaWV3JywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hQbGFjZWhvZGVyIHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBXaG8gY2FuIHZpZXcgdGhpcyBkYXNoYm9hcmQ/XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImRhc2hib2FyZEZvcm0/LnNlbGVjdGVkVmlld2Vycz8ubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94U3VjY2VzcyB2eC1wbC0yIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWdyb3Vwc0VuYWJsZWRcIiBpZD1cIm9ubHl1c2Vyc2xpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1c2VyIG9mIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkVmlld2Vycz8uc2xpY2UoMCwgMSlcclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFsaXN0RGV0YWlscy5ub25SZW1vdmFibGVVc2Vyc0xpc3QuaW5jbHVkZXMoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLm1lbWJlcl9pZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnd2hvQ2FuVmlldycsIHVzZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthclRvb2x0aXBdPVwidXNlci5tZW1iZXJfbmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+e3sgdXNlci5tZW1iZXJfbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkVmlld2Vycz8ubGVuZ3RoID4gMSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFncm91cHNFbmFibGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gZ3JlZW5CZyB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidXNlckxpc3QucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICt7eyBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFZpZXdlcnM/LnNsaWNlKDEpLmxlbmd0aCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1wb3BvdmVyICN1c2VyTGlzdCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdXNlciBvZiBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFZpZXdlcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJUb29sdGlwXT1cInVzZXI/Lm1lbWJlcl9uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzLWljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWxpc3REZXRhaWxzLm5vblJlbW92YWJsZVVzZXJzTGlzdC5pbmNsdWRlcyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLm1lbWJlcl9pZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApICYmICFncm91cHNFbmFibGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnd2hvQ2FuVmlldycsIHVzZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB1c2VyPy5tZW1iZXJfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ3JvdXBzRW5hYmxlZFwiIGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+VVNFUihTKTwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIGdyZWVuQmcgdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInVzZXJDb3VudC5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRWaWV3ZXJzPy5sZW5ndGggfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkR3JvdXA/Lmxlbmd0aCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFZpZXdlcnM/Lmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgID4mPC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRHcm91cD8ubGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwidXNlcnNhbmRncm91cHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5VU0VSIEdST1VQKFMpPC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdyb3VwQ291bnQucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZEdyb3VwPy5sZW5ndGggfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3VzZXJDb3VudCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkVmlld2Vyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FyVG9vbHRpcF09XCJkYXRhLm1lbWJlcl9uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzLWljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWxpc3REZXRhaWxzLm5vblJlbW92YWJsZVVzZXJzTGlzdC5pbmNsdWRlcyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLm1lbWJlcl9pZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnd2hvQ2FuVmlldycsIGRhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhLm1lbWJlcl9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI2dyb3VwQ291bnQgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBkYXRhIG9mIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkR3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthclRvb2x0aXBdPVwiZGF0YS5ncm91cF9uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzLWljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnd2hvQ2FuVmlld0dyb3VwJywgZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRhdGEuZ3JvdXBfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ3dob0NhblZpZXcnXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImVkaXRCdG4gdngtZnMtMTEgdngtZnctNjAwIHZ4LXR4dC1ibHVlIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCd3aG9DYW5WaWV3JywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1tci0xXCI+JiN4ZTkwYzs8L2k+IEVESVRcclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIFJlc3BvbnNpYmlsaXR5IENlbnRlciAtLT5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyY0xpc3QnXCJcclxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyY0xpc3QnICYmXHJcbiAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICduYW1lJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2VcIj5cclxuICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycz8ubGVuZ3RoID09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdyY0xpc3QnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3Jlc3BvbnNpYmlsaXR5LWNlbnRlci5zdmdcIlxyXG4gICAgICAgICAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzPy5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmNMaXN0J1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGNpcmNsZVxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcclxuICAgICAgICAgICAgICAgICAgY3g9XCIyNlwiXHJcbiAgICAgICAgICAgICAgICAgIGN5PVwiMjZcIlxyXG4gICAgICAgICAgICAgICAgICByPVwiMjVcIlxyXG4gICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1cIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cCB2eC1kLWJsb2NrIHZ4LW1iLTRcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtZC1ibG9jayB2eC10dC11cHBlcmNhc2UgdngtbWItMiB2eC13LTEwMCB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgICAgPlJFU1BPTlNJQklMSVRZIENFTlRFUihTKTwvbGFiZWxcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycz8ubGVuZ3RoID09IDBcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hFbmFibGUgdngtcGwtMyB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmNMaXN0JywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuZXJyb3JdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3VibWl0dGVkICYmXHJcbiAgICAgICAgICAgICAgICAgICAgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnM/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICAgICAgICAgICAgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXM/Lmxlbmd0aCA9PVxyXG4gICAgICAgICAgICAgICAgICAgICAgMCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmlza0NhdGVnb3JpZXM/Lmxlbmd0aCA9PSAwXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFBsYWNlaG9kZXIgdngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dCB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIFNlbGVjdCB0aGUgUmVzcG9uc2liaWxpdHkgQ2VudGVyKHMpIHRoYXQgeW91IHdvdWxkIGxpa2U8YnIgLz5kaXNwbGF5ZWRcclxuICAgICAgICAgICAgICAgICAgICBpbiB0aGUgRGFzaGJvYXJkLCBpZiBhbnkuXHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzPy5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94U3VjY2VzcyB2eC1wbC0yIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCByYyBvZiBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycz8uc2xpY2UoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDFcclxuICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ3JjJywgcmMpXCJcclxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2FyVG9vbHRpcF09XCJyYy5pdGVtX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+e3sgcmMuaXRlbV9uYW1lIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzPy5sZW5ndGggPiAxXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyY0xpc3QucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICt7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycz8uc2xpY2UoMSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAubGVuZ3RoXHJcbiAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3JjTGlzdCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmMgb2YgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJUb29sdGlwXT1cInJjPy5pdGVtX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MtaWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdyYycsIHJjKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcmM/Lml0ZW1fbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ3JjTGlzdCdcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZWRpdEJ0biB2eC1mcy0xMSB2eC1mdy02MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3JjTGlzdCcsIHRydWUpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtbXItMVwiPiYjeGU5MGM7PC9pPiBFRElUXHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSBQcm9ncmFtIC0tPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3Jlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcydcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Jlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcycgJiZcclxuICAgICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZVwiPlxyXG4gICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzPy5sZW5ndGggPT1cclxuICAgICAgICAgICAgICAgICAgICAwIHx8IGFjdGl2ZVNlbGVjdG9yID09PSAncmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9jYXRlZ29yeS5zdmdcIlxyXG4gICAgICAgICAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzPy5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGNpcmNsZVxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcclxuICAgICAgICAgICAgICAgICAgY3g9XCIyNlwiXHJcbiAgICAgICAgICAgICAgICAgIGN5PVwiMjZcIlxyXG4gICAgICAgICAgICAgICAgICByPVwiMjVcIlxyXG4gICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1cIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cCB2eC1kLWJsb2NrIHZ4LW1iLTRcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtZC1ibG9jayB2eC10dC11cHBlcmNhc2UgdngtbWItMiB2eC13LTEwMCB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgICAgPlBST0dSQU08L2xhYmVsXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXM/Lmxlbmd0aCA9PSAwXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94RW5hYmxlIHZ4LXBsLTMgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Jlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcycsIHRydWUpXCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmVycm9yXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHN1Ym1pdHRlZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzPy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzPy5sZW5ndGggPT1cclxuICAgICAgICAgICAgICAgICAgICAgIDAgJiZcclxuICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzPy5sZW5ndGggPT0gMFxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hQbGFjZWhvZGVyIHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBTZWxlY3QgdGhlIFByb2dyYW0ocykgdGhhdCB5b3Ugd291bGQgbGlrZSBkaXNwbGF5ZWQgaW5cclxuICAgICAgICAgICAgICAgICAgICB0aGU8YnIgLz5EYXNoYm9hcmQsIGlmIGFueS5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXM/Lmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hTdWNjZXNzIHZ4LXBsLTIgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHJDYXRlZ29yeSBvZiBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcz8uc2xpY2UoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDFcclxuICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ3Jlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcycsIHJDYXRlZ29yeSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJUb29sdGlwXT1cInJDYXRlZ29yeS5pdGVtX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+e3sgckNhdGVnb3J5Lml0ZW1fbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8ubGVuZ3RoID4gMVxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwickNhdGVnb3J5TGlzdC5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgK3t7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzPy5zbGljZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAxXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICkubGVuZ3RoXHJcbiAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3JDYXRlZ29yeUxpc3QgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJDYXRlZ29yeSBvZiBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthclRvb2x0aXBdPVwickNhdGVnb3J5Py5pdGVtX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MtaWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByQ2F0ZWdvcnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByQ2F0ZWdvcnk/Lml0ZW1fbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ3Jlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcydcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZWRpdEJ0biB2eC1mcy0xMSB2eC1mdy02MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Jlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcycsIHRydWUpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtbXItMVwiPiYjeGU5MGM7PC9pPiBFRElUXHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSBSaXNrIENhdGVnb3J5IC0tPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3Jpc2tDYXRlZ29yaWVzJ1wiXHJcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd1Jpc2tDYXRlZ29yeSAmJiBpc01hbmFnZVJpc2tcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Jpc2tDYXRlZ29yaWVzJyAmJlxyXG4gICAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlXCI+XHJcbiAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcz8ubGVuZ3RoID09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdyaXNrQ2F0ZWdvcmllcydcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvY2F0ZWdvcnkuc3ZnXCJcclxuICAgICAgICAgICAgICAgIGFsdD1cIlwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzPy5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmlza0NhdGVnb3JpZXMnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8Y2lyY2xlXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxyXG4gICAgICAgICAgICAgICAgICBjeD1cIjI2XCJcclxuICAgICAgICAgICAgICAgICAgY3k9XCIyNlwiXHJcbiAgICAgICAgICAgICAgICAgIHI9XCIyNVwiXHJcbiAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybVwiICpuZ0lmPVwiaXNNYW5hZ2VSaXNrXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXAgdngtZC1ibG9jayB2eC1tYi00XCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LWQtYmxvY2sgdngtdHQtdXBwZXJjYXNlIHZ4LW1iLTIgdngtdy0xMDAgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgICAgID5SSVNLIENBVEVHT1JJRVM8L2xhYmVsXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcz8ubGVuZ3RoID09IDBcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveEVuYWJsZSB2eC1wbC0zIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyaXNrQ2F0ZWdvcmllcycsIHRydWUpXCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmVycm9yXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHN1Ym1pdHRlZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzPy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzPy5sZW5ndGggPT1cclxuICAgICAgICAgICAgICAgICAgICAgIDAgJiZcclxuICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzPy5sZW5ndGggPT0gMFxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hQbGFjZWhvZGVyIHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBTZWxlY3QgdGhlIFJpc2sgQ2F0ZWdvcmllcyB0aGF0IHlvdSB3b3VsZCBsaWtlIGRpc3BsYXllZDxiciAvPmluXHJcbiAgICAgICAgICAgICAgICAgICAgdGhlIERhc2hib2FyZCwgaWYgYW55LlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzPy5sZW5ndGggPiAwXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hTdWNjZXNzIHZ4LXBsLTIgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHJpc2tDYXRlZ29yeSBvZiBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzPy5zbGljZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgMVxyXG4gICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgncmlza0NhdGVnb3J5Jywgcmlza0NhdGVnb3J5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFthclRvb2x0aXBdPVwicmlza0NhdGVnb3J5LmNhdGVnb3J5X25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+e3sgcmlza0NhdGVnb3J5LmNhdGVnb3J5X25hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzPy5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmlza0xpc3QucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICt7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzPy5zbGljZSgxKS5sZW5ndGhcclxuICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjcmlza0xpc3QgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJpc2tDYXRlZ29yeSBvZiBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FyVG9vbHRpcF09XCJyaXNrQ2F0ZWdvcnk/LmNhdGVnb3J5X25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MtaWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdyaXNrQ2F0ZWdvcnknLCByaXNrQ2F0ZWdvcnkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByaXNrQ2F0ZWdvcnk/LmNhdGVnb3J5X25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdyaXNrQ2F0ZWdvcmllcydcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZWRpdEJ0biB2eC1mcy0xMSB2eC1mdy02MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Jpc2tDYXRlZ29yaWVzJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1tci0xXCI+JiN4ZTkwYzs8L2k+IEVESVRcclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIERpc3BsYXkgQ3JpdGVyaWEgLS0+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiYWN0aXZlU2VsZWN0b3IgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICduYW1lJ1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZVwiPlxyXG4gICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZGFzaGJvYXJkRm9ybT8uZGlzcGxheUNyaXRlcmlhPy5sZW5ndGggPT0gMFwiXHJcbiAgICAgICAgICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvd2hvLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJkYXNoYm9hcmRGb3JtPy5kaXNwbGF5Q3JpdGVyaWE/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8Y2lyY2xlXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxyXG4gICAgICAgICAgICAgICAgICBjeD1cIjI2XCJcclxuICAgICAgICAgICAgICAgICAgY3k9XCIyNlwiXHJcbiAgICAgICAgICAgICAgICAgIHI9XCIyNVwiXHJcbiAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwIHZ4LWQtYmxvY2sgdngtbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC1kLWJsb2NrIHZ4LXR0LXVwcGVyY2FzZSB2eC1tYi0yIHZ4LXctMTAwIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgICAgICA+RElTUExBWSBDUklURVJJQTwvbGFiZWxcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYWRpby1ncm91cFwiICpuZ0lmPVwic2hvd0NyaXRlcmlhXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxhcHAtY3MtcmFkaW9cclxuICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJkYXNoYm9hcmRGb3JtLmRpc3BsYXlDcml0ZXJpYSA9PSAnb3InXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cImRhc2hib2FyZEZvcm0uZGlzcGxheUNyaXRlcmlhID0gJ29yJ1wiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBUaG9zZSBJdGVtcyB0aGF0IGhhdmUgYmVlbiBhc3NpZ25lZCB0byBlaXRoZXIgdGhlIHNlbGVjdGVkXHJcbiAgICAgICAgICAgICAgICAgICAgUmVzcG9uc2liaWxpdHkgQ2VudGVyKHMpIG9yIHRoZSBzZWxlY3RlZFxyXG4gICAgICAgICAgICAgICAgICAgIENhdGVnb3JpZXMuPC9hcHAtY3MtcmFkaW9cclxuICAgICAgICAgICAgICAgICAgPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGFwcC1jcy1yYWRpb1xyXG4gICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImRhc2hib2FyZEZvcm0uZGlzcGxheUNyaXRlcmlhID09ICdhbmQnXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cImRhc2hib2FyZEZvcm0uZGlzcGxheUNyaXRlcmlhID0gJ2FuZCdcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgVGhvc2UgSXRlbXMgdGhhdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gYm90aCB0aGUgc2VsZWN0ZWRcclxuICAgICAgICAgICAgICAgICAgICBSZXNwb25zaWJpbGl0eSBDZW50ZXIocykgYW5kIHRoZSBzZWxlY3RlZFxyXG4gICAgICAgICAgICAgICAgICAgIENhdGVnb3JpZXMuPC9hcHAtY3MtcmFkaW9cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSBUaW1lZnJhbWUgLS0+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiYWN0aXZlU2VsZWN0b3IgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICduYW1lJ1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZVwiPlxyXG4gICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICFkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZEZyb21EYXRlIHx8XHJcbiAgICAgICAgICAgICAgICAgICFkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFRvRGF0ZVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy93aGVuLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRGcm9tRGF0ZSAmJlxyXG4gICAgICAgICAgICAgICAgICBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFRvRGF0ZVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGNpcmNsZVxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcclxuICAgICAgICAgICAgICAgICAgY3g9XCIyNlwiXHJcbiAgICAgICAgICAgICAgICAgIGN5PVwiMjZcIlxyXG4gICAgICAgICAgICAgICAgICByPVwiMjVcIlxyXG4gICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1cIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cCB2eC1kLWJsb2NrIHZ4LW1iLTRcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtZC1ibG9jayB2eC10dC11cHBlcmNhc2UgdngtbWItMiB2eC13LTEwMCB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgICAgPlRJTUVGUkFNRTwvbGFiZWxcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWwtc3ViLWxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgPlNlbGVjdCBob3cgbG9uZyB5b3Ugd291bGQgbGlrZSB0aGUgaW5mb3JtYXRpb24gc2VsZWN0ZWQgdG8gYmVcclxuICAgICAgICAgICAgICAgICAgZGlzcGxheWVkIGZvci4gSWYgbm8gdGltZWZyYW1lIGlzIHNlbGVjdGVkLCB0aGUgaW5mb3JtYXRpb25cclxuICAgICAgICAgICAgICAgICAgd2lsbCBiZSBkaXNwbGF5ZWQgcGVybWFuZW50bHkuPC9sYWJlbFxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHZ4LWQtZmxleCB2eC1qdXN0aWZ5LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtc2VsZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MmQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZEZyb21EYXRlIHwgZGF0ZSA6ICdkZCBNTU0geXl5eSdcclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0Zyb20nXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuRnJvbURhdGVQaWNrZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRwLWRhdGUtcGlja2VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAjZnJvbURhdGVQaWNrZXJcclxuICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEZyb21EYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IERhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKG9uU2VsZWN0KT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbG9zZUZyb21EYXRlUGlja2VyKCk7IGRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY29uZmlnXT1cImZyb21EYXRlUGlja2VyQ29uZmlnXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9kcC1kYXRlLXBpY2tlcj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm92ZXJsYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlRnJvbURhdGVQaWNrZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRhdGVQaWNrZXJPdmVybGF5XCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRlLXNlbGVjdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaGlkZVRvRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZEZyb21EYXRlXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTJkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRUb0RhdGUgfCBkYXRlIDogJ2RkIE1NTSB5eXl5J1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInVG8nXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuVG9EYXRlUGlja2VyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkcC1kYXRlLXBpY2tlclxyXG4gICAgICAgICAgICAgICAgICAgICAgI3RvRGF0ZVBpY2tlclxyXG4gICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkYXNoYm9hcmRGb3JtLnNlbGVjdGVkVG9EYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IERhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKG9uU2VsZWN0KT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVRvRGF0ZVBpY2tlcigpOyBkYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NvbmZpZ109XCJ0b0RhdGVQaWNrZXJDb25maWdcIlxyXG4gICAgICAgICAgICAgICAgICAgID48L2RwLWRhdGUtcGlja2VyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwib3ZlcmxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VUb0RhdGVQaWNrZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRhdGVQaWNrZXJPdmVybGF5XCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8cFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LXR4dC1lcnJvclwiXHJcbiAgICAgICAgICAgICAgICAgIFthcHBTY3JvbGxJblZpZXddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3VibWl0dGVkICYmXHJcbiAgICAgICAgICAgICAgICAgICAgZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEZyb21EYXRlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgIWRhc2hib2FyZEZvcm0uc2VsZWN0ZWRUb0RhdGVcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgU2VsZWN0IGEgdGltZS1mcmFtZS5cclxuICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIEVtYWlsIFN1bW1hcnkgLS0+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnZnJlcXVlbmN5J1wiXHJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcclxuICAgICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAmJlxyXG4gICAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnZnJlcXVlbmN5JyAmJlxyXG4gICAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlXCI+XHJcbiAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lNZXNzYWdlXCJcclxuICAgICAgICAgICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9zZW5kLXJlc29sdXRpb24uc3ZnXCJcclxuICAgICAgICAgICAgICAgIGFsdD1cIlwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImRhc2hib2FyZEZvcm0uZnJlcXVlbmN5TWVzc2FnZVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxjaXJjbGVcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiXHJcbiAgICAgICAgICAgICAgICAgIGN4PVwiMjZcIlxyXG4gICAgICAgICAgICAgICAgICBjeT1cIjI2XCJcclxuICAgICAgICAgICAgICAgICAgcj1cIjI1XCJcclxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXHJcbiAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXAgdngtZC1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC1kLWJsb2NrIHZ4LXR0LXVwcGVyY2FzZSB2eC1tYi0yIHZ4LXctMTAwIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgICAgICA+RW1haWwgU3VtbWFyaWVzPC9sYWJlbFxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbC1zdWItbGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICA+SWYgeW91IHdvdWxkIGxpa2UgdG8gc2VuZCBhIHN1bW1hcnkgb2YgdGhpcyBEYXNoYm9hcmQsIHBsZWFzZVxyXG4gICAgICAgICAgICAgICAgICBzZWxlY3QgYSBmcmVxdWVuY3koQnkgZGVmYXVsdCBWQ29tcGx5IHNlbmRzIGEgd2Vla2x5XHJcbiAgICAgICAgICAgICAgICAgIFN1bW1hcnkpLjwvbGFiZWxcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lNZXNzYWdlXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hFbmFibGUgdngtcGwtMyB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignZnJlcXVlbmN5JywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hQbGFjZWhvZGVyIHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBFbWFpbCBTdW1tYXJpZXNcclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lNZXNzYWdlXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hTdWNjZXNzIHZ4LXBsLTIgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFRleHQgdngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FyVG9vbHRpcF09XCJkYXNoYm9hcmRGb3JtLmZyZXF1ZW5jeU1lc3NhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lNZXNzYWdlXCJcclxuICAgICAgICAgICAgICAgICAgPjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRGb3JtLmZyZXF1ZW5jeU1lc3NhZ2UgJiZcclxuICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnZnJlcXVlbmN5J1xyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0QnRuIHZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignZnJlcXVlbmN5JywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1tci0xXCI+JiN4ZTkwYzs8L2k+IEVESVRcclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWJsb2NrXCI+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwidngtYnRuIGJsb2NrIHByaW1hcnlcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWN0aXZlU2VsZWN0b3IgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICduYW1lJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJjb25maWd1cmVEYXNoYm9hcmQoKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIE5leHQ6IENvbmZpZ3VyZSBXaWRnZXRzXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJjbG9zZS1kaWFsb2dcIlxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJhY3RpdmVTZWxlY3RvciAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnXCJcclxuICAgICAgICAoY2xpY2spPVwiY2xvc2UuZW1pdCh7IG1vZGU6ICdkaXNjYXJkJyB9KVwiXHJcbiAgICAgICAgW2FyVG9vbHRpcF09XCInW0VzY10gdG8gY2xvc2UnXCJcclxuICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcclxuICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgW2NsYXNzLmhpZGVdPVwiYWN0aXZlU2VsZWN0b3IgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICduYW1lJ1wiXHJcbiAgICAgID5cclxuICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkzZjs8L2k+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJnbG9iYWwtY29uZmlybWF0aW9uLWFsZXJ0XCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgc3VibWl0dGVkICYmXHJcbiAgICAgICAgICBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycz8ubGVuZ3RoID09IDAgJiZcclxuICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzPy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcz8ubGVuZ3RoID09IDBcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImdsb2JhbC1jb25maXJtYXRpb24tYWxlcnQtdG9wXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24tYmxvY2tcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MzA7PC9pPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0XCIgKm5nSWY9XCJzaG93Umlza0NhdGVnb3J5XCI+XHJcbiAgICAgICAgICAgIFNlbGVjdCBhIFJlc3BvbnNpYmlsaXR5IENlbnRlciwgUHJvZ3JhbSBvciBSaXNrIENhdGVnb3J5LlxyXG4gICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0XCIgKm5nSWY9XCIhc2hvd1Jpc2tDYXRlZ29yeVwiPlxyXG4gICAgICAgICAgICBTZWxlY3QgYSBSZXNwb25zaWJpbGl0eSBDZW50ZXIgb3IgUHJvZ3JhbS5cclxuICAgICAgICAgIDwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ2xvYmFsLWNvbmZpcm1hdGlvbi1hbGVydC1ib3R0b21cIj5cclxuICAgICAgICAgIDxwIGNsYXNzPVwibWVzc2FnZVwiPjwvcD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tZ3JvdXBcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImZpbGxcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInN1Ym1pdHRlZCA9IGZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgT0tBWVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxhcHAtc21pbGV5LWRpYWxvZ1xyXG4gICpuZ0lmPVwiaXNTbWlsZXlcIlxyXG4gIFttZXNzYWdlXT1cInNtaWxleU1lc3NhZ2VcIlxyXG4+PC9hcHAtc21pbGV5LWRpYWxvZz5cclxuXHJcbjxhcHAtY29uZmlndXJlLXdpZGdldHNcclxuICAqbmdJZj1cIm9wZW5Db25maWd1cmVXaWRnZXRzXCJcclxuICBbbW9kZV09XCJtb2RlXCJcclxuICBbZGlzcGxheWVkV2lkZ2V0c109XCJkaXNwbGF5ZWRXaWRnZXRzXCJcclxuICBbc2hvd1Jpc2tdPVwic2hvd1Jpc2tXaWRnZXRzXCJcclxuICBbc2hvd0NvbXBsaWFuY2VdPVwic2hvd0NvbXBsaWFuY2VXaWRnZXRzXCJcclxuICBbc2VsZWN0ZWRXaWRnZXRzRGF0YV09XCJzZWxlY3RlZFdpZGdldHNcIlxyXG4gICh3aWRnZXRzRGF0YU1vZGlmaWVkKT1cInNldFNlbGVjdGVkV2lkZ2V0cygkZXZlbnQpXCJcclxuICAoY2xvc2VDb25maWd1cmVXaWRnZXRzKT1cImNsb3NlQ29uZmlndXJlV2lkZ2V0cygkZXZlbnQpXCJcclxuPjwvYXBwLWNvbmZpZ3VyZS13aWRnZXRzPlxyXG4iXX0=
1109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWRhc2hib2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcmVhdGUtZGFzaGJvYXJkL3NyYy9saWIvY3JlYXRlLWRhc2hib2FyZC1jb250YWluZXIvY3JlYXRlLWRhc2hib2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcmVhdGUtZGFzaGJvYXJkL3NyYy9saWIvY3JlYXRlLWRhc2hib2FyZC1jb250YWluZXIvY3JlYXRlLWRhc2hib2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBV3ZCLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBRy9CLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDeEQsbUNBQW1DO0FBUW5DLE1BQU0sT0FBTyx3QkFBd0I7SUE4SnpCO0lBQ0E7SUFDQTtJQUNBO0lBQ0Q7SUFDQztJQUNBO0lBbktELE9BQU8sQ0FBTTtJQUV0QixjQUFjLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDUixJQUFJLEdBQUcsUUFBUSxDQUFDO0lBQ2hCLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDaEIsS0FBSyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDNUIsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUVNLGNBQWMsQ0FBdUI7SUFDdkMsWUFBWSxDQUF1QjtJQUM5RCxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ1IsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUVqQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNkLFNBQVMsR0FBVSxFQUFFLENBQUM7SUFDdEIsT0FBTyxHQUFHLElBQUksQ0FBQztJQUNmLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDdkIsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUNyQiw4QkFBOEIsR0FBRyxLQUFLLENBQUM7SUFDdkMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO0lBQy9CLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDbkIsV0FBVyxHQUEwQjtRQUNuQyxpQkFBaUIsRUFBRSxFQUFFO1FBQ3JCLGlCQUFpQixFQUFFLEVBQUU7UUFDckIscUJBQXFCLEVBQUUsRUFBRTtRQUN6QixpQkFBaUIsRUFBRSxhQUFhO1FBQ2hDLGVBQWUsRUFBRSxZQUFZO1FBQzdCLFVBQVUsRUFBRSxVQUFVO1FBQ3RCLFlBQVksRUFBRSxXQUFXO1FBQ3pCLFVBQVUsRUFBRSxjQUFjO0tBQzNCLENBQUM7SUFDRixvQkFBb0IsR0FBaUI7UUFDbkMsV0FBVyxFQUFFLHlDQUF5QztRQUN0RCxJQUFJLEVBQUUsT0FBTztRQUNiLEVBQUUsRUFBRSxhQUFhO0tBQ2xCLENBQUM7SUFDRiw0QkFBNEIsR0FBUTtRQUNsQyxXQUFXLEVBQUU7WUFDWCxJQUFJLEVBQUUsRUFBRTtZQUNSLFlBQVksRUFBRSxFQUFFO1NBQ2pCO1FBQ0QsU0FBUyxFQUFFO1lBQ1QsSUFBSSxFQUFFLEVBQUU7WUFDUixZQUFZLEVBQUUsRUFBRTtTQUNqQjtRQUNELGdCQUFnQixFQUFFO1lBQ2hCLElBQUksRUFBRSxFQUFFO1lBQ1IsWUFBWSxFQUFFLEVBQUU7U0FDakI7UUFDRCxNQUFNLEVBQUU7WUFDTixJQUFJLEVBQUUsRUFBRTtZQUNSLFlBQVksRUFBRSxFQUFFO1NBQ2pCO0tBQ0YsQ0FBQztJQUNGLHVCQUF1QixHQUFVLEVBQUUsQ0FBQztJQUNwQyxpQkFBaUIsR0FBVSxFQUFFLENBQUM7SUFDOUIsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLFlBQVksR0FBRyxJQUFJLENBQUM7SUFFcEIsYUFBYSxHQUF3QjtRQUNuQyxhQUFhLEVBQUUsRUFBRTtRQUNqQix3QkFBd0IsRUFBRSxFQUFFO1FBQzVCLGVBQWUsRUFBRSxFQUFFO1FBQ25CLGFBQWEsRUFBRSxFQUFFO1FBQ2pCLGdCQUFnQixFQUFFLFNBQVM7UUFDM0IsY0FBYyxFQUFFLFNBQVM7UUFDekIsNkJBQTZCLEVBQUUsRUFBRTtRQUNqQyxnQ0FBZ0MsRUFBRSxFQUFFO1FBQ3BDLHNCQUFzQixFQUFFLEVBQUU7UUFDMUIsZUFBZSxFQUFFLElBQUk7UUFDckIsZUFBZSxFQUFFLEVBQUU7UUFDbkIsZ0JBQWdCLEVBQUUsRUFBRTtRQUNwQixxQkFBcUIsRUFBRSxFQUFFO1FBQ3pCLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLGdCQUFnQixFQUFFLEVBQUU7UUFDcEIsYUFBYSxFQUFFLENBQUM7S0FDakIsQ0FBQztJQUVGLG9CQUFvQixHQUFHLEtBQUssQ0FBQztJQUM3QixlQUFlLEdBQVEsRUFBRSxDQUFDO0lBQzFCLGdCQUFnQixHQUFRLEVBQUUsQ0FBQztJQUUzQix5QkFBeUIsR0FBRyxFQUFFLENBQUM7SUFDL0IsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQzFCLFFBQVEsR0FBRztRQUNULFFBQVE7UUFDUixTQUFTO1FBQ1QsV0FBVztRQUNYLFVBQVU7UUFDVixRQUFRO1FBQ1IsVUFBVTtRQUNWLFFBQVE7S0FDVCxDQUFDO0lBQ0YsVUFBVSxHQUFHO1FBQ1gsU0FBUztRQUNULFVBQVU7UUFDVixPQUFPO1FBQ1AsT0FBTztRQUNQLEtBQUs7UUFDTCxNQUFNO1FBQ04sTUFBTTtRQUNOLFFBQVE7UUFDUixXQUFXO1FBQ1gsU0FBUztRQUNULFVBQVU7UUFDVixVQUFVO0tBQ1gsQ0FBQztJQUNGLFFBQVEsR0FBRztRQUNULCtCQUErQjtRQUMvQixpQ0FBaUM7UUFDakMsa0NBQWtDO0tBQ25DLENBQUM7SUFFRixrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFDM0IsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUN4QixxQkFBcUIsR0FBRyxLQUFLLENBQUM7SUFDOUIsWUFBWSxHQUFZLEtBQUssQ0FBQztJQUU5QixnQkFBZ0IsR0FBRztRQUNqQixTQUFTLEVBQUU7WUFDVCxJQUFJLEVBQUUsRUFBRTtZQUNSLFlBQVksRUFBRSxFQUFFO1NBQ2pCO1FBQ0QsV0FBVyxFQUFFO1lBQ1gsSUFBSSxFQUFFLEVBQUU7WUFDUixZQUFZLEVBQUUsRUFBRTtTQUNqQjtRQUNELFVBQVUsRUFBRTtZQUNWLElBQUksRUFBRSxFQUFFO1lBQ1IsWUFBWSxFQUFFLEVBQUU7U0FDakI7UUFDRCxNQUFNLEVBQUU7WUFDTixJQUFJLEVBQUUsRUFBRTtZQUNSLFlBQVksRUFBRSxFQUFFO1NBQ2pCO0tBQ0YsQ0FBQztJQUVGLG9CQUFvQixHQUFzQjtRQUN4QyxHQUFHLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRTtLQUMzQixDQUFDO0lBRUYsa0JBQWtCLEdBQXNCLEVBQUUsQ0FBQztJQUUzQyxRQUFRLENBQVc7SUFDbkIsYUFBYSxHQUFXLEVBQUUsQ0FBQztJQUMzQixTQUFTLENBQU07SUFDZixhQUFhLEdBQVksS0FBSyxDQUFDO0lBQy9CLFdBQVcsQ0FBTTtJQUVqQixtQkFBbUIsQ0FBYztJQUVqQyxpQkFBaUIsQ0FBYztJQUMvQixnQkFBZ0IsR0FBVyxFQUFFLENBQUM7SUFFOUIsWUFDVSxzQkFBOEMsRUFDOUMsaUJBQW9DLEVBQ3BDLEdBQXNCLEVBQ3RCLFFBQXlCLEVBQzFCLGNBQThCLEVBQzdCLHVCQUFnRCxFQUNoRCxTQUF3QjtRQU54QiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzdCLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDaEQsY0FBUyxHQUFULFNBQVMsQ0FBZTtJQUMvQixDQUFDO0lBRUosV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDN0Q7SUFDSCxDQUFDO0lBRW9ELGdCQUFnQixDQUNuRSxLQUFvQjtRQUVwQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUNqRCx3QkFBd0IsQ0FDekIsQ0FBQztRQUNGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN6QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDUixzQ0FBc0M7UUFDdEMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsc0JBQXNCLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxTQUFTLENBQ3hELENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDWCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUNyQyxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDO1lBQ2pDLElBQUksU0FBUyxDQUFDLElBQUksRUFBRTtnQkFDbEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQzthQUM5QjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO2FBQy9CO1FBQ0gsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxnQkFBZ0IsQ0FBQyxJQUFTLEVBQUUsS0FBYztRQUN4QyxJQUFJLElBQUksSUFBSSxXQUFXLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxXQUFXLEVBQUU7WUFDN0QsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDMUIsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztZQUMzQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDUDtRQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxXQUFXLENBQUM7UUFFcEMsSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztRQUVsQyxJQUFJLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUUvQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFDRCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUU7WUFDeEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDO1lBQzlDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDMUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztZQUMvQixPQUFPO1NBQ1I7UUFDRCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUM7UUFFN0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNwRSxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzNELE1BQU0sV0FBVyxHQUFHLFFBQVEsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3RELElBQUksV0FBVyxFQUFFO1lBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDO1lBQzlDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDMUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQ1I7UUFFRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxZQUFZO1FBQ1YsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxhQUFhLENBQUMsV0FBZ0I7UUFDNUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDO1FBQ3JFLElBQUksQ0FBQyxhQUFhLENBQUMsbUJBQW1CLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQztRQUNqRSxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyxlQUFlLENBQUM7UUFDbEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQztRQUM1RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELFNBQVMsQ0FBQyxJQUFZO1FBQ3BCLElBQUksS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsV0FBVyxDQUFDLElBQVk7UUFDdEIsSUFBSSxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsT0FBTyxDQUNMLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FDM0UsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsY0FBYyxDQUFDLElBQVk7UUFDekIsSUFBSSxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsT0FBTyxDQUNMLEtBQUssQ0FBQyxXQUFXLEVBQUU7WUFDbkIsR0FBRztZQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUM7WUFDN0MsR0FBRztZQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUN6QyxDQUFDO0lBQ0osQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUM1QyxJQUFJLFlBQVksRUFBRTtZQUNoQixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxFQUFFO2dCQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztnQkFDcEIsTUFBTSxPQUFPLEdBQUc7b0JBQ2QsY0FBYyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYTtvQkFDaEQsWUFBWSxFQUFFLEVBQUU7aUJBQ2pCLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLHNCQUFzQjtxQkFDeEIsMkJBQTJCLENBQUMsT0FBTyxDQUFDO3FCQUNwQyxTQUFTLENBQ1IsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDTixJQUFJLENBQUMsR0FBRyxFQUFFO3dCQUNSLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO3dCQUNyQixJQUFJLENBQUMsZUFBZTs0QkFDbEIsSUFBSSxDQUFDLFlBQVk7Z0NBQ2pCLElBQUksQ0FBQyxnQkFBZ0I7Z0NBQ3JCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQztvQ0FDbkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyw2QkFBNkIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2dDQUM1RCxDQUFDLENBQUMsSUFBSTtnQ0FDTixDQUFDLENBQUMsS0FBSyxDQUFDO3dCQUNaLElBQUksQ0FBQyxxQkFBcUI7NEJBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsZ0NBQWdDLENBQUMsTUFBTTtnQ0FDeEQsQ0FBQztnQ0FDSCxJQUFJLENBQUMsYUFBYSxDQUFDLDZCQUE2QixDQUFDLE1BQU0sR0FBRyxDQUFDO2dDQUN6RCxDQUFDLENBQUMsSUFBSTtnQ0FDTixDQUFDLENBQUMsS0FBSyxDQUFDO3dCQUNaLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7cUJBQ2xDO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO3dCQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsd0ZBQXdGLEVBQ3hGLE9BQU8sQ0FDUixDQUFDO3dCQUNGLE9BQU87cUJBQ1I7Z0JBQ0gsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7b0JBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ3ZCLENBQUMsQ0FDRixDQUFDO2FBQ0w7aUJBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLE1BQU0sRUFBRTtnQkFDOUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7Z0JBQ3BCLE1BQU0sT0FBTyxHQUFHO29CQUNkLGNBQWMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWE7b0JBQ2hELFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVztpQkFDL0IsQ0FBQztnQkFDRixJQUFJLENBQUMsc0JBQXNCO3FCQUN4QiwyQkFBMkIsQ0FBQyxPQUFPLENBQUM7cUJBQ3BDLFNBQVMsQ0FDUixDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUNOLElBQUksQ0FBQyxHQUFHLEVBQUU7d0JBQ1IsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7d0JBQ3JCLElBQUksQ0FBQyxlQUFlOzRCQUNsQixJQUFJLENBQUMsWUFBWTtnQ0FDakIsSUFBSSxDQUFDLGdCQUFnQjtnQ0FDckIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sR0FBRyxDQUFDO29DQUNuRCxJQUFJLENBQUMsYUFBYSxDQUFDLDZCQUE2QixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7Z0NBQzVELENBQUMsQ0FBQyxJQUFJO2dDQUNOLENBQUMsQ0FBQyxLQUFLLENBQUM7d0JBQ1osSUFBSSxDQUFDLHFCQUFxQjs0QkFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQ0FBZ0MsQ0FBQyxNQUFNO2dDQUN4RCxDQUFDO2dDQUNILElBQUksQ0FBQyxhQUFhLENBQUMsNkJBQTZCLENBQUMsTUFBTSxHQUFHLENBQUM7Z0NBQ3pELENBQUMsQ0FBQyxJQUFJO2dDQUNOLENBQUMsQ0FBQyxLQUFLLENBQUM7d0JBQ1osSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztxQkFDbEM7eUJBQU07d0JBQ0wsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7d0JBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNoQix3RkFBd0YsRUFDeEYsT0FBTyxDQUNSLENBQUM7d0JBQ0YsT0FBTztxQkFDUjtnQkFDSCxDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDUixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztvQkFDckIsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdkIsQ0FBQyxDQUNGLENBQUM7YUFDTDtTQUNGO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILHlCQUF5QixDQUFDLEdBQVE7UUFDaEMsSUFBSSxDQUFDLHNCQUFzQjthQUN4Qix5QkFBeUIsQ0FBQyxHQUFHLENBQUM7YUFDOUIsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDO1lBQ25DLElBQUksR0FBRyxDQUFDLGFBQWEsSUFBSSxHQUFHLENBQUMsY0FBYyxHQUFHLENBQUMsRUFBRTtnQkFDL0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDO2FBQ25DO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO2FBQ3JCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsWUFBWSxDQUFDLEdBQVE7UUFDbkIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQy9ELElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1lBRTNCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2FBQ3JCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQy9DLElBQUksQ0FBQyxTQUFTLEVBQ2QsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQ2hCLFdBQVcsQ0FDWixDQUFDO2dCQUNGLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUM7Z0JBQ3hFLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2FBQ3RCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNoRSxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUM7WUFDbkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQzFCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1lBQzNCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2FBQ3JCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQzdDLElBQUksQ0FBQyxTQUFTLEVBQ2QsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQ2hCLFVBQVUsQ0FDWCxDQUFDO2dCQUNGLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7Z0JBQ3RFLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2FBQ3RCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQseUJBQXlCO1FBQ3ZCLElBQUksQ0FBQyxzQkFBc0I7YUFDeEIscUNBQXFDLEVBQUU7YUFDdkMsU0FBUyxDQUNSLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDWCxNQUFNLElBQUksR0FBRyxHQUFHLENBQUM7WUFDakIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbEQsa0JBQWtCO1lBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRTtnQkFDNUIsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLGVBQWUsSUFBSSxDQUFDLEVBQUU7b0JBQzNDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDN0Q7Z0JBQ0QsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLGVBQWUsSUFBSSxDQUFDLEVBQUU7b0JBQzNDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDbEU7Z0JBQ0QsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLGVBQWUsSUFBSSxDQUFDLEVBQUU7b0JBQzNDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDaEU7Z0JBQ0QsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLGVBQWUsSUFBSSxDQUFDLEVBQUU7b0JBQzNDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUMxRCxPQUFPLENBQ1IsQ0FBQztpQkFDSDtZQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLDhCQUE4QixHQUFHLElBQUksQ0FBQztRQUM3QyxDQUFDLEVBQ0QsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkIsSUFBSSxDQUFDLDhCQUE4QixHQUFHLElBQUksQ0FBQztRQUM3QyxDQUFDLENBQ0YsQ0FBQztJQUNOLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsRUFBRSxDQUFDLFNBQVMsQ0FDckQsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNYLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUM7WUFDekQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQztZQUM3RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFDO1lBQzNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUM7WUFDbkQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQztZQUNuQyxJQUFJLENBQUMsaUJBQWlCLEdBQUc7Z0JBQ3ZCLEdBQUcsSUFBSSxHQUFHLENBQ1IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FDM0IsR0FBRyxDQUFDLGFBQWEsRUFDakIsR0FBRyxDQUFDLGVBQWUsRUFDbkIsR0FBRyxDQUFDLGNBQWMsRUFDbEIsR0FBRyxDQUFDLFVBQVUsQ0FDZixDQUNGO2FBQ0YsQ0FBQztRQUNKLENBQUMsRUFDRCxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ04sT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuQixJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO1FBQ3JDLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsMEJBQTBCO1FBQ3hCLElBQ0UsSUFBSSxDQUFDLFlBQVk7WUFDakIsSUFBSSxDQUFDLDhCQUE4QjtZQUNuQyxJQUFJLENBQUMsc0JBQXNCO1lBQzNCLElBQUksQ0FBQyxjQUFjLEVBQ25CO1lBQ0EsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtnQkFDeEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2FBQ3RCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2FBQ3RCO1NBQ0Y7YUFBTTtZQUNMLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDcEMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ1Q7SUFDSCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsSUFBUztRQUMxQixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQzFCLE1BQU0sWUFBWSxHQUFRLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUU7Z0JBQzVCLElBQUksR0FBRyxHQUFRLEVBQUUsQ0FBQztnQkFDbEIsR0FBRyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO2dCQUNqQyxHQUFHLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQztnQkFDYixHQUFHLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7Z0JBQ2hDLEdBQUcsQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDN0IsR0FBRyxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7Z0JBQ3JCLEdBQUcsQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO2dCQUNyQixJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDakMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFjLEVBQUUsRUFBRTt3QkFDNUMsSUFBSSxlQUFlLEdBQVEsRUFBRSxDQUFDO3dCQUM5QixlQUFlLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQzt3QkFDekIsZUFBZSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDO3dCQUM5QyxlQUFlLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUM7d0JBQzNDLGVBQWUsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7d0JBQ2hFLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztvQkFDdkQsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7Z0JBQ0QsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6QixDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxHQUFHLFlBQVksQ0FBQztTQUNuRDthQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7WUFDL0IsTUFBTSxZQUFZLEdBQVEsRUFBRSxDQUFDO1lBRTdCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRTtnQkFDNUIsSUFDRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxRQUFRLENBQzFELE9BQU8sQ0FBQyxFQUFFLENBQ1gsRUFDRDtvQkFDQSxJQUFJLEdBQUcsR0FBUSxFQUFFLENBQUM7b0JBQ2xCLEdBQUcsQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztvQkFDakMsR0FBRyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7b0JBQ2IsR0FBRyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO29CQUNoQyxHQUFHLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQzdCLEdBQUcsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO29CQUNyQixHQUFHLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztvQkFDckIsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7d0JBQ2pDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBYyxFQUFFLEVBQUU7NEJBQzVDLElBQUksZUFBZSxHQUFRLEVBQUUsQ0FBQzs0QkFDOUIsZUFBZSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7NEJBQ3pCLGVBQWUsQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQzs0QkFDOUMsZUFBZSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDOzRCQUMzQyxlQUFlLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDOzRCQUNoRSxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQzt3QkFDeEMsQ0FBQyxDQUFDLENBQUM7cUJBQ0o7b0JBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUM5QztxQkFBTTtvQkFDTCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FDMUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDLEVBQUUsQ0FDNUMsQ0FBQztvQkFDRixJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsRUFBRTt3QkFDZixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7d0JBQzdDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTs0QkFDdEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUM3QyxDQUFDLGFBQWtCLEVBQUUsRUFBRTtnQ0FDckIsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQy9DLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLGFBQWEsQ0FBQyxXQUFXLENBQ2xELENBQUM7Z0NBQ0YsSUFBSSxZQUFZLElBQUksQ0FBQyxDQUFDLEVBQUU7b0NBQ3RCLGFBQWEsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLO3dDQUMxRCxDQUFDLENBQUMsUUFBUTt3Q0FDVixDQUFDLENBQUMsVUFBVSxDQUFDO2lDQUNoQjs0QkFDSCxDQUFDLENBQ0YsQ0FBQzt5QkFDSDtxQkFDRjtpQkFDRjtZQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBZ0IsRUFBRSxFQUFFO2dCQUM5RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUMxQixDQUFDLFdBQWdCLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLElBQUksV0FBVyxDQUFDLFdBQVcsQ0FDaEUsQ0FBQztnQkFDRixJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsRUFBRTtvQkFDZixXQUFXLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQztvQkFDL0IsSUFBSSxXQUFXLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7d0JBQ3RDLFdBQVcsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBa0IsRUFBRSxFQUFFOzRCQUNyRCxhQUFhLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQzt3QkFDbkMsQ0FBQyxDQUFDLENBQUM7cUJBQ0o7aUJBQ0Y7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO1FBQ0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztRQUNsQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELHFCQUFxQixDQUFDLEtBQWM7UUFDbEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztJQUNwQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZ0JBQWdCLENBQUMsS0FBVTtRQUN6QixJQUFJLEtBQUssRUFBRTtZQUNULElBQUksQ0FBQyxZQUFZLENBQUM7Z0JBQ2hCLENBQUMsRUFDQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxLQUFLLENBQUM7b0JBQ3RDLENBQUMsQ0FBQyxFQUFFO29CQUNKLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVztnQkFDeEMsSUFBSSxFQUFFLHNCQUFzQjtnQkFDNUIsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVc7b0JBQ3BDLENBQUMsQ0FBQyxFQUFFO29CQUNKLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVzthQUN2QyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLHNCQUFzQixDQUFDLDJCQUEyQixFQUFFLENBQUMsU0FBUyxDQUNqRSxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLHlCQUF5QixHQUFHLEdBQUcsQ0FBQztZQUNyQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUMzQixDQUFDLEVBQ0QsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDM0IsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBQ0Q7Ozs7Ozs7T0FPRztJQUNILFlBQVksQ0FBQyxLQUFVLEVBQUUsR0FBVztRQUNsQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQ2YsS0FBSzthQUNGLE1BQU0sQ0FDTCxDQUFDLEdBQVEsRUFBRSxJQUFTLEVBQUUsRUFBRSxDQUFDLENBQ3ZCLElBQUksSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUNuRCxFQUNELElBQUksR0FBRyxFQUFFLENBQ1Y7YUFDQSxNQUFNLEVBQUUsQ0FDWixDQUFDO0lBQ0osQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQVksRUFBRSxhQUFrQjtRQUMvQyxRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssSUFBSTtnQkFDUCxJQUFJLENBQUMsYUFBYSxDQUFDLDZCQUE2QixHQUFHLElBQUksQ0FBQyxPQUFPLENBQzdELElBQUksQ0FBQyx5QkFBeUIsRUFDOUIsYUFBYSxFQUNiLFNBQVMsQ0FDVixDQUFDO2dCQUNGLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyw2QkFBNkIsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO29CQUNoRSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsZ0NBQWdDLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTt3QkFDbkUsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FDaEQsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksWUFBWSxDQUN0RCxDQUFDO3FCQUNIO3lCQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO3dCQUNoRSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUNoRCxDQUFDLE9BQVksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQ2hELENBQUM7cUJBQ0g7aUJBQ0Y7Z0JBQ0QsTUFBTTtZQUNSLEtBQUssWUFBWTtnQkFDZixJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUNwRCxhQUFhLEVBQUUsS0FBSyxFQUNwQixXQUFXLENBQ1osQ0FBQztnQkFDRixJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDO2dCQUN4RSxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUNsRCxhQUFhLEVBQUUsTUFBTSxFQUNyQixVQUFVLENBQ1gsQ0FBQztnQkFDRixJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDO2dCQUN0RSxNQUFNO1lBQ1IsS0FBSywwQkFBMEI7Z0JBQzdCLElBQUksQ0FBQyxhQUFhLENBQUMsZ0NBQWdDLEdBQUcsYUFBYSxDQUFDO2dCQUNwRSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsNkJBQTZCLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtvQkFDaEUsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGdDQUFnQyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7d0JBQ25FLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQ2hELENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxJQUFJLFlBQVksQ0FDdEQsQ0FBQztxQkFDSDt5QkFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTt3QkFDaEUsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FDaEQsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksTUFBTSxDQUNoRCxDQUFDO3FCQUNIO2lCQUNGO2dCQUNELE1BQU07WUFDUixLQUFLLGNBQWM7Z0JBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsc0JBQXNCLEdBQUcsYUFBYSxDQUFDO2dCQUMxRCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsNkJBQTZCLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtvQkFDaEUsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGdDQUFnQyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7d0JBQ25FLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQ2hELENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxJQUFJLFlBQVksQ0FDdEQsQ0FBQztxQkFDSDt5QkFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTt3QkFDaEUsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FDaEQsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksTUFBTSxDQUNoRCxDQUFDO3FCQUNIO2lCQUNGO2dCQUNELE1BQU07U0FDVDtRQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFTLEVBQUUsS0FBVSxFQUFFLFdBQWlCO1FBQzdDLFFBQVEsSUFBSSxFQUFFO1lBQ1osS0FBSyxJQUFJO2dCQUNQLE1BQU0sT0FBTyxHQUNYLElBQUksQ0FBQyxhQUFhLENBQUMsNkJBQTZCLENBQUMsU0FBUyxDQUN4RCxDQUFDLEVBQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxDQUNyQyxDQUFDO2dCQUNKLElBQUksT0FBTyxLQUFLLENBQUMsQ0FBQyxFQUFFO29CQUNsQixNQUFNLFFBQVEsR0FDWixJQUFJLENBQUMsYUFBYSxDQUFDLDZCQUE2QixDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUM1RCxJQUFJLENBQUMsYUFBYSxDQUFDLDZCQUE2QixDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBRXBFLElBQUksUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFO3dCQUN4QyxRQUFRLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQWlCLEVBQUUsRUFBRTs0QkFDcEQsTUFBTSxXQUFXLEdBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyw2QkFBNkIsQ0FBQyxTQUFTLENBQ3hELENBQUMsYUFBa0IsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssSUFBSSxZQUFZLENBQzVELENBQUM7NEJBQ0osSUFBSSxDQUFDLGFBQWEsQ0FBQyw2QkFBNkIsQ0FBQyxNQUFNLENBQ3JELFdBQVcsRUFDWCxDQUFDLENBQ0YsQ0FBQzt3QkFDSixDQUFDLENBQUMsQ0FBQztxQkFDSjtpQkFDRjtnQkFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsNkJBQTZCLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtvQkFDaEUsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGdDQUFnQyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7d0JBQ25FLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQ2hELENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxJQUFJLFlBQVksQ0FDdEQsQ0FBQztxQkFDSDt5QkFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTt3QkFDaEUsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FDaEQsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksTUFBTSxDQUNoRCxDQUFDO3FCQUNIO2lCQUNGO2dCQUNELE1BQU07WUFFUixLQUFLLFlBQVk7Z0JBQ2YsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUNoRSxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUNyRCxDQUFDO2dCQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzVELE1BQU07WUFDUixLQUFLLGlCQUFpQjtnQkFDcEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUN2RCxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLFFBQVEsSUFBSSxLQUFLLEVBQUUsUUFBUSxDQUMvQyxDQUFDO2dCQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ25ELE1BQU07WUFDUixLQUFLLDBCQUEwQjtnQkFDN0IsTUFBTSxlQUFlLEdBQ25CLElBQUksQ0FBQyxhQUFhLENBQUMsZ0NBQWdDLENBQUMsU0FBUyxDQUMzRCxDQUFDLFVBQWUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUNqRSxDQUFDO2dCQUNKLElBQUksQ0FBQyxhQUFhLENBQUMsZ0NBQWdDLENBQUMsTUFBTSxDQUN4RCxlQUFlLEVBQ2YsQ0FBQyxDQUNGLENBQUM7Z0JBQ0YsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLDZCQUE2QixDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7b0JBQ2hFLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQ0FBZ0MsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO3dCQUNuRSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUNoRCxDQUFDLE9BQVksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsSUFBSSxZQUFZLENBQ3RELENBQUM7cUJBQ0g7eUJBQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7d0JBQ2hFLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQ2hELENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FDaEQsQ0FBQztxQkFDSDtpQkFDRjtnQkFDRCxNQUFNO1lBRVIsS0FBSyxjQUFjO2dCQUNqQixNQUFNLGlCQUFpQixHQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FDakQsQ0FBQyxZQUFpQixFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQ3JFLENBQUM7Z0JBQ0osSUFBSSxpQkFBaUIsS0FBSyxDQUFDLENBQUMsRUFBRTtvQkFDNUIsTUFBTSxNQUFNLEdBQ1YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO29CQUMvRCxJQUFJLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FDOUMsaUJBQWlCLEVBQ2pCLENBQUMsQ0FDRixDQUFDO29CQUNGLElBQUksTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFO3dCQUNyQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQWlCLEVBQUUsRUFBRTs0QkFDakQsTUFBTSxXQUFXLEdBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQ2pELENBQUMsYUFBa0IsRUFBRSxFQUFFLENBQ3JCLGFBQWEsQ0FBQyxXQUFXLElBQUksWUFBWSxDQUM1QyxDQUFDOzRCQUNKLElBQUksQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDbkUsQ0FBQyxDQUFDLENBQUM7cUJBQ0o7aUJBQ0Y7Z0JBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZFLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyw2QkFBNkIsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO29CQUNoRSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsZ0NBQWdDLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTt3QkFDbkUsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FDaEQsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksWUFBWSxDQUN0RCxDQUFDO3FCQUNIO3lCQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO3dCQUNoRSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUNoRCxDQUFDLE9BQVksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQ2hELENBQUM7cUJBQ0g7aUJBQ0Y7Z0JBQ0QsTUFBTTtTQUNUO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFXLEVBQUUsR0FBVSxFQUFFLEdBQVc7UUFDMUMsTUFBTSxJQUFJLEdBQVEsRUFBRSxDQUFDO1FBRXJCLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRTtZQUMzQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUMxQixDQUFDLFdBQWdCLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLENBQ2xELENBQUM7WUFDRixJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUN4QjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUVsQjs7OztPQUlHO0lBQ0gsU0FBUyxDQUFDLElBQVcsRUFBRSxHQUFXO1FBQ2hDLE9BQU8sSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3ZCLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNaLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2pCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxpQkFBaUI7UUFDZixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDeEIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7UUFDL0MsTUFBTSxFQUFFLEdBQUcsY0FBYyxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hFLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQUM7UUFDaEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsR0FBRyxXQUFXO2FBQ3RELE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO2FBQ2YsSUFBSSxFQUFFLENBQUM7UUFDVixJQUNFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhO1lBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7WUFDN0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLEVBQUU7WUFDNUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSx3QkFBd0IsQ0FBQztnQkFDcEUsR0FBRztZQUNMLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxnQkFBZ0I7Z0JBQ25DLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxjQUFjLENBQUM7WUFDdEMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLDZCQUE2QixDQUFDLE1BQU0sSUFBSSxDQUFDO2dCQUMzRCxJQUFJLENBQUMsYUFBYSxDQUFDLGdDQUFnQyxDQUFDLE1BQU0sSUFBSSxDQUFDO2dCQUMvRCxJQUFJLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsRUFDeEQ7WUFDQSxPQUFPLEtBQUssQ0FBQztTQUNkO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQztTQUNiO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILGVBQWU7UUFDYixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDckMsTUFBTSxPQUFPLEdBQVE7WUFDbkIsY0FBYyxFQUFFLFNBQVMsQ0FBQyxhQUFhO1lBQ3ZDLFdBQVcsRUFBRTtnQkFDWDtvQkFDRSxPQUFPLEVBQUUsU0FBUyxDQUFDLHdCQUF3QjtvQkFDM0MsV0FBVyxFQUFFLEVBQUU7aUJBQ2hCO2FBQ0Y7WUFDRCxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsV0FBVyxDQUFDO1lBQ3hFLGlCQUFpQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUM7WUFDdEUscUJBQXFCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FDbkMsU0FBUyxDQUFDLDZCQUE2QixFQUN2QyxTQUFTLENBQ1Y7WUFDRCx1QkFBdUIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUNyQyxTQUFTLENBQUMsZ0NBQWdDLEVBQzFDLGFBQWEsQ0FDZDtZQUNELGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUMzQixTQUFTLENBQUMsc0JBQXNCLEVBQ2hDLGFBQWEsQ0FDZDtZQUNELGdCQUFnQixFQUNkLFNBQVMsQ0FBQyxlQUFlLEtBQUssS0FBSztnQkFDakMsQ0FBQyxDQUFDLHNCQUFzQjtnQkFDeEIsQ0FBQyxDQUFDLGdCQUFnQjtZQUN0QixTQUFTLEVBQUU7Z0JBQ1QsVUFBVSxFQUFFLFNBQVMsQ0FBQyxnQkFBZ0I7b0JBQ3BDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQztvQkFDbEQsQ0FBQyxDQUFDLEVBQUU7Z0JBQ04sUUFBUSxFQUFFLFNBQVMsQ0FBQyxjQUFjO29CQUNoQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDO29CQUNoRCxDQUFDLENBQUMsRUFBRTthQUNQO1lBQ0QsYUFBYSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQztZQUM5QyxjQUFjLEVBQUUsU0FBUyxDQUFDLGVBQWU7U0FDMUMsQ0FBQztRQUNGLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRLEVBQUU7WUFDekIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQzVELENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ3JCLGdFQUFnRTtnQkFDaEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsaUNBQWlDLENBQUM7Z0JBQ3ZELFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7b0JBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBQ3BELENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNYLENBQUMsRUFDRCxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNOLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7b0JBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNoQix3RkFBd0YsRUFDeEYsT0FBTyxDQUNSLENBQUM7b0JBQ0YsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7aUJBQ3RCO3FCQUFNO29CQUNMLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO29CQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsa0dBQWtHLEVBQ2xHLE9BQU8sQ0FDUixDQUFDO2lCQUNIO1lBQ0gsQ0FBQyxDQUNGLENBQUM7U0FDSDtRQUNELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7WUFDeEIsT0FBTyxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztZQUNsQyxJQUFJLENBQUMsc0JBQXNCO2lCQUN4QixlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUM7aUJBQzFDLFNBQVMsQ0FBQztnQkFDVCxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtvQkFDakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7b0JBQ3JCLCtEQUErRDtvQkFDL0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsZ0NBQWdDLENBQUM7b0JBQ3RELFVBQVUsQ0FBQyxHQUFHLEVBQUU7d0JBQ2QsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7d0JBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7b0JBQ3ZDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDWCxDQUFDO2dCQUNELEtBQUssRUFBRSxDQUFDLEtBQVUsRUFBRSxFQUFFO29CQUNwQixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztvQkFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLGtHQUFrRyxFQUNsRyxPQUFPLENBQ1IsQ0FBQztnQkFDSixDQUFDO2FBQ0YsQ0FBQyxDQUFDO1NBQ047SUFDSCxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQ3BFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ1gsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDO2dCQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUMxRCxJQUFJLENBQUMsaUJBQWlCO29CQUNwQixJQUFJLEVBQUUsaUJBQWlCLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU07d0JBQ3RELENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCO3dCQUN4QixDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNULElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuQyxDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDUixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZCLENBQUMsQ0FDRixDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRUQscUJBQXFCLENBQUMsSUFBUztRQUM3QixJQUFJO1lBQ0YsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsR0FBRyxJQUFJLEVBQUUsY0FBYyxDQUFDO2dCQUN2RCxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsd0JBQXdCO29CQUMxQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUM7Z0JBQ3RDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FDaEQsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLEVBQUUsZ0JBQWdCLEVBQ3RCLFdBQVcsQ0FDWixDQUFDLENBQUM7WUFDTCxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDO1lBQ3hFLElBQUksQ0FBQyxpQkFBaUI7Z0JBQ3BCLElBQUksRUFBRSxpQkFBaUIsSUFBSSxJQUFJLEVBQUUsaUJBQWlCLENBQUMsTUFBTTtvQkFDdkQsQ0FBQyxDQUFDLElBQUksRUFBRSxpQkFBaUI7b0JBQ3pCLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUM3QyxJQUFJLENBQUMsU0FBUyxFQUNkLElBQUksRUFBRSxpQkFBaUIsSUFBSSxFQUFFLEVBQzdCLFVBQVUsQ0FDWCxDQUFDO1lBQ0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQztZQUN0RSxJQUFJLENBQUMsYUFBYSxDQUFDLDZCQUE2QixHQUFHLElBQUksQ0FBQyxPQUFPLENBQzdELElBQUksQ0FBQyx5QkFBeUIsRUFDOUIsSUFBSSxFQUFFLHFCQUFxQixFQUMzQixTQUFTLENBQ1YsQ0FBQztZQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsZ0NBQWdDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FDaEUsSUFBSSxDQUFDLHVCQUF1QixFQUM1QixJQUFJLEVBQUUsdUJBQXVCLEVBQzdCLGFBQWEsQ0FDZCxDQUFDO1lBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUN0RCxJQUFJLENBQUMsaUJBQWlCLEVBQ3RCLElBQUksRUFBRSxhQUFhLEVBQ25CLGFBQWEsQ0FDZCxDQUFDO1lBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlO2dCQUNoQyxJQUFJLEVBQUUsZ0JBQWdCLEtBQUssc0JBQXNCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25FLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxFQUFFLFNBQVMsRUFBRSxVQUFVO2dCQUMvRCxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUM7Z0JBQ3ZDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDZCxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsR0FBRyxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVE7Z0JBQzNELENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQztnQkFDckMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNkLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7WUFDekQsSUFBSSxDQUFDLGVBQWU7Z0JBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDMUUsSUFBSSxDQUFDLGdCQUFnQjtnQkFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNwRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDakQsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQzVELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUN2QixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQzFCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUNSO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLDZCQUE2QixFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3JEO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFVLEVBQUUsSUFBUztRQUNoQyxJQUFJLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDckIsUUFBUSxJQUFJLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFO2dCQUNoRCxLQUFLLFFBQVE7b0JBQ1gsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxHQUFHLENBQ2xFLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUM5QixDQUFDO29CQUNGLE1BQU0sV0FBVyxHQUFHLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQztvQkFDNUMsT0FBTyxJQUFJLEdBQUcsV0FBVyxHQUFHLE1BQU0sQ0FBQztnQkFDckMsS0FBSyxTQUFTO29CQUNaLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxHQUFHLENBQ25FLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUM5QixDQUFDO29CQUNGLE1BQU0sWUFBWSxHQUFHLGdCQUFnQixFQUFFLElBQUksRUFBRSxDQUFDO29CQUM5QyxPQUFPLENBQ0wsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsYUFBYSxHQUFHLEdBQUcsR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUNyRSxDQUFDO2dCQUNKLEtBQUssV0FBVztvQkFDZCxNQUFNLGtCQUFrQixHQUN0QixNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDckQsT0FBTyxDQUNMLElBQUk7d0JBQ0osSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhO3dCQUNoQyxHQUFHO3dCQUNILGtCQUFrQjt3QkFDbEIsSUFBSSxDQUNMLENBQUM7YUFDTDtTQUNGO1FBQ0QsSUFBSSxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQ3JCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDN0IsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2QsS0FBSyxHQUFHO29CQUNOO3dCQUNFLElBQUksU0FBUyxHQUFHLFFBQVEsQ0FBQzt3QkFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsR0FBRyxRQUFRLENBQUM7d0JBQ3BELElBQUksQ0FBQyxhQUFhLENBQUMsbUJBQW1CLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQzs0QkFDN0MsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDOzRCQUNaLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7d0JBQy9DLElBQUksQ0FBQyxhQUFhLENBQUMsbUJBQW1CLEVBQUUsT0FBTyxDQUM3QyxDQUFDLFFBQWEsRUFBRSxLQUFVLEVBQUUsRUFBRTs0QkFDNUIsU0FBUztnQ0FDUCxLQUFLLEtBQUssQ0FBQztvQ0FDVCxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7b0NBQ3pCLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQzt3QkFDdkMsQ0FBQyxDQUNGLENBQUM7d0JBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7cUJBQ2pEO29CQUVELE1BQU07Z0JBQ1IsS0FBSyxHQUFHO29CQUNOO3dCQUNFLElBQUksU0FBUyxHQUFHLFFBQVEsQ0FBQzt3QkFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsR0FBRyxTQUFTLENBQUM7d0JBQ3JELElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDMUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDOzRCQUM3QyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUM7NEJBQ1osRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzt3QkFDL0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQzVDLENBQUMsVUFBZSxFQUFFLEtBQVUsRUFBRSxFQUFFOzRCQUM5QixTQUFTO2dDQUNQLEtBQUssS0FBSyxDQUFDO29DQUNULENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztvQ0FDN0IsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUMzQyxDQUFDLENBQ0YsQ0FBQzt3QkFDRixJQUFJLGFBQWEsQ0FBQzt3QkFDbEIsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsSUFBSSxHQUFHLEVBQUU7NEJBQzNDLGFBQWEsR0FBRyxLQUFLLENBQUM7eUJBQ3ZCOzZCQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLElBQUksR0FBRyxFQUFFOzRCQUNsRCxhQUFhLEdBQUcsS0FBSyxDQUFDO3lCQUN2Qjs2QkFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxJQUFJLEdBQUcsRUFBRTs0QkFDbEQsYUFBYSxHQUFHLEtBQUssQ0FBQzt5QkFDdkI7NkJBQU07NEJBQ0wsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQzt5QkFDekQ7d0JBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0I7NEJBQ2pDLGFBQWEsR0FBRyxNQUFNLEdBQUcsU0FBUyxDQUFDO3FCQUN0QztvQkFDRCxNQUFNO2dCQUNSLEtBQUssR0FBRztvQkFDTjt3QkFDRSxJQUFJLFNBQVMsR0FBRyxRQUFRLENBQUM7d0JBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLEdBQUcsV0FBVyxDQUFDO3dCQUN2RCxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQzFDLElBQUksQ0FBQyxhQUFhLENBQUMsbUJBQW1COzRCQUNwQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQzt3QkFDbkMsU0FBUyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO3dCQUNuRSxJQUFJLGFBQWEsQ0FBQzt3QkFDbEIsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsSUFBSSxHQUFHLEVBQUU7NEJBQzNDLGFBQWEsR0FBRyxLQUFLLENBQUM7eUJBQ3ZCOzZCQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLElBQUksR0FBRyxFQUFFOzRCQUNsRCxhQUFhLEdBQUcsS0FBSyxDQUFDO3lCQUN2Qjs2QkFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxJQUFJLEdBQUcsRUFBRTs0QkFDbEQsYUFBYSxHQUFHLEtBQUssQ0FBQzt5QkFDdkI7NkJBQU07NEJBQ0wsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQzt5QkFDekQ7d0JBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0I7NEJBQ2pDLGFBQWEsR0FBRyxNQUFNLEdBQUcsU0FBUyxDQUFDO3FCQUN0QztvQkFDRCxNQUFNO2FBQ1Q7U0FDRjtJQUNILENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsK0JBQStCO1FBQy9CLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGFBQWEsQ0FBQyxXQUFnQjtRQUM1QixJQUFJLFdBQVcsR0FBRyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBTyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQyxDQUFDO1FBQzFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7WUFDOUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQyxVQUFlLEVBQUUsRUFBRTtnQkFDL0MsUUFBUSxVQUFVLEVBQUUsSUFBSSxFQUFFO29CQUN4QixLQUFLLE1BQU0sQ0FBQyxDQUFDO3dCQUNYLElBQUksVUFBVSxFQUFFLGlCQUFpQixJQUFJLENBQUMsSUFBSSxVQUFVLEVBQUUsTUFBTSxJQUFJLENBQUMsRUFBRTs0QkFDakUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7eUJBQzFCO3dCQUNELE1BQU07cUJBQ1A7aUJBQ0Y7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFVO1FBQ3RCLE1BQU0sb0JBQW9CLEdBQ3hCLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDO1FBQ3ZFLE1BQU0sMkJBQTJCLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixDQUNqRSwyQkFBMkIsQ0FDNUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVMLE1BQU0sYUFBYSxHQUNqQixJQUFJLENBQUMsZ0JBQWdCLEtBQUssV0FBVztZQUNuQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQjtZQUMxQixDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQzdCLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FDbEUsS0FBSyxDQUFDLE1BQWlCLENBQ3hCLENBQUM7UUFDRixNQUFNLG9CQUFvQixHQUFHLEtBQUssQ0FBQyxNQUFNLEtBQUssb0JBQW9CLENBQUM7UUFDbkUsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLDJCQUEyQixDQUFDLFFBQVEsQ0FDL0QsS0FBSyxDQUFDLE1BQWlCLENBQ3hCLENBQUM7UUFDRixNQUFNLGtCQUFrQixHQUN0QixJQUFJLENBQUMsZ0JBQWdCLEtBQUssV0FBVztZQUNuQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWM7WUFDckIsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7UUFFeEIsSUFBSSxzQkFBc0IsSUFBSSxvQkFBb0IsSUFBSSxtQkFBbUIsRUFBRTtZQUN6RSxJQUFJLENBQUMscUJBQXFCLENBQ3hCLEtBQUssQ0FBQyxNQUFNLEVBQ1osYUFBYSxFQUNiLGtCQUFrQixDQUNuQixDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRUQscUJBQXFCLENBQ25CLE1BQVcsRUFDWCxjQUEwQixFQUMxQixrQkFBdUI7UUFFdkIsSUFDRSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUM5QyxrQkFBa0IsRUFBRSxpQkFBaUIsRUFDckM7WUFDQSxrQkFBa0IsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztTQUNoQztJQUNILENBQUM7d0dBendDVSx3QkFBd0I7NEZBQXhCLHdCQUF3Qiw2VUFGeEIsQ0FBQyxhQUFhLENBQUMsOFRBeUpXLFVBQVUsNEdBRVosVUFBVSxrREMzTC9DLHE5cURBNHVDQTs7NEZEMXNDYSx3QkFBd0I7a0JBTnBDLFNBQVM7K0JBQ0Usc0JBQXNCLGFBR3JCLENBQUMsYUFBYSxDQUFDOzBTQUdqQixPQUFPO3NCQUFmLEtBQUs7Z0JBSUcsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0ksS0FBSztzQkFBZCxNQUFNO2dCQUNFLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRXVCLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUNBLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFFaEIsZUFBZTtzQkFBdkIsS0FBSztnQkEySU4sbUJBQW1CO3NCQURsQixTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUdoRSxpQkFBaUI7c0JBRGhCLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQW9CVCxnQkFBZ0I7c0JBQXBFLFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBZ2pDbkQsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRWRpdG9yQ29uZmlnIH0gZnJvbSAnQHZjb21wbHkvZWRpdG9yJztcclxuaW1wb3J0IHsgRGF0ZVBpY2tlckNvbXBvbmVudCwgSURhdGVQaWNrZXJDb25maWcgfSBmcm9tICduZzItZGF0ZS1waWNrZXInO1xyXG5pbXBvcnQgeyBDcmVhdGVEYXNoYm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jcmVhdGUtZGFzaGJvYXJkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQYWdpbmF0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcGFnaW5hdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXNlckxpc3RDb25maWd1cmF0aW9uIH0gZnJvbSAnLi91c2VyLWxpc3QvdXNlci1saXN0LmNvbmZpZyc7XHJcbmltcG9ydCB7IENyZWF0ZURhc2hib2FyZEZvcm0gfSBmcm9tICcuL2NyZWF0ZS1kYXNoYm9hcmQtY29uZmlnJztcclxuaW1wb3J0IHsgU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vdWkta2l0L3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbmZpZ3VyZVdpZGdldHNTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jb25maWd1cmUtd2lkZ2V0cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZmluZEluZGV4IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0ICogYXMgZGF5anMgZnJvbSAnZGF5anMnO1xyXG4vLyBpbXBvcnQgKiBhcyBjdXN0b21QYXJzZUZvcm1hdCBmcm9tICdkYXlqcy9wbHVnaW4vY3VzdG9tUGFyc2VGb3JtYXQnO1xyXG5pbXBvcnQgeyBQb3BvdmVyU2VydmljZSB9IGZyb20gJy4uL3VpLWtpdC9wb3BvdmVyL3BvcG92ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFRleHRDb3VudFBpcGUgfSBmcm9tICcuL3BpcGVzL3RleHQtY291bnQucGlwZSc7XHJcbi8vIGRheWpzLmV4dGVuZChjdXN0b21QYXJzZUZvcm1hdCk7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1jcmVhdGUtZGFzaGJvYXJkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY3JlYXRlLWRhc2hib2FyZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY3JlYXRlLWRhc2hib2FyZC5jb21wb25lbnQubGVzcyddLFxyXG4gIHByb3ZpZGVyczogW1RleHRDb3VudFBpcGVdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3JlYXRlRGFzaGJvYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIGZlYXR1cmU6IGFueTtcclxuXHJcbiAgYWN0aXZlU2VsZWN0b3IgPSAnJztcclxuICBkaXNhYmxlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG1vZGUgPSAnQ1JFQVRFJztcclxuICBASW5wdXQoKSBkYXNoYm9hcmRJZCA9ICcnO1xyXG4gIEBPdXRwdXQoKSBjbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSBjcmVhdGVkQnkgPSAwO1xyXG5cclxuICBAVmlld0NoaWxkKCdmcm9tRGF0ZVBpY2tlcicpIGZyb21EYXRlUGlja2VyITogRGF0ZVBpY2tlckNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCd0b0RhdGVQaWNrZXInKSB0b0RhdGVQaWNrZXIhOiBEYXRlUGlja2VyQ29tcG9uZW50O1xyXG4gIGFuaW1hdGlvbiA9IHRydWU7XHJcbiAgQElucHV0KCkgY29uZmlndXJlV2lkZ2V0ID0gZmFsc2U7XHJcblxyXG4gIHRvdGFsUGFnZXMgPSAxO1xyXG4gIHRvdGFsTGlzdCA9IDE7XHJcbiAgdXNlcnNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIHZMb2FkZXIgPSB0cnVlO1xyXG4gIHVzZXJMaXN0TG9hZGVkID0gZmFsc2U7XHJcbiAgcmNMaXN0TG9hZGVkID0gZmFsc2U7XHJcbiAgY29tcGxpYW5jZUNhdGVnb3JpZXNMaXN0TG9hZGVkID0gZmFsc2U7XHJcbiAgcmlza0NhdGVnb3J5TGlzdExvYWRlZCA9IGZhbHNlO1xyXG4gIGhpZGVUb0RhdGUgPSBmYWxzZTtcclxuICBsaXN0RGV0YWlsczogVXNlckxpc3RDb25maWd1cmF0aW9uID0ge1xyXG4gICAgc2VsZWN0ZWRVc2Vyc0xpc3Q6IFtdLFxyXG4gICAgc2VsZWN0ZWRHcm91cExpc3Q6IFtdLFxyXG4gICAgbm9uUmVtb3ZhYmxlVXNlcnNMaXN0OiBbXSxcclxuICAgIGRpc3BsYXlFbGVtZW50S2V5OiAnbWVtYmVyX25hbWUnLFxyXG4gICAgZGlzcGxheUdyb3VwS2V5OiAnZ3JvdXBfbmFtZScsXHJcbiAgICBncm91cElka2V5OiAnZ3JvdXBfaWQnLFxyXG4gICAgZWxlbWVudElkS2V5OiAnbWVtYmVyX2lkJyxcclxuICAgIHRvb2x0aXBLZXk6ICdtZW1iZXJfZW1haWwnLFxyXG4gIH07XHJcbiAgZGFzaGJvYXJkRGVzY3JpcHRpb246IEVkaXRvckNvbmZpZyA9IHtcclxuICAgIHBsYWNlaG9sZGVyOiAnRGVzY3JpcHRpb24gKE1heCBsaW1pdDogMjUwIGNoYXJhY3RlcnMpJyxcclxuICAgIG1vZGU6ICdwcmltZScsXHJcbiAgICBpZDogJ2Rlc2NyaXB0aW9uJyxcclxuICB9O1xyXG4gIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllc1RyZWU6IGFueSA9IHtcclxuICAgIHJlZ3VsYXRpb25zOiB7XHJcbiAgICAgIGxpc3Q6IFtdLFxyXG4gICAgICBzZWxlY3RlZExpc3Q6IFtdLFxyXG4gICAgfSxcclxuICAgIHN0YW5kYXJkczoge1xyXG4gICAgICBsaXN0OiBbXSxcclxuICAgICAgc2VsZWN0ZWRMaXN0OiBbXSxcclxuICAgIH0sXHJcbiAgICBpbnRlcm5hbENvbnRyb2xzOiB7XHJcbiAgICAgIGxpc3Q6IFtdLFxyXG4gICAgICBzZWxlY3RlZExpc3Q6IFtdLFxyXG4gICAgfSxcclxuICAgIG90aGVyczoge1xyXG4gICAgICBsaXN0OiBbXSxcclxuICAgICAgc2VsZWN0ZWRMaXN0OiBbXSxcclxuICAgIH0sXHJcbiAgfTtcclxuICBhbGxDb21wbGlhbmNlQ2F0ZWdvcmllczogYW55W10gPSBbXTtcclxuICBhbGxSaXNrQ2F0ZWdvcmllczogYW55W10gPSBbXTtcclxuICBzaG93Umlza0NhdGVnb3J5ID0gZmFsc2U7XHJcbiAgc2hvd0NyaXRlcmlhID0gdHJ1ZTtcclxuXHJcbiAgZGFzaGJvYXJkRm9ybTogQ3JlYXRlRGFzaGJvYXJkRm9ybSA9IHtcclxuICAgIGRhc2hib2FyZE5hbWU6ICcnLFxyXG4gICAgZGFzaGJvYXJkRGVzY3JpcHRpb25UZXh0OiAnJyxcclxuICAgIHNlbGVjdGVkVmlld2VyczogW10sXHJcbiAgICBzZWxlY3RlZEdyb3VwOiBbXSxcclxuICAgIHNlbGVjdGVkRnJvbURhdGU6IHVuZGVmaW5lZCxcclxuICAgIHNlbGVjdGVkVG9EYXRlOiB1bmRlZmluZWQsXHJcbiAgICBzZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVyczogW10sXHJcbiAgICBzZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllczogW10sXHJcbiAgICBzZWxlY3RlZFJpc2tDYXRlZ29yaWVzOiBbXSxcclxuICAgIGRpc3BsYXlDcml0ZXJpYTogJ29yJyxcclxuICAgIGNvbmZpZ3VyZVdpZGdldDogW10sXHJcbiAgICBmcmVxdWVuY3lEZXRhaWxzOiAnJyxcclxuICAgIHNlbGVjdGVkRnJlcXVlbmN5VHlwZTogJycsXHJcbiAgICBzZWxlY3RlZEZyZXF1ZW5jaWVzOiBbMF0sXHJcbiAgICBmcmVxdWVuY3lNZXNzYWdlOiAnJyxcclxuICAgIGZyZXF1ZW5jeURhdGU6IDEsXHJcbiAgfTtcclxuXHJcbiAgb3BlbkNvbmZpZ3VyZVdpZGdldHMgPSBmYWxzZTtcclxuICBzZWxlY3RlZFdpZGdldHM6IGFueSA9IFtdO1xyXG4gIGRpc3BsYXllZFdpZGdldHM6IGFueSA9IFtdO1xyXG5cclxuICByZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0ID0gW107XHJcbiAgZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcclxuICBkYXlOYW1lcyA9IFtcclxuICAgICdNb25kYXknLFxyXG4gICAgJ1R1ZXNkYXknLFxyXG4gICAgJ1dlZG5lc2RheScsXHJcbiAgICAnVGh1cnNkYXknLFxyXG4gICAgJ0ZyaWRheScsXHJcbiAgICAnU2F0dXJkYXknLFxyXG4gICAgJ1N1bmRheScsXHJcbiAgXTtcclxuICBtb250aE5hbWVzID0gW1xyXG4gICAgJ0phbnVhcnknLFxyXG4gICAgJ0ZlYnJ1YXJ5JyxcclxuICAgICdNYXJjaCcsXHJcbiAgICAnQXByaWwnLFxyXG4gICAgJ01heScsXHJcbiAgICAnSnVuZScsXHJcbiAgICAnSnVseScsXHJcbiAgICAnQXVndXN0JyxcclxuICAgICdTZXB0ZW1iZXInLFxyXG4gICAgJ09jdG9iZXInLFxyXG4gICAgJ05vdmVtYmVyJyxcclxuICAgICdEZWNlbWJlcicsXHJcbiAgXTtcclxuICBxdWFydGVycyA9IFtcclxuICAgICdKYW51YXJ5LCBBcHJpbCwgSnVseSwgT2N0b2JlcicsXHJcbiAgICAnRmVicnVhcnksIE1heSwgQXVndXN0LCBOb3ZlbWJlcicsXHJcbiAgICAnTWFyY2gsIEp1bmUsIFNlcHRlbWJlciwgRGVjZW1iZXInLFxyXG4gIF07XHJcblxyXG4gIGNhdGVnb3J5TGlzdExvYWRlZCA9IGZhbHNlO1xyXG4gIHNob3dSaXNrV2lkZ2V0cyA9IGZhbHNlO1xyXG4gIHNob3dDb21wbGlhbmNlV2lkZ2V0cyA9IGZhbHNlO1xyXG4gIGlzTWFuYWdlUmlzazogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICByaXNrQ2F0ZWdvcnlMaXN0ID0ge1xyXG4gICAgc3RyYXRlZ2ljOiB7XHJcbiAgICAgIGxpc3Q6IFtdLFxyXG4gICAgICBzZWxlY3RlZExpc3Q6IFtdLFxyXG4gICAgfSxcclxuICAgIG9wZXJhdGlvbmFsOiB7XHJcbiAgICAgIGxpc3Q6IFtdLFxyXG4gICAgICBzZWxlY3RlZExpc3Q6IFtdLFxyXG4gICAgfSxcclxuICAgIGNvbXBsaWFuY2U6IHtcclxuICAgICAgbGlzdDogW10sXHJcbiAgICAgIHNlbGVjdGVkTGlzdDogW10sXHJcbiAgICB9LFxyXG4gICAgb3RoZXJzOiB7XHJcbiAgICAgIGxpc3Q6IFtdLFxyXG4gICAgICBzZWxlY3RlZExpc3Q6IFtdLFxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICBmcm9tRGF0ZVBpY2tlckNvbmZpZzogSURhdGVQaWNrZXJDb25maWcgPSB7XHJcbiAgICBtaW46IHRoaXMuZ2V0Q3VycmVudERhdGUoKSxcclxuICB9O1xyXG5cclxuICB0b0RhdGVQaWNrZXJDb25maWc6IElEYXRlUGlja2VyQ29uZmlnID0ge307XHJcblxyXG4gIGlzU21pbGV5ITogYm9vbGVhbjtcclxuICBzbWlsZXlNZXNzYWdlOiBzdHJpbmcgPSAnJztcclxuICBncm91cExpc3Q6IGFueTtcclxuICBncm91cHNFbmFibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdG90YWxncm91cHM6IGFueTtcclxuICBAVmlld0NoaWxkKCdmcm9tRGF0ZVBpY2tlcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KVxyXG4gIGZyb21EYXRlUGlja2VyUG9wdXAhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3RvRGF0ZVBpY2tlcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHRvRGF0ZVBpY2tlclBvcHVwITogRWxlbWVudFJlZjtcclxuICBvcGVuZWREYXRlUGlja2VyOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNyZWF0ZURhc2hib2FyZFNlcnZpY2U6IENyZWF0ZURhc2hib2FyZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHBhZ2luYXRpb25TZXJ2aWNlOiBQYWdpbmF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgc25hY2tCYXI6IFNuYWNrQmFyU2VydmljZSxcclxuICAgIHB1YmxpYyBwb3BvdmVyU2VydmljZTogUG9wb3ZlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbmZpZ3VyZVdpZGdldHNTZXJ2aWNlOiBDb25maWd1cmVXaWRnZXRzU2VydmljZSxcclxuICAgIHByaXZhdGUgdGV4dENvdW50OiBUZXh0Q291bnRQaXBlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIGlmICh0aGlzLmNyZWF0ZWRCeSkge1xyXG4gICAgICB0aGlzLmxpc3REZXRhaWxzLm5vblJlbW92YWJsZVVzZXJzTGlzdC5wdXNoKHRoaXMuY3JlYXRlZEJ5KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZXNjYXBlJywgWyckZXZlbnQnXSkgb25LZXlkb3duSGFuZGxlcihcclxuICAgIGV2ZW50OiBLZXlib2FyZEV2ZW50XHJcbiAgKSB7XHJcbiAgICB0aGlzLmNsb3NlLmVtaXQoeyBtb2RlOiAnZGlzY2FyZCcgfSk7XHJcbiAgICB0aGlzLmlzU21pbGV5ID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3JvdXBzRW5hYmxlZCA9IHRoaXMuZmVhdHVyZT8uaXNGZWF0dXJlRW5hYmxlZChcclxuICAgICAgJ2ZmX2dyb3Vwc19pbXByb3ZlbWVudHMnXHJcbiAgICApO1xyXG4gICAgdGhpcy5hbmltYXRpb24gPSB0cnVlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuYW5pbWF0aW9uID0gZmFsc2U7XHJcbiAgICB9LCAzMDApO1xyXG4gICAgLy8gdGhpcy5nZXRPcmdhbml6YXRpb25Vc2Vyc0NvdW50KCcnKTtcclxuICAgIHRoaXMuZ2V0Q2F0ZWdvcnlMaXN0KCk7XHJcbiAgICB0aGlzLmdldFJDTGlzdCgpO1xyXG4gICAgdGhpcy5nZXRDb21wbGlhbmNlQ2F0ZWdvcnlMaXN0KCk7XHJcbiAgICB0aGlzLnNldEZyZXF1ZW5jeSgnMn4xfjB+MCcsICdpbXBvcnQnKTtcclxuICAgIHRoaXMuY2hlY2tXaGV0aGVyQWxsTGlzdHNMb2FkZWQoKTtcclxuICAgIHRoaXMuZ2V0VXNlcnNMaXN0KCcnKTtcclxuICAgIHRoaXMuZ2V0R3JvdXBMaXN0KCk7XHJcbiAgICB0aGlzLmNyZWF0ZURhc2hib2FyZFNlcnZpY2UuZ2V0VXNlckluZm9ybWF0aW9uKCkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNldFBlcm1pc3Npb24ocmVzPy5yb2xlQWN0aW9ucyk7XHJcbiAgICAgICAgY29uc3QgcXVpY2tMaW5rID0gcmVzLnF1aWNrX2xpbms7XHJcbiAgICAgICAgaWYgKHF1aWNrTGluay5yaXNrKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dSaXNrQ2F0ZWdvcnkgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dSaXNrQ2F0ZWdvcnkgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheXMgdGhlIGxpc3RpbmcgcGFnZXMgdGhlIGxlZnQgc2lkZSBvZiBwb2xpY3kgZm9ybSB0byBzZXQgYW5kIGVkaXQgdGhlIGRyb3Bkb3duIGZpZWxkcyB2YWx1ZXNcclxuICAgKiBAcGFyYW0gdHlwZSBob2xkcyBuYW1lIG9mIHBhcnRpY3VsYXIgbGlzdCBpcyB0byBiZSBkaXNwbGF5ZWRcclxuICAgKiBAcGFyYW0gZXZlbnQgY29udGFpbnMgYm9vbGVhbiB2YWx1ZSB0byBkaXNwbGF5IHRoZSBsaXN0IG9yIG5vdFxyXG4gICAqL1xyXG4gIGFjdGl2YXRlU2VsZWN0b3IodHlwZTogYW55LCBldmVudDogYm9vbGVhbikge1xyXG4gICAgaWYgKHR5cGUgPT0gJ2ZyZXF1ZW5jeScgfHwgdGhpcy5hY3RpdmVTZWxlY3RvciA9PSAnZnJlcXVlbmN5Jykge1xyXG4gICAgICB0aGlzLnNob3dDcml0ZXJpYSA9IGZhbHNlO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnNob3dDcml0ZXJpYSA9IHRydWU7XHJcbiAgICAgIH0sIDEpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hY3RpdmVTZWxlY3RvciA9IGV2ZW50ID8gdHlwZSA6ICcnO1xyXG4gIH1cclxuXHJcbiAgb3BlbkZyb21EYXRlUGlja2VyKCkge1xyXG4gICAgdGhpcy5vcGVuZWREYXRlUGlja2VyID0gJ0ZST01fREFURSc7XHJcblxyXG4gICAgdGhpcy5mcm9tRGF0ZVBpY2tlcj8uYXBpPy5vcGVuKCk7XHJcbiAgICB0aGlzLmRhdGVQaWNrZXJPdmVybGF5ID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9wZW5Ub0RhdGVQaWNrZXIoKSB7XHJcbiAgICB0aGlzLm9wZW5lZERhdGVQaWNrZXIgPSAnVE9fREFURSc7XHJcblxyXG4gICAgdGhpcy50b0RhdGVQaWNrZXI/LmFwaT8ub3BlbigpO1xyXG5cclxuICAgIHRoaXMuZGF0ZVBpY2tlck92ZXJsYXkgPSB0cnVlO1xyXG4gIH1cclxuICBjbG9zZUZyb21EYXRlUGlja2VyKCkge1xyXG4gICAgdGhpcy5mcm9tRGF0ZVBpY2tlcj8uYXBpPy5jbG9zZSgpO1xyXG4gICAgaWYgKCF0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRGcm9tRGF0ZSkge1xyXG4gICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRUb0RhdGUgPSB1bmRlZmluZWQ7XHJcbiAgICAgIHRoaXMuaGlkZVRvRGF0ZSA9IHRydWU7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaGlkZVRvRGF0ZSA9IGZhbHNlO1xyXG4gICAgICB9LCAyMCk7XHJcbiAgICAgIHRoaXMuZnJvbURhdGVQaWNrZXIuYXBpLmNsb3NlKCk7XHJcbiAgICAgIHRoaXMuZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IG1pblRvRGF0ZSA9IHRoaXMuc2V0VG9EYXRlKHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEZyb21EYXRlKTtcclxuICAgIHRoaXMudG9EYXRlUGlja2VyQ29uZmlnID0geyBtaW46IG1pblRvRGF0ZSB9O1xyXG5cclxuICAgIGNvbnN0IGZyb21EYXRlID0gbmV3IERhdGUobWluVG9EYXRlLnNwbGl0KCctJykucmV2ZXJzZSgpLmpvaW4oJy0nKSk7XHJcbiAgICBjb25zdCB0b0RhdGUgPSBuZXcgRGF0ZSh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRUb0RhdGUpO1xyXG4gICAgY29uc3QgaW5WYWxpZERhdGUgPSBmcm9tRGF0ZSA+PSB0b0RhdGUgPyB0cnVlIDogZmFsc2U7XHJcbiAgICBpZiAoaW5WYWxpZERhdGUpIHtcclxuICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkVG9EYXRlID0gdW5kZWZpbmVkO1xyXG4gICAgICB0aGlzLmhpZGVUb0RhdGUgPSB0cnVlO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmhpZGVUb0RhdGUgPSBmYWxzZTtcclxuICAgICAgfSwgMjApO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNsb3NlVG9EYXRlUGlja2VyKCkge1xyXG4gICAgdGhpcy50b0RhdGVQaWNrZXI/LmFwaT8uY2xvc2UoKTtcclxuICAgIHRoaXMuZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGFuaW1hdGVJbWFnZSgpIHtcclxuICAgIGNvbnN0IGNpcmNsZUltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW1hZ2UnKTtcclxuICB9XHJcblxyXG4gIHNhdmVGcmVxdWVuY3koZXZlbnRWYWx1ZXM6IGFueSkge1xyXG4gICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkRnJlcXVlbmN5VHlwZSA9IGV2ZW50VmFsdWVzLmZyZXF1ZW5jeVR5cGU7XHJcbiAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRGcmVxdWVuY2llcyA9IGV2ZW50VmFsdWVzLmZyZXF1ZW5jaWVzO1xyXG4gICAgdGhpcy5kYXNoYm9hcmRGb3JtLmZyZXF1ZW5jeU1lc3NhZ2UgPSBldmVudFZhbHVlcy5mcmVxdWVuY3lTdHJpbmc7XHJcbiAgICB0aGlzLmRhc2hib2FyZEZvcm0uZnJlcXVlbmN5RGF0ZSA9IGV2ZW50VmFsdWVzLnNlbGVjdGVkRGF0ZTtcclxuICAgIHRoaXMuYWN0aXZhdGVTZWxlY3RvcignJywgZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q3VycmVudERhdGUoKSB7XHJcbiAgICBsZXQgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gICAgcmV0dXJuIGRheWpzKHRvZGF5KS5mb3JtYXQoJ0RELU1NLVlZWVknKTtcclxuICB9XHJcbiAgc2V0VG9EYXRlKGRhdGE6IHN0cmluZykge1xyXG4gICAgbGV0IHRvZGF5ID0gbmV3IERhdGUoZGF0YSk7XHJcbiAgICByZXR1cm4gZGF5anModG9kYXkpLmZvcm1hdCgnREQtTU0tWVlZWScpO1xyXG4gIH1cclxuICBnZXRGcm9tRGF0ZShkYXRhOiBzdHJpbmcpIHtcclxuICAgIGxldCB0b2RheSA9IG5ldyBEYXRlKGRhdGEpO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdG9kYXkuZ2V0RGF0ZSgpICsgJy0nICsgKHRvZGF5LmdldE1vbnRoKCkgKyAxKSArICctJyArIHRvZGF5LmdldEZ1bGxZZWFyKClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJdCB0YWtlcyBhIHN0cmluZywgY29udmVydHMgaXQgdG8gYSBkYXRlLCB0aGVuIHJldHVybnMgYSBzdHJpbmcgaW4gdGhlIGZvcm1hdCBvZiBZWVlZLU1NLURELlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhIC0gdGhlIGRhdGUgeW91IHdhbnQgdG8gZm9ybWF0XHJcbiAgICogQHJldHVybnMgQSBzdHJpbmcgaW4gdGhlIGZvcm1hdCBvZiBZWVlZLU1NLUREXHJcbiAgICovXHJcbiAgZ2V0RGF0ZUZvcm1hdGUoZGF0YTogc3RyaW5nKSB7XHJcbiAgICBsZXQgdG9kYXkgPSBuZXcgRGF0ZShkYXRhKTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRvZGF5LmdldEZ1bGxZZWFyKCkgK1xyXG4gICAgICAnLScgK1xyXG4gICAgICBTdHJpbmcodG9kYXkuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJykgK1xyXG4gICAgICAnLScgK1xyXG4gICAgICBTdHJpbmcodG9kYXkuZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY29uZmlndXJlRGFzaGJvYXJkKCkge1xyXG4gICAgbGV0IGZpZWxkc1N0YXR1cyA9IHRoaXMudmFsaWRhdGVEYXNoYm9hcmQoKTtcclxuICAgIGlmIChmaWVsZHNTdGF0dXMpIHtcclxuICAgICAgaWYgKHRoaXMubW9kZSA9PSAnQ1JFQVRFJykge1xyXG4gICAgICAgIHRoaXMudkxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgICAgIGRhc2hib2FyZF9uYW1lOiB0aGlzLmRhc2hib2FyZEZvcm0uZGFzaGJvYXJkTmFtZSxcclxuICAgICAgICAgIGRhc2hib2FyZF9pZDogJycsXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmNyZWF0ZURhc2hib2FyZFNlcnZpY2VcclxuICAgICAgICAgIC5jaGVja0R1cGxpY2F0ZURhc2hib2FyZE5hbWUocGF5bG9hZClcclxuICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgIChyZXMpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoIXJlcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dSaXNrV2lkZ2V0cyA9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXNNYW5hZ2VSaXNrICYmXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd1Jpc2tDYXRlZ29yeSAmJlxyXG4gICAgICAgICAgICAgICAgICAodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmlza0NhdGVnb3JpZXMubGVuZ3RoID4gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycy5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgIDogZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dDb21wbGlhbmNlV2lkZ2V0cyA9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcy5sZW5ndGggPlxyXG4gICAgICAgICAgICAgICAgICAgIDAgfHxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzLmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgICAgICAgICA/IHRydWVcclxuICAgICAgICAgICAgICAgICAgICA6IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuQ29uZmlndXJlV2lkZ2V0cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxyXG4gICAgICAgICAgICAgICAgICAnQSBkYXNoYm9hcmQgd2l0aCB0aGlzIG5hbWUgYWxyZWFkeSBleGlzdHMuIFNwZWNpZnkgYSBkaWZmZXJlbnQgbmFtZSBmb3IgdGhlIGRhc2hib2FyZC4nLFxyXG4gICAgICAgICAgICAgICAgICAnYWxlcnQnXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgICAgdGhpcy52TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09ICdFRElUJykge1xyXG4gICAgICAgIHRoaXMudkxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgICAgIGRhc2hib2FyZF9uYW1lOiB0aGlzLmRhc2hib2FyZEZvcm0uZGFzaGJvYXJkTmFtZSxcclxuICAgICAgICAgIGRhc2hib2FyZF9pZDogdGhpcy5kYXNoYm9hcmRJZCxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuY3JlYXRlRGFzaGJvYXJkU2VydmljZVxyXG4gICAgICAgICAgLmNoZWNrRHVwbGljYXRlRGFzaGJvYXJkTmFtZShwYXlsb2FkKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICghcmVzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd1Jpc2tXaWRnZXRzID1cclxuICAgICAgICAgICAgICAgICAgdGhpcy5pc01hbmFnZVJpc2sgJiZcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zaG93Umlza0NhdGVnb3J5ICYmXHJcbiAgICAgICAgICAgICAgICAgICh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcy5sZW5ndGggPiAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzLmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgICAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgOiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0NvbXBsaWFuY2VXaWRnZXRzID1cclxuICAgICAgICAgICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzLmxlbmd0aCA+XHJcbiAgICAgICAgICAgICAgICAgICAgMCB8fFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnMubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgIDogZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5Db25maWd1cmVXaWRnZXRzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coXHJcbiAgICAgICAgICAgICAgICAgICdBIGRhc2hib2FyZCB3aXRoIHRoaXMgbmFtZSBhbHJlYWR5IGV4aXN0cy4gU3BlY2lmeSBhIGRpZmZlcmVudCBuYW1lIGZvciB0aGUgZGFzaGJvYXJkLicsXHJcbiAgICAgICAgICAgICAgICAgICdhbGVydCdcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnZMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyBvcmdhbml6YXRpb24gdXNlcnMgY291bnQgYXBpIHRvIGdldCB0b3RhbCBudW1iZXIgb2YgcGFnZXNcclxuICAgKiBAcGFyYW0gVXJsIGNvbnRhaW5zIHByYW1zXHJcbiAgICovXHJcbiAgZ2V0T3JnYW5pemF0aW9uVXNlcnNDb3VudChVcmw6IGFueSkge1xyXG4gICAgdGhpcy5jcmVhdGVEYXNoYm9hcmRTZXJ2aWNlXHJcbiAgICAgIC5nZXRPcmdhbml6YXRpb25Vc2Vyc0NvdW50KFVybClcclxuICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy50b3RhbExpc3QgPSByZXMudG90YWxfbWVtYmVycztcclxuICAgICAgICBpZiAocmVzLnRvdGFsX21lbWJlcnMgJiYgcmVzLmxpbWl0X3Blcl9wYWdlID4gMSkge1xyXG4gICAgICAgICAgdGhpcy50b3RhbFBhZ2VzID0gcmVzLmNyZWF0ZV9wYWdlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsUGFnZXMgPSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdXNlcnMgbGlzdCBieSBtYWtpbmcgYXBpIGNhbGwgYW5kIHByZSBzZWxlY3RzIGFsbCBhZG1pbnMgYnkgYWRkaW5nIHRvIHZpZXdlcnNcclxuICAgKiBAcGFyYW0gdXJsIGNvbnRhaW5zIHF1ZXJ5IHBhcmFtcyBmb3Igb3JnYW5pemF0aW9uIHVzZXJzIGFwaVxyXG4gICAqL1xyXG4gIGdldFVzZXJzTGlzdCh1cmw6IGFueSkge1xyXG4gICAgdGhpcy5jcmVhdGVEYXNoYm9hcmRTZXJ2aWNlLmdldEFsbFVzZXJzKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnVzZXJzTGlzdCA9IHJlcztcclxuICAgICAgdGhpcy51c2VyTGlzdExvYWRlZCA9IHRydWU7XHJcblxyXG4gICAgICBpZiAodGhpcy5tb2RlID09PSAnRURJVCcpIHtcclxuICAgICAgICB0aGlzLnZMb2FkZXIgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFZpZXdlcnMgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICB0aGlzLnVzZXJzTGlzdCxcclxuICAgICAgICAgIFt0aGlzLmNyZWF0ZWRCeV0sXHJcbiAgICAgICAgICAnbWVtYmVyX2lkJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5saXN0RGV0YWlscy5zZWxlY3RlZFVzZXJzTGlzdCA9IHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFZpZXdlcnM7XHJcbiAgICAgICAgdGhpcy52TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0R3JvdXBMaXN0KCkge1xyXG4gICAgdGhpcy5jcmVhdGVEYXNoYm9hcmRTZXJ2aWNlLmdldEFsbEdyb3VwcygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy50b3RhbGdyb3VwcyA9IHJlcy50b3RhbF9pdGVtcztcclxuICAgICAgdGhpcy5ncm91cExpc3QgPSByZXMuZGF0YTtcclxuICAgICAgdGhpcy51c2VyTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJykge1xyXG4gICAgICAgIHRoaXMudkxvYWRlciA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkR3JvdXAgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgICB0aGlzLmdyb3VwTGlzdCxcclxuICAgICAgICAgIFt0aGlzLmNyZWF0ZWRCeV0sXHJcbiAgICAgICAgICAnZ3JvdXBfaWQnXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmxpc3REZXRhaWxzLnNlbGVjdGVkR3JvdXBMaXN0ID0gdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkR3JvdXA7XHJcbiAgICAgICAgdGhpcy52TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29tcGxpYW5jZUNhdGVnb3J5TGlzdCgpIHtcclxuICAgIHRoaXMuY3JlYXRlRGFzaGJvYXJkU2VydmljZVxyXG4gICAgICAuZ2V0Q29tcGxpYW5jZUNhdGVnb3JpZXNMaXN0RnJvbUdsb2JhbCgpXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBkYXRhID0gcmVzO1xyXG4gICAgICAgICAgdGhpcy5hbGxDb21wbGlhbmNlQ2F0ZWdvcmllcyA9IE9iamVjdC5hc3NpZ24ocmVzKTtcclxuICAgICAgICAgIC8vIGNsb25lRGVlcChyZXMpO1xyXG4gICAgICAgICAgZGF0YS5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5jb21wbGlhbmNlX3R5cGUgPT0gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzVHJlZS5vdGhlcnMubGlzdC5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuY29tcGxpYW5jZV90eXBlID09IDEpIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllc1RyZWUucmVndWxhdGlvbnMubGlzdC5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuY29tcGxpYW5jZV90eXBlID09IDIpIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllc1RyZWUuc3RhbmRhcmRzLmxpc3QucHVzaChlbGVtZW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LmNvbXBsaWFuY2VfdHlwZSA9PSAzKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUNhdGVnb3JpZXNUcmVlLmludGVybmFsQ29udHJvbHMubGlzdC5wdXNoKFxyXG4gICAgICAgICAgICAgICAgZWxlbWVudFxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb21wbGlhbmNlQ2F0ZWdvcmllc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgICB0aGlzLmNvbXBsaWFuY2VDYXRlZ29yaWVzTGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2F0ZWdvcnlMaXN0KCkge1xyXG4gICAgdGhpcy5jcmVhdGVEYXNoYm9hcmRTZXJ2aWNlLmdldENhdGVnb3J5TGlzdCgpLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5yaXNrQ2F0ZWdvcnlMaXN0LnN0cmF0ZWdpYy5saXN0ID0gcmVzLnN0cmF0ZWdpY19hcnI7XHJcbiAgICAgICAgdGhpcy5yaXNrQ2F0ZWdvcnlMaXN0Lm9wZXJhdGlvbmFsLmxpc3QgPSByZXMub3BlcmF0aW9uYWxfYXJyO1xyXG4gICAgICAgIHRoaXMucmlza0NhdGVnb3J5TGlzdC5jb21wbGlhbmNlLmxpc3QgPSByZXMuY29tcGxpYW5jZV9hcnI7XHJcbiAgICAgICAgdGhpcy5yaXNrQ2F0ZWdvcnlMaXN0Lm90aGVycy5saXN0ID0gcmVzLm90aGVyc19hcnI7XHJcbiAgICAgICAgdGhpcy5yaXNrQ2F0ZWdvcnlMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFsbFJpc2tDYXRlZ29yaWVzID0gW1xyXG4gICAgICAgICAgLi4ubmV3IFNldChcclxuICAgICAgICAgICAgdGhpcy5hbGxSaXNrQ2F0ZWdvcmllcy5jb25jYXQoXHJcbiAgICAgICAgICAgICAgcmVzLnN0cmF0ZWdpY19hcnIsXHJcbiAgICAgICAgICAgICAgcmVzLm9wZXJhdGlvbmFsX2FycixcclxuICAgICAgICAgICAgICByZXMuY29tcGxpYW5jZV9hcnIsXHJcbiAgICAgICAgICAgICAgcmVzLm90aGVyc19hcnJcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKSxcclxuICAgICAgICBdO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIHRoaXMucmlza0NhdGVnb3J5TGlzdExvYWRlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJdCBpcyB0byBlbnN1cmUgd2hldGhlciBhbGwgcmVxdWlyZWQgbGlzdHMgb24gUG9saWN5IGZyb20gaXMgbG9hZGVkIGZyb20gdGhlIGFwaSBjYWxsIG9yIG5vdFxyXG4gICAqL1xyXG4gIGNoZWNrV2hldGhlckFsbExpc3RzTG9hZGVkKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnJjTGlzdExvYWRlZCAmJlxyXG4gICAgICB0aGlzLmNvbXBsaWFuY2VDYXRlZ29yaWVzTGlzdExvYWRlZCAmJlxyXG4gICAgICB0aGlzLnJpc2tDYXRlZ29yeUxpc3RMb2FkZWQgJiZcclxuICAgICAgdGhpcy51c2VyTGlzdExvYWRlZFxyXG4gICAgKSB7XHJcbiAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJykge1xyXG4gICAgICAgIHRoaXMuZWRpdERhc2hib2FyZCgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmNoZWNrV2hldGhlckFsbExpc3RzTG9hZGVkKCk7XHJcbiAgICAgIH0sIDMwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3RlZFdpZGdldHMoZGF0YTogYW55KSB7XHJcbiAgICBpZiAodGhpcy5tb2RlID09PSAnQ1JFQVRFJykge1xyXG4gICAgICBjb25zdCB3aWRnZXRzQXJyYXk6IGFueSA9IFtdO1xyXG4gICAgICBkYXRhLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGxldCBvYmo6IGFueSA9IHt9O1xyXG4gICAgICAgIG9iai5tb2R1bGVfbmFtZSA9IGVsZW1lbnQubW9kdWxlO1xyXG4gICAgICAgIG9iai5faWQgPSAnJztcclxuICAgICAgICBvYmoud2lkZ2V0X25hbWUgPSBlbGVtZW50LnRpdGxlO1xyXG4gICAgICAgIG9iai53aWRnZXRfY29kZSA9IGVsZW1lbnQuaWQ7XHJcbiAgICAgICAgb2JqLnN1Yl93aWRnZXRzID0gW107XHJcbiAgICAgICAgb2JqLnN0YXRlID0gJ0FDVElWRSc7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQuc3ViV2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBlbGVtZW50LnN1YldpZGdldHMuZm9yRWFjaCgoc3ViV2lkZ2V0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgbGV0IHN1YldpZGdldE9iamVjdDogYW55ID0ge307XHJcbiAgICAgICAgICAgIHN1YldpZGdldE9iamVjdC5faWQgPSAnJztcclxuICAgICAgICAgICAgc3ViV2lkZ2V0T2JqZWN0LndpZGdldF9uYW1lID0gc3ViV2lkZ2V0LnRpdGxlO1xyXG4gICAgICAgICAgICBzdWJXaWRnZXRPYmplY3Qud2lkZ2V0X2NvZGUgPSBzdWJXaWRnZXQuaWQ7XHJcbiAgICAgICAgICAgIHN1YldpZGdldE9iamVjdC5zdGF0ZSA9IHN1YldpZGdldC52YWx1ZSA/ICdBQ1RJVkUnIDogJ0lOQUNUSVZFJztcclxuICAgICAgICAgICAgb2JqLnN1Yl93aWRnZXRzLnB1c2goT2JqZWN0LmFzc2lnbihzdWJXaWRnZXRPYmplY3QpKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB3aWRnZXRzQXJyYXkucHVzaChvYmopO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5jb25maWd1cmVXaWRnZXQgPSB3aWRnZXRzQXJyYXk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XHJcbiAgICAgIGNvbnN0IHdpZGdldHNBcnJheTogYW55ID0gW107XHJcblxyXG4gICAgICBkYXRhLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICFKU09OLnN0cmluZ2lmeSh0aGlzLmRhc2hib2FyZEZvcm0uY29uZmlndXJlV2lkZ2V0KS5pbmNsdWRlcyhcclxuICAgICAgICAgICAgZWxlbWVudC5pZFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgbGV0IG9iajogYW55ID0ge307XHJcbiAgICAgICAgICBvYmoubW9kdWxlX25hbWUgPSBlbGVtZW50Lm1vZHVsZTtcclxuICAgICAgICAgIG9iai5faWQgPSAnJztcclxuICAgICAgICAgIG9iai53aWRnZXRfbmFtZSA9IGVsZW1lbnQudGl0bGU7XHJcbiAgICAgICAgICBvYmoud2lkZ2V0X2NvZGUgPSBlbGVtZW50LmlkO1xyXG4gICAgICAgICAgb2JqLnN1Yl93aWRnZXRzID0gW107XHJcbiAgICAgICAgICBvYmouc3RhdGUgPSAnQUNUSVZFJztcclxuICAgICAgICAgIGlmIChlbGVtZW50LnN1YldpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBlbGVtZW50LnN1YldpZGdldHMuZm9yRWFjaCgoc3ViV2lkZ2V0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBsZXQgc3ViV2lkZ2V0T2JqZWN0OiBhbnkgPSB7fTtcclxuICAgICAgICAgICAgICBzdWJXaWRnZXRPYmplY3QuX2lkID0gJyc7XHJcbiAgICAgICAgICAgICAgc3ViV2lkZ2V0T2JqZWN0LndpZGdldF9uYW1lID0gc3ViV2lkZ2V0LnRpdGxlO1xyXG4gICAgICAgICAgICAgIHN1YldpZGdldE9iamVjdC53aWRnZXRfY29kZSA9IHN1YldpZGdldC5pZDtcclxuICAgICAgICAgICAgICBzdWJXaWRnZXRPYmplY3Quc3RhdGUgPSBzdWJXaWRnZXQudmFsdWUgPyAnQUNUSVZFJyA6ICdJTkFDVElWRSc7XHJcbiAgICAgICAgICAgICAgb2JqLnN1Yl93aWRnZXRzLnB1c2goc3ViV2lkZ2V0T2JqZWN0KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uY29uZmlndXJlV2lkZ2V0LnB1c2gob2JqKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkV2lkZ2V0cy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlLndpZGdldF9jb2RlID09IGVsZW1lbnQuaWRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpZiAoaW5kZXggIT0gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldHNbaW5kZXhdLnN0YXRlID0gJ0FDVElWRSc7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkV2lkZ2V0c1tpbmRleF0uc3ViX3dpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzW2luZGV4XS5zdWJfd2lkZ2V0cy5mb3JFYWNoKFxyXG4gICAgICAgICAgICAgICAgKHN1YldpZGdldERhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50SW5kZXggPSBlbGVtZW50LnN1YldpZGdldHMuZmluZEluZGV4KFxyXG4gICAgICAgICAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlLmlkID09IHN1YldpZGdldERhdGEud2lkZ2V0X2NvZGVcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRJbmRleCAhPSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN1YldpZGdldERhdGEuc3RhdGUgPSBlbGVtZW50LnN1YldpZGdldHNbZWxlbWVudEluZGV4XS52YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgPyAnQUNUSVZFJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgOiAnSU5BQ1RJVkUnO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5jb25maWd1cmVXaWRnZXQuZm9yRWFjaCgoc2F2ZWRXaWRnZXQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gZGF0YS5maW5kSW5kZXgoXHJcbiAgICAgICAgICAoZGF0YUVsZW1lbnQ6IGFueSkgPT4gZGF0YUVsZW1lbnQuaWQgPT0gc2F2ZWRXaWRnZXQud2lkZ2V0X2NvZGVcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChpbmRleCA9PSAtMSkge1xyXG4gICAgICAgICAgc2F2ZWRXaWRnZXQuc3RhdGUgPSAnSU5BQ1RJVkUnO1xyXG4gICAgICAgICAgaWYgKHNhdmVkV2lkZ2V0LnN1Yl93aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgc2F2ZWRXaWRnZXQuc3ViX3dpZGdldHMuZm9yRWFjaCgoc2F2ZVN1YldpZGdldDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgc2F2ZVN1YldpZGdldC5zdGF0ZSA9ICdJTkFDVElWRSc7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0cyA9IGRhdGE7XHJcbiAgICB0aGlzLm9wZW5Db25maWd1cmVXaWRnZXRzID0gZmFsc2U7XHJcbiAgICB0aGlzLnN1Ym1pdERhc2hib2FyZCgpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VDb25maWd1cmVXaWRnZXRzKGV2ZW50OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLm9wZW5Db25maWd1cmVXaWRnZXRzID0gZXZlbnQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGaWx0ZXIgbGlzdCB1c2VyJ3MgbGlzdCBiYXNlZCBvbiBwYWdpbmF0aW9uIGJ5IG1ha2luZyBhcGkgY2FsbFxyXG4gICAqIEBwYXJhbSBldmVudCBzcGVjaWZpZXMgYSBib29sZWFuIHZhbHVlIHRvIGNhbGwgYXBpXHJcbiAgICovXHJcbiAgcGFnaW5hdGlvbkZpbHRlcihldmVudDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgdGhpcy5nZXRVc2Vyc0xpc3Qoe1xyXG4gICAgICAgIHA6XHJcbiAgICAgICAgICB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLmN1cnJlbnRQYWdlID09PSAxXHJcbiAgICAgICAgICAgID8gJydcclxuICAgICAgICAgICAgOiB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLmN1cnJlbnRQYWdlLFxyXG4gICAgICAgIHR5cGU6ICdhbGxfZXhjZXB0X2V4ZWN1dGl2ZScsXHJcbiAgICAgICAgcTogIXRoaXMucGFnaW5hdGlvblNlcnZpY2Uuc2VhcmNoVmFsdWVcclxuICAgICAgICAgID8gJydcclxuICAgICAgICAgIDogdGhpcy5wYWdpbmF0aW9uU2VydmljZS5zZWFyY2hWYWx1ZSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRSQ0xpc3QoKSB7XHJcbiAgICB0aGlzLmNyZWF0ZURhc2hib2FyZFNlcnZpY2UuZ2V0UmVzcG9uc2liaWxpdHlDZW50ZXJMaXN0KCkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QgPSByZXM7XHJcbiAgICAgICAgdGhpcy5yY0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgdGhpcy5yY0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiAjIyMjIERlc2NyaXB0aW9uXHJcbiAgICpcclxuICAgKiBSZXR1cm5zIHRoZSB1bmlxdWUgYXJyYXkgb2Ygb2JqZWN0IGJhc2VkIG9uIHVuaXF1ZSBrZXlcclxuICAgKiBAcGFyYW0gYXJyYXlcclxuICAgKiBAcGFyYW0ga2V5XHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICB1bmlxdWVCeVByb3AoYXJyYXk6IGFueSwga2V5OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBBcnJheS5mcm9tKFxyXG4gICAgICBhcnJheVxyXG4gICAgICAgIC5yZWR1Y2UoXHJcbiAgICAgICAgICAoYWNjOiBhbnksIGl0ZW06IGFueSkgPT4gKFxyXG4gICAgICAgICAgICBpdGVtICYmIGl0ZW1ba2V5XSAmJiBhY2Muc2V0KGl0ZW1ba2V5XSwgaXRlbSksIGFjY1xyXG4gICAgICAgICAgKSxcclxuICAgICAgICAgIG5ldyBNYXAoKVxyXG4gICAgICAgIClcclxuICAgICAgICAudmFsdWVzKClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzYXZlU2VsZWN0ZWRMaXN0KHR5cGU6IHN0cmluZywgc2VsZWN0ZWRJdGVtczogYW55KSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAncmMnOlxyXG4gICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycyA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdCxcclxuICAgICAgICAgIHNlbGVjdGVkSXRlbXMsXHJcbiAgICAgICAgICAnaXRlbV9pZCdcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnMubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgIGlmICh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXMubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldHMgPSB0aGlzLnNlbGVjdGVkV2lkZ2V0cy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5tb2R1bGVfbmFtZSAhPSAnQ09NUExJQU5DRSdcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmlza0NhdGVnb3JpZXMubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldHMgPSB0aGlzLnNlbGVjdGVkV2lkZ2V0cy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5tb2R1bGVfbmFtZSAhPSAnUklTSydcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3dob0NhblZpZXcnOlxyXG4gICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFZpZXdlcnMgPSB0aGlzLnVuaXF1ZUJ5UHJvcChcclxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LnVzZXJzLFxyXG4gICAgICAgICAgJ21lbWJlcl9pZCdcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMubGlzdERldGFpbHMuc2VsZWN0ZWRVc2Vyc0xpc3QgPSB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRWaWV3ZXJzO1xyXG4gICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEdyb3VwID0gdGhpcy51bmlxdWVCeVByb3AoXHJcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5ncm91cHMsXHJcbiAgICAgICAgICAnZ3JvdXBfaWQnXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmxpc3REZXRhaWxzLnNlbGVjdGVkR3JvdXBMaXN0ID0gdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkR3JvdXA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3Jlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcyc6XHJcbiAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzID0gc2VsZWN0ZWRJdGVtcztcclxuICAgICAgICBpZiAodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzID0gdGhpcy5zZWxlY3RlZFdpZGdldHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQubW9kdWxlX25hbWUgIT0gJ0NPTVBMSUFOQ0UnXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzID0gdGhpcy5zZWxlY3RlZFdpZGdldHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQubW9kdWxlX25hbWUgIT0gJ1JJU0snXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdyaXNrQ2F0ZWdvcnknOlxyXG4gICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzID0gc2VsZWN0ZWRJdGVtcztcclxuICAgICAgICBpZiAodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzID0gdGhpcy5zZWxlY3RlZFdpZGdldHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQubW9kdWxlX25hbWUgIT0gJ0NPTVBMSUFOQ0UnXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzID0gdGhpcy5zZWxlY3RlZFdpZGdldHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQubW9kdWxlX25hbWUgIT0gJ1JJU0snXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hY3RpdmF0ZVNlbGVjdG9yKCcnLCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICByZW1vdmUodHlwZTogYW55LCBldmVudDogYW55LCByZW1vdmVJbmRleD86IGFueSkge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ3JjJzpcclxuICAgICAgICBjb25zdCByY0luZGV4ID1cclxuICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgIChyYzogYW55KSA9PiByYy5yY19pZCA9PSBldmVudC5yY19pZFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAocmNJbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgIGNvbnN0IHBhcmVudFJjOiBhbnkgPVxyXG4gICAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnNbcmNJbmRleF07XHJcbiAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnMuc3BsaWNlKHJjSW5kZXgsIDEpO1xyXG5cclxuICAgICAgICAgIGlmIChwYXJlbnRSYz8uaXRlbV9jaGlsZF9pZHM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgcGFyZW50UmMuaXRlbV9jaGlsZF9pZHMuZm9yRWFjaCgoY2hpbGRFbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCByZW1vdmVJbmRleCA9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnMuZmluZEluZGV4KFxyXG4gICAgICAgICAgICAgICAgICAocmVtb3ZlRWxlbWVudDogYW55KSA9PiByZW1vdmVFbGVtZW50LnJjX2lkID09IGNoaWxkRWxlbWVudFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnMuc3BsaWNlKFxyXG4gICAgICAgICAgICAgICAgcmVtb3ZlSW5kZXgsXHJcbiAgICAgICAgICAgICAgICAxXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnMubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgIGlmICh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXMubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldHMgPSB0aGlzLnNlbGVjdGVkV2lkZ2V0cy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5tb2R1bGVfbmFtZSAhPSAnQ09NUExJQU5DRSdcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmlza0NhdGVnb3JpZXMubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldHMgPSB0aGlzLnNlbGVjdGVkV2lkZ2V0cy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5tb2R1bGVfbmFtZSAhPSAnUklTSydcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlICd3aG9DYW5WaWV3JzpcclxuICAgICAgICBjb25zdCByZXZpZXdlckluZGV4ID0gdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkVmlld2Vycy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAodmlld2VyOiBhbnkpID0+IHZpZXdlci5tZW1iZXJfaWQgPT0gZXZlbnQubWVtYmVyX2lkXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRWaWV3ZXJzLnNwbGljZShyZXZpZXdlckluZGV4LCAxKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnd2hvQ2FuVmlld0dyb3VwJzpcclxuICAgICAgICBjb25zdCBncm91cHMgPSB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRHcm91cC5maW5kSW5kZXgoXHJcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgPT0gZXZlbnQ/Lmdyb3VwX2lkXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRHcm91cC5zcGxpY2UoZ3JvdXBzLCAxKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzJzpcclxuICAgICAgICBjb25zdCBDQ2NhdGVnb3J5SW5kZXggPVxyXG4gICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzLmZpbmRJbmRleChcclxuICAgICAgICAgICAgKENDY2F0ZWdvcnk6IGFueSkgPT4gQ0NjYXRlZ29yeS5jYXRlZ29yeV9pZCA9PSBldmVudC5jYXRlZ29yeV9pZFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXMuc3BsaWNlKFxyXG4gICAgICAgICAgQ0NjYXRlZ29yeUluZGV4LFxyXG4gICAgICAgICAgMVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0cyA9IHRoaXMuc2VsZWN0ZWRXaWRnZXRzLmZpbHRlcihcclxuICAgICAgICAgICAgICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50Lm1vZHVsZV9uYW1lICE9ICdDT01QTElBTkNFJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0cyA9IHRoaXMuc2VsZWN0ZWRXaWRnZXRzLmZpbHRlcihcclxuICAgICAgICAgICAgICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50Lm1vZHVsZV9uYW1lICE9ICdSSVNLJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ3Jpc2tDYXRlZ29yeSc6XHJcbiAgICAgICAgY29uc3Qgcmlza0NhdGVnb3J5SW5kZXggPVxyXG4gICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmlza0NhdGVnb3JpZXMuZmluZEluZGV4KFxyXG4gICAgICAgICAgICAocmlza0NhdGVnb3J5OiBhbnkpID0+IHJpc2tDYXRlZ29yeS5jYXRlZ29yeV9pZCA9PSBldmVudC5jYXRlZ29yeV9pZFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICBpZiAocmlza0NhdGVnb3J5SW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgICBjb25zdCBwYXJlbnQ6IGFueSA9XHJcbiAgICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzW3Jpc2tDYXRlZ29yeUluZGV4XTtcclxuICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzLnNwbGljZShcclxuICAgICAgICAgICAgcmlza0NhdGVnb3J5SW5kZXgsXHJcbiAgICAgICAgICAgIDFcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpZiAocGFyZW50Py5jaGlsZF9jYXRfaWRzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHBhcmVudC5jaGlsZF9jYXRfaWRzLmZvckVhY2goKGNoaWxkRWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgcmVtb3ZlSW5kZXggPVxyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmlza0NhdGVnb3JpZXMuZmluZEluZGV4KFxyXG4gICAgICAgICAgICAgICAgICAocmVtb3ZlRWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUVsZW1lbnQuY2F0ZWdvcnlfaWQgPT0gY2hpbGRFbGVtZW50XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzLnNwbGljZShyZW1vdmVJbmRleCwgMSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcy5zcGxpY2Uocmlza0NhdGVnb3J5SW5kZXgsIDEpO1xyXG4gICAgICAgIGlmICh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnMubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgIGlmICh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXMubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldHMgPSB0aGlzLnNlbGVjdGVkV2lkZ2V0cy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5tb2R1bGVfbmFtZSAhPSAnQ09NUExJQU5DRSdcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmlza0NhdGVnb3JpZXMubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldHMgPSB0aGlzLnNlbGVjdGVkV2lkZ2V0cy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5tb2R1bGVfbmFtZSAhPSAnUklTSydcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRMaXN0KGxpc3Q6IGFueVtdLCBpZHM6IGFueVtdLCBrZXk6IHN0cmluZykge1xyXG4gICAgY29uc3QgZGF0YTogYW55ID0gW107XHJcblxyXG4gICAgaWRzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBpbmRleCA9IGxpc3QuZmluZEluZGV4KFxyXG4gICAgICAgIChsaXN0RWxlbWVudDogYW55KSA9PiBsaXN0RWxlbWVudFtrZXldID09IGVsZW1lbnRcclxuICAgICAgKTtcclxuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgIGRhdGEucHVzaChsaXN0W2luZGV4XSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG4gIHN1Ym1pdHRlZCA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIGlkJ3MgZnJvbSBhIHBhcnRpY3VsYXIgbGlzdCBlbGVtZW50c1xyXG4gICAqIEBwYXJhbSBsaXN0IGFjdHVhbCBzZWxlY3RlZCBsaXN0XHJcbiAgICogQHBhcmFtIGtleSBjb250YWlucyBrZXkgdG8gZXh0cmFjdCBpZCBmcm9tIHRoZSBsaXN0XHJcbiAgICovXHJcbiAgcmV0dXJuSWRzKGxpc3Q6IGFueVtdLCBrZXk6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIGxpc3Q/Lm1hcCgoZWxlKSA9PiB7XHJcbiAgICAgIGlmIChlbGVba2V5XSkge1xyXG4gICAgICAgIHJldHVybiBlbGVba2V5XTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBWYWxpZGF0ZXMgdGhlIGRhdGEgc3VibWl0dGVkIG9uIGNyZWF0ZSBkYXNoYm9hcmQgZm9ybVxyXG4gICAqL1xyXG4gIHZhbGlkYXRlRGFzaGJvYXJkKCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcclxuICAgIH0sIDEwMCk7XHJcbiAgICBjb25zdCBldmVudCA9IHRoaXMuZGFzaGJvYXJkRm9ybS5kYXNoYm9hcmROYW1lO1xyXG4gICAgY29uc3QgcmUgPSAvJm5ic3A7fDxicj4vZztcclxuICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5kYXNoYm9hcmROYW1lID0gZXZlbnQucmVwbGFjZShyZSwgJycpLnRyaW0oKTtcclxuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdGhpcy5kYXNoYm9hcmRGb3JtLmRhc2hib2FyZERlc2NyaXB0aW9uVGV4dDtcclxuICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5kYXNoYm9hcmREZXNjcmlwdGlvblRleHQgPSBkZXNjcmlwdGlvblxyXG4gICAgICAucmVwbGFjZShyZSwgJycpXHJcbiAgICAgIC50cmltKCk7XHJcbiAgICBpZiAoXHJcbiAgICAgICF0aGlzLmRhc2hib2FyZEZvcm0uZGFzaGJvYXJkTmFtZSB8fFxyXG4gICAgICB0aGlzLmRhc2hib2FyZEZvcm0uZGFzaGJvYXJkTmFtZS50cmltKCkgPT0gJycgfHxcclxuICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLmRhc2hib2FyZE5hbWUubGVuZ3RoID4gMzAgfHxcclxuICAgICAgdGhpcy50ZXh0Q291bnQudHJhbnNmb3JtKHRoaXMuZGFzaGJvYXJkRm9ybT8uZGFzaGJvYXJkRGVzY3JpcHRpb25UZXh0KSA+XHJcbiAgICAgICAgMjUwIHx8XHJcbiAgICAgICh0aGlzLmRhc2hib2FyZEZvcm0/LnNlbGVjdGVkRnJvbURhdGUgJiZcclxuICAgICAgICAhdGhpcy5kYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFRvRGF0ZSkgfHxcclxuICAgICAgKHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzLmxlbmd0aCA9PSAwKVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWFrZXMgYW4gYXBpIGNhbGwgdG8gY3JlYXRlIGEgcG9saWN5XHJcbiAgICogQHBhcmFtIGRhc2hib2FyZCBjb250YWlucyBkYXNoYm9hcmRGb3JtIGRhdGFcclxuICAgKi9cclxuICBzdWJtaXREYXNoYm9hcmQoKSB7XHJcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IGZhbHNlO1xyXG4gICAgY29uc3QgdmFsaWQgPSB0aGlzLnZhbGlkYXRlRGFzaGJvYXJkKCk7XHJcbiAgICBpZiAoIXZhbGlkKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMudkxvYWRlciA9IHRydWU7XHJcbiAgICBjb25zdCBkYXNoYm9hcmQgPSB0aGlzLmRhc2hib2FyZEZvcm07XHJcbiAgICBjb25zdCBwYXlsb2FkOiBhbnkgPSB7XHJcbiAgICAgIGRhc2hib2FyZF9uYW1lOiBkYXNoYm9hcmQuZGFzaGJvYXJkTmFtZSxcclxuICAgICAgZGVzY3JpcHRpb246IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjb250ZW50OiBkYXNoYm9hcmQuZGFzaGJvYXJkRGVzY3JpcHRpb25UZXh0LFxyXG4gICAgICAgICAgYXR0YWNobWVudHM6IFtdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF0sXHJcbiAgICAgIHZpc2libGVfdG9fdXNlcnM6IHRoaXMucmV0dXJuSWRzKGRhc2hib2FyZC5zZWxlY3RlZFZpZXdlcnMsICdtZW1iZXJfaWQnKSxcclxuICAgICAgdmlzaWJsZV90b19ncm91cHM6IHRoaXMucmV0dXJuSWRzKGRhc2hib2FyZC5zZWxlY3RlZEdyb3VwLCAnZ3JvdXBfaWQnKSxcclxuICAgICAgcmVzcG9uc2liaWxpdHlfY2VudGVyOiB0aGlzLnJldHVybklkcyhcclxuICAgICAgICBkYXNoYm9hcmQuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnMsXHJcbiAgICAgICAgJ2l0ZW1faWQnXHJcbiAgICAgICksXHJcbiAgICAgIHJlc3BvbnNpYmlsaXR5X2NhdGVnb3J5OiB0aGlzLnJldHVybklkcyhcclxuICAgICAgICBkYXNoYm9hcmQuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXMsXHJcbiAgICAgICAgJ2NhdGVnb3J5X2lkJ1xyXG4gICAgICApLFxyXG4gICAgICByaXNrX2NhdGVnb3J5OiB0aGlzLnJldHVybklkcyhcclxuICAgICAgICBkYXNoYm9hcmQuc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcyxcclxuICAgICAgICAnY2F0ZWdvcnlfaWQnXHJcbiAgICAgICksXHJcbiAgICAgIGRpc3BsYXlfY3JpdGVyaWE6XHJcbiAgICAgICAgZGFzaGJvYXJkLmRpc3BsYXlDcml0ZXJpYSA9PT0gJ2FuZCdcclxuICAgICAgICAgID8gJ0JPVEhfUkNfQU5EX0NBVEVHT1JZJ1xyXG4gICAgICAgICAgOiAnUkNfT1JfQ0FURUdPUlknLFxyXG4gICAgICB0aW1lZnJhbWU6IHtcclxuICAgICAgICBzdGFydF9kYXRlOiBkYXNoYm9hcmQuc2VsZWN0ZWRGcm9tRGF0ZVxyXG4gICAgICAgICAgPyB0aGlzLmdldERhdGVGb3JtYXRlKGRhc2hib2FyZD8uc2VsZWN0ZWRGcm9tRGF0ZSlcclxuICAgICAgICAgIDogJycsXHJcbiAgICAgICAgZW5kX2RhdGU6IGRhc2hib2FyZC5zZWxlY3RlZFRvRGF0ZVxyXG4gICAgICAgICAgPyB0aGlzLmdldERhdGVGb3JtYXRlKGRhc2hib2FyZD8uc2VsZWN0ZWRUb0RhdGUpXHJcbiAgICAgICAgICA6ICcnLFxyXG4gICAgICB9LFxyXG4gICAgICBlbWFpbF9zdW1tYXJ5OiB0aGlzLnNldEZyZXF1ZW5jeSgnJywgJ2V4cG9ydCcpLCAvL3NldEZvcm1hdFxyXG4gICAgICB3aWRnZXRfZGV0YWlsczogZGFzaGJvYXJkLmNvbmZpZ3VyZVdpZGdldCxcclxuICAgIH07XHJcbiAgICBpZiAodGhpcy5tb2RlID09ICdDUkVBVEUnKSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlRGFzaGJvYXJkU2VydmljZS5zdWJtaXREYXNoYm9hcmQocGF5bG9hZCkuc3Vic2NyaWJlKFxyXG4gICAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy52TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAvLyB0aGlzLnNuYWNrQmFyLnNob3coJ1RoZSBkYXNoYm9hcmQgaGFzIGJlZW4gY3JlYXRlZC4nLCdpbmZvJyk7XHJcbiAgICAgICAgICB0aGlzLmlzU21pbGV5ID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc21pbGV5TWVzc2FnZSA9ICdUaGUgZGFzaGJvYXJkIGhhcyBiZWVuIGNyZWF0ZWQuJztcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmlzU21pbGV5ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2UuZW1pdCh7IG1vZGU6ICdjcmVhdGVkJywgaWQ6IHJlcy5faWQgfSk7XHJcbiAgICAgICAgICB9LCAzMDAwKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnIpID0+IHtcclxuICAgICAgICAgIGlmIChlcnIuc3RhdHVzID09PSA0MDkpIHtcclxuICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxyXG4gICAgICAgICAgICAgICdBIGRhc2hib2FyZCB3aXRoIHRoaXMgbmFtZSBhbHJlYWR5IGV4aXN0cy4gU3BlY2lmeSBhIGRpZmZlcmVudCBuYW1lIGZvciB0aGUgZGFzaGJvYXJkLicsXHJcbiAgICAgICAgICAgICAgJ2FsZXJ0J1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLnZMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICAgICAgdGhpcy52TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdyhcclxuICAgICAgICAgICAgICAnT09QUyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHRoZSBwYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENvdWxkIHlvdSBwbGVhc2UgdHJ5IG9uZSBtb3JlIHRpbWU/JyxcclxuICAgICAgICAgICAgICAnYWxlcnQnXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XHJcbiAgICAgIHBheWxvYWQud2lkZ2V0X3VwZGF0ZV9mbGFnID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jcmVhdGVEYXNoYm9hcmRTZXJ2aWNlXHJcbiAgICAgICAgLnVwZGF0ZURhc2hib2FyZCh0aGlzLmRhc2hib2FyZElkLCBwYXlsb2FkKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAvLyB0aGlzLnNuYWNrQmFyLnNob3coJ1RoZSBkYXNoYm9hcmQgaGFzIGJlZW4gdXBkYXRlZCcsJ2luZm8nKTtcclxuICAgICAgICAgICAgdGhpcy5pc1NtaWxleSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc21pbGV5TWVzc2FnZSA9ICdUaGUgZGFzaGJvYXJkIGhhcyBiZWVuIHVwZGF0ZWQnO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmlzU21pbGV5ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5jbG9zZS5lbWl0KHsgbW9kZTogJ3VwZGF0ZWQnIH0pO1xyXG4gICAgICAgICAgICB9LCAzMDAwKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgIHRoaXMudkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coXHJcbiAgICAgICAgICAgICAgJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPycsXHJcbiAgICAgICAgICAgICAgJ2FsZXJ0J1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVkaXREYXNoYm9hcmQoKSB7XHJcbiAgICBpZiAodGhpcy5kYXNoYm9hcmRJZCkge1xyXG4gICAgICB0aGlzLmNyZWF0ZURhc2hib2FyZFNlcnZpY2UuZmV0Y2hEYXNoYm9hcmQodGhpcy5kYXNoYm9hcmRJZCkuc3Vic2NyaWJlKFxyXG4gICAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgZGF0YSA9IHJlcztcclxuICAgICAgICAgIHRoaXMubGlzdERldGFpbHMubm9uUmVtb3ZhYmxlVXNlcnNMaXN0ID0gW3Jlcy5jcmVhdGVkX2J5XTtcclxuICAgICAgICAgIGRhdGEudmlzaWJsZV90b19ncm91cHMgPVxyXG4gICAgICAgICAgICBkYXRhPy52aXNpYmxlX3RvX2dyb3VwcyAmJiBkYXRhLnZpc2libGVfdG9fZ3JvdXBzLmxlbmd0aFxyXG4gICAgICAgICAgICAgID8gZGF0YS52aXNpYmxlX3RvX2dyb3Vwc1xyXG4gICAgICAgICAgICAgIDogW107XHJcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlRGFzaGJvYXJkRm9ybShkYXRhKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcG9wdWxhdGVEYXNoYm9hcmRGb3JtKGRhdGE6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgKHRoaXMuZGFzaGJvYXJkRm9ybS5kYXNoYm9hcmROYW1lID0gZGF0YT8uZGFzaGJvYXJkX25hbWUpLFxyXG4gICAgICAgICh0aGlzLmRhc2hib2FyZEZvcm0uZGFzaGJvYXJkRGVzY3JpcHRpb25UZXh0ID1cclxuICAgICAgICAgIGRhdGE/LmRlc2NyaXB0aW9uWzBdPy5jb250ZW50ID8/ICcnKSxcclxuICAgICAgICAodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkVmlld2VycyA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICAgIHRoaXMudXNlcnNMaXN0LFxyXG4gICAgICAgICAgZGF0YT8udmlzaWJsZV90b191c2VycyxcclxuICAgICAgICAgICdtZW1iZXJfaWQnXHJcbiAgICAgICAgKSk7XHJcbiAgICAgIHRoaXMubGlzdERldGFpbHMuc2VsZWN0ZWRVc2Vyc0xpc3QgPSB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRWaWV3ZXJzO1xyXG4gICAgICBkYXRhLnZpc2libGVfdG9fZ3JvdXBzID1cclxuICAgICAgICBkYXRhPy52aXNpYmxlX3RvX2dyb3VwcyAmJiBkYXRhPy52aXNpYmxlX3RvX2dyb3Vwcy5sZW5ndGhcclxuICAgICAgICAgID8gZGF0YT8udmlzaWJsZV90b19ncm91cHNcclxuICAgICAgICAgIDogW107XHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEdyb3VwID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgIHRoaXMuZ3JvdXBMaXN0LFxyXG4gICAgICAgIGRhdGE/LnZpc2libGVfdG9fZ3JvdXBzID8/IFtdLFxyXG4gICAgICAgICdncm91cF9pZCdcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5saXN0RGV0YWlscy5zZWxlY3RlZEdyb3VwTGlzdCA9IHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEdyb3VwO1xyXG4gICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnMgPSB0aGlzLnNldExpc3QoXHJcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0LFxyXG4gICAgICAgIGRhdGE/LnJlc3BvbnNpYmlsaXR5X2NlbnRlcixcclxuICAgICAgICAnaXRlbV9pZCdcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzID0gdGhpcy5zZXRMaXN0KFxyXG4gICAgICAgIHRoaXMuYWxsQ29tcGxpYW5jZUNhdGVnb3JpZXMsXHJcbiAgICAgICAgZGF0YT8ucmVzcG9uc2liaWxpdHlfY2F0ZWdvcnksXHJcbiAgICAgICAgJ2NhdGVnb3J5X2lkJ1xyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcyA9IHRoaXMuc2V0TGlzdChcclxuICAgICAgICB0aGlzLmFsbFJpc2tDYXRlZ29yaWVzLFxyXG4gICAgICAgIGRhdGE/LnJpc2tfY2F0ZWdvcnksXHJcbiAgICAgICAgJ2NhdGVnb3J5X2lkJ1xyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmRhc2hib2FyZEZvcm0uZGlzcGxheUNyaXRlcmlhID1cclxuICAgICAgICBkYXRhPy5kaXNwbGF5X2NyaXRlcmlhID09PSAnQk9USF9SQ19BTkRfQ0FURUdPUlknID8gJ2FuZCcgOiAnb3InO1xyXG4gICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRGcm9tRGF0ZSA9IGRhdGE/LnRpbWVmcmFtZT8uc3RhcnRfZGF0ZVxyXG4gICAgICAgID8gbmV3IERhdGUoZGF0YT8udGltZWZyYW1lPy5zdGFydF9kYXRlKVxyXG4gICAgICAgIDogdW5kZWZpbmVkO1xyXG4gICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRUb0RhdGUgPSBkYXRhPy50aW1lZnJhbWU/LmVuZF9kYXRlXHJcbiAgICAgICAgPyBuZXcgRGF0ZShkYXRhPy50aW1lZnJhbWU/LmVuZF9kYXRlKVxyXG4gICAgICAgIDogdW5kZWZpbmVkO1xyXG4gICAgICB0aGlzLnZMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLmNvbmZpZ3VyZVdpZGdldCA9IGRhdGEud2lkZ2V0X2RldGFpbHM7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzID1cclxuICAgICAgICBkYXRhLndpZGdldF9kZXRhaWxzLmxlbmd0aCA+IDAgPyBbLi4ubmV3IFNldChkYXRhLndpZGdldF9kZXRhaWxzKV0gOiBbXTtcclxuICAgICAgdGhpcy5kaXNwbGF5ZWRXaWRnZXRzID1cclxuICAgICAgICBkYXRhLmFsbF93aWRnZXRzLmxlbmd0aCA+IDAgPyBbLi4ubmV3IFNldChkYXRhLmFsbF93aWRnZXRzKV0gOiBbXTtcclxuICAgICAgdGhpcy5zZXRGcmVxdWVuY3koZGF0YT8uZW1haWxfc3VtbWFyeSwgJ2ltcG9ydCcpO1xyXG4gICAgICBsZXQgbWluVG9EYXRlID0gdGhpcy5zZXRUb0RhdGUoZGF0YT8udGltZWZyYW1lPy5zdGFydF9kYXRlKTtcclxuICAgICAgdGhpcy50b0RhdGVQaWNrZXJDb25maWcgPSB7IG1pbjogbWluVG9EYXRlIH07XHJcbiAgICAgIHRoaXMuaGlkZVRvRGF0ZSA9IHRydWU7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaGlkZVRvRGF0ZSA9IGZhbHNlO1xyXG4gICAgICB9LCAyMCk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdwb3B1bGF0ZSBkYXNoYm9hcmQgZXJyb3IgPT4nLCBlcnJvcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRGcmVxdWVuY3koZXZlbnQ6IGFueSwgbW9kZTogYW55KSB7XHJcbiAgICBpZiAobW9kZSA9PT0gJ2V4cG9ydCcpIHtcclxuICAgICAgc3dpdGNoICh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRGcmVxdWVuY3lUeXBlKSB7XHJcbiAgICAgICAgY2FzZSAnd2Vla2x5JzpcclxuICAgICAgICAgIGNvbnN0IHdlZWtseVZhbHVlRGF0YSA9IHRoaXMuZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRGcmVxdWVuY2llcz8ubWFwKFxyXG4gICAgICAgICAgICAoZWxlOiBhbnkpID0+IE51bWJlcihlbGUpICsgMVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnN0IHdlZWtseVZhbHVlID0gd2Vla2x5VmFsdWVEYXRhPy5qb2luKCk7XHJcbiAgICAgICAgICByZXR1cm4gJzJ+JyArIHdlZWtseVZhbHVlICsgJ34wfjAnO1xyXG4gICAgICAgIGNhc2UgJ21vbnRobHknOlxyXG4gICAgICAgICAgY29uc3QgbW9udGhseVZhbHVlRGF0YSA9IHRoaXMuZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRGcmVxdWVuY2llcz8ubWFwKFxyXG4gICAgICAgICAgICAoZWxlOiBhbnkpID0+IE51bWJlcihlbGUpICsgMVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnN0IG1vbnRobHlWYWx1ZSA9IG1vbnRobHlWYWx1ZURhdGE/LmpvaW4oKTtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICczficgKyB0aGlzLmRhc2hib2FyZEZvcm0/LmZyZXF1ZW5jeURhdGUgKyAnficgKyBtb250aGx5VmFsdWUgKyAnfjAnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGNhc2UgJ3F1YXJ0ZXJseSc6XHJcbiAgICAgICAgICBjb25zdCBxdWFydGVybHlWYWx1ZURhdGEgPVxyXG4gICAgICAgICAgICBOdW1iZXIodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkRnJlcXVlbmNpZXMpICsgMTtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICc3ficgK1xyXG4gICAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uZnJlcXVlbmN5RGF0ZSArXHJcbiAgICAgICAgICAgICd+JyArXHJcbiAgICAgICAgICAgIHF1YXJ0ZXJseVZhbHVlRGF0YSArXHJcbiAgICAgICAgICAgICd+MCdcclxuICAgICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChtb2RlID09PSAnaW1wb3J0Jykge1xyXG4gICAgICBjb25zdCB2YWwgPSBldmVudC5zcGxpdCgnficpO1xyXG4gICAgICBzd2l0Y2ggKHZhbFswXSkge1xyXG4gICAgICAgIGNhc2UgJzInOlxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBsZXQgc3RyaW5nVmFsID0gJ0V2ZXJ5ICc7XHJcbiAgICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEZyZXF1ZW5jeVR5cGUgPSAnd2Vla2x5JztcclxuICAgICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkRnJlcXVlbmNpZXMgPSB2YWxbMV1cclxuICAgICAgICAgICAgICA/LnNwbGl0KCcsJylcclxuICAgICAgICAgICAgICA/Lm1hcCgoZWxlbWVudDogYW55KSA9PiBOdW1iZXIoZWxlbWVudCkgLSAxKTtcclxuICAgICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkRnJlcXVlbmNpZXM/LmZvckVhY2goXHJcbiAgICAgICAgICAgICAgKGRheUluZGV4OiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHN0cmluZ1ZhbCArPVxyXG4gICAgICAgICAgICAgICAgICBpbmRleCA9PT0gMFxyXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5kYXlOYW1lc1tkYXlJbmRleF1cclxuICAgICAgICAgICAgICAgICAgICA6ICcsICcgKyB0aGlzLmRheU5hbWVzW2RheUluZGV4XTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lNZXNzYWdlID0gc3RyaW5nVmFsO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJzMnOlxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBsZXQgc3RyaW5nVmFsID0gJ2V2ZXJ5ICc7XHJcbiAgICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEZyZXF1ZW5jeVR5cGUgPSAnbW9udGhseSc7XHJcbiAgICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lEYXRlID0gdmFsWzFdO1xyXG4gICAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRGcmVxdWVuY2llcyA9IHZhbFsyXVxyXG4gICAgICAgICAgICAgID8uc3BsaXQoJywnKVxyXG4gICAgICAgICAgICAgID8ubWFwKChlbGVtZW50OiBhbnkpID0+IE51bWJlcihlbGVtZW50KSAtIDEpO1xyXG4gICAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRGcmVxdWVuY2llcy5mb3JFYWNoKFxyXG4gICAgICAgICAgICAgIChtb250aEluZGV4OiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHN0cmluZ1ZhbCArPVxyXG4gICAgICAgICAgICAgICAgICBpbmRleCA9PT0gMFxyXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5tb250aE5hbWVzW21vbnRoSW5kZXhdXHJcbiAgICAgICAgICAgICAgICAgICAgOiAnLCAnICsgdGhpcy5tb250aE5hbWVzW21vbnRoSW5kZXhdO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgbGV0IG1vbnRoRGF0ZU5hbWU7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRhc2hib2FyZEZvcm0uZnJlcXVlbmN5RGF0ZSA9PSAnMScpIHtcclxuICAgICAgICAgICAgICBtb250aERhdGVOYW1lID0gJzFzdCc7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXNoYm9hcmRGb3JtLmZyZXF1ZW5jeURhdGUgPT0gJzInKSB7XHJcbiAgICAgICAgICAgICAgbW9udGhEYXRlTmFtZSA9ICcybmQnO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lEYXRlID09ICczJykge1xyXG4gICAgICAgICAgICAgIG1vbnRoRGF0ZU5hbWUgPSAnM3JkJztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBtb250aERhdGVOYW1lID0gdGhpcy5kYXNoYm9hcmRGb3JtLmZyZXF1ZW5jeURhdGUgKyAndGgnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lNZXNzYWdlID1cclxuICAgICAgICAgICAgICBtb250aERhdGVOYW1lICsgJyBvZiAnICsgc3RyaW5nVmFsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnNyc6XHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGxldCBzdHJpbmdWYWwgPSAnZXZlcnkgJztcclxuICAgICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkRnJlcXVlbmN5VHlwZSA9ICdxdWFydGVybHknO1xyXG4gICAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uZnJlcXVlbmN5RGF0ZSA9IHZhbFsxXTtcclxuICAgICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkRnJlcXVlbmNpZXMgPVxyXG4gICAgICAgICAgICAgIE51bWJlcih2YWxbMl0uc3BsaXQoJywnKVswXSkgLSAxO1xyXG4gICAgICAgICAgICBzdHJpbmdWYWwgKz0gdGhpcy5xdWFydGVyc1t0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRGcmVxdWVuY2llc107XHJcbiAgICAgICAgICAgIGxldCBtb250aERhdGVOYW1lO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5kYXNoYm9hcmRGb3JtLmZyZXF1ZW5jeURhdGUgPT0gJzEnKSB7XHJcbiAgICAgICAgICAgICAgbW9udGhEYXRlTmFtZSA9ICcxc3QnO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lEYXRlID09ICcyJykge1xyXG4gICAgICAgICAgICAgIG1vbnRoRGF0ZU5hbWUgPSAnMm5kJztcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhc2hib2FyZEZvcm0uZnJlcXVlbmN5RGF0ZSA9PSAnMycpIHtcclxuICAgICAgICAgICAgICBtb250aERhdGVOYW1lID0gJzNyZCc7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgbW9udGhEYXRlTmFtZSA9IHRoaXMuZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lEYXRlICsgJ3RoJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uZnJlcXVlbmN5TWVzc2FnZSA9XHJcbiAgICAgICAgICAgICAgbW9udGhEYXRlTmFtZSArICcgb2YgJyArIHN0cmluZ1ZhbDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XHJcbiAgICAvL3lvdXIgY29kZSB0byB1cGRhdGUgdGhlIG1vZGVsXHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZXRQZXJtaXNzaW9uKHJvbGVBY3Rpb25zOiBhbnkpIHtcclxuICAgIGxldCBpZkV4aXN0UmlzayA9IHJvbGVBY3Rpb25zPy5maW5kKChlbDogYW55KSA9PiBlbC5tb2R1bGVOYW1lID09ICdyaXNrJyk7XHJcbiAgICBpZkV4aXN0Umlzaz8uc3ViTW9kdWxlPy5mb3JFYWNoKChtb2R1bGU6IGFueSkgPT4ge1xyXG4gICAgICBtb2R1bGU/LnBlcm1pc3Npb25zPy5mb3JFYWNoKChwZXJtaXNzaW9uOiBhbnkpID0+IHtcclxuICAgICAgICBzd2l0Y2ggKHBlcm1pc3Npb24/LmNvZGUpIHtcclxuICAgICAgICAgIGNhc2UgJ1JSTVInOiB7XHJcbiAgICAgICAgICAgIGlmIChwZXJtaXNzaW9uPy5kZWZhdWx0UGVybWlzc2lvbiA9PSAxIHx8IHBlcm1pc3Npb24/LmVuYWJsZSA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pc01hbmFnZVJpc2sgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIGRvY3VtZW50Q2xpY2soZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgZnJvbURhdGVJbnB1dEVsZW1lbnQgPVxyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLm9wZW5lZERhdGVQaWNrZXIudG9Mb3dlckNhc2UoKSkgfHwgbnVsbDtcclxuICAgIGNvbnN0IGRhdGVQaWNrZXJDYWxlbmRhckNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICdkcC1kYXktY2FsZW5kYXItY29udGFpbmVyJ1xyXG4gICAgKVswXTtcclxuXHJcbiAgICBjb25zdCBvcGVuZWRFbGVtZW50ID1cclxuICAgICAgdGhpcy5vcGVuZWREYXRlUGlja2VyID09PSAnRlJPTV9EQVRFJ1xyXG4gICAgICAgID8gdGhpcy5mcm9tRGF0ZVBpY2tlclBvcHVwXHJcbiAgICAgICAgOiB0aGlzLnRvRGF0ZVBpY2tlclBvcHVwO1xyXG4gICAgY29uc3QgaXNPdXRzaWRlRnJvbURhdGVJbnB1dCA9ICFvcGVuZWRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoXHJcbiAgICAgIGV2ZW50LnRhcmdldCBhcyBFbGVtZW50XHJcbiAgICApO1xyXG4gICAgY29uc3QgaXNOb3RGcm9tRGF0ZUVsZW1lbnQgPSBldmVudC50YXJnZXQgIT09IGZyb21EYXRlSW5wdXRFbGVtZW50O1xyXG4gICAgY29uc3QgaXNOb3RJbnNpZGVDYWxlbmRhciA9ICFkYXRlUGlja2VyQ2FsZW5kYXJDb250YWluZXIuY29udGFpbnMoXHJcbiAgICAgIGV2ZW50LnRhcmdldCBhcyBFbGVtZW50XHJcbiAgICApO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWREYXRlUGlja2VyID1cclxuICAgICAgdGhpcy5vcGVuZWREYXRlUGlja2VyID09PSAnRlJPTV9EQVRFJ1xyXG4gICAgICAgID8gdGhpcy5mcm9tRGF0ZVBpY2tlclxyXG4gICAgICAgIDogdGhpcy50b0RhdGVQaWNrZXI7XHJcblxyXG4gICAgaWYgKGlzT3V0c2lkZUZyb21EYXRlSW5wdXQgJiYgaXNOb3RGcm9tRGF0ZUVsZW1lbnQgJiYgaXNOb3RJbnNpZGVDYWxlbmRhcikge1xyXG4gICAgICB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcihcclxuICAgICAgICBldmVudC50YXJnZXQsXHJcbiAgICAgICAgb3BlbmVkRWxlbWVudCxcclxuICAgICAgICBzZWxlY3RlZERhdGVQaWNrZXJcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRvY3VtZW50Q2xpY2tMaXN0ZW5lcihcclxuICAgIHRhcmdldDogYW55LFxyXG4gICAgb3BlbmVkRWxlbWVudHM6IEVsZW1lbnRSZWYsXHJcbiAgICBzZWxlY3RlZERhdGVQaWNrZXI6IGFueVxyXG4gICk6IHZvaWQge1xyXG4gICAgaWYgKFxyXG4gICAgICAhb3BlbmVkRWxlbWVudHMubmF0aXZlRWxlbWVudC5jb250YWlucyh0YXJnZXQpICYmXHJcbiAgICAgIHNlbGVjdGVkRGF0ZVBpY2tlcj8uYXJlQ2FsZW5kYXJzU2hvd25cclxuICAgICkge1xyXG4gICAgICBzZWxlY3RlZERhdGVQaWNrZXI/LmFwaT8uY2xvc2UoKTtcclxuICAgICAgdGhpcy5kYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8YXBwLXNuYWNrLWJhcj48L2FwcC1zbmFjay1iYXI+XHJcbjxkaXYgY2xhc3M9XCJjcmVhdGUtZGFzaGJvYXJkXCIgKm5nSWY9XCIhb3BlbkNvbmZpZ3VyZVdpZGdldHNcIj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImNyZWF0ZS1kYXNoYm9hcmQtY29udGFpbmVyIHZ4LWQtZmxleCB2eC1qdXN0aWZ5LWVuZFwiXHJcbiAgICBbY2xhc3MuYW5pbWF0ZS1zbGlkZUluUmlnaHRdPVwiYW5pbWF0aW9uXCJcclxuICA+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwibW9yZS1vcHRpb25cIlxyXG4gICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcIlxyXG4gICAgPlxyXG4gICAgICA8YXBwLXVzZXItbGlzdFxyXG4gICAgICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICd3aG9DYW5WaWV3J1wiXHJcbiAgICAgICAgKHNhdmVTZWxlY3RlZFVzZXJzKT1cInNhdmVTZWxlY3RlZExpc3QoJ3dob0NhblZpZXcnLCAkZXZlbnQpXCJcclxuICAgICAgICAoY2xvc2VVc2VyTGlzdCk9XCJhY3RpdmF0ZVNlbGVjdG9yKCcnLCBmYWxzZSlcIlxyXG4gICAgICAgIFt0b3RhbFBhZ2VzXT1cInRvdGFsUGFnZXNcIlxyXG4gICAgICAgIFt0b3RhbExpc3RdPVwidG90YWxMaXN0XCJcclxuICAgICAgICBbbGlzdERldGFpbHNdPVwibGlzdERldGFpbHNcIlxyXG4gICAgICAgIFt0b3RhbGdyb3Vwc2NvdW50XT1cInRvdGFsZ3JvdXBzXCJcclxuICAgICAgICBbZmVhdHVyZV09XCJmZWF0dXJlXCJcclxuICAgICAgPjwvYXBwLXVzZXItbGlzdD5cclxuICAgICAgPGFwcC1yZXNwb25zaWJpbGl0eS1jZW50ZXJcclxuICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAncmNMaXN0J1wiXHJcbiAgICAgICAgW3Jlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3RdPVwicmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdFwiXHJcbiAgICAgICAgW3JhZGlvU2VsZWN0aW9uXT1cImZhbHNlXCJcclxuICAgICAgICBbc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnNdPVwiXHJcbiAgICAgICAgICBkYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzXHJcbiAgICAgICAgXCJcclxuICAgICAgICBbcmNJZEtleV09XCInaXRlbV9pZCdcIlxyXG4gICAgICAgIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ3JjJywgJGV2ZW50KVwiXHJcbiAgICAgICAgKGNsb3NlUmNMaXN0KT1cImFjdGl2YXRlU2VsZWN0b3IoJycsIGZhbHNlKVwiXHJcbiAgICAgID5cclxuICAgICAgPC9hcHAtcmVzcG9uc2liaWxpdHktY2VudGVyPlxyXG4gICAgICA8YXBwLWNhdGVnb3JpZXNcclxuICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAncmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzJ1wiXHJcbiAgICAgICAgW2NhdGVnb3J5TGlzdF09XCJyZXNwb25zaWJpbGl0eUNhdGVnb3JpZXNUcmVlXCJcclxuICAgICAgICBbYWxsQ2F0ZWdvcmllc109XCJhbGxDb21wbGlhbmNlQ2F0ZWdvcmllc1wiXHJcbiAgICAgICAgW2NhdGVnb3J5SWRLZXldPVwiJ2NhdGVnb3J5X2lkJ1wiXHJcbiAgICAgICAgW3NlbGVjdGVkQ2F0ZWdvcmllc109XCJkYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzXCJcclxuICAgICAgICAoc2F2ZVNlbGVjdGVkQ2F0ZWdvcnkpPVwiXHJcbiAgICAgICAgICBzYXZlU2VsZWN0ZWRMaXN0KCdyZXNwb25zaWJpbGl0eUNhdGVnb3JpZXMnLCAkZXZlbnQpXHJcbiAgICAgICAgXCJcclxuICAgICAgICAoY2xvc2VDYXRlZ29yaWVzTGlzdCk9XCJhY3RpdmF0ZVNlbGVjdG9yKCcnLCBmYWxzZSlcIlxyXG4gICAgICA+PC9hcHAtY2F0ZWdvcmllcz5cclxuICAgICAgPGFwcC1yaXNrLWNhdGVnb3JpZXNcclxuICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAncmlza0NhdGVnb3JpZXMnXCJcclxuICAgICAgICBbY2F0ZWdvcnlMaXN0XT1cInJpc2tDYXRlZ29yeUxpc3RcIlxyXG4gICAgICAgIFthbGxDYXRlZ29yaWVzXT1cImFsbFJpc2tDYXRlZ29yaWVzXCJcclxuICAgICAgICBbY2F0ZWdvcnlJZEtleV09XCInY2F0ZWdvcnlfaWQnXCJcclxuICAgICAgICBbc2VsZWN0ZWRDYXRlZ29yaWVzXT1cImRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllc1wiXHJcbiAgICAgICAgKHNhdmVTZWxlY3RlZENhdGVnb3J5KT1cInNhdmVTZWxlY3RlZExpc3QoJ3Jpc2tDYXRlZ29yeScsICRldmVudClcIlxyXG4gICAgICAgIChjbG9zZUNhdGVnb3JpZXNMaXN0KT1cImFjdGl2YXRlU2VsZWN0b3IoJycsIGZhbHNlKVwiXHJcbiAgICAgID48L2FwcC1yaXNrLWNhdGVnb3JpZXM+XHJcblxyXG4gICAgICA8YXBwLWZyZXF1ZW5jeVxyXG4gICAgICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdmcmVxdWVuY3knXCJcclxuICAgICAgICAoY2xvc2VGcmVxdWVuY3lQb3B1cCk9XCJhY3RpdmF0ZVNlbGVjdG9yKCcnLCBmYWxzZSlcIlxyXG4gICAgICAgIChzYXZlRnJlcXVlbmN5KT1cInNhdmVGcmVxdWVuY3koJGV2ZW50KVwiXHJcbiAgICAgICAgW3NhdmVkRnJlcXVlbmN5VGFiXT1cImRhc2hib2FyZEZvcm0uc2VsZWN0ZWRGcmVxdWVuY3lUeXBlXCJcclxuICAgICAgICBbc2VsZWN0ZWREYXRlXT1cImRhc2hib2FyZEZvcm0uZnJlcXVlbmN5RGF0ZVwiXHJcbiAgICAgICAgW3NhdmVkRnJlcXVlbmNpZXNdPVwiZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEZyZXF1ZW5jaWVzXCJcclxuICAgICAgPlxyXG4gICAgICA8L2FwcC1mcmVxdWVuY3k+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJ2eC1kaWFsb2ctY29udGFpbmVyIHNpZGUtZGlhbG9nXCJcclxuICAgICAgW2NsYXNzLnRhYmxldC13aWR0aF09XCJhY3RpdmVTZWxlY3RvciAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnXCJcclxuICAgID5cclxuICAgICAgPGFwcC1sb2FkZXItaW5saW5lICpuZ0lmPVwidkxvYWRlclwiPjwvYXBwLWxvYWRlci1pbmxpbmU+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwidngtZGlhbG9nLWJvZHktY29udGFpbmVyXCJcclxuICAgICAgICAgIChzY3JvbGwpPVwiYW5pbWF0ZUltYWdlKClcIlxyXG4gICAgICAgICAgW2NsYXNzLmhpZGRlbi1zY3JvbGxdPVwicG9wb3ZlclNlcnZpY2Uuc3RvcFNjcm9sbFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPCEtLSBEYXNoYm9hcmQgTmFtZSAtLT5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJhY3RpdmVTZWxlY3RvciAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlXCI+XHJcbiAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3doYXQuc3ZnXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICFkYXNoYm9hcmRGb3JtLmRhc2hib2FyZE5hbWUgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICduYW1lJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGFsdD1cIlwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImRhc2hib2FyZEZvcm0uZGFzaGJvYXJkTmFtZSAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnXCJcclxuICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGNpcmNsZVxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcclxuICAgICAgICAgICAgICAgICAgY3g9XCIyNlwiXHJcbiAgICAgICAgICAgICAgICAgIGN5PVwiMjZcIlxyXG4gICAgICAgICAgICAgICAgICByPVwiMjVcIlxyXG4gICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1cIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cCB2eC1kLWJsb2NrIHZ4LW1iLTRcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtZC1ibG9jayB2eC10dC11cHBlcmNhc2UgdngtbWItMiB2eC13LTEwMCB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgICAgPkRhc2hib2FyZCBOYW1lXHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZSB2eC10eHQtcmVkIHZ4LWZzLTE2IHZ4LWZ3LTQwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPio8L3NwYW5cclxuICAgICAgICAgICAgICAgICAgPjwvbGFiZWxcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1pbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHRGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJBZGQgZGFzaGJvYXJkIG5hbWUgKE1heCBsaW1pdDogMzAgY2hhcmFjdGVycykuXCJcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRhc2hib2FyZEZvcm0uZGFzaGJvYXJkTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwiYWN0aXZlU2VsZWN0b3IgPSAnbmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgIChmb2N1c2luKT1cImFjdGl2YXRlU2VsZWN0b3IoJ25hbWUnLCB0cnVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cImFjdGl2YXRlU2VsZWN0b3IoJ25hbWUnLCBmYWxzZSlcIlxyXG4gICAgICAgICAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGFzaGJvYXJkRm9ybT8uZGFzaGJvYXJkTmFtZT8ubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPnt7IDMwIC0gZGFzaGJvYXJkRm9ybS5kYXNoYm9hcmROYW1lLmxlbmd0aCB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8cFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LXR4dC1lcnJvclwiXHJcbiAgICAgICAgICAgICAgICAgIFthcHBTY3JvbGxJblZpZXddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3VibWl0dGVkICYmXHJcbiAgICAgICAgICAgICAgICAgICAgKGRhc2hib2FyZEZvcm0/LmRhc2hib2FyZE5hbWU/Lmxlbmd0aCA+IDMwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAhZGFzaGJvYXJkRm9ybT8uZGFzaGJvYXJkTmFtZSlcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRGb3JtLmRhc2hib2FyZE5hbWUubGVuZ3RoID4gMzBcclxuICAgICAgICAgICAgICAgICAgICAgID8gXCJZb3UgaGF2ZSBleGNlZWRlZCB0aGUgbWF4aW11bSBjaGFyYWN0ZXIgbGltaXQgb2YgMzAgY2hhcmFjdGVycy5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgOiBcIlBsZWFzZSBlbnRlciBhIG5hbWUgZm9yIHRoaXMgRGFzaGJvYXJkLlwiXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICA8L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWlucHV0LWdyb3VwIHZ4LW10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgPHZjb21wbHktZWRpdG9yXHJcbiAgICAgICAgICAgICAgICAgICAgW2VkaXRvckNvbmZpZ109XCJkYXNoYm9hcmREZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkYXNoYm9hcmRGb3JtLmRhc2hib2FyZERlc2NyaXB0aW9uVGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgID48L3Zjb21wbHktZWRpdG9yPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkYXNoYm9hcmRGb3JtPy5kYXNoYm9hcmREZXNjcmlwdGlvblRleHQ/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgID57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgMjUwIC1cclxuICAgICAgICAgICAgICAgICAgICAgICAgKGRhc2hib2FyZEZvcm0/LmRhc2hib2FyZERlc2NyaXB0aW9uVGV4dCB8IHRleHRDb3VudClcclxuICAgICAgICAgICAgICAgICAgICB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8cFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LXR4dC1lcnJvclwiXHJcbiAgICAgICAgICAgICAgICAgIFthcHBTY3JvbGxJblZpZXddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3VibWl0dGVkICYmXHJcbiAgICAgICAgICAgICAgICAgICAgKGRhc2hib2FyZEZvcm0/LmRhc2hib2FyZERlc2NyaXB0aW9uVGV4dCB8IHRleHRDb3VudCkgPiAyNTBcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgWW91IGhhdmUgZXhjZWVkZWQgdGhlIG1heGltdW0gY2hhcmFjdGVyIGxpbWl0IG9mIDI1MFxyXG4gICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzLlxyXG4gICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gV2hvIC0tPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3dob0NhblZpZXcnXCJcclxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICd3aG9DYW5WaWV3JyAmJlxyXG4gICAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlXCI+XHJcbiAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3doby5zdmdcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRWaWV3ZXJzPy5sZW5ndGggPT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ3dob0NhblZpZXcnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkVmlld2Vycz8ubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3dob0NhblZpZXcnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8Y2lyY2xlXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxyXG4gICAgICAgICAgICAgICAgICBjeD1cIjI2XCJcclxuICAgICAgICAgICAgICAgICAgY3k9XCIyNlwiXHJcbiAgICAgICAgICAgICAgICAgIHI9XCIyNVwiXHJcbiAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwIHZ4LWQtYmxvY2sgdngtbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC1kLWJsb2NrIHZ4LXR0LXVwcGVyY2FzZSB2eC1tYi0yIHZ4LXctMTAwIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgICAgICA+V2hvIGNhbiB2aWV3IHRoaXMgZGFzaGJvYXJkPzxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZXF1aXJlIHZ4LXR4dC1yZWQgdngtZnMtMTYgdngtZnctNDAwXCJcclxuICAgICAgICAgICAgICAgICAgICA+Kjwvc3BhblxyXG4gICAgICAgICAgICAgICAgICA+PC9sYWJlbFxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImRhc2hib2FyZEZvcm0/LnNlbGVjdGVkVmlld2Vycz8ubGVuZ3RoID09IDBcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveEVuYWJsZSB2eC1wbC0zIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCd3aG9DYW5WaWV3JywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hQbGFjZWhvZGVyIHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBXaG8gY2FuIHZpZXcgdGhpcyBkYXNoYm9hcmQ/XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImRhc2hib2FyZEZvcm0/LnNlbGVjdGVkVmlld2Vycz8ubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94U3VjY2VzcyB2eC1wbC0yIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWdyb3Vwc0VuYWJsZWRcIiBpZD1cIm9ubHl1c2Vyc2xpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1c2VyIG9mIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkVmlld2Vycz8uc2xpY2UoMCwgMSlcclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFsaXN0RGV0YWlscy5ub25SZW1vdmFibGVVc2Vyc0xpc3QuaW5jbHVkZXMoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLm1lbWJlcl9pZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnd2hvQ2FuVmlldycsIHVzZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthclRvb2x0aXBdPVwidXNlci5tZW1iZXJfbmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+e3sgdXNlci5tZW1iZXJfbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkVmlld2Vycz8ubGVuZ3RoID4gMSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFncm91cHNFbmFibGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gZ3JlZW5CZyB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidXNlckxpc3QucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICt7eyBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFZpZXdlcnM/LnNsaWNlKDEpLmxlbmd0aCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1wb3BvdmVyICN1c2VyTGlzdCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdXNlciBvZiBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFZpZXdlcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJUb29sdGlwXT1cInVzZXI/Lm1lbWJlcl9uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzLWljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWxpc3REZXRhaWxzLm5vblJlbW92YWJsZVVzZXJzTGlzdC5pbmNsdWRlcyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLm1lbWJlcl9pZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApICYmICFncm91cHNFbmFibGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnd2hvQ2FuVmlldycsIHVzZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB1c2VyPy5tZW1iZXJfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ3JvdXBzRW5hYmxlZFwiIGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+VVNFUihTKTwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIGdyZWVuQmcgdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInVzZXJDb3VudC5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRWaWV3ZXJzPy5sZW5ndGggfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkR3JvdXA/Lmxlbmd0aCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFZpZXdlcnM/Lmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgID4mPC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRHcm91cD8ubGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwidXNlcnNhbmRncm91cHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5VU0VSIEdST1VQKFMpPC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdyb3VwQ291bnQucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZEdyb3VwPy5sZW5ndGggfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3VzZXJDb3VudCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkVmlld2Vyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FyVG9vbHRpcF09XCJkYXRhLm1lbWJlcl9uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzLWljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWxpc3REZXRhaWxzLm5vblJlbW92YWJsZVVzZXJzTGlzdC5pbmNsdWRlcyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLm1lbWJlcl9pZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnd2hvQ2FuVmlldycsIGRhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhLm1lbWJlcl9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI2dyb3VwQ291bnQgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBkYXRhIG9mIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkR3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthclRvb2x0aXBdPVwiZGF0YS5ncm91cF9uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzLWljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnd2hvQ2FuVmlld0dyb3VwJywgZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRhdGEuZ3JvdXBfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ3dob0NhblZpZXcnXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImVkaXRCdG4gdngtZnMtMTEgdngtZnctNjAwIHZ4LXR4dC1ibHVlIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCd3aG9DYW5WaWV3JywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1tci0xXCI+JiN4ZTkwYzs8L2k+IEVESVRcclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIFJlc3BvbnNpYmlsaXR5IENlbnRlciAtLT5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXHJcbiAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyY0xpc3QnXCJcclxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxyXG4gICAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXHJcbiAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyY0xpc3QnICYmXHJcbiAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICduYW1lJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2VcIj5cclxuICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycz8ubGVuZ3RoID09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdyY0xpc3QnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3Jlc3BvbnNpYmlsaXR5LWNlbnRlci5zdmdcIlxyXG4gICAgICAgICAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzPy5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmNMaXN0J1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGNpcmNsZVxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcclxuICAgICAgICAgICAgICAgICAgY3g9XCIyNlwiXHJcbiAgICAgICAgICAgICAgICAgIGN5PVwiMjZcIlxyXG4gICAgICAgICAgICAgICAgICByPVwiMjVcIlxyXG4gICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1cIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cCB2eC1kLWJsb2NrIHZ4LW1iLTRcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtZC1ibG9jayB2eC10dC11cHBlcmNhc2UgdngtbWItMiB2eC13LTEwMCB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgICAgPlJFU1BPTlNJQklMSVRZIENFTlRFUihTKTwvbGFiZWxcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycz8ubGVuZ3RoID09IDBcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hFbmFibGUgdngtcGwtMyB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmNMaXN0JywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuZXJyb3JdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3VibWl0dGVkICYmXHJcbiAgICAgICAgICAgICAgICAgICAgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnM/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICAgICAgICAgICAgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXM/Lmxlbmd0aCA9PVxyXG4gICAgICAgICAgICAgICAgICAgICAgMCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmlza0NhdGVnb3JpZXM/Lmxlbmd0aCA9PSAwXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFBsYWNlaG9kZXIgdngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dCB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIFNlbGVjdCB0aGUgUmVzcG9uc2liaWxpdHkgQ2VudGVyKHMpIHRoYXQgeW91IHdvdWxkIGxpa2U8YnIgLz5kaXNwbGF5ZWRcclxuICAgICAgICAgICAgICAgICAgICBpbiB0aGUgRGFzaGJvYXJkLCBpZiBhbnkuXHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzPy5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94U3VjY2VzcyB2eC1wbC0yIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCByYyBvZiBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycz8uc2xpY2UoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDFcclxuICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ3JjJywgcmMpXCJcclxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2FyVG9vbHRpcF09XCJyYy5pdGVtX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+e3sgcmMuaXRlbV9uYW1lIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzPy5sZW5ndGggPiAxXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyY0xpc3QucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICt7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycz8uc2xpY2UoMSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAubGVuZ3RoXHJcbiAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3JjTGlzdCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmMgb2YgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJUb29sdGlwXT1cInJjPy5pdGVtX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MtaWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdyYycsIHJjKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcmM/Lml0ZW1fbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ3JjTGlzdCdcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZWRpdEJ0biB2eC1mcy0xMSB2eC1mdy02MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3JjTGlzdCcsIHRydWUpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtbXItMVwiPiYjeGU5MGM7PC9pPiBFRElUXHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSBQcm9ncmFtIC0tPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3Jlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcydcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Jlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcycgJiZcclxuICAgICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZVwiPlxyXG4gICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzPy5sZW5ndGggPT1cclxuICAgICAgICAgICAgICAgICAgICAwIHx8IGFjdGl2ZVNlbGVjdG9yID09PSAncmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9jYXRlZ29yeS5zdmdcIlxyXG4gICAgICAgICAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzPy5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGNpcmNsZVxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcclxuICAgICAgICAgICAgICAgICAgY3g9XCIyNlwiXHJcbiAgICAgICAgICAgICAgICAgIGN5PVwiMjZcIlxyXG4gICAgICAgICAgICAgICAgICByPVwiMjVcIlxyXG4gICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1cIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cCB2eC1kLWJsb2NrIHZ4LW1iLTRcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtZC1ibG9jayB2eC10dC11cHBlcmNhc2UgdngtbWItMiB2eC13LTEwMCB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgICAgPlBST0dSQU08L2xhYmVsXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXM/Lmxlbmd0aCA9PSAwXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94RW5hYmxlIHZ4LXBsLTMgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Jlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcycsIHRydWUpXCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmVycm9yXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHN1Ym1pdHRlZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzPy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzPy5sZW5ndGggPT1cclxuICAgICAgICAgICAgICAgICAgICAgIDAgJiZcclxuICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzPy5sZW5ndGggPT0gMFxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hQbGFjZWhvZGVyIHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBTZWxlY3QgdGhlIFByb2dyYW0ocykgdGhhdCB5b3Ugd291bGQgbGlrZSBkaXNwbGF5ZWQgaW5cclxuICAgICAgICAgICAgICAgICAgICB0aGU8YnIgLz5EYXNoYm9hcmQsIGlmIGFueS5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXM/Lmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hTdWNjZXNzIHZ4LXBsLTIgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHJDYXRlZ29yeSBvZiBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcz8uc2xpY2UoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDFcclxuICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ3Jlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcycsIHJDYXRlZ29yeSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJUb29sdGlwXT1cInJDYXRlZ29yeS5pdGVtX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+e3sgckNhdGVnb3J5Lml0ZW1fbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8ubGVuZ3RoID4gMVxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwickNhdGVnb3J5TGlzdC5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgK3t7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzPy5zbGljZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAxXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICkubGVuZ3RoXHJcbiAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3JDYXRlZ29yeUxpc3QgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJDYXRlZ29yeSBvZiBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthclRvb2x0aXBdPVwickNhdGVnb3J5Py5pdGVtX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MtaWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByQ2F0ZWdvcnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByQ2F0ZWdvcnk/Lml0ZW1fbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ3Jlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcydcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZWRpdEJ0biB2eC1mcy0xMSB2eC1mdy02MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Jlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcycsIHRydWUpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtbXItMVwiPiYjeGU5MGM7PC9pPiBFRElUXHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSBSaXNrIENhdGVnb3J5IC0tPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3Jpc2tDYXRlZ29yaWVzJ1wiXHJcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd1Jpc2tDYXRlZ29yeSAmJiBpc01hbmFnZVJpc2tcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Jpc2tDYXRlZ29yaWVzJyAmJlxyXG4gICAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlXCI+XHJcbiAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcz8ubGVuZ3RoID09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdyaXNrQ2F0ZWdvcmllcydcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvY2F0ZWdvcnkuc3ZnXCJcclxuICAgICAgICAgICAgICAgIGFsdD1cIlwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzPy5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmlza0NhdGVnb3JpZXMnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8Y2lyY2xlXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxyXG4gICAgICAgICAgICAgICAgICBjeD1cIjI2XCJcclxuICAgICAgICAgICAgICAgICAgY3k9XCIyNlwiXHJcbiAgICAgICAgICAgICAgICAgIHI9XCIyNVwiXHJcbiAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybVwiICpuZ0lmPVwiaXNNYW5hZ2VSaXNrXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXAgdngtZC1ibG9jayB2eC1tYi00XCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LWQtYmxvY2sgdngtdHQtdXBwZXJjYXNlIHZ4LW1iLTIgdngtdy0xMDAgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgICAgID5SSVNLIENBVEVHT1JJRVM8L2xhYmVsXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcz8ubGVuZ3RoID09IDBcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveEVuYWJsZSB2eC1wbC0zIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyaXNrQ2F0ZWdvcmllcycsIHRydWUpXCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmVycm9yXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHN1Ym1pdHRlZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzPy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzPy5sZW5ndGggPT1cclxuICAgICAgICAgICAgICAgICAgICAgIDAgJiZcclxuICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzPy5sZW5ndGggPT0gMFxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hQbGFjZWhvZGVyIHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBTZWxlY3QgdGhlIFJpc2sgQ2F0ZWdvcmllcyB0aGF0IHlvdSB3b3VsZCBsaWtlIGRpc3BsYXllZDxiciAvPmluXHJcbiAgICAgICAgICAgICAgICAgICAgdGhlIERhc2hib2FyZCwgaWYgYW55LlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzPy5sZW5ndGggPiAwXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hTdWNjZXNzIHZ4LXBsLTIgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlblwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHJpc2tDYXRlZ29yeSBvZiBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzPy5zbGljZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgMVxyXG4gICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgncmlza0NhdGVnb3J5Jywgcmlza0NhdGVnb3J5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFthclRvb2x0aXBdPVwicmlza0NhdGVnb3J5LmNhdGVnb3J5X25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+e3sgcmlza0NhdGVnb3J5LmNhdGVnb3J5X25hbWUgfX08L3NwYW5cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzPy5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmlza0xpc3QucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICt7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzPy5zbGljZSgxKS5sZW5ndGhcclxuICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjcmlza0xpc3QgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJpc2tDYXRlZ29yeSBvZiBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FyVG9vbHRpcF09XCJyaXNrQ2F0ZWdvcnk/LmNhdGVnb3J5X25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MtaWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdyaXNrQ2F0ZWdvcnknLCByaXNrQ2F0ZWdvcnkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByaXNrQ2F0ZWdvcnk/LmNhdGVnb3J5X25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdyaXNrQ2F0ZWdvcmllcydcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZWRpdEJ0biB2eC1mcy0xMSB2eC1mdy02MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Jpc2tDYXRlZ29yaWVzJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1tci0xXCI+JiN4ZTkwYzs8L2k+IEVESVRcclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIERpc3BsYXkgQ3JpdGVyaWEgLS0+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiYWN0aXZlU2VsZWN0b3IgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICduYW1lJ1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZVwiPlxyXG4gICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZGFzaGJvYXJkRm9ybT8uZGlzcGxheUNyaXRlcmlhPy5sZW5ndGggPT0gMFwiXHJcbiAgICAgICAgICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvd2hvLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJkYXNoYm9hcmRGb3JtPy5kaXNwbGF5Q3JpdGVyaWE/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8Y2lyY2xlXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxyXG4gICAgICAgICAgICAgICAgICBjeD1cIjI2XCJcclxuICAgICAgICAgICAgICAgICAgY3k9XCIyNlwiXHJcbiAgICAgICAgICAgICAgICAgIHI9XCIyNVwiXHJcbiAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwIHZ4LWQtYmxvY2sgdngtbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC1kLWJsb2NrIHZ4LXR0LXVwcGVyY2FzZSB2eC1tYi0yIHZ4LXctMTAwIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgICAgICA+RElTUExBWSBDUklURVJJQTwvbGFiZWxcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYWRpby1ncm91cFwiICpuZ0lmPVwic2hvd0NyaXRlcmlhXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxhcHAtY3MtcmFkaW9cclxuICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJkYXNoYm9hcmRGb3JtLmRpc3BsYXlDcml0ZXJpYSA9PSAnb3InXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cImRhc2hib2FyZEZvcm0uZGlzcGxheUNyaXRlcmlhID0gJ29yJ1wiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICBUaG9zZSBJdGVtcyB0aGF0IGhhdmUgYmVlbiBhc3NpZ25lZCB0byBlaXRoZXIgdGhlIHNlbGVjdGVkXHJcbiAgICAgICAgICAgICAgICAgICAgUmVzcG9uc2liaWxpdHkgQ2VudGVyKHMpIG9yIHRoZSBzZWxlY3RlZFxyXG4gICAgICAgICAgICAgICAgICAgIENhdGVnb3JpZXMuPC9hcHAtY3MtcmFkaW9cclxuICAgICAgICAgICAgICAgICAgPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGFwcC1jcy1yYWRpb1xyXG4gICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImRhc2hib2FyZEZvcm0uZGlzcGxheUNyaXRlcmlhID09ICdhbmQnXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cImRhc2hib2FyZEZvcm0uZGlzcGxheUNyaXRlcmlhID0gJ2FuZCdcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgVGhvc2UgSXRlbXMgdGhhdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gYm90aCB0aGUgc2VsZWN0ZWRcclxuICAgICAgICAgICAgICAgICAgICBSZXNwb25zaWJpbGl0eSBDZW50ZXIocykgYW5kIHRoZSBzZWxlY3RlZFxyXG4gICAgICAgICAgICAgICAgICAgIENhdGVnb3JpZXMuPC9hcHAtY3MtcmFkaW9cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSBUaW1lZnJhbWUgLS0+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiYWN0aXZlU2VsZWN0b3IgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICduYW1lJ1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZVwiPlxyXG4gICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICFkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZEZyb21EYXRlIHx8XHJcbiAgICAgICAgICAgICAgICAgICFkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFRvRGF0ZVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIHNyYz1cImh0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy93aGVuLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRGcm9tRGF0ZSAmJlxyXG4gICAgICAgICAgICAgICAgICBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFRvRGF0ZVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGNpcmNsZVxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCJcclxuICAgICAgICAgICAgICAgICAgY3g9XCIyNlwiXHJcbiAgICAgICAgICAgICAgICAgIGN5PVwiMjZcIlxyXG4gICAgICAgICAgICAgICAgICByPVwiMjVcIlxyXG4gICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcclxuICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1cIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cCB2eC1kLWJsb2NrIHZ4LW1iLTRcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtZC1ibG9jayB2eC10dC11cHBlcmNhc2UgdngtbWItMiB2eC13LTEwMCB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgICAgPlRJTUVGUkFNRTwvbGFiZWxcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWwtc3ViLWxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgPlNlbGVjdCBob3cgbG9uZyB5b3Ugd291bGQgbGlrZSB0aGUgaW5mb3JtYXRpb24gc2VsZWN0ZWQgdG8gYmVcclxuICAgICAgICAgICAgICAgICAgZGlzcGxheWVkIGZvci4gSWYgbm8gdGltZWZyYW1lIGlzIHNlbGVjdGVkLCB0aGUgaW5mb3JtYXRpb25cclxuICAgICAgICAgICAgICAgICAgd2lsbCBiZSBkaXNwbGF5ZWQgcGVybWFuZW50bHkuPC9sYWJlbFxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHZ4LWQtZmxleCB2eC1qdXN0aWZ5LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtc2VsZWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MmQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJmcm9tX2RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZEZyb21EYXRlIHwgZGF0ZSA6ICdkZCBNTU0geXl5eSdcclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0Zyb20nXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuRnJvbURhdGVQaWNrZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRwLWRhdGUtcGlja2VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAjZnJvbURhdGVQaWNrZXJcclxuICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEZyb21EYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IERhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKG9uU2VsZWN0KT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbG9zZUZyb21EYXRlUGlja2VyKCk7IGRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY29uZmlnXT1cImZyb21EYXRlUGlja2VyQ29uZmlnXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9kcC1kYXRlLXBpY2tlcj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm92ZXJsYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlRnJvbURhdGVQaWNrZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRhdGVQaWNrZXJPdmVybGF5XCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRlLXNlbGVjdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaGlkZVRvRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZEZyb21EYXRlXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTJkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwidG9fZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkVG9EYXRlIHwgZGF0ZSA6ICdkZCBNTU0geXl5eSdcclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1RvJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlblRvRGF0ZVBpY2tlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8ZHAtZGF0ZS1waWNrZXJcclxuICAgICAgICAgICAgICAgICAgICAgICN0b0RhdGVQaWNrZXJcclxuICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFRvRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBEYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChvblNlbGVjdCk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VUb0RhdGVQaWNrZXIoKTsgZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjb25maWddPVwidG9EYXRlUGlja2VyQ29uZmlnXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9kcC1kYXRlLXBpY2tlcj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm92ZXJsYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlVG9EYXRlUGlja2VyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkYXRlUGlja2VyT3ZlcmxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPHBcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC10eHQtZXJyb3JcIlxyXG4gICAgICAgICAgICAgICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHN1Ym1pdHRlZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0uc2VsZWN0ZWRGcm9tRGF0ZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICFkYXNoYm9hcmRGb3JtLnNlbGVjdGVkVG9EYXRlXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIFNlbGVjdCBhIHRpbWUtZnJhbWUuXHJcbiAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSBFbWFpbCBTdW1tYXJ5IC0tPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcclxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2ZyZXF1ZW5jeSdcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcclxuICAgICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2ZyZXF1ZW5jeScgJiZcclxuICAgICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZVwiPlxyXG4gICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWRhc2hib2FyZEZvcm0uZnJlcXVlbmN5TWVzc2FnZVwiXHJcbiAgICAgICAgICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvc2VuZC1yZXNvbHV0aW9uLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJkYXNoYm9hcmRGb3JtLmZyZXF1ZW5jeU1lc3NhZ2VcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8Y2lyY2xlXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIlxyXG4gICAgICAgICAgICAgICAgICBjeD1cIjI2XCJcclxuICAgICAgICAgICAgICAgICAgY3k9XCIyNlwiXHJcbiAgICAgICAgICAgICAgICAgIHI9XCIyNVwiXHJcbiAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxyXG4gICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwIHZ4LWQtYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtZC1ibG9jayB2eC10dC11cHBlcmNhc2UgdngtbWItMiB2eC13LTEwMCB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgICAgPkVtYWlsIFN1bW1hcmllczwvbGFiZWxcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWwtc3ViLWxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgPklmIHlvdSB3b3VsZCBsaWtlIHRvIHNlbmQgYSBzdW1tYXJ5IG9mIHRoaXMgRGFzaGJvYXJkLCBwbGVhc2VcclxuICAgICAgICAgICAgICAgICAgc2VsZWN0IGEgZnJlcXVlbmN5KEJ5IGRlZmF1bHQgVkNvbXBseSBzZW5kcyBhIHdlZWtseVxyXG4gICAgICAgICAgICAgICAgICBTdW1tYXJ5KS48L2xhYmVsXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWRhc2hib2FyZEZvcm0uZnJlcXVlbmN5TWVzc2FnZVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94RW5hYmxlIHZ4LXBsLTMgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2ZyZXF1ZW5jeScsIHRydWUpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94UGxhY2Vob2RlciB2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgRW1haWwgU3VtbWFyaWVzXHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImRhc2hib2FyZEZvcm0uZnJlcXVlbmN5TWVzc2FnZVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94U3VjY2VzcyB2eC1wbC0yIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hUZXh0IHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthclRvb2x0aXBdPVwiZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lNZXNzYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImRhc2hib2FyZEZvcm0uZnJlcXVlbmN5TWVzc2FnZVwiXHJcbiAgICAgICAgICAgICAgICAgID48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lNZXNzYWdlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2ZyZXF1ZW5jeSdcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZWRpdEJ0biB2eC1mcy0xMSB2eC1mdy02MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2ZyZXF1ZW5jeScsIHRydWUpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtbXItMVwiPiYjeGU5MGM7PC9pPiBFRElUXHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1ibG9ja1wiPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cInZ4LWJ0biBibG9jayBwcmltYXJ5XCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFjdGl2ZVNlbGVjdG9yICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY29uZmlndXJlRGFzaGJvYXJkKClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICBOZXh0OiBDb25maWd1cmUgV2lkZ2V0c1xyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwiY2xvc2UtZGlhbG9nXCJcclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiYWN0aXZlU2VsZWN0b3IgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICduYW1lJ1wiXHJcbiAgICAgICAgKGNsaWNrKT1cImNsb3NlLmVtaXQoeyBtb2RlOiAnZGlzY2FyZCcgfSlcIlxyXG4gICAgICAgIFthclRvb2x0aXBdPVwiJ1tFc2NdIHRvIGNsb3NlJ1wiXHJcbiAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXHJcbiAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgIFtjbGFzcy5oaWRlXT1cImFjdGl2ZVNlbGVjdG9yICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5M2Y7PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZ2xvYmFsLWNvbmZpcm1hdGlvbi1hbGVydFwiXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHN1Ym1pdHRlZCAmJlxyXG4gICAgICAgICAgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnM/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcz8ubGVuZ3RoID09IDAgJiZcclxuICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmlza0NhdGVnb3JpZXM/Lmxlbmd0aCA9PSAwXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJnbG9iYWwtY29uZmlybWF0aW9uLWFsZXJ0LXRvcFwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLWJsb2NrXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTMwOzwvaT5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDxwIGNsYXNzPVwidGV4dFwiICpuZ0lmPVwic2hvd1Jpc2tDYXRlZ29yeVwiPlxyXG4gICAgICAgICAgICBTZWxlY3QgYSBSZXNwb25zaWJpbGl0eSBDZW50ZXIsIFByb2dyYW0gb3IgUmlzayBDYXRlZ29yeS5cclxuICAgICAgICAgIDwvcD5cclxuICAgICAgICAgIDxwIGNsYXNzPVwidGV4dFwiICpuZ0lmPVwiIXNob3dSaXNrQ2F0ZWdvcnlcIj5cclxuICAgICAgICAgICAgU2VsZWN0IGEgUmVzcG9uc2liaWxpdHkgQ2VudGVyIG9yIFByb2dyYW0uXHJcbiAgICAgICAgICA8L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImdsb2JhbC1jb25maXJtYXRpb24tYWxlcnQtYm90dG9tXCI+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cIm1lc3NhZ2VcIj48L3A+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWdyb3VwXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJmaWxsXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzdWJtaXR0ZWQgPSBmYWxzZVwiPlxyXG4gICAgICAgICAgICAgIE9LQVlcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48YXBwLXNtaWxleS1kaWFsb2dcclxuICAqbmdJZj1cImlzU21pbGV5XCJcclxuICBbbWVzc2FnZV09XCJzbWlsZXlNZXNzYWdlXCJcclxuPjwvYXBwLXNtaWxleS1kaWFsb2c+XHJcblxyXG48YXBwLWNvbmZpZ3VyZS13aWRnZXRzXHJcbiAgKm5nSWY9XCJvcGVuQ29uZmlndXJlV2lkZ2V0c1wiXHJcbiAgW21vZGVdPVwibW9kZVwiXHJcbiAgW2Rpc3BsYXllZFdpZGdldHNdPVwiZGlzcGxheWVkV2lkZ2V0c1wiXHJcbiAgW3Nob3dSaXNrXT1cInNob3dSaXNrV2lkZ2V0c1wiXHJcbiAgW3Nob3dDb21wbGlhbmNlXT1cInNob3dDb21wbGlhbmNlV2lkZ2V0c1wiXHJcbiAgW3NlbGVjdGVkV2lkZ2V0c0RhdGFdPVwic2VsZWN0ZWRXaWRnZXRzXCJcclxuICAod2lkZ2V0c0RhdGFNb2RpZmllZCk9XCJzZXRTZWxlY3RlZFdpZGdldHMoJGV2ZW50KVwiXHJcbiAgKGNsb3NlQ29uZmlndXJlV2lkZ2V0cyk9XCJjbG9zZUNvbmZpZ3VyZVdpZGdldHMoJGV2ZW50KVwiXHJcbj48L2FwcC1jb25maWd1cmUtd2lkZ2V0cz5cclxuIl19