tango-app-ui-analyse-trax 3.6.2-bulktask-10 → 3.6.2-bulktask-13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (21) hide show
  1. package/esm2022/lib/components/activity-log-v2/activity-log-v2.component.mjs +116 -96
  2. package/esm2022/lib/components/add-checklist/add-checklist.component.mjs +20 -17
  3. package/esm2022/lib/components/add-multitask/add-multitask.component.mjs +7 -3
  4. package/esm2022/lib/components/add-multitask/bulkcreationmodel/bulkcreationmodel.component.mjs +3 -3
  5. package/esm2022/lib/components/flags/flags.component.mjs +3 -3
  6. package/esm2022/lib/components/flags-info/flags-info.component.mjs +30 -30
  7. package/esm2022/lib/components/flags-new/flags-new.component.mjs +24 -15
  8. package/esm2022/lib/components/flags-new/flags-new.interface.mjs +1 -1
  9. package/esm2022/lib/components/gallery/gallery.component.mjs +5 -4
  10. package/esm2022/lib/components/manage-task/manage-task.component.mjs +3 -3
  11. package/fesm2022/{tango-app-ui-analyse-trax-eye-test-audit.module-xWCF4GYV.mjs → tango-app-ui-analyse-trax-eye-test-audit.module-VtfBAXzU.mjs} +2 -2
  12. package/fesm2022/{tango-app-ui-analyse-trax-eye-test-audit.module-xWCF4GYV.mjs.map → tango-app-ui-analyse-trax-eye-test-audit.module-VtfBAXzU.mjs.map} +1 -1
  13. package/fesm2022/{tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-BthftGbi.mjs → tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-DWDpA3zS.mjs} +204 -167
  14. package/fesm2022/tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-DWDpA3zS.mjs.map +1 -0
  15. package/fesm2022/tango-app-ui-analyse-trax.mjs +1 -1
  16. package/lib/components/add-multitask/add-multitask.component.d.ts +1 -0
  17. package/lib/components/flags-info/flags-info.component.d.ts +1 -1
  18. package/lib/components/flags-new/flags-new.component.d.ts +1 -1
  19. package/lib/components/flags-new/flags-new.interface.d.ts +7 -0
  20. package/package.json +1 -1
  21. package/fesm2022/tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-BthftGbi.mjs.map +0 -1
@@ -95,7 +95,6 @@ export class FlagsNewComponent {
95
95
  this.checklistCountByType();
96
96
  this.getChecklistFlagMetrics();
97
97
  this.getChecklistFlagMetricsComparison();
98
- this.getFlagsTable();
99
98
  }
100
99
  });
101
100
  this.setPageData();
@@ -113,6 +112,7 @@ export class FlagsNewComponent {
113
112
  ]);
114
113
  }
115
114
  getChecklistFlagMetrics() {
115
+ this.flagsTableData = [];
116
116
  this.cardMetricsApiState.next('loading');
117
117
  const data = {
118
118
  "clientId": this.headerData?.client,
@@ -126,6 +126,7 @@ export class FlagsNewComponent {
126
126
  this.cardMetricsApiState.next('loaded');
127
127
  if (res?.data) {
128
128
  this.cardMetricsData = res.data;
129
+ this.getFlagsTable();
129
130
  }
130
131
  else {
131
132
  this.cardMetricsData = null;
@@ -163,19 +164,24 @@ export class FlagsNewComponent {
163
164
  });
164
165
  }
165
166
  getFlagsTable() {
167
+ this.flagsTableData = [];
168
+ this.totalItems = 0;
166
169
  this.flagsTableApiState.next('loading');
167
170
  const data = {
168
- "clientId": this.headerData?.client,
169
- "storeId": this.headerData?.stores.map((val) => val.storeId),
170
- "userEmailes": this.userEmailes,
171
- "fromDate": this.headerData?.date.startDate,
172
- "toDate": this.headerData?.date.endDate,
173
- "limit": this.pageSize,
174
- "offset": this.currentPage > 0 ? this.currentPage - 1 : 0,
175
- "sortColumnName": this.sortColumName,
176
- "sortBy": this.sortDirection,
177
- "searchValue": this.searchInput.value,
178
- "filter": this.selectedFlag
171
+ clientId: this.headerData?.client,
172
+ storeId: this.headerData?.stores.map((val) => val.storeId),
173
+ userEmailes: this.userEmailes,
174
+ fromDate: this.headerData?.date.startDate,
175
+ toDate: this.headerData?.date.endDate,
176
+ limit: this.pageSize,
177
+ offset: this.currentPage > 0 ? this.currentPage - 1 : 0,
178
+ sortColumnName: this.sortColumName,
179
+ sortBy: this.sortDirection,
180
+ searchValue: this.searchInput.value,
181
+ filter: this.selectedFlag,
182
+ ...(this.selectedFlag === "runAI" && {
183
+ runAIChecklistName: this.cardMetricsData?.flagCards.runAIFlag.list.map((ele) => ele?.checkListName),
184
+ }),
179
185
  };
180
186
  this.traxService.flagsTableV2(data).pipe(takeUntil(this.destroy$)).subscribe({
181
187
  next: (res) => {
@@ -249,6 +255,9 @@ export class FlagsNewComponent {
249
255
  return;
250
256
  }
251
257
  let route = `/manage/trax/flags/flagsinfo?id=${checklistId}`;
258
+ if (this.selectedFlag == 'runAI') {
259
+ route = route + `&type=runAI`;
260
+ }
252
261
  if (type) {
253
262
  route = route + `&type=${type}`;
254
263
  }
@@ -296,10 +305,10 @@ export class FlagsNewComponent {
296
305
  });
297
306
  }
298
307
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlagsNewComponent, deps: [{ token: i1.GlobalStateService }, { token: i0.ChangeDetectorRef }, { token: i2.TraxService }, { token: i3.Router }, { token: i1.PageInfoService }], target: i0.ɵɵFactoryTarget.Component });
299
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FlagsNewComponent, selector: "lib-flags-new", ngImport: i0, template: "<div class=\"col-md-12\">\r\n <div class=\"row\">\r\n <!--allCards -->\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'allCards'\">\r\n <div class=\"w-95\">\r\n <div class=\"pt-2 h-100\">\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"w-25 cursor-pointer pe-3\" (click)=\"selectTabs('all')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='all' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='all' ? 'active-header' : 'inactive-header'\">\r\n Total Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.totalFlag === 0 ||\r\n cardMetricsData?.flagCards?.totalFlag) ?\r\n cardMetricsData?.flagCards?.totalFlag?.toLocaleString('en-IN') : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"w-25 cursor-pointer pe-3\" (click)=\"selectTabs('question')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='question' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='question' ? 'active-header' : 'inactive-header'\">\r\n Question Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount my-2 me-3\">{{(cardMetricsData?.flagCards?.questionFlag?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.questionFlag?.count) ?\r\n cardMetricsData?.flagCards?.questionFlag?.count?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\"\r\n class=\"mt-2 me-1\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"w-25 cursor-pointer pe-3\" (click)=\"selectTabs('time')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='time' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='time' ? 'active-header' : 'inactive-header'\">\r\n Not Submitted\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.delayInSubmission?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.delayInSubmission?.count) ?\r\n cardMetricsData?.flagCards?.delayInSubmission?.count?.toLocaleString('en-IN')\r\n : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"w-25 cursor-pointer pe-3\" (click)=\"selectTabs('detection')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='detection' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='detection' ? 'active-header' : 'inactive-header'\">\r\n Detection Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.detectionFlag?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.detectionFlag?.count) ?\r\n cardMetricsData?.flagCards?.detectionFlag?.count?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!-- customChecklistCount > 1 & aiChecklistCount > 0 show 3 cards -->\r\n <!-- customCards -->\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'customCards'\">\r\n <div class=\"w-95\">\r\n <div class=\"pt-2 h-100\">\r\n <div class=\"d-flex justify-content-between mt-3\">\r\n <div class=\"col-4 cursor-pointer pe-3\" (click)=\"selectTabs('all')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='all' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='all' ? 'active-header' : 'inactive-header'\">\r\n Total Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.totalFlag === 0 ||\r\n cardMetricsData?.flagCards?.totalFlag) ?\r\n cardMetricsData?.flagCards?.totalFlag?.toLocaleString('en-IN') : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-4 cursor-pointer pe-3\" (click)=\"selectTabs('question')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='question' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='question' ? 'active-header' : 'inactive-header'\">\r\n Question Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount my-2 me-3\">{{(cardMetricsData?.flagCards?.questionFlag?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.questionFlag?.count) ?\r\n cardMetricsData?.flagCards?.questionFlag?.count?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\"\r\n class=\"mt-2 me-1\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-4 cursor-pointer pe-3\" (click)=\"selectTabs('time')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='time' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='time' ? 'active-header' : 'inactive-header'\">\r\n Not Submitted\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.delayInSubmission?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.delayInSubmission?.count) ?\r\n cardMetricsData?.flagCards?.delayInSubmission?.count?.toLocaleString('en-IN')\r\n : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'allCards' || cardMetricsDataByType?.showCards === 'customCards'\">\r\n <div class=\"w-5 d-flex align-items-center\">\r\n <div class=\"row\">\r\n <div class=\"col-6 mt-3\">\r\n <div class=\"d-flex flex-column text-center align-items-center justify-content-center me-5\">\r\n <div class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='daily' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('daily')\">1D</div>\r\n <div class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='weekly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('weekly')\">1W</div>\r\n <div *ngIf=\"traxMonthlyComparisonData\" class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='monthly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('monthly')\">1M</div>\r\n <!-- <div class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='monthly' ? 'text-primary' :''\" (click)=\"dateValue('monthly')\">1M</div> -->\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n </div>\r\n <!-- customChecklistCount > 0 & aiChecklistCount > 1 show single cards -->\r\n <!-- aiCards -->\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'aiCards'\">\r\n <div class=\"row \">\r\n <div class=\"col-12 mt-3 cursor-pointer pe-3\" (click)=\"selectTabs('detection')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='detection' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='detection' ? 'active-header' : 'inactive-header'\">\r\n Detection Flags\r\n </div>\r\n <div class=\"p-3 row\">\r\n <div class=\"mt-2 col-11\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.detectionFlag?.count === 0 ||\r\n cardMetricsData?.flagCards?.detectionFlag?.count) ?\r\n cardMetricsData?.flagCards?.detectionFlag?.count?.toLocaleString('en-IN') : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\" fill=\"none\">\r\n <path d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\r\n fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\"\r\n stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n <div class=\"col-1 mt-3\">\r\n <span class=\"mt-1 cursor-pointer fs-5 mx-2\"\r\n [ngClass]=\"dateComparisonType ==='daily' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('daily')\">1D</span>\r\n <span class=\"mt-1 cursor-pointer fs-5 me-2\"\r\n [ngClass]=\"dateComparisonType ==='weekly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('weekly')\">1W</span>\r\n <span *ngIf=\"traxMonthlyComparisonData\" class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='monthly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('monthly')\">1M</span>\r\n <!-- <div class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='monthly' ? 'text-primary' :''\" (click)=\"dateValue('monthly')\">1M</div> -->\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div class=\"row mt-3\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-4 px-4\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\"><span *ngIf=\"!['time','all'].includes(selectedFlag)\"\r\n class=\"me-3\">{{selectedFlag | titlecase}} Flags</span> <span\r\n *ngIf=\"['time','all'].includes(selectedFlag)\" class=\"me-3\">{{selectedFlag === 'all' ?\r\n 'Total Flags' : 'Not Sumbitted'}}</span> <span *ngIf=\"totalItems\"\r\n class=\"badge badge-light-primary \">{{totalItems}}\r\n total</span></span>\r\n <span class=\"text-sub mb-2\"> Based on {{ headerData?.date?.startDate | date: 'MMM d' }} - {{\r\n headerData?.date?.endDate | date: 'MMM d, y' }}\r\n </span>\r\n </h3>\r\n <div *ngIf=\"(flagsTableApiState | async) === 'loaded'\" class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon footfallsearch svg-icon-1 position-absolute ms-8\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input [formControl]=\"searchInput\" type=\"text\"\r\n class=\"form-control ps-14 ms-4 me-4 footfallsearch\" placeholder=\"Search\"\r\n autocomplete=\"off\" />\r\n <!-- <lib-reactive-select [formControl]=\"filterInput\" [idField]=\"'value'\"\r\n [nameField]=\"'label'\" [data]=\"filterValues\" class=\"w-100\">\r\n </lib-reactive-select> -->\r\n <button *ngIf=\"flagsTableData?.length\"\r\n [disabled]=\"(flagsTableApiState | async) === 'loading'\" type=\"button\"\r\n (click)=\"onFlagsTableExport()\" type=\"button\"\r\n class=\"btn-outline btn align-items-end text-nowrap invheader ms-4\">\r\n <!-- Export Icon -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </svg>\r\n <span class=\"ms-2\"></span> Export\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <ng-container *ngIf=\"(flagsTableApiState | async) === 'loaded'\">\r\n <div class=\"table-responsive px-4\">\r\n <table class=\"table text-nowrap bottom-border\">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('checkListName')\">Checklist Name\r\n <svg [ngClass]=\"sortColumName === 'checkListName' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'checkListName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('coverage')\">Coverage<svg\r\n [ngClass]=\"sortColumName === 'coverage' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'coverage' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('assignedStores')\">Assigned\r\n Stores<svg\r\n [ngClass]=\"sortColumName === 'assignedStores' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'assignedStores' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('flaggedStores')\">Flagged Stores\r\n <svg [ngClass]=\"sortColumName === 'flaggedStores' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flaggedStores' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th *ngIf=\"['all','question'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('customQuestionFlagCount')\">{{selectedFlag === 'question'\r\n ? 'Flags' : 'Question Flags'}}<svg\r\n [ngClass]=\"sortColumName === 'customQuestionFlagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'customQuestionFlagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th *ngIf=\"['all','time'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('customTimeFlagCount')\">{{selectedFlag === 'time' ?\r\n 'Flags' : 'Not Submitted Flags'}}<svg\r\n [ngClass]=\"sortColumName === 'customTimeFlagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'customTimeFlagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th *ngIf=\"['all','detection'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('flagCount')\">{{selectedFlag === 'detection' ? 'Detections' :\r\n 'Detection Flags'}}<svg\r\n [ngClass]=\"sortColumName === 'flagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <!-- <th style=\"width: 200px;\" class=\"cursor-pointer\" (click)=\"sortData('flagCount')\">Flagged<svg\r\n [ngClass]=\"sortColumName === 'flagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></th> -->\r\n <!-- <th *ngIf=\"selectedFlag === 'detection'\" class=\"cursor-pointer\" (click)=\"sortData('detectionCount')\">Detection Count<svg\r\n [ngClass]=\"sortColumName === 'detectionCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'detectionCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></th> -->\r\n <th class=\"cursor-pointer\" (click)=\"sortData('Compliance')\">Compliance %<svg\r\n [ngClass]=\"sortColumName === 'Compliance' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'Compliance' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <!-- *ngFor=\"let store of checklistPerformance\" -->\r\n <tr *ngFor=\"let data of flagsTableData\">\r\n <td>\r\n <div>\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n {{data?.checkListChar?.toUpperCase() || '--' }} </span>\r\n </div><span (click)=\"viewInDetail(data?.sourceCheckList_id)\"\r\n class=\"table-title-primary cursor-pointer\">{{data?.checkListName ?\r\n data?.checkListName : '--'}}</span> <span\r\n *ngIf=\"data?.checkListType !== 'custom'\" class=\"mx-2\">\u2728</span>\r\n </div>\r\n </td>\r\n \r\n <td class=\"table-title\">{{ data?.coverage ? data?.coverage : '--' }}</td>\r\n <td class=\"table-title\">{{ data.checkListType === 'custom' ?\r\n ((data?.assignedStores || data?.assignedStores === 0) ? data?.assignedStores\r\n : '--') : ((data?.assignedStoresAi || data?.assignedStoresAi === 0) ?\r\n data?.assignedStoresAi : '--')}}</td>\r\n <td class=\"table-title\">{{ (data?.flaggedStores || data?.flaggedStores === 0) ?\r\n data?.flaggedStores : '--' }}</td>\r\n <td *ngIf=\"['all','question'].includes(selectedFlag)\" class=\"table-title\">{{\r\n data?.customQuestionFlagCount ?? '--' }}</td>\r\n <td *ngIf=\"['all','time'].includes(selectedFlag)\" class=\"table-title\">{{\r\n data?.customTimeFlagCount ?? '--' }}</td>\r\n <td *ngIf=\"['all','detection'].includes(selectedFlag)\" class=\"table-title\">\r\n {{data?.checkListType === 'custom' ? 0 : (data?.flagCount ?? '--')}}\r\n </td>\r\n \r\n \r\n <!-- <td class=\"table-title-primary\"> \r\n\r\n <ng-container *ngIf=\"data?.checkListType === 'custom'\" >\r\n <div *ngIf=\"filterInput.value === 'all' || filterInput.value === 'question'\" class=\"d-flex justify-content-between mb-2\">\r\n <span class=\"cursor-pointer\" (click)=\"viewInDetail(data?.sourceCheckList_id, 'question')\" >{{(data?.customQuestionFlagCount || data?.customQuestionFlagCount === 0) ? data?.customQuestionFlagCount?.toLocaleString('en-IN') : '--'}} </span> \r\n <span class=\"badge badge-light-default mx-3\" >Questions</span> \r\n </div>\r\n\r\n <div *ngIf=\"filterInput.value === 'all' || filterInput.value === 'time'\" class=\"d-flex justify-content-between\">\r\n <span class=\"cursor-pointer\" (click)=\"viewInDetail(data?.sourceCheckList_id, 'time')\" >{{(data?.customTimeFlagCount || data?.customTimeFlagCount === 0) ? data?.customTimeFlagCount?.toLocaleString('en-IN') : '--'}} </span> \r\n <span class=\"badge badge-light-default mx-3\" >Not Submitted</span> \r\n </div> \r\n </ng-container> \r\n\r\n <div *ngIf=\"data?.checkListType !== 'custom'\" class=\"d-flex justify-content-between\">\r\n <span class=\"cursor-pointer\" (click)=\"viewInDetail(data?.sourceCheckList_id)\" >{{(data?.flagCount || data?.flagCount === 0) ? data?.flagCount?.toLocaleString('en-IN') : '--'}} </span> \r\n <span class=\"badge badge-light-default mx-3\" >Detections</span> \r\n </div>\r\n \r\n </td> -->\r\n <td class=\"table-title\">\r\n <div class=\"d-flex\">\r\n <div class=\"h-5px w-100 bg-light mt-4\">\r\n <div role=\"progressbar\" aria-valuemin=\"20\" aria-valuemax=\"100\"\r\n class=\"bg-primary rounded h-5px \"\r\n [style.width]=\"data?.complianceRate + '%'\"> </div>\r\n </div>\r\n <div class=\"text-end table-title\"><span class=\"my-1 mx-1 text-end\">\r\n {{data?.complianceRate?.toLocaleString('en-US', {\r\n minimumFractionDigits: 0 })\r\n || '--'}}%</span></div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <div (click)=\"viewInDetail(data?.sourceCheckList_id)\"\r\n class=\"table-title-primary cursor-pointer\">View</div>\r\n </div>\r\n </td>\r\n\r\n </tr>\r\n\r\n </tbody>\r\n </table>\r\n\r\n </div>\r\n <div *ngIf=\"(flagsTableApiState | async) === 'loaded' && flagsTableData?.length\">\r\n <lib-pagination [itemsPerPage]=\"itemsPerPage\" [currentPage]=\"currentPage\"\r\n [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"(flagsTableApiState | async) === 'loading' || (flagsTableApiState | async) === 'initial'\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(flagsTableApiState | async) === 'loaded' && !flagsTableData?.length\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 my-6\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Flags Table</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".ellipse1{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}.cardcount{color:var(--Black, #101828);font-size:30px;font-style:normal;font-weight:600;line-height:38px}.cardtext{color:var(--Gray-700, #344054);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.cardsubcount{color:var(--Black, #101828);font-size:20px;font-style:normal;font-weight:700;line-height:30px}.card-border{padding:8px;border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.percent-value{color:var(--Gray-500, #667085);text-align:center;font-size:16px;font-style:normal;font-weight:600;line-height:18px}.week-font{color:var(--Gray-800, #1D2939);font-size:12px;font-style:normal;font-weight:400;line-height:18px}.flagcard{padding:0 0 0 15%}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-size:14px;font-style:normal;font-weight:500!important;line-height:30px;text-decoration-line:underline}.table-title{color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500!important;line-height:20px}.rotate{rotate:180deg;transition:1s}td{vertical-align:middle}.inactive-card{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:#fff}.inactive-card .inactive-header{font-size:16px;font-weight:500;line-height:24px;border-radius:4px;padding:8px 16px;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#10182808),#f9fafb}.active-card{border-radius:8px;border:1px solid var(--Primary-300, #6BCAFF);background:var(--Primary-25, #F6FCFF)}.active-card .active-header{font-size:16px;font-weight:500;line-height:24px;border-radius:4px;padding:8px 16px;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f9fafb}.w-95{width:97%!important}.w-5{width:3%!important}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "directive", type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i4.DatePipe, name: "date" }] });
308
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FlagsNewComponent, selector: "lib-flags-new", ngImport: i0, template: "<div class=\"col-md-12\">\r\n <div class=\"row\">\r\n <!--allCards -->\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'allCards'\">\r\n <div class=\"w-95\">\r\n <div class=\"pt-2 h-100\">\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"cursor-pointer pe-3\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'w-25' : 'w-50'\" (click)=\"selectTabs('all')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='all' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='all' ? 'active-header' : 'inactive-header'\">\r\n Total Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.totalFlag === 0 ||\r\n cardMetricsData?.flagCards?.totalFlag) ?\r\n cardMetricsData?.flagCards?.totalFlag?.toLocaleString('en-IN') : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"cursor-pointer pe-3\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'w-25' : 'w-50'\" (click)=\"selectTabs('question')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='question' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='question' ? 'active-header' : 'inactive-header'\">\r\n Question Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount my-2 me-3\">{{(cardMetricsData?.flagCards?.questionFlag?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.questionFlag?.count) ?\r\n cardMetricsData?.flagCards?.questionFlag?.count?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\"\r\n class=\"mt-2 me-1\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"w-25 cursor-pointer pe-3\" (click)=\"selectTabs('runAI')\" *ngIf=\"cardMetricsData?.flagCards?.runAIFlag\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='runAI' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='runAI' ? 'active-header' : 'inactive-header'\">\r\n Run AI Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.runAIFlag?.flagCount\r\n === 0 ||\r\n cardMetricsData?.flagCards?.runAIFlag?.flagCount) ?\r\n cardMetricsData?.flagCards?.runAIFlag?.flagCount?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"cursor-pointer pe-3\" (click)=\"selectTabs('time')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'w-25' : 'w-50'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='time' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='time' ? 'active-header' : 'inactive-header'\">\r\n Not Submitted\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.delayInSubmission?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.delayInSubmission?.count) ?\r\n cardMetricsData?.flagCards?.delayInSubmission?.count?.toLocaleString('en-IN')\r\n : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"cursor-pointer pe-3\" (click)=\"selectTabs('detection')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'w-25' : 'w-50'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='detection' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='detection' ? 'active-header' : 'inactive-header'\">\r\n Detection Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.detectionFlag?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.detectionFlag?.count) ?\r\n cardMetricsData?.flagCards?.detectionFlag?.count?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!-- customChecklistCount > 1 & aiChecklistCount > 0 show 3 cards -->\r\n <!-- customCards -->\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'customCards'\">\r\n <div class=\"w-95\">\r\n <div class=\"pt-2 h-100\">\r\n <div class=\"d-flex justify-content-between mt-3\">\r\n <div class=\"col-3 cursor-pointer pe-3\" (click)=\"selectTabs('all')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'col-3' : 'col-4'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='all' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='all' ? 'active-header' : 'inactive-header'\">\r\n Total Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.totalFlag === 0 ||\r\n cardMetricsData?.flagCards?.totalFlag) ?\r\n cardMetricsData?.flagCards?.totalFlag?.toLocaleString('en-IN') : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-3 cursor-pointer pe-3\" (click)=\"selectTabs('question')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'col-3' : 'col-4'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='question' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='question' ? 'active-header' : 'inactive-header'\">\r\n Question Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount my-2 me-3\">{{(cardMetricsData?.flagCards?.questionFlag?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.questionFlag?.count) ?\r\n cardMetricsData?.flagCards?.questionFlag?.count?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\"\r\n class=\"mt-2 me-1\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-3 cursor-pointer pe-3\" (click)=\"selectTabs('runAI')\" *ngIf=\"cardMetricsData?.flagCards?.runAIFlag\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='runAI' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='runAI' ? 'active-header' : 'inactive-header'\">\r\n Run AI Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.runAIFlag?.flagCount\r\n === 0 ||\r\n cardMetricsData?.flagCards?.runAIFlag?.flagCount) ?\r\n cardMetricsData?.flagCards?.runAIFlag?.flagCount?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-3 cursor-pointer pe-3\" (click)=\"selectTabs('time')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'col-3' : 'col-4'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='time' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='time' ? 'active-header' : 'inactive-header'\">\r\n Not Submitted\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.delayInSubmission?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.delayInSubmission?.count) ?\r\n cardMetricsData?.flagCards?.delayInSubmission?.count?.toLocaleString('en-IN')\r\n : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'allCards' || cardMetricsDataByType?.showCards === 'customCards'\">\r\n <div class=\"w-5 d-flex align-items-center\">\r\n <div class=\"row\">\r\n <div class=\"col-6 mt-3\">\r\n <div class=\"d-flex flex-column text-center align-items-center justify-content-center me-5\">\r\n <div class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='daily' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('daily')\">1D</div>\r\n <div class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='weekly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('weekly')\">1W</div>\r\n <div *ngIf=\"traxMonthlyComparisonData\" class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='monthly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('monthly')\">1M</div>\r\n <!-- <div class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='monthly' ? 'text-primary' :''\" (click)=\"dateValue('monthly')\">1M</div> -->\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n </div>\r\n <!-- customChecklistCount > 0 & aiChecklistCount > 1 show single cards -->\r\n <!-- aiCards -->\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'aiCards'\">\r\n <div class=\"row \">\r\n <div class=\"col-12 mt-3 cursor-pointer pe-3\" (click)=\"selectTabs('detection')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='detection' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='detection' ? 'active-header' : 'inactive-header'\">\r\n Detection Flags\r\n </div>\r\n <div class=\"p-3 row\">\r\n <div class=\"mt-2 col-11\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.detectionFlag?.count === 0 ||\r\n cardMetricsData?.flagCards?.detectionFlag?.count) ?\r\n cardMetricsData?.flagCards?.detectionFlag?.count?.toLocaleString('en-IN') : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\" fill=\"none\">\r\n <path d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\r\n fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\"\r\n stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n <div class=\"col-1 mt-3\">\r\n <span class=\"mt-1 cursor-pointer fs-5 mx-2\"\r\n [ngClass]=\"dateComparisonType ==='daily' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('daily')\">1D</span>\r\n <span class=\"mt-1 cursor-pointer fs-5 me-2\"\r\n [ngClass]=\"dateComparisonType ==='weekly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('weekly')\">1W</span>\r\n <span *ngIf=\"traxMonthlyComparisonData\" class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='monthly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('monthly')\">1M</span>\r\n <!-- <div class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='monthly' ? 'text-primary' :''\" (click)=\"dateValue('monthly')\">1M</div> -->\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div class=\"row mt-3\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-4 px-4\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\"><span *ngIf=\"!['time','all'].includes(selectedFlag)\"\r\n class=\"me-3\">{{selectedFlag !== 'runAI' ? (selectedFlag | titlecase) : 'RunAI'}} Flags</span> <span\r\n *ngIf=\"['time','all'].includes(selectedFlag)\" class=\"me-3\">{{selectedFlag === 'all' ?\r\n 'Total Flags' : 'Not Sumbitted'}}</span> <span *ngIf=\"totalItems\"\r\n class=\"badge badge-light-primary \">{{totalItems}}\r\n total</span></span>\r\n <span class=\"text-sub mb-2\"> Based on {{ headerData?.date?.startDate | date: 'MMM d' }} - {{\r\n headerData?.date?.endDate | date: 'MMM d, y' }}\r\n </span>\r\n </h3>\r\n <div *ngIf=\"(flagsTableApiState | async) === 'loaded'\" class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon footfallsearch svg-icon-1 position-absolute ms-8\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input [formControl]=\"searchInput\" type=\"text\"\r\n class=\"form-control ps-14 ms-4 me-4 footfallsearch\" placeholder=\"Search\"\r\n autocomplete=\"off\" />\r\n <!-- <lib-reactive-select [formControl]=\"filterInput\" [idField]=\"'value'\"\r\n [nameField]=\"'label'\" [data]=\"filterValues\" class=\"w-100\">\r\n </lib-reactive-select> -->\r\n <button *ngIf=\"flagsTableData?.length\"\r\n [disabled]=\"(flagsTableApiState | async) === 'loading'\" type=\"button\"\r\n (click)=\"onFlagsTableExport()\" type=\"button\"\r\n class=\"btn-outline btn align-items-end text-nowrap invheader ms-4\">\r\n <!-- Export Icon -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </svg>\r\n <span class=\"ms-2\"></span> Export\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <ng-container *ngIf=\"(flagsTableApiState | async) === 'loaded' && flagsTableData?.length\">\r\n <div class=\"table-responsive px-4\">\r\n <table class=\"table text-nowrap bottom-border\">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('checkListName')\">Checklist Name\r\n <svg [ngClass]=\"sortColumName === 'checkListName' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'checkListName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('coverage')\">Coverage<svg\r\n [ngClass]=\"sortColumName === 'coverage' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'coverage' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('runAIQuestionCount')\" *ngIf=\"['runAI'].includes(selectedFlag)\">No of Questions<svg\r\n [ngClass]=\"sortColumName === 'runAIQuestionCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'runAIQuestionCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('assignedStores')\">Assigned\r\n Stores<svg\r\n [ngClass]=\"sortColumName === 'assignedStores' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'assignedStores' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('flaggedStores')\" *ngIf=\"!['runAI'].includes(selectedFlag)\">Flagged Stores\r\n <svg [ngClass]=\"sortColumName === 'flaggedStores' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flaggedStores' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('flags')\" *ngIf=\"['runAI'].includes(selectedFlag)\">Flags\r\n <svg [ngClass]=\"sortColumName === 'flags' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flags' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th *ngIf=\"['all','question'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('customQuestionFlagCount')\">{{selectedFlag === 'question'\r\n ? 'Flags' : 'Question Flags'}}<svg\r\n [ngClass]=\"sortColumName === 'customQuestionFlagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'customQuestionFlagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th *ngIf=\"['all'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('runAIFlag')\">Run AI Flags<svg\r\n [ngClass]=\"sortColumName === 'runAIFlag' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'runAIFlag' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th *ngIf=\"['all','time'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('customTimeFlagCount')\">{{selectedFlag === 'time' ?\r\n 'Flags' : 'Not Submitted Flags'}}<svg\r\n [ngClass]=\"sortColumName === 'customTimeFlagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'customTimeFlagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th *ngIf=\"['all','detection'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('flagCount')\">{{selectedFlag === 'detection' ? 'Detections' :\r\n 'Detection Flags'}}<svg\r\n [ngClass]=\"sortColumName === 'flagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <!-- <th style=\"width: 200px;\" class=\"cursor-pointer\" (click)=\"sortData('flagCount')\">Flagged<svg\r\n [ngClass]=\"sortColumName === 'flagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></th> -->\r\n <!-- <th *ngIf=\"selectedFlag === 'detection'\" class=\"cursor-pointer\" (click)=\"sortData('detectionCount')\">Detection Count<svg\r\n [ngClass]=\"sortColumName === 'detectionCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'detectionCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></th> -->\r\n <th class=\"cursor-pointer\" (click)=\"sortData('Compliance')\">Compliance %<svg\r\n [ngClass]=\"sortColumName === 'Compliance' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'Compliance' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <!-- *ngFor=\"let store of checklistPerformance\" -->\r\n <tr *ngFor=\"let data of flagsTableData\">\r\n <td>\r\n <div>\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n {{data?.checkListChar?.toUpperCase() || '--' }} </span>\r\n </div><span (click)=\"viewInDetail(data?.sourceCheckList_id)\"\r\n class=\"table-title-primary cursor-pointer\">{{data?.checkListName ?\r\n data?.checkListName : '--'}}</span> <span\r\n *ngIf=\"data?.checkListType !== 'custom'\" class=\"mx-2\">\u2728</span>\r\n </div>\r\n </td>\r\n \r\n <td class=\"table-title\">{{ data?.coverage ? data?.coverage : '--' }}</td>\r\n <td class=\"table-title\" *ngIf=\"['runAI'].includes(selectedFlag)\">{{ data?.runAIQuestionCount ? data?.runAIQuestionCount : 0 }}</td>\r\n <td class=\"table-title\">{{ data.checkListType === 'custom' ?\r\n ((data?.assignedStores || data?.assignedStores === 0) ? data?.assignedStores\r\n : '--') : ((data?.assignedStoresAi || data?.assignedStoresAi === 0) ?\r\n data?.assignedStoresAi : '--')}}</td>\r\n <td class=\"table-title\">{{ (data?.flaggedStores || data?.flaggedStores === 0) ?\r\n data?.flaggedStores : '--' }}</td>\r\n <td *ngIf=\"['all','question'].includes(selectedFlag)\" class=\"table-title\">{{\r\n data?.customQuestionFlagCount ?? '--' }}</td>\r\n <td *ngIf=\"['all'].includes(selectedFlag)\" class=\"table-title\">{{\r\n data?.runAIFlag ?? '--' }}</td>\r\n <td *ngIf=\"['all','time'].includes(selectedFlag)\" class=\"table-title\">{{\r\n data?.customTimeFlagCount ?? '--' }}</td>\r\n <td *ngIf=\"['all','detection'].includes(selectedFlag)\" class=\"table-title\">\r\n {{data?.checkListType === 'custom' ? 0 : (data?.flagCount ?? '--')}}\r\n </td>\r\n \r\n \r\n <!-- <td class=\"table-title-primary\"> \r\n\r\n <ng-container *ngIf=\"data?.checkListType === 'custom'\" >\r\n <div *ngIf=\"filterInput.value === 'all' || filterInput.value === 'question'\" class=\"d-flex justify-content-between mb-2\">\r\n <span class=\"cursor-pointer\" (click)=\"viewInDetail(data?.sourceCheckList_id, 'question')\" >{{(data?.customQuestionFlagCount || data?.customQuestionFlagCount === 0) ? data?.customQuestionFlagCount?.toLocaleString('en-IN') : '--'}} </span> \r\n <span class=\"badge badge-light-default mx-3\" >Questions</span> \r\n </div>\r\n\r\n <div *ngIf=\"filterInput.value === 'all' || filterInput.value === 'time'\" class=\"d-flex justify-content-between\">\r\n <span class=\"cursor-pointer\" (click)=\"viewInDetail(data?.sourceCheckList_id, 'time')\" >{{(data?.customTimeFlagCount || data?.customTimeFlagCount === 0) ? data?.customTimeFlagCount?.toLocaleString('en-IN') : '--'}} </span> \r\n <span class=\"badge badge-light-default mx-3\" >Not Submitted</span> \r\n </div> \r\n </ng-container> \r\n\r\n <div *ngIf=\"data?.checkListType !== 'custom'\" class=\"d-flex justify-content-between\">\r\n <span class=\"cursor-pointer\" (click)=\"viewInDetail(data?.sourceCheckList_id)\" >{{(data?.flagCount || data?.flagCount === 0) ? data?.flagCount?.toLocaleString('en-IN') : '--'}} </span> \r\n <span class=\"badge badge-light-default mx-3\" >Detections</span> \r\n </div>\r\n \r\n </td> -->\r\n <td class=\"table-title\">\r\n <div class=\"d-flex\">\r\n <div class=\"h-5px w-100 bg-light mt-4\">\r\n <div role=\"progressbar\" aria-valuemin=\"20\" aria-valuemax=\"100\"\r\n class=\"bg-primary rounded h-5px \"\r\n [style.width]=\"data?.complianceRate + '%'\"> </div>\r\n </div>\r\n <div class=\"text-end table-title\"><span class=\"my-1 mx-1 text-end\">\r\n {{data?.complianceRate?.toLocaleString('en-US', {\r\n minimumFractionDigits: 0 })\r\n || '--'}}%</span></div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <div (click)=\"viewInDetail(data?.sourceCheckList_id)\"\r\n class=\"table-title-primary cursor-pointer\">View</div>\r\n </div>\r\n </td>\r\n\r\n </tr>\r\n\r\n </tbody>\r\n </table>\r\n\r\n </div>\r\n <div *ngIf=\"(flagsTableApiState | async) === 'loaded' && flagsTableData?.length\">\r\n <lib-pagination [itemsPerPage]=\"itemsPerPage\" [currentPage]=\"currentPage\"\r\n [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"(flagsTableApiState | async) === 'loading' || (flagsTableApiState | async) === 'initial'\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(flagsTableApiState | async) === 'loaded' && !flagsTableData?.length\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 my-6\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Flags Table</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".ellipse1{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}.cardcount{color:var(--Black, #101828);font-size:30px;font-style:normal;font-weight:600;line-height:38px}.cardtext{color:var(--Gray-700, #344054);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.cardsubcount{color:var(--Black, #101828);font-size:20px;font-style:normal;font-weight:700;line-height:30px}.card-border{padding:8px;border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.percent-value{color:var(--Gray-500, #667085);text-align:center;font-size:16px;font-style:normal;font-weight:600;line-height:18px}.week-font{color:var(--Gray-800, #1D2939);font-size:12px;font-style:normal;font-weight:400;line-height:18px}.flagcard{padding:0 0 0 15%}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-size:14px;font-style:normal;font-weight:500!important;line-height:30px;text-decoration-line:underline}.table-title{color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500!important;line-height:20px}.rotate{rotate:180deg;transition:1s}td{vertical-align:middle}.inactive-card{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:#fff}.inactive-card .inactive-header{font-size:16px;font-weight:500;line-height:24px;border-radius:4px;padding:8px 16px;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#10182808),#f9fafb}.active-card{border-radius:8px;border:1px solid var(--Primary-300, #6BCAFF);background:var(--Primary-25, #F6FCFF)}.active-card .active-header{font-size:16px;font-weight:500;line-height:24px;border-radius:4px;padding:8px 16px;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f9fafb}.w-95{width:97%!important}.w-5{width:3%!important}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "directive", type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i4.DatePipe, name: "date" }] });
300
309
  }
301
310
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlagsNewComponent, decorators: [{
302
311
  type: Component,
303
- args: [{ selector: 'lib-flags-new', template: "<div class=\"col-md-12\">\r\n <div class=\"row\">\r\n <!--allCards -->\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'allCards'\">\r\n <div class=\"w-95\">\r\n <div class=\"pt-2 h-100\">\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"w-25 cursor-pointer pe-3\" (click)=\"selectTabs('all')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='all' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='all' ? 'active-header' : 'inactive-header'\">\r\n Total Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.totalFlag === 0 ||\r\n cardMetricsData?.flagCards?.totalFlag) ?\r\n cardMetricsData?.flagCards?.totalFlag?.toLocaleString('en-IN') : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"w-25 cursor-pointer pe-3\" (click)=\"selectTabs('question')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='question' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='question' ? 'active-header' : 'inactive-header'\">\r\n Question Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount my-2 me-3\">{{(cardMetricsData?.flagCards?.questionFlag?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.questionFlag?.count) ?\r\n cardMetricsData?.flagCards?.questionFlag?.count?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\"\r\n class=\"mt-2 me-1\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"w-25 cursor-pointer pe-3\" (click)=\"selectTabs('time')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='time' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='time' ? 'active-header' : 'inactive-header'\">\r\n Not Submitted\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.delayInSubmission?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.delayInSubmission?.count) ?\r\n cardMetricsData?.flagCards?.delayInSubmission?.count?.toLocaleString('en-IN')\r\n : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"w-25 cursor-pointer pe-3\" (click)=\"selectTabs('detection')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='detection' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='detection' ? 'active-header' : 'inactive-header'\">\r\n Detection Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.detectionFlag?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.detectionFlag?.count) ?\r\n cardMetricsData?.flagCards?.detectionFlag?.count?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!-- customChecklistCount > 1 & aiChecklistCount > 0 show 3 cards -->\r\n <!-- customCards -->\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'customCards'\">\r\n <div class=\"w-95\">\r\n <div class=\"pt-2 h-100\">\r\n <div class=\"d-flex justify-content-between mt-3\">\r\n <div class=\"col-4 cursor-pointer pe-3\" (click)=\"selectTabs('all')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='all' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='all' ? 'active-header' : 'inactive-header'\">\r\n Total Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.totalFlag === 0 ||\r\n cardMetricsData?.flagCards?.totalFlag) ?\r\n cardMetricsData?.flagCards?.totalFlag?.toLocaleString('en-IN') : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-4 cursor-pointer pe-3\" (click)=\"selectTabs('question')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='question' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='question' ? 'active-header' : 'inactive-header'\">\r\n Question Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount my-2 me-3\">{{(cardMetricsData?.flagCards?.questionFlag?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.questionFlag?.count) ?\r\n cardMetricsData?.flagCards?.questionFlag?.count?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\"\r\n class=\"mt-2 me-1\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-4 cursor-pointer pe-3\" (click)=\"selectTabs('time')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='time' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='time' ? 'active-header' : 'inactive-header'\">\r\n Not Submitted\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.delayInSubmission?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.delayInSubmission?.count) ?\r\n cardMetricsData?.flagCards?.delayInSubmission?.count?.toLocaleString('en-IN')\r\n : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'allCards' || cardMetricsDataByType?.showCards === 'customCards'\">\r\n <div class=\"w-5 d-flex align-items-center\">\r\n <div class=\"row\">\r\n <div class=\"col-6 mt-3\">\r\n <div class=\"d-flex flex-column text-center align-items-center justify-content-center me-5\">\r\n <div class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='daily' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('daily')\">1D</div>\r\n <div class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='weekly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('weekly')\">1W</div>\r\n <div *ngIf=\"traxMonthlyComparisonData\" class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='monthly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('monthly')\">1M</div>\r\n <!-- <div class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='monthly' ? 'text-primary' :''\" (click)=\"dateValue('monthly')\">1M</div> -->\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n </div>\r\n <!-- customChecklistCount > 0 & aiChecklistCount > 1 show single cards -->\r\n <!-- aiCards -->\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'aiCards'\">\r\n <div class=\"row \">\r\n <div class=\"col-12 mt-3 cursor-pointer pe-3\" (click)=\"selectTabs('detection')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='detection' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='detection' ? 'active-header' : 'inactive-header'\">\r\n Detection Flags\r\n </div>\r\n <div class=\"p-3 row\">\r\n <div class=\"mt-2 col-11\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.detectionFlag?.count === 0 ||\r\n cardMetricsData?.flagCards?.detectionFlag?.count) ?\r\n cardMetricsData?.flagCards?.detectionFlag?.count?.toLocaleString('en-IN') : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\" fill=\"none\">\r\n <path d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\r\n fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\"\r\n stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n <div class=\"col-1 mt-3\">\r\n <span class=\"mt-1 cursor-pointer fs-5 mx-2\"\r\n [ngClass]=\"dateComparisonType ==='daily' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('daily')\">1D</span>\r\n <span class=\"mt-1 cursor-pointer fs-5 me-2\"\r\n [ngClass]=\"dateComparisonType ==='weekly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('weekly')\">1W</span>\r\n <span *ngIf=\"traxMonthlyComparisonData\" class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='monthly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('monthly')\">1M</span>\r\n <!-- <div class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='monthly' ? 'text-primary' :''\" (click)=\"dateValue('monthly')\">1M</div> -->\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div class=\"row mt-3\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-4 px-4\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\"><span *ngIf=\"!['time','all'].includes(selectedFlag)\"\r\n class=\"me-3\">{{selectedFlag | titlecase}} Flags</span> <span\r\n *ngIf=\"['time','all'].includes(selectedFlag)\" class=\"me-3\">{{selectedFlag === 'all' ?\r\n 'Total Flags' : 'Not Sumbitted'}}</span> <span *ngIf=\"totalItems\"\r\n class=\"badge badge-light-primary \">{{totalItems}}\r\n total</span></span>\r\n <span class=\"text-sub mb-2\"> Based on {{ headerData?.date?.startDate | date: 'MMM d' }} - {{\r\n headerData?.date?.endDate | date: 'MMM d, y' }}\r\n </span>\r\n </h3>\r\n <div *ngIf=\"(flagsTableApiState | async) === 'loaded'\" class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon footfallsearch svg-icon-1 position-absolute ms-8\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input [formControl]=\"searchInput\" type=\"text\"\r\n class=\"form-control ps-14 ms-4 me-4 footfallsearch\" placeholder=\"Search\"\r\n autocomplete=\"off\" />\r\n <!-- <lib-reactive-select [formControl]=\"filterInput\" [idField]=\"'value'\"\r\n [nameField]=\"'label'\" [data]=\"filterValues\" class=\"w-100\">\r\n </lib-reactive-select> -->\r\n <button *ngIf=\"flagsTableData?.length\"\r\n [disabled]=\"(flagsTableApiState | async) === 'loading'\" type=\"button\"\r\n (click)=\"onFlagsTableExport()\" type=\"button\"\r\n class=\"btn-outline btn align-items-end text-nowrap invheader ms-4\">\r\n <!-- Export Icon -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </svg>\r\n <span class=\"ms-2\"></span> Export\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <ng-container *ngIf=\"(flagsTableApiState | async) === 'loaded'\">\r\n <div class=\"table-responsive px-4\">\r\n <table class=\"table text-nowrap bottom-border\">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('checkListName')\">Checklist Name\r\n <svg [ngClass]=\"sortColumName === 'checkListName' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'checkListName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('coverage')\">Coverage<svg\r\n [ngClass]=\"sortColumName === 'coverage' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'coverage' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('assignedStores')\">Assigned\r\n Stores<svg\r\n [ngClass]=\"sortColumName === 'assignedStores' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'assignedStores' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('flaggedStores')\">Flagged Stores\r\n <svg [ngClass]=\"sortColumName === 'flaggedStores' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flaggedStores' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th *ngIf=\"['all','question'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('customQuestionFlagCount')\">{{selectedFlag === 'question'\r\n ? 'Flags' : 'Question Flags'}}<svg\r\n [ngClass]=\"sortColumName === 'customQuestionFlagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'customQuestionFlagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th *ngIf=\"['all','time'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('customTimeFlagCount')\">{{selectedFlag === 'time' ?\r\n 'Flags' : 'Not Submitted Flags'}}<svg\r\n [ngClass]=\"sortColumName === 'customTimeFlagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'customTimeFlagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th *ngIf=\"['all','detection'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('flagCount')\">{{selectedFlag === 'detection' ? 'Detections' :\r\n 'Detection Flags'}}<svg\r\n [ngClass]=\"sortColumName === 'flagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <!-- <th style=\"width: 200px;\" class=\"cursor-pointer\" (click)=\"sortData('flagCount')\">Flagged<svg\r\n [ngClass]=\"sortColumName === 'flagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></th> -->\r\n <!-- <th *ngIf=\"selectedFlag === 'detection'\" class=\"cursor-pointer\" (click)=\"sortData('detectionCount')\">Detection Count<svg\r\n [ngClass]=\"sortColumName === 'detectionCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'detectionCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></th> -->\r\n <th class=\"cursor-pointer\" (click)=\"sortData('Compliance')\">Compliance %<svg\r\n [ngClass]=\"sortColumName === 'Compliance' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'Compliance' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <!-- *ngFor=\"let store of checklistPerformance\" -->\r\n <tr *ngFor=\"let data of flagsTableData\">\r\n <td>\r\n <div>\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n {{data?.checkListChar?.toUpperCase() || '--' }} </span>\r\n </div><span (click)=\"viewInDetail(data?.sourceCheckList_id)\"\r\n class=\"table-title-primary cursor-pointer\">{{data?.checkListName ?\r\n data?.checkListName : '--'}}</span> <span\r\n *ngIf=\"data?.checkListType !== 'custom'\" class=\"mx-2\">\u2728</span>\r\n </div>\r\n </td>\r\n \r\n <td class=\"table-title\">{{ data?.coverage ? data?.coverage : '--' }}</td>\r\n <td class=\"table-title\">{{ data.checkListType === 'custom' ?\r\n ((data?.assignedStores || data?.assignedStores === 0) ? data?.assignedStores\r\n : '--') : ((data?.assignedStoresAi || data?.assignedStoresAi === 0) ?\r\n data?.assignedStoresAi : '--')}}</td>\r\n <td class=\"table-title\">{{ (data?.flaggedStores || data?.flaggedStores === 0) ?\r\n data?.flaggedStores : '--' }}</td>\r\n <td *ngIf=\"['all','question'].includes(selectedFlag)\" class=\"table-title\">{{\r\n data?.customQuestionFlagCount ?? '--' }}</td>\r\n <td *ngIf=\"['all','time'].includes(selectedFlag)\" class=\"table-title\">{{\r\n data?.customTimeFlagCount ?? '--' }}</td>\r\n <td *ngIf=\"['all','detection'].includes(selectedFlag)\" class=\"table-title\">\r\n {{data?.checkListType === 'custom' ? 0 : (data?.flagCount ?? '--')}}\r\n </td>\r\n \r\n \r\n <!-- <td class=\"table-title-primary\"> \r\n\r\n <ng-container *ngIf=\"data?.checkListType === 'custom'\" >\r\n <div *ngIf=\"filterInput.value === 'all' || filterInput.value === 'question'\" class=\"d-flex justify-content-between mb-2\">\r\n <span class=\"cursor-pointer\" (click)=\"viewInDetail(data?.sourceCheckList_id, 'question')\" >{{(data?.customQuestionFlagCount || data?.customQuestionFlagCount === 0) ? data?.customQuestionFlagCount?.toLocaleString('en-IN') : '--'}} </span> \r\n <span class=\"badge badge-light-default mx-3\" >Questions</span> \r\n </div>\r\n\r\n <div *ngIf=\"filterInput.value === 'all' || filterInput.value === 'time'\" class=\"d-flex justify-content-between\">\r\n <span class=\"cursor-pointer\" (click)=\"viewInDetail(data?.sourceCheckList_id, 'time')\" >{{(data?.customTimeFlagCount || data?.customTimeFlagCount === 0) ? data?.customTimeFlagCount?.toLocaleString('en-IN') : '--'}} </span> \r\n <span class=\"badge badge-light-default mx-3\" >Not Submitted</span> \r\n </div> \r\n </ng-container> \r\n\r\n <div *ngIf=\"data?.checkListType !== 'custom'\" class=\"d-flex justify-content-between\">\r\n <span class=\"cursor-pointer\" (click)=\"viewInDetail(data?.sourceCheckList_id)\" >{{(data?.flagCount || data?.flagCount === 0) ? data?.flagCount?.toLocaleString('en-IN') : '--'}} </span> \r\n <span class=\"badge badge-light-default mx-3\" >Detections</span> \r\n </div>\r\n \r\n </td> -->\r\n <td class=\"table-title\">\r\n <div class=\"d-flex\">\r\n <div class=\"h-5px w-100 bg-light mt-4\">\r\n <div role=\"progressbar\" aria-valuemin=\"20\" aria-valuemax=\"100\"\r\n class=\"bg-primary rounded h-5px \"\r\n [style.width]=\"data?.complianceRate + '%'\"> </div>\r\n </div>\r\n <div class=\"text-end table-title\"><span class=\"my-1 mx-1 text-end\">\r\n {{data?.complianceRate?.toLocaleString('en-US', {\r\n minimumFractionDigits: 0 })\r\n || '--'}}%</span></div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <div (click)=\"viewInDetail(data?.sourceCheckList_id)\"\r\n class=\"table-title-primary cursor-pointer\">View</div>\r\n </div>\r\n </td>\r\n\r\n </tr>\r\n\r\n </tbody>\r\n </table>\r\n\r\n </div>\r\n <div *ngIf=\"(flagsTableApiState | async) === 'loaded' && flagsTableData?.length\">\r\n <lib-pagination [itemsPerPage]=\"itemsPerPage\" [currentPage]=\"currentPage\"\r\n [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"(flagsTableApiState | async) === 'loading' || (flagsTableApiState | async) === 'initial'\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(flagsTableApiState | async) === 'loaded' && !flagsTableData?.length\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 my-6\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Flags Table</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".ellipse1{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}.cardcount{color:var(--Black, #101828);font-size:30px;font-style:normal;font-weight:600;line-height:38px}.cardtext{color:var(--Gray-700, #344054);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.cardsubcount{color:var(--Black, #101828);font-size:20px;font-style:normal;font-weight:700;line-height:30px}.card-border{padding:8px;border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.percent-value{color:var(--Gray-500, #667085);text-align:center;font-size:16px;font-style:normal;font-weight:600;line-height:18px}.week-font{color:var(--Gray-800, #1D2939);font-size:12px;font-style:normal;font-weight:400;line-height:18px}.flagcard{padding:0 0 0 15%}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-size:14px;font-style:normal;font-weight:500!important;line-height:30px;text-decoration-line:underline}.table-title{color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500!important;line-height:20px}.rotate{rotate:180deg;transition:1s}td{vertical-align:middle}.inactive-card{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:#fff}.inactive-card .inactive-header{font-size:16px;font-weight:500;line-height:24px;border-radius:4px;padding:8px 16px;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#10182808),#f9fafb}.active-card{border-radius:8px;border:1px solid var(--Primary-300, #6BCAFF);background:var(--Primary-25, #F6FCFF)}.active-card .active-header{font-size:16px;font-weight:500;line-height:24px;border-radius:4px;padding:8px 16px;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f9fafb}.w-95{width:97%!important}.w-5{width:3%!important}\n"] }]
312
+ args: [{ selector: 'lib-flags-new', template: "<div class=\"col-md-12\">\r\n <div class=\"row\">\r\n <!--allCards -->\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'allCards'\">\r\n <div class=\"w-95\">\r\n <div class=\"pt-2 h-100\">\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"cursor-pointer pe-3\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'w-25' : 'w-50'\" (click)=\"selectTabs('all')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='all' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='all' ? 'active-header' : 'inactive-header'\">\r\n Total Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.totalFlag === 0 ||\r\n cardMetricsData?.flagCards?.totalFlag) ?\r\n cardMetricsData?.flagCards?.totalFlag?.toLocaleString('en-IN') : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"cursor-pointer pe-3\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'w-25' : 'w-50'\" (click)=\"selectTabs('question')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='question' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='question' ? 'active-header' : 'inactive-header'\">\r\n Question Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount my-2 me-3\">{{(cardMetricsData?.flagCards?.questionFlag?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.questionFlag?.count) ?\r\n cardMetricsData?.flagCards?.questionFlag?.count?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\"\r\n class=\"mt-2 me-1\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"w-25 cursor-pointer pe-3\" (click)=\"selectTabs('runAI')\" *ngIf=\"cardMetricsData?.flagCards?.runAIFlag\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='runAI' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='runAI' ? 'active-header' : 'inactive-header'\">\r\n Run AI Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.runAIFlag?.flagCount\r\n === 0 ||\r\n cardMetricsData?.flagCards?.runAIFlag?.flagCount) ?\r\n cardMetricsData?.flagCards?.runAIFlag?.flagCount?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"cursor-pointer pe-3\" (click)=\"selectTabs('time')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'w-25' : 'w-50'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='time' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='time' ? 'active-header' : 'inactive-header'\">\r\n Not Submitted\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.delayInSubmission?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.delayInSubmission?.count) ?\r\n cardMetricsData?.flagCards?.delayInSubmission?.count?.toLocaleString('en-IN')\r\n : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"cursor-pointer pe-3\" (click)=\"selectTabs('detection')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'w-25' : 'w-50'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='detection' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='detection' ? 'active-header' : 'inactive-header'\">\r\n Detection Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.detectionFlag?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.detectionFlag?.count) ?\r\n cardMetricsData?.flagCards?.detectionFlag?.count?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!-- customChecklistCount > 1 & aiChecklistCount > 0 show 3 cards -->\r\n <!-- customCards -->\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'customCards'\">\r\n <div class=\"w-95\">\r\n <div class=\"pt-2 h-100\">\r\n <div class=\"d-flex justify-content-between mt-3\">\r\n <div class=\"col-3 cursor-pointer pe-3\" (click)=\"selectTabs('all')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'col-3' : 'col-4'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='all' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='all' ? 'active-header' : 'inactive-header'\">\r\n Total Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.totalFlag === 0 ||\r\n cardMetricsData?.flagCards?.totalFlag) ?\r\n cardMetricsData?.flagCards?.totalFlag?.toLocaleString('en-IN') : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.totalComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-3 cursor-pointer pe-3\" (click)=\"selectTabs('question')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'col-3' : 'col-4'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='question' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='question' ? 'active-header' : 'inactive-header'\">\r\n Question Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount my-2 me-3\">{{(cardMetricsData?.flagCards?.questionFlag?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.questionFlag?.count) ?\r\n cardMetricsData?.flagCards?.questionFlag?.count?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\"\r\n class=\"mt-2 me-1\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.questionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-3 cursor-pointer pe-3\" (click)=\"selectTabs('runAI')\" *ngIf=\"cardMetricsData?.flagCards?.runAIFlag\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='runAI' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='runAI' ? 'active-header' : 'inactive-header'\">\r\n Run AI Flags\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.runAIFlag?.flagCount\r\n === 0 ||\r\n cardMetricsData?.flagCards?.runAIFlag?.flagCount) ?\r\n cardMetricsData?.flagCards?.runAIFlag?.flagCount?.toLocaleString('en-IN') :\r\n '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.runAIComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-3 cursor-pointer pe-3\" (click)=\"selectTabs('time')\" [ngClass]=\"cardMetricsData?.flagCards?.runAIFlag ? 'col-3' : 'col-4'\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='time' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='time' ? 'active-header' : 'inactive-header'\">\r\n Not Submitted\r\n </div>\r\n <div class=\"p-3\">\r\n <div class=\"mt-2\">\r\n <span\r\n class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.delayInSubmission?.count\r\n === 0 ||\r\n cardMetricsData?.flagCards?.delayInSubmission?.count) ?\r\n cardMetricsData?.flagCards?.delayInSubmission?.count?.toLocaleString('en-IN')\r\n : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n viewBox=\"0 0 18 18\" fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.delayInSubmissionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'allCards' || cardMetricsDataByType?.showCards === 'customCards'\">\r\n <div class=\"w-5 d-flex align-items-center\">\r\n <div class=\"row\">\r\n <div class=\"col-6 mt-3\">\r\n <div class=\"d-flex flex-column text-center align-items-center justify-content-center me-5\">\r\n <div class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='daily' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('daily')\">1D</div>\r\n <div class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='weekly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('weekly')\">1W</div>\r\n <div *ngIf=\"traxMonthlyComparisonData\" class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='monthly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('monthly')\">1M</div>\r\n <!-- <div class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='monthly' ? 'text-primary' :''\" (click)=\"dateValue('monthly')\">1M</div> -->\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n </div>\r\n <!-- customChecklistCount > 0 & aiChecklistCount > 1 show single cards -->\r\n <!-- aiCards -->\r\n <ng-container *ngIf=\"cardMetricsDataByType?.showCards === 'aiCards'\">\r\n <div class=\"row \">\r\n <div class=\"col-12 mt-3 cursor-pointer pe-3\" (click)=\"selectTabs('detection')\">\r\n <div class=\"p-3\" [ngClass]=\"selectedFlag ==='detection' ? 'active-card' : 'inactive-card'\">\r\n <div class=\"\" [ngClass]=\"selectedFlag ==='detection' ? 'active-header' : 'inactive-header'\">\r\n Detection Flags\r\n </div>\r\n <div class=\"p-3 row\">\r\n <div class=\"mt-2 col-11\">\r\n <span class=\"cardsubcount me-3\">{{(cardMetricsData?.flagCards?.detectionFlag?.count === 0 ||\r\n cardMetricsData?.flagCards?.detectionFlag?.count) ?\r\n cardMetricsData?.flagCards?.detectionFlag?.count?.toLocaleString('en-IN') : '--'}}</span>\r\n <span\r\n *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\"\r\n class=\"mt-2\">\r\n <svg *ngIf=\"cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"8\" viewBox=\"0 0 13 8\" fill=\"none\">\r\n <path d=\"M11.832 1L7.08203 5.75L4.58203 3.25L0.832031 7M11.832 1H8.83203M11.832 1V4\"\r\n stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.ComparisonFlag\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\r\n fill=\"none\" class=\"ng-star-inserted\">\r\n <g clip-path=\"url(#clip0_2328_4654)\">\r\n <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\"\r\n stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2328_4654\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\">\r\n </rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span><span class=\"mt-2\"><span class=\"percent-value\">\r\n {{(cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData\r\n === 0 ||\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData)\r\n ?\r\n cardMetricsComparisonData?.flagComparisonCards?.detectionComparisonFlag?.comparisonData?.toLocaleString('en-IN')\r\n : '--'}}\r\n %</span><span class=\"week-font\"> vs\r\n last {{dateComparisonType === 'weekly' ? 'week' : dateComparisonType === 'monthly' ? 'month' : 'day'}}</span></span>\r\n </div>\r\n <div class=\"col-1 mt-3\">\r\n <span class=\"mt-1 cursor-pointer fs-5 mx-2\"\r\n [ngClass]=\"dateComparisonType ==='daily' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('daily')\">1D</span>\r\n <span class=\"mt-1 cursor-pointer fs-5 me-2\"\r\n [ngClass]=\"dateComparisonType ==='weekly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('weekly')\">1W</span>\r\n <span *ngIf=\"traxMonthlyComparisonData\" class=\"mt-1 cursor-pointer fs-5\"\r\n [ngClass]=\"dateComparisonType ==='monthly' ? 'text-primary' :''\"\r\n (click)=\"dateComparisonValueChange('monthly')\">1M</span>\r\n <!-- <div class=\"mt-1 cursor-pointer fs-5\" [ngClass]=\"dateType ==='monthly' ? 'text-primary' :''\" (click)=\"dateValue('monthly')\">1M</div> -->\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div class=\"row mt-3\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-4 px-4\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\"><span *ngIf=\"!['time','all'].includes(selectedFlag)\"\r\n class=\"me-3\">{{selectedFlag !== 'runAI' ? (selectedFlag | titlecase) : 'RunAI'}} Flags</span> <span\r\n *ngIf=\"['time','all'].includes(selectedFlag)\" class=\"me-3\">{{selectedFlag === 'all' ?\r\n 'Total Flags' : 'Not Sumbitted'}}</span> <span *ngIf=\"totalItems\"\r\n class=\"badge badge-light-primary \">{{totalItems}}\r\n total</span></span>\r\n <span class=\"text-sub mb-2\"> Based on {{ headerData?.date?.startDate | date: 'MMM d' }} - {{\r\n headerData?.date?.endDate | date: 'MMM d, y' }}\r\n </span>\r\n </h3>\r\n <div *ngIf=\"(flagsTableApiState | async) === 'loaded'\" class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon footfallsearch svg-icon-1 position-absolute ms-8\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input [formControl]=\"searchInput\" type=\"text\"\r\n class=\"form-control ps-14 ms-4 me-4 footfallsearch\" placeholder=\"Search\"\r\n autocomplete=\"off\" />\r\n <!-- <lib-reactive-select [formControl]=\"filterInput\" [idField]=\"'value'\"\r\n [nameField]=\"'label'\" [data]=\"filterValues\" class=\"w-100\">\r\n </lib-reactive-select> -->\r\n <button *ngIf=\"flagsTableData?.length\"\r\n [disabled]=\"(flagsTableApiState | async) === 'loading'\" type=\"button\"\r\n (click)=\"onFlagsTableExport()\" type=\"button\"\r\n class=\"btn-outline btn align-items-end text-nowrap invheader ms-4\">\r\n <!-- Export Icon -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </svg>\r\n <span class=\"ms-2\"></span> Export\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <ng-container *ngIf=\"(flagsTableApiState | async) === 'loaded' && flagsTableData?.length\">\r\n <div class=\"table-responsive px-4\">\r\n <table class=\"table text-nowrap bottom-border\">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('checkListName')\">Checklist Name\r\n <svg [ngClass]=\"sortColumName === 'checkListName' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'checkListName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('coverage')\">Coverage<svg\r\n [ngClass]=\"sortColumName === 'coverage' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'coverage' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('runAIQuestionCount')\" *ngIf=\"['runAI'].includes(selectedFlag)\">No of Questions<svg\r\n [ngClass]=\"sortColumName === 'runAIQuestionCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'runAIQuestionCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('assignedStores')\">Assigned\r\n Stores<svg\r\n [ngClass]=\"sortColumName === 'assignedStores' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'assignedStores' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('flaggedStores')\" *ngIf=\"!['runAI'].includes(selectedFlag)\">Flagged Stores\r\n <svg [ngClass]=\"sortColumName === 'flaggedStores' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flaggedStores' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('flags')\" *ngIf=\"['runAI'].includes(selectedFlag)\">Flags\r\n <svg [ngClass]=\"sortColumName === 'flags' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flags' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th *ngIf=\"['all','question'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('customQuestionFlagCount')\">{{selectedFlag === 'question'\r\n ? 'Flags' : 'Question Flags'}}<svg\r\n [ngClass]=\"sortColumName === 'customQuestionFlagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'customQuestionFlagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th *ngIf=\"['all'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('runAIFlag')\">Run AI Flags<svg\r\n [ngClass]=\"sortColumName === 'runAIFlag' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'runAIFlag' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th *ngIf=\"['all','time'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('customTimeFlagCount')\">{{selectedFlag === 'time' ?\r\n 'Flags' : 'Not Submitted Flags'}}<svg\r\n [ngClass]=\"sortColumName === 'customTimeFlagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'customTimeFlagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th *ngIf=\"['all','detection'].includes(selectedFlag)\" class=\"cursor-pointer\"\r\n (click)=\"sortData('flagCount')\">{{selectedFlag === 'detection' ? 'Detections' :\r\n 'Detection Flags'}}<svg\r\n [ngClass]=\"sortColumName === 'flagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <!-- <th style=\"width: 200px;\" class=\"cursor-pointer\" (click)=\"sortData('flagCount')\">Flagged<svg\r\n [ngClass]=\"sortColumName === 'flagCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'flagCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></th> -->\r\n <!-- <th *ngIf=\"selectedFlag === 'detection'\" class=\"cursor-pointer\" (click)=\"sortData('detectionCount')\">Detection Count<svg\r\n [ngClass]=\"sortColumName === 'detectionCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'detectionCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></th> -->\r\n <th class=\"cursor-pointer\" (click)=\"sortData('Compliance')\">Compliance %<svg\r\n [ngClass]=\"sortColumName === 'Compliance' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'Compliance' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <!-- *ngFor=\"let store of checklistPerformance\" -->\r\n <tr *ngFor=\"let data of flagsTableData\">\r\n <td>\r\n <div>\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n {{data?.checkListChar?.toUpperCase() || '--' }} </span>\r\n </div><span (click)=\"viewInDetail(data?.sourceCheckList_id)\"\r\n class=\"table-title-primary cursor-pointer\">{{data?.checkListName ?\r\n data?.checkListName : '--'}}</span> <span\r\n *ngIf=\"data?.checkListType !== 'custom'\" class=\"mx-2\">\u2728</span>\r\n </div>\r\n </td>\r\n \r\n <td class=\"table-title\">{{ data?.coverage ? data?.coverage : '--' }}</td>\r\n <td class=\"table-title\" *ngIf=\"['runAI'].includes(selectedFlag)\">{{ data?.runAIQuestionCount ? data?.runAIQuestionCount : 0 }}</td>\r\n <td class=\"table-title\">{{ data.checkListType === 'custom' ?\r\n ((data?.assignedStores || data?.assignedStores === 0) ? data?.assignedStores\r\n : '--') : ((data?.assignedStoresAi || data?.assignedStoresAi === 0) ?\r\n data?.assignedStoresAi : '--')}}</td>\r\n <td class=\"table-title\">{{ (data?.flaggedStores || data?.flaggedStores === 0) ?\r\n data?.flaggedStores : '--' }}</td>\r\n <td *ngIf=\"['all','question'].includes(selectedFlag)\" class=\"table-title\">{{\r\n data?.customQuestionFlagCount ?? '--' }}</td>\r\n <td *ngIf=\"['all'].includes(selectedFlag)\" class=\"table-title\">{{\r\n data?.runAIFlag ?? '--' }}</td>\r\n <td *ngIf=\"['all','time'].includes(selectedFlag)\" class=\"table-title\">{{\r\n data?.customTimeFlagCount ?? '--' }}</td>\r\n <td *ngIf=\"['all','detection'].includes(selectedFlag)\" class=\"table-title\">\r\n {{data?.checkListType === 'custom' ? 0 : (data?.flagCount ?? '--')}}\r\n </td>\r\n \r\n \r\n <!-- <td class=\"table-title-primary\"> \r\n\r\n <ng-container *ngIf=\"data?.checkListType === 'custom'\" >\r\n <div *ngIf=\"filterInput.value === 'all' || filterInput.value === 'question'\" class=\"d-flex justify-content-between mb-2\">\r\n <span class=\"cursor-pointer\" (click)=\"viewInDetail(data?.sourceCheckList_id, 'question')\" >{{(data?.customQuestionFlagCount || data?.customQuestionFlagCount === 0) ? data?.customQuestionFlagCount?.toLocaleString('en-IN') : '--'}} </span> \r\n <span class=\"badge badge-light-default mx-3\" >Questions</span> \r\n </div>\r\n\r\n <div *ngIf=\"filterInput.value === 'all' || filterInput.value === 'time'\" class=\"d-flex justify-content-between\">\r\n <span class=\"cursor-pointer\" (click)=\"viewInDetail(data?.sourceCheckList_id, 'time')\" >{{(data?.customTimeFlagCount || data?.customTimeFlagCount === 0) ? data?.customTimeFlagCount?.toLocaleString('en-IN') : '--'}} </span> \r\n <span class=\"badge badge-light-default mx-3\" >Not Submitted</span> \r\n </div> \r\n </ng-container> \r\n\r\n <div *ngIf=\"data?.checkListType !== 'custom'\" class=\"d-flex justify-content-between\">\r\n <span class=\"cursor-pointer\" (click)=\"viewInDetail(data?.sourceCheckList_id)\" >{{(data?.flagCount || data?.flagCount === 0) ? data?.flagCount?.toLocaleString('en-IN') : '--'}} </span> \r\n <span class=\"badge badge-light-default mx-3\" >Detections</span> \r\n </div>\r\n \r\n </td> -->\r\n <td class=\"table-title\">\r\n <div class=\"d-flex\">\r\n <div class=\"h-5px w-100 bg-light mt-4\">\r\n <div role=\"progressbar\" aria-valuemin=\"20\" aria-valuemax=\"100\"\r\n class=\"bg-primary rounded h-5px \"\r\n [style.width]=\"data?.complianceRate + '%'\"> </div>\r\n </div>\r\n <div class=\"text-end table-title\"><span class=\"my-1 mx-1 text-end\">\r\n {{data?.complianceRate?.toLocaleString('en-US', {\r\n minimumFractionDigits: 0 })\r\n || '--'}}%</span></div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <div (click)=\"viewInDetail(data?.sourceCheckList_id)\"\r\n class=\"table-title-primary cursor-pointer\">View</div>\r\n </div>\r\n </td>\r\n\r\n </tr>\r\n\r\n </tbody>\r\n </table>\r\n\r\n </div>\r\n <div *ngIf=\"(flagsTableApiState | async) === 'loaded' && flagsTableData?.length\">\r\n <lib-pagination [itemsPerPage]=\"itemsPerPage\" [currentPage]=\"currentPage\"\r\n [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"(flagsTableApiState | async) === 'loading' || (flagsTableApiState | async) === 'initial'\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(flagsTableApiState | async) === 'loaded' && !flagsTableData?.length\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 my-6\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Flags Table</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".ellipse1{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}.cardcount{color:var(--Black, #101828);font-size:30px;font-style:normal;font-weight:600;line-height:38px}.cardtext{color:var(--Gray-700, #344054);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.cardsubcount{color:var(--Black, #101828);font-size:20px;font-style:normal;font-weight:700;line-height:30px}.card-border{padding:8px;border-radius:12px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.percent-value{color:var(--Gray-500, #667085);text-align:center;font-size:16px;font-style:normal;font-weight:600;line-height:18px}.week-font{color:var(--Gray-800, #1D2939);font-size:12px;font-style:normal;font-weight:400;line-height:18px}.flagcard{padding:0 0 0 15%}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-size:14px;font-style:normal;font-weight:500!important;line-height:30px;text-decoration-line:underline}.table-title{color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500!important;line-height:20px}.rotate{rotate:180deg;transition:1s}td{vertical-align:middle}.inactive-card{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:#fff}.inactive-card .inactive-header{font-size:16px;font-weight:500;line-height:24px;border-radius:4px;padding:8px 16px;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#10182808),#f9fafb}.active-card{border-radius:8px;border:1px solid var(--Primary-300, #6BCAFF);background:var(--Primary-25, #F6FCFF)}.active-card .active-header{font-size:16px;font-weight:500;line-height:24px;border-radius:4px;padding:8px 16px;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f9fafb}.w-95{width:97%!important}.w-5{width:3%!important}\n"] }]
304
313
  }], ctorParameters: () => [{ type: i1.GlobalStateService }, { type: i0.ChangeDetectorRef }, { type: i2.TraxService }, { type: i3.Router }, { type: i1.PageInfoService }] });
305
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhZ3MtbmV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtdHJheC9zcmMvbGliL2NvbXBvbmVudHMvZmxhZ3MtbmV3L2ZsYWdzLW5ldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2ZsYWdzLW5ldy9mbGFncy1uZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFLL0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQU83QyxNQUFNLE9BQU8saUJBQWlCO0lBK0JUO0lBQWdDO0lBQTJDO0lBQWtDO0lBQXdCO0lBOUJoSixRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUN2QyxZQUFZLEdBQUcsRUFBRSxDQUFBO0lBQ2pCLFdBQVcsR0FBRyxDQUFDLENBQUE7SUFDZixVQUFVLEdBQUcsQ0FBQyxDQUFBO0lBQ2QsWUFBWSxHQUFRLEtBQUssQ0FBQztJQUMxQixXQUFXLEdBQVEsRUFBRSxDQUFDO0lBQ3RCLGVBQWUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDOUIsUUFBUSxHQUFHLEVBQUUsQ0FBQTtJQUNiLGFBQWEsR0FBRyxlQUFlLENBQUM7SUFDaEMsYUFBYSxHQUFHLENBQUMsQ0FBQztJQUNsQixVQUFVLENBQWtDO0lBQzVDLHlCQUF5QixHQUFRLEVBQUUsQ0FBQztJQUV0QyxDQUFDO0lBQ0Msa0JBQWtCLEdBQUcsSUFB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LFdBQVcsQ0FBQyxDQUFDO3FCQUNoQztvQkFDQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO2lCQUN2QztxQkFBTTtvQkFDTCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO2lCQUNuQztZQUNMLENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDWCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLENBQUM7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDO3dHQW5UWSxpQkFBaUI7NEZBQWpCLGlCQUFpQixxRENiOUIsK2c5REEydkJNOzs0RkQ5dUJPLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgZGVib3VuY2VUaW1lLCBCZWhhdmlvclN1YmplY3QsIHRha2VVbnRpbCwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UsIFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgeyBUcmF4U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYXguc2VydmljZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEhlYWRlckZpbHRlciwgRmxhZ3NUYWJsZURhdGEsIElGbGFnQ2FyZHMsIElGbGFnQ29tcGFyaXNvbkNhcmRzLCBGbGFnQ2FyZHNCeVR5cGUgfSBmcm9tICcuL2ZsYWdzLW5ldy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWZsYWdzLW5ldycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZsYWdzLW5ldy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2ZsYWdzLW5ldy5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEZsYWdzTmV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIGl0ZW1zUGVyUGFnZSA9IDEwXHJcbiAgY3VycmVudFBhZ2UgPSAwXHJcbiAgdG90YWxJdGVtcyA9IDBcclxuICBzZWxlY3RlZEZsYWc6IGFueSA9ICdhbGwnO1xyXG4gIHVzZXJFbWFpbGVzOiBhbnkgPSBbXTtcclxuICBwYWdpbmF0aW9uU2l6ZXMgPSBbMTAsIDIwLCAzMF1cclxuICBwYWdlU2l6ZSA9IDEwXHJcbiAgc29ydENvbHVtTmFtZSA9ICdjaGVja0xpc3ROYW1lJztcclxuICBzb3J0RGlyZWN0aW9uID0gMTtcclxuICBoZWFkZXJEYXRhOiBIZWFkZXJGaWx0ZXIgfCBudWxsIHwgdW5kZWZpbmVkO1xyXG4gIHRyYXhNb250aGx5Q29tcGFyaXNvbkRhdGE6IGFueSA9IFwiXCI7XHJcbiBcclxuO1xyXG4gIGZsYWdzVGFibGVBcGlTdGF0ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8J2luaXRpYWwnIHwgJ2xvYWRpbmcnIHwgJ2xvYWRlZCc+KCdpbml0aWFsJylcclxuICBmbGFnc1RhYmxlRGF0YTogRmxhZ3NUYWJsZURhdGFbXSA9IFtdXHJcbiAgY2FyZE1ldHJpY3NBcGlTdGF0ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8J2luaXRpYWwnIHwgJ2xvYWRpbmcnIHwgJ2xvYWRlZCc+KCdpbml0aWFsJylcclxuICBjYXJkTWV0cmljc0RhdGE6IElGbGFnQ2FyZHMgfCBudWxsIHwgdW5kZWZpbmVkXHJcbiAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YTogSUZsYWdDb21wYXJpc29uQ2FyZHMgfCBudWxsIHwgdW5kZWZpbmVkXHJcbiAgc2VhcmNoSW5wdXQ6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnKTtcclxuICBmaWx0ZXJJbnB1dDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJ2FsbCcpO1xyXG4gIGNhcmRNZXRyaWNzRGF0YUJ5VHlwZTogRmxhZ0NhcmRzQnlUeXBlIHwgbnVsbCB8IHVuZGVmaW5lZFxyXG4gIGZpbHRlclZhbHVlcyA9IFtcclxuICAgIHtsYWJlbDonQWxsJywgdmFsdWU6J2FsbCd9LFxyXG4gICAge2xhYmVsOidRdWVzdGlvbicsIHZhbHVlOidxdWVzdGlvbid9LFxyXG4gICAge2xhYmVsOidOb3QgU3VibWl0dGVkJywgdmFsdWU6J3RpbWUnfSxcclxuICAgIHtsYWJlbDonRGV0ZWN0aW9uJywgdmFsdWU6J2RldGVjdGlvbid9LFxyXG4gIF1cclxuICBkYXRlQ29tcGFyaXNvblR5cGU6ICdkYWlseScgfCAnd2Vla2x5JyB8ICdtb250aGx5JyA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLCBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSB0cmF4U2VydmljZTogVHJheFNlcnZpY2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgcGFnZUluZm86IFBhZ2VJbmZvU2VydmljZSkge1xyXG4gICAgdGhpcy51c2VyRW1haWxlcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ1c2Vyc0VtYWlsLWluZm9cIikgfHwgXCJbXVwiIClcclxuICAgIHRoaXMuc2VhcmNoSW5wdXQudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5waXBlKGRlYm91bmNlVGltZSgxMDAwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSkuc3Vic2NyaWJlKCh2YWwpID0+IHtcclxuICAgICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgID0gMFxyXG4gICAgICB0aGlzLmdldEZsYWdzVGFibGUoKVxyXG4gICAgfSlcclxuXHJcblxyXG4gICAgdGhpcy5maWx0ZXJJbnB1dC52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgodmFsKSA9PiB7XHJcbiAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlICA9IDBcclxuICAgICAgdGhpcy5nZXRGbGFnc1RhYmxlKClcclxuICAgIH0pXHJcblxyXG4gICAgY29uc3QgZGF0ZUNvbXBhcmlzb25UeXBlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2Rhc2hib2FyZERhdGVUeXBlJylcclxuICAgIGlmKGRhdGVDb21wYXJpc29uVHlwZSl7XHJcbiAgICAgIGlmKGRhdGVDb21wYXJpc29uVHlwZSA9PT0gJ2RhaWx5JyB8fCBkYXRlQ29tcGFyaXNvblR5cGUgPT09ICd3ZWVrbHknIHx8IGRhdGVDb21wYXJpc29uVHlwZSA9PT0gJ21vbnRobHknKXtcclxuICAgICAgICB0aGlzLmRhdGVDb21wYXJpc29uVHlwZSA9IGRhdGVDb21wYXJpc29uVHlwZVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB0aGlzLmRhdGVDb21wYXJpc29uVHlwZSA9ICdkYWlseSdcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZGFzaGJvYXJkRGF0ZVR5cGUnLCAnZGFpbHknKVxyXG4gICAgICB9XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5kYXRlQ29tcGFyaXNvblR5cGUgPSAnZGFpbHknXHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdkYXNoYm9hcmREYXRlVHlwZScsICdkYWlseScpXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWVcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTAwMCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhPy5jbGllbnQpIHtcclxuICAgICAgICAgIHRoaXMuaGVhZGVyRGF0YSA9IGRhdGE7XHJcbiAgICAgICAgICBpZiAodGhpcy5oZWFkZXJEYXRhPy5zdG9yZXM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmhlYWRlckRhdGEuc3RvcmVzID0gdGhpcy5oZWFkZXJEYXRhLnN0b3Jlcy5maWx0ZXIoKGRhdGE6IGFueSkgPT4gZGF0YT8uY2hlY2tlZClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY2hlY2tsaXN0Q291bnRCeVR5cGUoKVxyXG4gICAgICAgICAgdGhpcy5nZXRDaGVja2xpc3RGbGFnTWV0cmljcygpXHJcbiAgICAgICAgICB0aGlzLmdldENoZWNrbGlzdEZsYWdNZXRyaWNzQ29tcGFyaXNvbigpXHJcbiAgICAgICAgICB0aGlzLmdldEZsYWdzVGFibGUoKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5zZXRQYWdlRGF0YSgpXHJcbiAgfVxyXG5cclxuICBzZXRQYWdlRGF0YSgpIHtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0VGl0bGUoXCJGbGFnc1wiKTtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0RGVzY3JpcHRpb24oXCJcIik7XHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldEJyZWFkY3J1bWJzKFtcclxuICAgICAgLy8geyB0aXRsZTogXCJBbmFseXplXCIsIHBhdGg6IFwiL21hbmFnZS90cmF4L2Rhc2hib2FyZFwiLCBpc0FjdGl2ZTogZmFsc2UsIGlzU2VwYXJhdG9yOiBmYWxzZSB9LFxyXG4gICAgICAvLyB7IHRpdGxlOiBcIkFuYWx5emVcIiwgcGF0aDogXCIvbWFuYWdlL3RyYXgvZGFzaGJvYXJkXCIsIGlzQWN0aXZlOiBmYWxzZSwgaXNTZXBhcmF0b3I6IHRydWUgfSxcclxuICAgICAgeyB0aXRsZTogXCJUYW5nbyBUcmF4XCIsIHBhdGg6IFwiL21hbmFnZS90cmF4L2Rhc2hib2FyZFwiLCBpc0FjdGl2ZTogZmFsc2UsIGlzU2VwYXJhdG9yOiBmYWxzZSB9LFxyXG4gICAgICB7IHRpdGxlOiBcIlRhbmdvIFRyYXhcIiwgcGF0aDogXCIvbWFuYWdlL3RyYXgvZGFzaGJvYXJkXCIsIGlzQWN0aXZlOiBmYWxzZSwgaXNTZXBhcmF0b3I6IHRydWUgfSxcclxuICAgICAgLy8geyB0aXRsZTogXCJSZXBvcnRzXCIsIHBhdGg6IFwiL21hbmFnZS90cmF4L3JlcG9ydHNcIiwgaXNBY3RpdmU6IGZhbHNlLCBpc1NlcGFyYXRvcjogZmFsc2UgfSxcclxuICAgICAgLy8geyB0aXRsZTogXCJSZXBvcnRzXCIsIHBhdGg6IFwiL21hbmFnZS90cmF4L3JlcG9ydHNcIiwgaXNBY3RpdmU6IGZhbHNlLCBpc1NlcGFyYXRvcjogdHJ1ZSB9LFxyXG4gICAgXSk7XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIGdldENoZWNrbGlzdEZsYWdNZXRyaWNzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYXJkTWV0cmljc0FwaVN0YXRlLm5leHQoJ2xvYWRpbmcnKVxyXG4gICAgY29uc3QgZGF0YTogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcclxuICAgICAgXCJjbGllbnRJZFwiOiB0aGlzLmhlYWRlckRhdGE/LmNsaWVudCxcclxuICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuc3RhcnREYXRlLFxyXG4gICAgICBcInRvRGF0ZVwiOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuZW5kRGF0ZSxcclxuICAgICAgXCJzdG9yZUlkXCI6IHRoaXMuaGVhZGVyRGF0YT8uc3RvcmVzLm1hcCgodmFsOiB7IHN0b3JlSWQ6IHN0cmluZywgc3RvcmVOYW1lOiBzdHJpbmcgfSkgPT4gdmFsLnN0b3JlSWQpLFxyXG4gICAgICBcInVzZXJFbWFpbGVzXCI6IHRoaXMudXNlckVtYWlsZXNcclxuICAgIH1cclxuXHJcblxyXG4gICAgdGhpcy50cmF4U2VydmljZS5vdmVyYWxsRmxhZ01ldHJpY3MoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLmNhcmRNZXRyaWNzQXBpU3RhdGUubmV4dCgnbG9hZGVkJylcclxuICAgICAgICBpZiAocmVzPy5kYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLmNhcmRNZXRyaWNzRGF0YSA9IHJlcy5kYXRhXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuY2FyZE1ldHJpY3NEYXRhID0gbnVsbFxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZSk7XHJcblxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0Q2hlY2tsaXN0RmxhZ01ldHJpY3NDb21wYXJpc29uKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZGF0YTogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcclxuICAgICAgXCJjbGllbnRJZFwiOiB0aGlzLmhlYWRlckRhdGE/LmNsaWVudCxcclxuICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuc3RhcnREYXRlLFxyXG4gICAgICBcInRvRGF0ZVwiOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuZW5kRGF0ZSxcclxuICAgICAgXCJzdG9yZUlkXCI6IHRoaXMuaGVhZGVyRGF0YT8uc3RvcmVzLm1hcCgodmFsOiB7IHN0b3JlSWQ6IHN0cmluZywgc3RvcmVOYW1lOiBzdHJpbmcgfSkgPT4gdmFsLnN0b3JlSWQpLFxyXG4gICAgICBcInVzZXJFbWFpbGVzXCI6IHRoaXMudXNlckVtYWlsZXMsXHJcbiAgICAgIFwiZGF0ZVR5cGVcIjogdGhpcy5kYXRlQ29tcGFyaXNvblR5cGVcclxuICAgIH1cclxuXHJcblxyXG4gICAgdGhpcy50cmF4U2VydmljZS5vdmVyYWxsRmxhZ01ldHJpY3NDb21wYXJpc29uKGRhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcz8uZGF0YSkge1xyXG4gICAgICAgICAgdGhpcy5jYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhID0gcmVzLmRhdGFcclxuICAgICAgICAgIGlmICh0aGlzLnRyYXhNb250aGx5Q29tcGFyaXNvbkRhdGEgPT0gJycpIHtcclxuICAgICAgICAgICAgdGhpcy50cmF4TW9udGhseUNvbXBhcmlzb25EYXRhID0gdGhpcy5jYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzLnRyYXhNb250aGx5Q29tcGFyaXNvblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGEgPSBudWxsXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGUpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlKTtcclxuXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXRGbGFnc1RhYmxlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mbGFnc1RhYmxlQXBpU3RhdGUubmV4dCgnbG9hZGluZycpXHJcbiAgICBjb25zdCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xyXG4gICAgICBcImNsaWVudElkXCI6IHRoaXMuaGVhZGVyRGF0YT8uY2xpZW50LFxyXG4gICAgICBcInN0b3JlSWRcIjogdGhpcy5oZWFkZXJEYXRhPy5zdG9yZXMubWFwKCh2YWw6IHsgc3RvcmVJZDogc3RyaW5nLCBzdG9yZU5hbWU6IHN0cmluZyB9KSA9PiB2YWwuc3RvcmVJZCksXHJcbiAgICAgIFwidXNlckVtYWlsZXNcIjogdGhpcy51c2VyRW1haWxlcyxcclxuICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuc3RhcnREYXRlLFxyXG4gICAgICBcInRvRGF0ZVwiOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuZW5kRGF0ZSxcclxuICAgICAgXCJsaW1pdFwiOiB0aGlzLnBhZ2VTaXplLFxyXG4gICAgICBcIm9mZnNldFwiOiB0aGlzLmN1cnJlbnRQYWdlID4gMCA/IHRoaXMuY3VycmVudFBhZ2UgLSAxIDogMCxcclxuICAgICAgXCJzb3J0Q29sdW1uTmFtZVwiOiB0aGlzLnNvcnRDb2x1bU5hbWUsXHJcbiAgICAgIFwic29ydEJ5XCI6IHRoaXMuc29ydERpcmVjdGlvbixcclxuICAgICAgXCJzZWFyY2hWYWx1ZVwiOnRoaXMuc2VhcmNoSW5wdXQudmFsdWUsXHJcbiAgICAgIFwiZmlsdGVyXCI6dGhpcy5zZWxlY3RlZEZsYWdcclxuICAgIH1cclxuXHJcblxyXG4gICAgdGhpcy50cmF4U2VydmljZS5mbGFnc1RhYmxlVjIoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLmZsYWdzVGFibGVBcGlTdGF0ZS5uZXh0KCdsb2FkZWQnKVxyXG4gICAgICAgIGlmIChyZXM/LmRhdGE/LnRvdGFsQ291bnQpIHtcclxuICAgICAgICAgIHRoaXMudG90YWxJdGVtcyA9IHJlcy5kYXRhLnRvdGFsQ291bnRcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gMFxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocmVzPy5kYXRhPy5jaGVja2xpc3RQZXJmb3JtYW5jZSkge1xyXG4gICAgICAgICAgdGhpcy5mbGFnc1RhYmxlRGF0YSA9IHJlcy5kYXRhLmNoZWNrbGlzdFBlcmZvcm1hbmNlXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZmxhZ3NUYWJsZURhdGEgPSBbXVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5mbGFnc1RhYmxlQXBpU3RhdGUubmV4dCgnbG9hZGVkJylcclxuXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBvbkZsYWdzVGFibGVFeHBvcnQoKTogdm9pZCB7XHJcbiAgICAvLyB0aGlzLmZsYWdzVGFibGVBcGlTdGF0ZS5uZXh0KCdsb2FkaW5nJylcclxuICAgIGNvbnN0IGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XHJcbiAgICAgIFwiY2xpZW50SWRcIjogdGhpcy5oZWFkZXJEYXRhPy5jbGllbnQsXHJcbiAgICAgIFwic3RvcmVJZFwiOiB0aGlzLmhlYWRlckRhdGE/LnN0b3Jlcy5tYXAoKHZhbDogeyBzdG9yZUlkOiBzdHJpbmcsIHN0b3JlTmFtZTogc3RyaW5nIH0pID0+IHZhbC5zdG9yZUlkKSxcclxuICAgICAgXCJ1c2VyRW1haWxlc1wiOiB0aGlzLnVzZXJFbWFpbGVzLFxyXG4gICAgICBcImZyb21EYXRlXCI6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZS5zdGFydERhdGUsXHJcbiAgICAgIFwidG9EYXRlXCI6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZS5lbmREYXRlLFxyXG4gICAgICBcImxpbWl0XCI6IHRoaXMucGFnZVNpemUsXHJcbiAgICAgIFwib2Zmc2V0XCI6IHRoaXMuY3VycmVudFBhZ2UgPiAwID8gdGhpcy5jdXJyZW50UGFnZSAtIDEgOiAwLFxyXG4gICAgICBcInNvcnRDb2x1bW5OYW1lXCI6IHRoaXMuc29ydENvbHVtTmFtZSxcclxuICAgICAgXCJzb3J0QnlcIjogdGhpcy5zb3J0RGlyZWN0aW9uLFxyXG4gICAgICBcInNlYXJjaFZhbHVlXCI6dGhpcy5zZWFyY2hJbnB1dC52YWx1ZSxcclxuICAgICAgLy8gXCJmaWx0ZXJcIjp0aGlzLmZpbHRlcklucHV0LnZhbHVlLFxyXG4gICAgICBcImZpbHRlclwiOnRoaXMuc2VsZWN0ZWRGbGFnLFxyXG4gICAgICBcImV4cG9ydFwiOnRydWVcclxuICAgIH1cclxuXHJcblxyXG4gICAgdGhpcy50cmF4U2VydmljZS5leHBvcnRGbGFnc1RhYmxldjIoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLmZsYWdzVGFibGVBcGlTdGF0ZS5uZXh0KCdsb2FkZWQnKVxyXG4gICAgICAgIHRoaXMudHJheFNlcnZpY2Uuc2F2ZUFzRXhjZWxGaWxlKHJlcywgYCR7dGhpcy5zZWxlY3RlZEZsYWcuY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHt0aGlzLnNlbGVjdGVkRmxhZy5zbGljZSgxKX0gZmxhZ19gKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG5cclxuICBzb3J0RGF0YShjb2x1bW46IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc29ydENvbHVtTmFtZSA9PT0gY29sdW1uKSB7XHJcbiAgICAgIHRoaXMuc29ydERpcmVjdGlvbiA9IHRoaXMuc29ydERpcmVjdGlvbiA9PT0gMSA/IC0xIDogMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc29ydENvbHVtTmFtZSA9IGNvbHVtbjtcclxuICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uID0gMTtcclxuICAgIH1cclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5nZXRGbGFnc1RhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBvblBhZ2VTaXplQ2hhbmdlKHBhZ2VTaXplOiBhbnkpIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgdGhpcy5pdGVtc1BlclBhZ2UgPSBwYWdlU2l6ZTtcclxuICAgIHRoaXMucGFnZVNpemUgPSBwYWdlU2l6ZTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5nZXRGbGFnc1RhYmxlKClcclxuICB9XHJcblxyXG4gIG9uUGFnZUNoYW5nZShwYWdlT2Zmc2V0OiBhbnkpIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlT2Zmc2V0XHJcbiAgICB0aGlzLmdldEZsYWdzVGFibGUoKVxyXG4gIH1cclxuXHJcbiAgdmlld0luRGV0YWlsKGNoZWNrbGlzdElkOiBzdHJpbmcgfCB1bmRlZmluZWQsIHR5cGU/OiAncXVlc3Rpb24nIHwgJ3RpbWUnICkge1xyXG4gICAgaWYoIWNoZWNrbGlzdElkKXtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgcm91dGUgID0gYC9tYW5hZ2UvdHJheC9mbGFncy9mbGFnc2luZm8/aWQ9JHtjaGVja2xpc3RJZH1gXHJcblxyXG4gICAgaWYodHlwZSl7XHJcbiAgICAgIHJvdXRlID0gcm91dGUgKyBgJnR5cGU9JHt0eXBlfWBcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHJvdXRlKVxyXG4gIH1cclxuXHJcbiAgZGF0ZUNvbXBhcmlzb25WYWx1ZUNoYW5nZSh2YWw6J2RhaWx5JyB8ICd3ZWVrbHknIHwgJ21vbnRobHknICl7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZGFzaGJvYXJkRGF0ZVR5cGUnLCB2YWwpXHJcbiAgICB0aGlzLmRhdGVDb21wYXJpc29uVHlwZSA9IHZhbFxyXG4gICAgdGhpcy5jYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhID0gbnVsbFxyXG4gICAgdGhpcy5nZXRDaGVja2xpc3RGbGFnTWV0cmljc0NvbXBhcmlzb24oKVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0VGFicyhmbGFnOmFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEZsYWcgPSBmbGFnO1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSAgPSAwXHJcbiAgICB0aGlzLmdldEZsYWdzVGFibGUoKVxyXG4gIH1cclxuXHJcbiAgY2hlY2tsaXN0Q291bnRCeVR5cGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhcmRNZXRyaWNzQXBpU3RhdGUubmV4dCgnbG9hZGluZycpO1xyXG4gICAgY29uc3QgZGF0YTogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcclxuICAgICAgICBcImNsaWVudElkXCI6IHRoaXMuaGVhZGVyRGF0YT8uY2xpZW50LFxyXG4gICAgICAgIFwiZnJvbURhdGVcIjogdGhpcy5oZWFkZXJEYXRhPy5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgICAgICBcInRvRGF0ZVwiOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuZW5kRGF0ZSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy50cmF4U2VydmljZS5jaGVja2xpc3RDb3VudEJ5VHlwZShkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY2FyZE1ldHJpY3NBcGlTdGF0ZS5uZXh0KCdsb2FkZWQnKTtcclxuICAgICAgICAgICAgaWYgKHJlcz8uY29kZSA9PT0gMjAwICYmIHJlcz8uc3RhdHVzID09PSBcInN1Y2Nlc3NcIiAmJiByZXM/LmRhdGEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2FyZE1ldHJpY3NEYXRhQnlUeXBlID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGFpQ2hlY2tsaXN0Q291bnQ6IHJlcy5kYXRhLmFpQ2hlY2tsaXN0Q291bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgY3VzdG9tQ2hlY2tsaXN0Q291bnQ6IHJlcy5kYXRhLmN1c3RvbUNoZWNrbGlzdENvdW50LFxyXG4gICAgICAgICAgICAgICAgICAgIHNob3dDYXJkczogcmVzLmRhdGEuc2hvd0NhcmRzXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2FyZE1ldHJpY3NEYXRhQnlUeXBlLnNob3dDYXJkcyA9PT0gJ2FpQ2FyZHMnKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0VGFicygnZGV0ZWN0aW9uJyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jYXJkTWV0cmljc0RhdGFCeVR5cGUgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGUpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59XHJcbn1cclxuXHJcbiIsIjxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8IS0tYWxsQ2FyZHMgLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhcmRNZXRyaWNzRGF0YUJ5VHlwZT8uc2hvd0NhcmRzID09PSAnYWxsQ2FyZHMnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInctOTVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB0LTIgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0yNSBjdXJzb3ItcG9pbnRlciBwZS0zXCIgKGNsaWNrKT1cInNlbGVjdFRhYnMoJ2FsbCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J2FsbCcgPyAnYWN0aXZlLWNhcmQnIDogJ2luYWN0aXZlLWNhcmQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdhbGwnID8gJ2FjdGl2ZS1oZWFkZXInIDogJ2luYWN0aXZlLWhlYWRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb3RhbCBGbGFnc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkc3ViY291bnQgbWUtM1wiPnt7KGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy50b3RhbEZsYWcgPT09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy50b3RhbEZsYWcpID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy50b3RhbEZsYWc/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpIDogJy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy50b3RhbENvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy50b3RhbENvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCI4XCIgdmlld0JveD1cIjAgMCAxMyA4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEuODMyIDFMNy4wODIwMyA1Ljc1TDQuNTgyMDMgMy4yNUwwLjgzMjAzMSA3TTExLjgzMiAxSDguODMyMDNNMTEuODMyIDFWNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnRvdGFsQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIiBjbGFzcz1cIm5nLXN0YXItaW5zZXJ0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIzMjhfNDY1NClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDlMNi43NSA0LjI1TDQuMjUgNi43NUwwLjUgM00xMS41IDlIOC41TTExLjUgOVY2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjMyOF80NjU0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPVwibXQtMlwiPjxzcGFuIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7KGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnRvdGFsQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy50b3RhbENvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8udG90YWxDb21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGE/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlPC9zcGFuPjxzcGFuIGNsYXNzPVwid2Vlay1mb250XCI+IHZzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCB7e2RhdGVDb21wYXJpc29uVHlwZSA9PT0gJ3dlZWtseScgPyAnd2VlaycgOiBkYXRlQ29tcGFyaXNvblR5cGUgPT09ICdtb250aGx5JyA/ICdtb250aCcgOiAnZGF5J319PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0yNSBjdXJzb3ItcG9pbnRlciBwZS0zXCIgKGNsaWNrKT1cInNlbGVjdFRhYnMoJ3F1ZXN0aW9uJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0ncXVlc3Rpb24nID8gJ2FjdGl2ZS1jYXJkJyA6ICdpbmFjdGl2ZS1jYXJkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0ncXVlc3Rpb24nID8gJ2FjdGl2ZS1oZWFkZXInIDogJ2luYWN0aXZlLWhlYWRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbiBGbGFnc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZHN1YmNvdW50IG15LTIgbWUtM1wiPnt7KGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5xdWVzdGlvbkZsYWc/LmNvdW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnF1ZXN0aW9uRmxhZz8uY291bnQpID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5xdWVzdGlvbkZsYWc/LmNvdW50Py50b0xvY2FsZVN0cmluZygnZW4tSU4nKSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnF1ZXN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMiBtZS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucXVlc3Rpb25Db21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiOFwiIHZpZXdCb3g9XCIwIDAgMTMgOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjgzMiAxTDcuMDgyMDMgNS43NUw0LjU4MjAzIDMuMjVMMC44MzIwMzEgN00xMS44MzIgMUg4LjgzMjAzTTExLjgzMiAxVjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5xdWVzdGlvbkNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCIgY2xhc3M9XCJuZy1zdGFyLWluc2VydGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz1cIm10LTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5xdWVzdGlvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucXVlc3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnF1ZXN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhPy50b0xvY2FsZVN0cmluZygnZW4tSU4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJTwvc3Bhbj48c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPiB2c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Qge3tkYXRlQ29tcGFyaXNvblR5cGUgPT09ICd3ZWVrbHknID8gJ3dlZWsnIDogZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnbW9udGhseScgPyAnbW9udGgnIDogJ2RheSd9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMjUgY3Vyc29yLXBvaW50ZXIgcGUtM1wiIChjbGljayk9XCJzZWxlY3RUYWJzKCd0aW1lJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0ndGltZScgPyAnYWN0aXZlLWNhcmQnIDogJ2luYWN0aXZlLWNhcmQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSd0aW1lJyA/ICdhY3RpdmUtaGVhZGVyJyA6ICdpbmFjdGl2ZS1oZWFkZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90IFN1Ym1pdHRlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZHN1YmNvdW50IG1lLTNcIj57eyhjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8uZGVsYXlJblN1Ym1pc3Npb24/LmNvdW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uPy5jb3VudCkgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uPy5jb3VudD8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZWxheUluU3VibWlzc2lvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZWxheUluU3VibWlzc2lvbkNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCI4XCIgdmlld0JveD1cIjAgMCAxMyA4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEuODMyIDFMNy4wODIwMyA1Ljc1TDQuNTgyMDMgMy4yNUwwLjgzMjAzMSA3TTExLjgzMiAxSDguODMyMDNNMTEuODMyIDFWNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIiBjbGFzcz1cIm5nLXN0YXItaW5zZXJ0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIzMjhfNDY1NClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDlMNi43NSA0LjI1TDQuMjUgNi43NUwwLjUgM00xMS41IDlIOC41TTExLjUgOVY2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjMyOF80NjU0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPVwibXQtMlwiPjxzcGFuIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7KGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZWxheUluU3VibWlzc2lvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGVsYXlJblN1Ym1pc3Npb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGE/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlPC9zcGFuPjxzcGFuIGNsYXNzPVwid2Vlay1mb250XCI+IHZzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCB7e2RhdGVDb21wYXJpc29uVHlwZSA9PT0gJ3dlZWtseScgPyAnd2VlaycgOiBkYXRlQ29tcGFyaXNvblR5cGUgPT09ICdtb250aGx5JyA/ICdtb250aCcgOiAnZGF5J319PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0yNSBjdXJzb3ItcG9pbnRlciBwZS0zXCIgKGNsaWNrKT1cInNlbGVjdFRhYnMoJ2RldGVjdGlvbicpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J2RldGVjdGlvbicgPyAnYWN0aXZlLWNhcmQnIDogJ2luYWN0aXZlLWNhcmQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdkZXRlY3Rpb24nID8gJ2FjdGl2ZS1oZWFkZXInIDogJ2luYWN0aXZlLWhlYWRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXRlY3Rpb24gRmxhZ3NcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZHN1YmNvdW50IG1lLTNcIj57eyhjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8uZGV0ZWN0aW9uRmxhZz8uY291bnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8uZGV0ZWN0aW9uRmxhZz8uY291bnQpID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5kZXRlY3Rpb25GbGFnPy5jb3VudD8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJykgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZXRlY3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGV0ZWN0aW9uQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjhcIiB2aWV3Qm94PVwiMCAwIDEzIDhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMS44MzIgMUw3LjA4MjAzIDUuNzVMNC41ODIwMyAzLjI1TDAuODMyMDMxIDdNMTEuODMyIDFIOC44MzIwM00xMS44MzIgMVY0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGV0ZWN0aW9uQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIiBjbGFzcz1cIm5nLXN0YXItaW5zZXJ0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIzMjhfNDY1NClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDlMNi43NSA0LjI1TDQuMjUgNi43NUwwLjUgM00xMS41IDlIOC41TTExLjUgOVY2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjMyOF80NjU0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPVwibXQtMlwiPjxzcGFuIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7KGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRldGVjdGlvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGV0ZWN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZXRlY3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGE/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlPC9zcGFuPjxzcGFuIGNsYXNzPVwid2Vlay1mb250XCI+IHZzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCB7e2RhdGVDb21wYXJpc29uVHlwZSA9PT0gJ3dlZWtseScgPyAnd2VlaycgOiBkYXRlQ29tcGFyaXNvblR5cGUgPT09ICdtb250aGx5JyA/ICdtb250aCcgOiAnZGF5J319PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8IS0tIGN1c3RvbUNoZWNrbGlzdENvdW50ID4gMSAmIGFpQ2hlY2tsaXN0Q291bnQgPiAwIHNob3cgMyBjYXJkcyAtLT5cclxuICAgICAgICA8IS0tIGN1c3RvbUNhcmRzIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYXJkTWV0cmljc0RhdGFCeVR5cGU/LnNob3dDYXJkcyA9PT0gJ2N1c3RvbUNhcmRzJ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LTk1XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdC0yIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgY3Vyc29yLXBvaW50ZXIgcGUtM1wiIChjbGljayk9XCJzZWxlY3RUYWJzKCdhbGwnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdhbGwnID8gJ2FjdGl2ZS1jYXJkJyA6ICdpbmFjdGl2ZS1jYXJkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0nYWxsJyA/ICdhY3RpdmUtaGVhZGVyJyA6ICdpbmFjdGl2ZS1oZWFkZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG90YWwgRmxhZ3NcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZHN1YmNvdW50IG1lLTNcIj57eyhjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8udG90YWxGbGFnID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8udG90YWxGbGFnKSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8udG90YWxGbGFnPy50b0xvY2FsZVN0cmluZygnZW4tSU4nKSA6ICctLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8udG90YWxDb21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8udG90YWxDb21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiOFwiIHZpZXdCb3g9XCIwIDAgMTMgOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjgzMiAxTDcuMDgyMDMgNS43NUw0LjU4MjAzIDMuMjVMMC44MzIwMzEgN00xMS44MzIgMUg4LjgzMjAzTTExLjgzMiAxVjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy50b3RhbENvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCIgY2xhc3M9XCJuZy1zdGFyLWluc2VydGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMjhfNDY1NFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3BhbiBjbGFzcz1cIm10LTJcIj48c3BhbiBjbGFzcz1cInBlcmNlbnQtdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy50b3RhbENvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8udG90YWxDb21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnRvdGFsQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhPy50b0xvY2FsZVN0cmluZygnZW4tSU4nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJTwvc3Bhbj48c3BhbiBjbGFzcz1cIndlZWstZm9udFwiPiB2c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Qge3tkYXRlQ29tcGFyaXNvblR5cGUgPT09ICd3ZWVrbHknID8gJ3dlZWsnIDogZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnbW9udGhseScgPyAnbW9udGgnIDogJ2RheSd9fTwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IGN1cnNvci1wb2ludGVyIHBlLTNcIiAoY2xpY2spPVwic2VsZWN0VGFicygncXVlc3Rpb24nKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdxdWVzdGlvbicgPyAnYWN0aXZlLWNhcmQnIDogJ2luYWN0aXZlLWNhcmQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdxdWVzdGlvbicgPyAnYWN0aXZlLWhlYWRlcicgOiAnaW5hY3RpdmUtaGVhZGVyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uIEZsYWdzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkc3ViY291bnQgbXktMiBtZS0zXCI+e3soY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnF1ZXN0aW9uRmxhZz8uY291bnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucXVlc3Rpb25GbGFnPy5jb3VudCkgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnF1ZXN0aW9uRmxhZz8uY291bnQ/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucXVlc3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC0yIG1lLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5xdWVzdGlvbkNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCI4XCIgdmlld0JveD1cIjAgMCAxMyA4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEuODMyIDFMNy4wODIwMyA1Ljc1TDQuNTgyMDMgMy4yNUwwLjgzMjAzMSA3TTExLjgzMiAxSDguODMyMDNNMTEuODMyIDFWNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnF1ZXN0aW9uQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIiBjbGFzcz1cIm5nLXN0YXItaW5zZXJ0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIzMjhfNDY1NClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDlMNi43NSA0LjI1TDQuMjUgNi43NUwwLjUgM00xMS41IDlIOC41TTExLjUgOVY2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjMyOF80NjU0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPVwibXQtMlwiPjxzcGFuIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7KGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnF1ZXN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5xdWVzdGlvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucXVlc3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGE/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlPC9zcGFuPjxzcGFuIGNsYXNzPVwid2Vlay1mb250XCI+IHZzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCB7e2RhdGVDb21wYXJpc29uVHlwZSA9PT0gJ3dlZWtseScgPyAnd2VlaycgOiBkYXRlQ29tcGFyaXNvblR5cGUgPT09ICdtb250aGx5JyA/ICdtb250aCcgOiAnZGF5J319PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgY3Vyc29yLXBvaW50ZXIgcGUtM1wiIChjbGljayk9XCJzZWxlY3RUYWJzKCd0aW1lJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0ndGltZScgPyAnYWN0aXZlLWNhcmQnIDogJ2luYWN0aXZlLWNhcmQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSd0aW1lJyA/ICdhY3RpdmUtaGVhZGVyJyA6ICdpbmFjdGl2ZS1oZWFkZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90IFN1Ym1pdHRlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZHN1YmNvdW50IG1lLTNcIj57eyhjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8uZGVsYXlJblN1Ym1pc3Npb24/LmNvdW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uPy5jb3VudCkgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uPy5jb3VudD8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZWxheUluU3VibWlzc2lvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZWxheUluU3VibWlzc2lvbkNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCI4XCIgdmlld0JveD1cIjAgMCAxMyA4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEuODMyIDFMNy4wODIwMyA1Ljc1TDQuNTgyMDMgMy4yNUwwLjgzMjAzMSA3TTExLjgzMiAxSDguODMyMDNNMTEuODMyIDFWNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIiBjbGFzcz1cIm5nLXN0YXItaW5zZXJ0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIzMjhfNDY1NClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDlMNi43NSA0LjI1TDQuMjUgNi43NUwwLjUgM00xMS41IDlIOC41TTExLjUgOVY2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjMyOF80NjU0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPVwibXQtMlwiPjxzcGFuIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7KGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZWxheUluU3VibWlzc2lvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGVsYXlJblN1Ym1pc3Npb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGE/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlPC9zcGFuPjxzcGFuIGNsYXNzPVwid2Vlay1mb250XCI+IHZzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCB7e2RhdGVDb21wYXJpc29uVHlwZSA9PT0gJ3dlZWtseScgPyAnd2VlaycgOiBkYXRlQ29tcGFyaXNvblR5cGUgPT09ICdtb250aGx5JyA/ICdtb250aCcgOiAnZGF5J319PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FyZE1ldHJpY3NEYXRhQnlUeXBlPy5zaG93Q2FyZHMgPT09ICdhbGxDYXJkcycgfHwgY2FyZE1ldHJpY3NEYXRhQnlUeXBlPy5zaG93Q2FyZHMgPT09ICdjdXN0b21DYXJkcydcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidy01IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IG10LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIHRleHQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG1lLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTEgY3Vyc29yLXBvaW50ZXIgZnMtNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJkYXRlQ29tcGFyaXNvblR5cGUgPT09J2RhaWx5JyA/ICd0ZXh0LXByaW1hcnknIDonJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGF0ZUNvbXBhcmlzb25WYWx1ZUNoYW5nZSgnZGFpbHknKVwiPjFEPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0xIGN1cnNvci1wb2ludGVyIGZzLTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGF0ZUNvbXBhcmlzb25UeXBlID09PSd3ZWVrbHknID8gJ3RleHQtcHJpbWFyeScgOicnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkYXRlQ29tcGFyaXNvblZhbHVlQ2hhbmdlKCd3ZWVrbHknKVwiPjFXPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgICpuZ0lmPVwidHJheE1vbnRobHlDb21wYXJpc29uRGF0YVwiIGNsYXNzPVwibXQtMSBjdXJzb3ItcG9pbnRlciBmcy01XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRhdGVDb21wYXJpc29uVHlwZSA9PT0nbW9udGhseScgPyAndGV4dC1wcmltYXJ5JyA6JydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRhdGVDb21wYXJpc29uVmFsdWVDaGFuZ2UoJ21vbnRobHknKVwiPjFNPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiAgY2xhc3M9XCJtdC0xIGN1cnNvci1wb2ludGVyIGZzLTVcIiAgW25nQ2xhc3NdPVwiZGF0ZVR5cGUgPT09J21vbnRobHknID8gJ3RleHQtcHJpbWFyeScgOicnXCIgIChjbGljayk9XCJkYXRlVmFsdWUoJ21vbnRobHknKVwiPjFNPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBjdXN0b21DaGVja2xpc3RDb3VudCA+IDAgJiBhaUNoZWNrbGlzdENvdW50ID4gMSBzaG93IHNpbmdsZSBjYXJkcyAtLT5cclxuICAgIDwhLS0gYWlDYXJkcyAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYXJkTWV0cmljc0RhdGFCeVR5cGU/LnNob3dDYXJkcyA9PT0gJ2FpQ2FyZHMnXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbXQtMyBjdXJzb3ItcG9pbnRlciBwZS0zXCIgKGNsaWNrKT1cInNlbGVjdFRhYnMoJ2RldGVjdGlvbicpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J2RldGVjdGlvbicgPyAnYWN0aXZlLWNhcmQnIDogJ2luYWN0aXZlLWNhcmQnXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdkZXRlY3Rpb24nID8gJ2FjdGl2ZS1oZWFkZXInIDogJ2luYWN0aXZlLWhlYWRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICBEZXRlY3Rpb24gRmxhZ3NcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMyByb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMiBjb2wtMTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkc3ViY291bnQgbWUtM1wiPnt7KGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5kZXRlY3Rpb25GbGFnPy5jb3VudCA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LmRldGVjdGlvbkZsYWc/LmNvdW50KSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8uZGV0ZWN0aW9uRmxhZz8uY291bnQ/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpIDogJy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZXRlY3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGV0ZWN0aW9uQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjhcIiB2aWV3Qm94PVwiMCAwIDEzIDhcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuODMyIDFMNy4wODIwMyA1Ljc1TDQuNTgyMDMgMy4yNUwwLjgzMjAzMSA3TTExLjgzMiAxSDguODMyMDNNMTEuODMyIDFWNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRldGVjdGlvbkNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCIgY2xhc3M9XCJuZy1zdGFyLWluc2VydGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiIHN0cm9rZT1cIiNEOTJEMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjMyOF80NjU0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPVwibXQtMlwiPjxzcGFuIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7KGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRldGVjdGlvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGV0ZWN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZXRlY3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGE/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlPC9zcGFuPjxzcGFuIGNsYXNzPVwid2Vlay1mb250XCI+IHZzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCB7e2RhdGVDb21wYXJpc29uVHlwZSA9PT0gJ3dlZWtseScgPyAnd2VlaycgOiBkYXRlQ29tcGFyaXNvblR5cGUgPT09ICdtb250aGx5JyA/ICdtb250aCcgOiAnZGF5J319PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTEgY3Vyc29yLXBvaW50ZXIgZnMtNSBteC0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRhdGVDb21wYXJpc29uVHlwZSA9PT0nZGFpbHknID8gJ3RleHQtcHJpbWFyeScgOicnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkYXRlQ29tcGFyaXNvblZhbHVlQ2hhbmdlKCdkYWlseScpXCI+MUQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMSBjdXJzb3ItcG9pbnRlciBmcy01IG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGF0ZUNvbXBhcmlzb25UeXBlID09PSd3ZWVrbHknID8gJ3RleHQtcHJpbWFyeScgOicnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkYXRlQ29tcGFyaXNvblZhbHVlQ2hhbmdlKCd3ZWVrbHknKVwiPjFXPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAgKm5nSWY9XCJ0cmF4TW9udGhseUNvbXBhcmlzb25EYXRhXCIgY2xhc3M9XCJtdC0xIGN1cnNvci1wb2ludGVyIGZzLTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGF0ZUNvbXBhcmlzb25UeXBlID09PSdtb250aGx5JyA/ICd0ZXh0LXByaW1hcnknIDonJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGF0ZUNvbXBhcmlzb25WYWx1ZUNoYW5nZSgnbW9udGhseScpXCI+MU08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiAgY2xhc3M9XCJtdC0xIGN1cnNvci1wb2ludGVyIGZzLTVcIiAgW25nQ2xhc3NdPVwiZGF0ZVR5cGUgPT09J21vbnRobHknID8gJ3RleHQtcHJpbWFyeScgOicnXCIgIChjbGljayk9XCJkYXRlVmFsdWUoJ21vbnRobHknKVwiPjFNPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtM1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC00IHB4LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC1sYWJlbCBtYi0yXCI+PHNwYW4gKm5nSWY9XCIhWyd0aW1lJywnYWxsJ10uaW5jbHVkZXMoc2VsZWN0ZWRGbGFnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZS0zXCI+e3tzZWxlY3RlZEZsYWcgfCB0aXRsZWNhc2V9fSBGbGFnczwvc3Bhbj4gPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlsndGltZScsJ2FsbCddLmluY2x1ZGVzKHNlbGVjdGVkRmxhZylcIiBjbGFzcz1cIm1lLTNcIj57e3NlbGVjdGVkRmxhZyA9PT0gJ2FsbCcgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUb3RhbCBGbGFncycgOiAnTm90IFN1bWJpdHRlZCd9fTwvc3Bhbj4gPHNwYW4gKm5nSWY9XCJ0b3RhbEl0ZW1zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnkgXCI+e3t0b3RhbEl0ZW1zfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbDwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zdWIgbWItMlwiPiBCYXNlZCBvbiB7eyBoZWFkZXJEYXRhPy5kYXRlPy5zdGFydERhdGUgfCBkYXRlOiAnTU1NIGQnIH19IC0ge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckRhdGE/LmRhdGU/LmVuZERhdGUgfCBkYXRlOiAnTU1NIGQsIHknIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIoZmxhZ3NUYWJsZUFwaVN0YXRlIHwgYXN5bmMpID09PSAnbG9hZGVkJ1wiIGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyICBwb3NpdGlvbi1yZWxhdGl2ZSBteS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBmb290ZmFsbHNlYXJjaCBzdmctaWNvbi0xIHBvc2l0aW9uLWFic29sdXRlICBtcy04XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IG9wYWNpdHk9XCIwLjVcIiB4PVwiMTcuMDM2NVwiIHk9XCIxNS4xMjIzXCIgd2lkdGg9XCI4LjE1NTQ2XCIgaGVpZ2h0PVwiMlwiIHJ4PVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwicm90YXRlKDQ1IDE3LjAzNjUgMTUuMTIyMylcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEgMTlDNi41NTU1NiAxOSAzIDE1LjQ0NDQgMyAxMUMzIDYuNTU1NTYgNi41NTU1NiAzIDExIDNDMTUuNDQ0NCAzIDE5IDYuNTU1NTYgMTkgMTFDMTkgMTUuNDQ0NCAxNS40NDQ0IDE5IDExIDE5Wk0xMSA1QzcuNTMzMzMgNSA1IDcuNTMzMzMgNSAxMUM1IDE0LjQ2NjcgNy41MzMzMyAxNyAxMSAxN0MxNC40NjY3IDE3IDE3IDE0LjQ2NjcgMTcgMTFDMTcgNy41MzMzMyAxNC40NjY3IDUgMTEgNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW2Zvcm1Db250cm9sXT1cInNlYXJjaElucHV0XCIgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBwcy0xNCBtcy00IG1lLTQgZm9vdGZhbGxzZWFyY2hcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bGliLXJlYWN0aXZlLXNlbGVjdCBbZm9ybUNvbnRyb2xdPVwiZmlsdGVySW5wdXRcIiBbaWRGaWVsZF09XCIndmFsdWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lRmllbGRdPVwiJ2xhYmVsJ1wiIFtkYXRhXT1cImZpbHRlclZhbHVlc1wiIGNsYXNzPVwidy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saWItcmVhY3RpdmUtc2VsZWN0PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZmxhZ3NUYWJsZURhdGE/Lmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIoZmxhZ3NUYWJsZUFwaVN0YXRlIHwgYXN5bmMpID09PSAnbG9hZGluZydcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRmxhZ3NUYWJsZUV4cG9ydCgpXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLW91dGxpbmUgYnRuIGFsaWduLWl0ZW1zLWVuZCB0ZXh0LW5vd3JhcCBpbnZoZWFkZXIgbXMtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEV4cG9ydCBJY29uIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTcuNSAxMi41VjE1LjgzMzNDMTcuNSAxNi4yNzU0IDE3LjMyNDQgMTYuNjk5MyAxNy4wMTE4IDE3LjAxMThDMTYuNjk5MyAxNy4zMjQ0IDE2LjI3NTQgMTcuNSAxNS44MzMzIDE3LjVINC4xNjY2N0MzLjcyNDY0IDE3LjUgMy4zMDA3MiAxNy4zMjQ0IDIuOTg4MTYgMTcuMDExOEMyLjY3NTU5IDE2LjY5OTMgMi41IDE2LjI3NTQgMi41IDE1LjgzMzNWMTIuNU0xNC4xNjY3IDYuNjY2NjdMMTAgMi41TTEwIDIuNUw1LjgzMzMzIDYuNjY2NjdNMTAgMi41VjEyLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTJcIj48L3NwYW4+IEV4cG9ydFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZmxhZ3NUYWJsZUFwaVN0YXRlIHwgYXN5bmMpID09PSAnbG9hZGVkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZSBweC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0ZXh0LW5vd3JhcCBib3R0b20tYm9yZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnY2hlY2tMaXN0TmFtZScpXCI+Q2hlY2tsaXN0IE5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICdjaGVja0xpc3ROYW1lJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdjaGVja0xpc3ROYW1lJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2NvdmVyYWdlJylcIj5Db3ZlcmFnZTxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2NvdmVyYWdlJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdjb3ZlcmFnZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnYXNzaWduZWRTdG9yZXMnKVwiPkFzc2lnbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmVzPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAnYXNzaWduZWRTdG9yZXMnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ2Fzc2lnbmVkU3RvcmVzJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCdmbGFnZ2VkU3RvcmVzJylcIj5GbGFnZ2VkIFN0b3Jlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2ZsYWdnZWRTdG9yZXMnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ2ZsYWdnZWRTdG9yZXMnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJbJ2FsbCcsJ3F1ZXN0aW9uJ10uaW5jbHVkZXMoc2VsZWN0ZWRGbGFnKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNvcnREYXRhKCdjdXN0b21RdWVzdGlvbkZsYWdDb3VudCcpXCI+e3tzZWxlY3RlZEZsYWcgPT09ICdxdWVzdGlvbidcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ0ZsYWdzJyA6ICdRdWVzdGlvbiBGbGFncyd9fTxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAnY3VzdG9tUXVlc3Rpb25GbGFnQ291bnQnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdjdXN0b21RdWVzdGlvbkZsYWdDb3VudCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cIlsnYWxsJywndGltZSddLmluY2x1ZGVzKHNlbGVjdGVkRmxhZylcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzb3J0RGF0YSgnY3VzdG9tVGltZUZsYWdDb3VudCcpXCI+e3tzZWxlY3RlZEZsYWcgPT09ICd0aW1lJyA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRmxhZ3MnIDogJ05vdCBTdWJtaXR0ZWQgRmxhZ3MnfX08c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2N1c3RvbVRpbWVGbGFnQ291bnQnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdjdXN0b21UaW1lRmxhZ0NvdW50JyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiWydhbGwnLCdkZXRlY3Rpb24nXS5pbmNsdWRlcyhzZWxlY3RlZEZsYWcpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic29ydERhdGEoJ2ZsYWdDb3VudCcpXCI+e3tzZWxlY3RlZEZsYWcgPT09ICdkZXRlY3Rpb24nID8gJ0RldGVjdGlvbnMnIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdEZXRlY3Rpb24gRmxhZ3MnfX08c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2ZsYWdDb3VudCcgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ2ZsYWdDb3VudCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDx0aCBzdHlsZT1cIndpZHRoOiAyMDBweDtcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCdmbGFnQ291bnQnKVwiPkZsYWdnZWQ8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2ZsYWdDb3VudCcgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ2ZsYWdDb3VudCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvdGg+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8dGggKm5nSWY9XCJzZWxlY3RlZEZsYWcgPT09ICdkZXRlY3Rpb24nXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnZGV0ZWN0aW9uQ291bnQnKVwiPkRldGVjdGlvbiBDb3VudDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAnZGV0ZWN0aW9uQ291bnQnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdkZXRlY3Rpb25Db3VudCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvdGg+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ0NvbXBsaWFuY2UnKVwiPkNvbXBsaWFuY2UgJTxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ0NvbXBsaWFuY2UnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ0NvbXBsaWFuY2UnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkFjdGlvbnM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tICpuZ0Zvcj1cImxldCBzdG9yZSBvZiBjaGVja2xpc3RQZXJmb3JtYW5jZVwiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmxhZ3NUYWJsZURhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sLWxhYmVsIGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1wcmltYXJ5IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2RhdGE/LmNoZWNrTGlzdENoYXI/LnRvVXBwZXJDYXNlKCkgfHwgJy0tJyB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjxzcGFuIChjbGljayk9XCJ2aWV3SW5EZXRhaWwoZGF0YT8uc291cmNlQ2hlY2tMaXN0X2lkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLXRpdGxlLXByaW1hcnkgY3Vyc29yLXBvaW50ZXJcIj57e2RhdGE/LmNoZWNrTGlzdE5hbWUgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT8uY2hlY2tMaXN0TmFtZSA6ICctLSd9fTwvc3Bhbj4gPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGF0YT8uY2hlY2tMaXN0VHlwZSAhPT0gJ2N1c3RvbSdcIiBjbGFzcz1cIm14LTJcIj7inKg8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3sgZGF0YT8uY292ZXJhZ2UgPyBkYXRhPy5jb3ZlcmFnZSA6ICctLScgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGFibGUtdGl0bGVcIj57eyBkYXRhLmNoZWNrTGlzdFR5cGUgPT09ICdjdXN0b20nID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGRhdGE/LmFzc2lnbmVkU3RvcmVzIHx8IGRhdGE/LmFzc2lnbmVkU3RvcmVzID09PSAwKSA/IGRhdGE/LmFzc2lnbmVkU3RvcmVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nKSA6ICgoZGF0YT8uYXNzaWduZWRTdG9yZXNBaSB8fCBkYXRhPy5hc3NpZ25lZFN0b3Jlc0FpID09PSAwKSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT8uYXNzaWduZWRTdG9yZXNBaSA6ICctLScpfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGFibGUtdGl0bGVcIj57eyAoZGF0YT8uZmxhZ2dlZFN0b3JlcyB8fCBkYXRhPy5mbGFnZ2VkU3RvcmVzID09PSAwKSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT8uZmxhZ2dlZFN0b3JlcyA6ICctLScgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIlsnYWxsJywncXVlc3Rpb24nXS5pbmNsdWRlcyhzZWxlY3RlZEZsYWcpXCIgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE/LmN1c3RvbVF1ZXN0aW9uRmxhZ0NvdW50ID8/ICctLScgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIlsnYWxsJywndGltZSddLmluY2x1ZGVzKHNlbGVjdGVkRmxhZylcIiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT8uY3VzdG9tVGltZUZsYWdDb3VudCA/PyAnLS0nIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJbJ2FsbCcsJ2RldGVjdGlvbiddLmluY2x1ZGVzKHNlbGVjdGVkRmxhZylcIiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YT8uY2hlY2tMaXN0VHlwZSA9PT0gJ2N1c3RvbScgPyAwIDogKGRhdGE/LmZsYWdDb3VudCA/PyAnLS0nKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHRkIGNsYXNzPVwidGFibGUtdGl0bGUtcHJpbWFyeVwiPiBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YT8uY2hlY2tMaXN0VHlwZSA9PT0gJ2N1c3RvbSdcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmlsdGVySW5wdXQudmFsdWUgPT09ICdhbGwnIHx8IGZpbHRlcklucHV0LnZhbHVlID09PSAncXVlc3Rpb24nXCIgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwidmlld0luRGV0YWlsKGRhdGE/LnNvdXJjZUNoZWNrTGlzdF9pZCwgJ3F1ZXN0aW9uJylcIiA+e3soZGF0YT8uY3VzdG9tUXVlc3Rpb25GbGFnQ291bnQgfHwgZGF0YT8uY3VzdG9tUXVlc3Rpb25GbGFnQ291bnQgPT09IDApID8gZGF0YT8uY3VzdG9tUXVlc3Rpb25GbGFnQ291bnQ/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpIDogJy0tJ319IDwvc3Bhbj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0IG14LTNcIiA+UXVlc3Rpb25zPC9zcGFuPiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaWx0ZXJJbnB1dC52YWx1ZSA9PT0gJ2FsbCcgfHwgZmlsdGVySW5wdXQudmFsdWUgPT09ICd0aW1lJ1wiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJ2aWV3SW5EZXRhaWwoZGF0YT8uc291cmNlQ2hlY2tMaXN0X2lkLCAndGltZScpXCIgPnt7KGRhdGE/LmN1c3RvbVRpbWVGbGFnQ291bnQgfHwgZGF0YT8uY3VzdG9tVGltZUZsYWdDb3VudCA9PT0gMCkgPyBkYXRhPy5jdXN0b21UaW1lRmxhZ0NvdW50Py50b0xvY2FsZVN0cmluZygnZW4tSU4nKSA6ICctLSd9fSA8L3NwYW4+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCBteC0zXCIgPk5vdCBTdWJtaXR0ZWQ8L3NwYW4+ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRhdGE/LmNoZWNrTGlzdFR5cGUgIT09ICdjdXN0b20nXCIgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInZpZXdJbkRldGFpbChkYXRhPy5zb3VyY2VDaGVja0xpc3RfaWQpXCIgPnt7KGRhdGE/LmZsYWdDb3VudCB8fCBkYXRhPy5mbGFnQ291bnQgPT09IDApID8gZGF0YT8uZmxhZ0NvdW50Py50b0xvY2FsZVN0cmluZygnZW4tSU4nKSA6ICctLSd9fSA8L3NwYW4+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCBteC0zXCIgPkRldGVjdGlvbnM8L3NwYW4+ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtNXB4IHctMTAwIGJnLWxpZ2h0IG10LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgcm9sZT1cInByb2dyZXNzYmFyXCIgYXJpYS12YWx1ZW1pbj1cIjIwXCIgYXJpYS12YWx1ZW1heD1cIjEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiZy1wcmltYXJ5IHJvdW5kZWQgaC01cHggXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiZGF0YT8uY29tcGxpYW5jZVJhdGUgKyAnJSdcIj4gPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1lbmQgdGFibGUtdGl0bGVcIj48c3BhbiBjbGFzcz1cIm15LTEgbXgtMSB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YT8uY29tcGxpYW5jZVJhdGU/LnRvTG9jYWxlU3RyaW5nKCdlbi1VUycsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAnLS0nfX0lPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwidmlld0luRGV0YWlsKGRhdGE/LnNvdXJjZUNoZWNrTGlzdF9pZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS10aXRsZS1wcmltYXJ5IGN1cnNvci1wb2ludGVyXCI+VmlldzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIoZmxhZ3NUYWJsZUFwaVN0YXRlIHwgYXN5bmMpID09PSAnbG9hZGVkJyAmJiBmbGFnc1RhYmxlRGF0YT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXBhZ2luYXRpb24gW2l0ZW1zUGVyUGFnZV09XCJpdGVtc1BlclBhZ2VcIiBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b3RhbEl0ZW1zXT1cInRvdGFsSXRlbXNcIiBbcGFnaW5hdGlvblNpemVzXT1cInBhZ2luYXRpb25TaXplc1wiIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj48L2xpYi1wYWdpbmF0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGZsYWdzVGFibGVBcGlTdGF0ZSB8IGFzeW5jKSA9PT0gJ2xvYWRpbmcnIHx8IChmbGFnc1RhYmxlQXBpU3RhdGUgfCBhc3luYykgPT09ICdpbml0aWFsJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZmxhZ3NUYWJsZUFwaVN0YXRlIHwgYXN5bmMpID09PSAnbG9hZGVkJyAmJiAhZmxhZ3NUYWJsZURhdGE/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG15LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXNyY1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGFtYWludGV4dCBtdC0zXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhc3VidGV4dFwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3IgRmxhZ3MgVGFibGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
314
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhZ3MtbmV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtdHJheC9zcmMvbGliL2NvbXBvbmVudHMvZmxhZ3MtbmV3L2ZsYWdzLW5ldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2ZsYWdzLW5ldy9mbGFncy1uZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFLL0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQU83QyxNQUFNLE9BQU8saUJBQWlCO0lBK0JUO0lBQWdDO0lBQTJDO0lBQWtDO0lBQXdCO0lBOUJoSixRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUN2QyxZQUFZLEdBQUcsRUFBRSxDQUFBO0lBQ2pCLFdBQVcsR0FBRyxDQUFDLENBQUE7SUFDZixVQUFVLEdBQUcsQ0FBQyxDQUFBO0lBQ2QsWUFBWSxHQUFRLEtBQUssQ0FBQztJQUMxQixXQUFXLEdBQVEsRUFBRSxDQUFDO0lBQ3RCLGVBQWUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDOUIsUUFBUSxHQUFHLEVBQUUsQ0FBQTtJQUNiLGFBQWEsR0FBRyxlQUFlLENBQUM7SUFDaEMsYUFBYSxHQUFHLENBQUMsQ0FBQztJQUNsQixVQUFVLENBQWtDO0lBQzVDLHlCQUF5QixHQUFRLEVBQUUsQ0FBQztJQUV0QyxDQUFDO0lBQ0Msa0JBQWtCLEdBQUcsSUFB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QUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3hDLElBQUksR0FBRyxFQUFFLElBQUksS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sS0FBSyxTQUFTLElBQUksR0FBRyxFQUFFLElBQUksRUFBRTtvQkFDN0QsSUFBSSxDQUFDLHFCQUFxQixHQUFHO3dCQUN6QixnQkFBZ0IsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQjt3QkFDM0Msb0JBQW9CLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0I7d0JBQ25ELFNBQVMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVM7cUJBQ2hDLENBQUM7b0JBQ0YsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRTt3QkFDdEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztxQkFDaEM7b0JBQ0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztpQkFDdkM7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztpQkFDbkM7WUFDTCxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQixDQUFDO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQzt3R0EvVFksaUJBQWlCOzRGQUFqQixpQkFBaUIscURDYjlCLDR6MkVBbzRCTTs7NEZEdjNCTyxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIGRlYm91bmNlVGltZSwgQmVoYXZpb3JTdWJqZWN0LCB0YWtlVW50aWwsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlLCBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktZ2xvYmFsJztcclxuaW1wb3J0IHsgVHJheFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmF4LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBIZWFkZXJGaWx0ZXIsIEZsYWdzVGFibGVEYXRhLCBJRmxhZ0NhcmRzLCBJRmxhZ0NvbXBhcmlzb25DYXJkcywgRmxhZ0NhcmRzQnlUeXBlIH0gZnJvbSAnLi9mbGFncy1uZXcuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1mbGFncy1uZXcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mbGFncy1uZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9mbGFncy1uZXcuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGbGFnc05ld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBpdGVtc1BlclBhZ2UgPSAxMFxyXG4gIGN1cnJlbnRQYWdlID0gMFxyXG4gIHRvdGFsSXRlbXMgPSAwXHJcbiAgc2VsZWN0ZWRGbGFnOiBhbnkgPSAnYWxsJztcclxuICB1c2VyRW1haWxlczogYW55ID0gW107XHJcbiAgcGFnaW5hdGlvblNpemVzID0gWzEwLCAyMCwgMzBdXHJcbiAgcGFnZVNpemUgPSAxMFxyXG4gIHNvcnRDb2x1bU5hbWUgPSAnY2hlY2tMaXN0TmFtZSc7XHJcbiAgc29ydERpcmVjdGlvbiA9IDE7XHJcbiAgaGVhZGVyRGF0YTogSGVhZGVyRmlsdGVyIHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuICB0cmF4TW9udGhseUNvbXBhcmlzb25EYXRhOiBhbnkgPSBcIlwiO1xyXG4gXHJcbjtcclxuICBmbGFnc1RhYmxlQXBpU3RhdGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PCdpbml0aWFsJyB8ICdsb2FkaW5nJyB8ICdsb2FkZWQnPignaW5pdGlhbCcpXHJcbiAgZmxhZ3NUYWJsZURhdGE6IEZsYWdzVGFibGVEYXRhW10gPSBbXVxyXG4gIGNhcmRNZXRyaWNzQXBpU3RhdGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PCdpbml0aWFsJyB8ICdsb2FkaW5nJyB8ICdsb2FkZWQnPignaW5pdGlhbCcpXHJcbiAgY2FyZE1ldHJpY3NEYXRhOiBJRmxhZ0NhcmRzIHwgbnVsbCB8IHVuZGVmaW5lZFxyXG4gIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE6IElGbGFnQ29tcGFyaXNvbkNhcmRzIHwgbnVsbCB8IHVuZGVmaW5lZFxyXG4gIHNlYXJjaElucHV0OiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XHJcbiAgZmlsdGVySW5wdXQ6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCdhbGwnKTtcclxuICBjYXJkTWV0cmljc0RhdGFCeVR5cGU6IEZsYWdDYXJkc0J5VHlwZSB8IG51bGwgfCB1bmRlZmluZWRcclxuICBmaWx0ZXJWYWx1ZXMgPSBbXHJcbiAgICB7bGFiZWw6J0FsbCcsIHZhbHVlOidhbGwnfSxcclxuICAgIHtsYWJlbDonUXVlc3Rpb24nLCB2YWx1ZToncXVlc3Rpb24nfSxcclxuICAgIHtsYWJlbDonTm90IFN1Ym1pdHRlZCcsIHZhbHVlOid0aW1lJ30sXHJcbiAgICB7bGFiZWw6J0RldGVjdGlvbicsIHZhbHVlOidkZXRlY3Rpb24nfSxcclxuICBdXHJcbiAgZGF0ZUNvbXBhcmlzb25UeXBlOiAnZGFpbHknIHwgJ3dlZWtseScgfCAnbW9udGhseScgO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSwgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgdHJheFNlcnZpY2U6IFRyYXhTZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIHBhZ2VJbmZvOiBQYWdlSW5mb1NlcnZpY2UpIHtcclxuICAgIHRoaXMudXNlckVtYWlsZXMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidXNlcnNFbWFpbC1pbmZvXCIpIHx8IFwiW11cIiApXHJcbiAgICB0aGlzLnNlYXJjaElucHV0LnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkucGlwZShkZWJvdW5jZVRpbWUoMTAwMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnN1YnNjcmliZSgodmFsKSA9PiB7XHJcbiAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlICA9IDBcclxuICAgICAgdGhpcy5nZXRGbGFnc1RhYmxlKClcclxuICAgIH0pXHJcblxyXG5cclxuICAgIHRoaXMuZmlsdGVySW5wdXQudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHZhbCkgPT4ge1xyXG4gICAgICBpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jdXJyZW50UGFnZSAgPSAwXHJcbiAgICAgIHRoaXMuZ2V0RmxhZ3NUYWJsZSgpXHJcbiAgICB9KVxyXG5cclxuICAgIGNvbnN0IGRhdGVDb21wYXJpc29uVHlwZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkYXNoYm9hcmREYXRlVHlwZScpXHJcbiAgICBpZihkYXRlQ29tcGFyaXNvblR5cGUpe1xyXG4gICAgICBpZihkYXRlQ29tcGFyaXNvblR5cGUgPT09ICdkYWlseScgfHwgZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnd2Vla2x5JyB8fCBkYXRlQ29tcGFyaXNvblR5cGUgPT09ICdtb250aGx5Jyl7XHJcbiAgICAgICAgdGhpcy5kYXRlQ29tcGFyaXNvblR5cGUgPSBkYXRlQ29tcGFyaXNvblR5cGVcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy5kYXRlQ29tcGFyaXNvblR5cGUgPSAnZGFpbHknXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2Rhc2hib2FyZERhdGVUeXBlJywgJ2RhaWx5JylcclxuICAgICAgfVxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMuZGF0ZUNvbXBhcmlzb25UeXBlID0gJ2RhaWx5J1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZGFzaGJvYXJkRGF0ZVR5cGUnLCAnZGFpbHknKVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwMDApKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YT8uY2xpZW50KSB7XHJcbiAgICAgICAgICB0aGlzLmhlYWRlckRhdGEgPSBkYXRhO1xyXG4gICAgICAgICAgaWYgKHRoaXMuaGVhZGVyRGF0YT8uc3RvcmVzPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5oZWFkZXJEYXRhLnN0b3JlcyA9IHRoaXMuaGVhZGVyRGF0YS5zdG9yZXMuZmlsdGVyKChkYXRhOiBhbnkpID0+IGRhdGE/LmNoZWNrZWQpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmNoZWNrbGlzdENvdW50QnlUeXBlKClcclxuICAgICAgICAgIHRoaXMuZ2V0Q2hlY2tsaXN0RmxhZ01ldHJpY3MoKVxyXG4gICAgICAgICAgdGhpcy5nZXRDaGVja2xpc3RGbGFnTWV0cmljc0NvbXBhcmlzb24oKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5zZXRQYWdlRGF0YSgpXHJcbiAgfVxyXG5cclxuICBzZXRQYWdlRGF0YSgpIHtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0VGl0bGUoXCJGbGFnc1wiKTtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0RGVzY3JpcHRpb24oXCJcIik7XHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldEJyZWFkY3J1bWJzKFtcclxuICAgICAgLy8geyB0aXRsZTogXCJBbmFseXplXCIsIHBhdGg6IFwiL21hbmFnZS90cmF4L2Rhc2hib2FyZFwiLCBpc0FjdGl2ZTogZmFsc2UsIGlzU2VwYXJhdG9yOiBmYWxzZSB9LFxyXG4gICAgICAvLyB7IHRpdGxlOiBcIkFuYWx5emVcIiwgcGF0aDogXCIvbWFuYWdlL3RyYXgvZGFzaGJvYXJkXCIsIGlzQWN0aXZlOiBmYWxzZSwgaXNTZXBhcmF0b3I6IHRydWUgfSxcclxuICAgICAgeyB0aXRsZTogXCJUYW5nbyBUcmF4XCIsIHBhdGg6IFwiL21hbmFnZS90cmF4L2Rhc2hib2FyZFwiLCBpc0FjdGl2ZTogZmFsc2UsIGlzU2VwYXJhdG9yOiBmYWxzZSB9LFxyXG4gICAgICB7IHRpdGxlOiBcIlRhbmdvIFRyYXhcIiwgcGF0aDogXCIvbWFuYWdlL3RyYXgvZGFzaGJvYXJkXCIsIGlzQWN0aXZlOiBmYWxzZSwgaXNTZXBhcmF0b3I6IHRydWUgfSxcclxuICAgICAgLy8geyB0aXRsZTogXCJSZXBvcnRzXCIsIHBhdGg6IFwiL21hbmFnZS90cmF4L3JlcG9ydHNcIiwgaXNBY3RpdmU6IGZhbHNlLCBpc1NlcGFyYXRvcjogZmFsc2UgfSxcclxuICAgICAgLy8geyB0aXRsZTogXCJSZXBvcnRzXCIsIHBhdGg6IFwiL21hbmFnZS90cmF4L3JlcG9ydHNcIiwgaXNBY3RpdmU6IGZhbHNlLCBpc1NlcGFyYXRvcjogdHJ1ZSB9LFxyXG4gICAgXSk7XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIGdldENoZWNrbGlzdEZsYWdNZXRyaWNzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mbGFnc1RhYmxlRGF0YSA9IFtdO1xyXG4gICAgdGhpcy5jYXJkTWV0cmljc0FwaVN0YXRlLm5leHQoJ2xvYWRpbmcnKVxyXG4gICAgY29uc3QgZGF0YTogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcclxuICAgICAgXCJjbGllbnRJZFwiOiB0aGlzLmhlYWRlckRhdGE/LmNsaWVudCxcclxuICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuc3RhcnREYXRlLFxyXG4gICAgICBcInRvRGF0ZVwiOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuZW5kRGF0ZSxcclxuICAgICAgXCJzdG9yZUlkXCI6IHRoaXMuaGVhZGVyRGF0YT8uc3RvcmVzLm1hcCgodmFsOiB7IHN0b3JlSWQ6IHN0cmluZywgc3RvcmVOYW1lOiBzdHJpbmcgfSkgPT4gdmFsLnN0b3JlSWQpLFxyXG4gICAgICBcInVzZXJFbWFpbGVzXCI6IHRoaXMudXNlckVtYWlsZXNcclxuICAgIH1cclxuXHJcblxyXG4gICAgdGhpcy50cmF4U2VydmljZS5vdmVyYWxsRmxhZ01ldHJpY3MoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLmNhcmRNZXRyaWNzQXBpU3RhdGUubmV4dCgnbG9hZGVkJylcclxuICAgICAgICBpZiAocmVzPy5kYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLmNhcmRNZXRyaWNzRGF0YSA9IHJlcy5kYXRhXHJcbiAgICAgICAgICB0aGlzLmdldEZsYWdzVGFibGUoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jYXJkTWV0cmljc0RhdGEgPSBudWxsXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGUpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlKTtcclxuXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXRDaGVja2xpc3RGbGFnTWV0cmljc0NvbXBhcmlzb24oKTogdm9pZCB7XHJcbiAgICBjb25zdCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xyXG4gICAgICBcImNsaWVudElkXCI6IHRoaXMuaGVhZGVyRGF0YT8uY2xpZW50LFxyXG4gICAgICBcImZyb21EYXRlXCI6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZS5zdGFydERhdGUsXHJcbiAgICAgIFwidG9EYXRlXCI6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZS5lbmREYXRlLFxyXG4gICAgICBcInN0b3JlSWRcIjogdGhpcy5oZWFkZXJEYXRhPy5zdG9yZXMubWFwKCh2YWw6IHsgc3RvcmVJZDogc3RyaW5nLCBzdG9yZU5hbWU6IHN0cmluZyB9KSA9PiB2YWwuc3RvcmVJZCksXHJcbiAgICAgIFwidXNlckVtYWlsZXNcIjogdGhpcy51c2VyRW1haWxlcyxcclxuICAgICAgXCJkYXRlVHlwZVwiOiB0aGlzLmRhdGVDb21wYXJpc29uVHlwZVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLm92ZXJhbGxGbGFnTWV0cmljc0NvbXBhcmlzb24oZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICBpZiAocmVzPy5kYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLmNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGEgPSByZXMuZGF0YVxyXG4gICAgICAgICAgaWYgKHRoaXMudHJheE1vbnRobHlDb21wYXJpc29uRGF0YSA9PSAnJykge1xyXG4gICAgICAgICAgICB0aGlzLnRyYXhNb250aGx5Q29tcGFyaXNvbkRhdGEgPSB0aGlzLmNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHMudHJheE1vbnRobHlDb21wYXJpc29uXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YSA9IG51bGxcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGUpO1xyXG5cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldEZsYWdzVGFibGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZsYWdzVGFibGVEYXRhID0gW107XHJcbiAgICB0aGlzLnRvdGFsSXRlbXMgPSAwO1xyXG4gICAgdGhpcy5mbGFnc1RhYmxlQXBpU3RhdGUubmV4dCgnbG9hZGluZycpXHJcbiAgICBjb25zdCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xyXG4gICAgICBjbGllbnRJZDogdGhpcy5oZWFkZXJEYXRhPy5jbGllbnQsXHJcbiAgICAgIHN0b3JlSWQ6IHRoaXMuaGVhZGVyRGF0YT8uc3RvcmVzLm1hcChcclxuICAgICAgICAodmFsOiB7IHN0b3JlSWQ6IHN0cmluZzsgc3RvcmVOYW1lOiBzdHJpbmcgfSkgPT4gdmFsLnN0b3JlSWRcclxuICAgICAgKSxcclxuICAgICAgdXNlckVtYWlsZXM6IHRoaXMudXNlckVtYWlsZXMsXHJcbiAgICAgIGZyb21EYXRlOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuc3RhcnREYXRlLFxyXG4gICAgICB0b0RhdGU6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZS5lbmREYXRlLFxyXG4gICAgICBsaW1pdDogdGhpcy5wYWdlU2l6ZSxcclxuICAgICAgb2Zmc2V0OiB0aGlzLmN1cnJlbnRQYWdlID4gMCA/IHRoaXMuY3VycmVudFBhZ2UgLSAxIDogMCxcclxuICAgICAgc29ydENvbHVtbk5hbWU6IHRoaXMuc29ydENvbHVtTmFtZSxcclxuICAgICAgc29ydEJ5OiB0aGlzLnNvcnREaXJlY3Rpb24sXHJcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaElucHV0LnZhbHVlLFxyXG4gICAgICBmaWx0ZXI6IHRoaXMuc2VsZWN0ZWRGbGFnLFxyXG4gICAgICAuLi4odGhpcy5zZWxlY3RlZEZsYWcgPT09IFwicnVuQUlcIiAmJiB7XHJcbiAgICAgICAgcnVuQUlDaGVja2xpc3ROYW1lOiB0aGlzLmNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzLnJ1bkFJRmxhZy5saXN0Lm1hcChcclxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5jaGVja0xpc3ROYW1lXHJcbiAgICAgICAgKSxcclxuICAgICAgfSksXHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLmZsYWdzVGFibGVWMihkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuZmxhZ3NUYWJsZUFwaVN0YXRlLm5leHQoJ2xvYWRlZCcpXHJcbiAgICAgICAgaWYgKHJlcz8uZGF0YT8udG90YWxDb3VudCkge1xyXG4gICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gcmVzLmRhdGEudG90YWxDb3VudFxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSAwXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyZXM/LmRhdGE/LmNoZWNrbGlzdFBlcmZvcm1hbmNlKSB7XHJcbiAgICAgICAgICB0aGlzLmZsYWdzVGFibGVEYXRhID0gcmVzLmRhdGEuY2hlY2tsaXN0UGVyZm9ybWFuY2VcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5mbGFnc1RhYmxlRGF0YSA9IFtdXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGUpID0+IHtcclxuICAgICAgICB0aGlzLmZsYWdzVGFibGVBcGlTdGF0ZS5uZXh0KCdsb2FkZWQnKVxyXG5cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIG9uRmxhZ3NUYWJsZUV4cG9ydCgpOiB2b2lkIHtcclxuICAgIC8vIHRoaXMuZmxhZ3NUYWJsZUFwaVN0YXRlLm5leHQoJ2xvYWRpbmcnKVxyXG4gICAgY29uc3QgZGF0YTogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcclxuICAgICAgXCJjbGllbnRJZFwiOiB0aGlzLmhlYWRlckRhdGE/LmNsaWVudCxcclxuICAgICAgXCJzdG9yZUlkXCI6IHRoaXMuaGVhZGVyRGF0YT8uc3RvcmVzLm1hcCgodmFsOiB7IHN0b3JlSWQ6IHN0cmluZywgc3RvcmVOYW1lOiBzdHJpbmcgfSkgPT4gdmFsLnN0b3JlSWQpLFxyXG4gICAgICBcInVzZXJFbWFpbGVzXCI6IHRoaXMudXNlckVtYWlsZXMsXHJcbiAgICAgIFwiZnJvbURhdGVcIjogdGhpcy5oZWFkZXJEYXRhPy5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgICAgXCJ0b0RhdGVcIjogdGhpcy5oZWFkZXJEYXRhPy5kYXRlLmVuZERhdGUsXHJcbiAgICAgIFwibGltaXRcIjogdGhpcy5wYWdlU2l6ZSxcclxuICAgICAgXCJvZmZzZXRcIjogdGhpcy5jdXJyZW50UGFnZSA+IDAgPyB0aGlzLmN1cnJlbnRQYWdlIC0gMSA6IDAsXHJcbiAgICAgIFwic29ydENvbHVtbk5hbWVcIjogdGhpcy5zb3J0Q29sdW1OYW1lLFxyXG4gICAgICBcInNvcnRCeVwiOiB0aGlzLnNvcnREaXJlY3Rpb24sXHJcbiAgICAgIFwic2VhcmNoVmFsdWVcIjp0aGlzLnNlYXJjaElucHV0LnZhbHVlLFxyXG4gICAgICAvLyBcImZpbHRlclwiOnRoaXMuZmlsdGVySW5wdXQudmFsdWUsXHJcbiAgICAgIFwiZmlsdGVyXCI6dGhpcy5zZWxlY3RlZEZsYWcsXHJcbiAgICAgIFwiZXhwb3J0XCI6dHJ1ZVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLmV4cG9ydEZsYWdzVGFibGV2MihkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuZmxhZ3NUYWJsZUFwaVN0YXRlLm5leHQoJ2xvYWRlZCcpXHJcbiAgICAgICAgdGhpcy50cmF4U2VydmljZS5zYXZlQXNFeGNlbEZpbGUocmVzLCBgJHt0aGlzLnNlbGVjdGVkRmxhZy5jaGFyQXQoMCkudG9VcHBlckNhc2UoKX0ke3RoaXMuc2VsZWN0ZWRGbGFnLnNsaWNlKDEpfSBmbGFnX2ApXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIHNvcnREYXRhKGNvbHVtbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zb3J0Q29sdW1OYW1lID09PSBjb2x1bW4pIHtcclxuICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uID0gdGhpcy5zb3J0RGlyZWN0aW9uID09PSAxID8gLTEgOiAxO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zb3J0Q29sdW1OYW1lID0gY29sdW1uO1xyXG4gICAgICB0aGlzLnNvcnREaXJlY3Rpb24gPSAxO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLmdldEZsYWdzVGFibGUoKTtcclxuICB9XHJcblxyXG4gIG9uUGFnZVNpemVDaGFuZ2UocGFnZVNpemU6IGFueSkge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICB0aGlzLml0ZW1zUGVyUGFnZSA9IHBhZ2VTaXplO1xyXG4gICAgdGhpcy5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLmdldEZsYWdzVGFibGUoKVxyXG4gIH1cclxuXHJcbiAgb25QYWdlQ2hhbmdlKHBhZ2VPZmZzZXQ6IGFueSkge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IHBhZ2VPZmZzZXRcclxuICAgIHRoaXMuZ2V0RmxhZ3NUYWJsZSgpXHJcbiAgfVxyXG5cclxuICB2aWV3SW5EZXRhaWwoY2hlY2tsaXN0SWQ6IHN0cmluZyB8IHVuZGVmaW5lZCwgdHlwZT86ICdxdWVzdGlvbicgfCAndGltZScgfCAncnVuQUknICkge1xyXG4gICAgaWYoIWNoZWNrbGlzdElkKXtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgcm91dGUgID0gYC9tYW5hZ2UvdHJheC9mbGFncy9mbGFnc2luZm8/aWQ9JHtjaGVja2xpc3RJZH1gXHJcbiAgICBpZih0aGlzLnNlbGVjdGVkRmxhZyA9PSAncnVuQUknKSB7XHJcbiAgICAgIHJvdXRlID0gcm91dGUgKyBgJnR5cGU9cnVuQUlgO1xyXG4gICAgfVxyXG4gICAgaWYodHlwZSl7XHJcbiAgICAgIHJvdXRlID0gcm91dGUgKyBgJnR5cGU9JHt0eXBlfWBcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHJvdXRlKVxyXG4gIH1cclxuXHJcbiAgZGF0ZUNvbXBhcmlzb25WYWx1ZUNoYW5nZSh2YWw6J2RhaWx5JyB8ICd3ZWVrbHknIHwgJ21vbnRobHknICl7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZGFzaGJvYXJkRGF0ZVR5cGUnLCB2YWwpXHJcbiAgICB0aGlzLmRhdGVDb21wYXJpc29uVHlwZSA9IHZhbFxyXG4gICAgdGhpcy5jYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhID0gbnVsbFxyXG4gICAgdGhpcy5nZXRDaGVja2xpc3RGbGFnTWV0cmljc0NvbXBhcmlzb24oKVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0VGFicyhmbGFnOmFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEZsYWcgPSBmbGFnO1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSAgPSAwXHJcbiAgICB0aGlzLmdldEZsYWdzVGFibGUoKVxyXG4gIH1cclxuXHJcbiAgY2hlY2tsaXN0Q291bnRCeVR5cGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhcmRNZXRyaWNzQXBpU3RhdGUubmV4dCgnbG9hZGluZycpO1xyXG4gICAgY29uc3QgZGF0YTogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcclxuICAgICAgICBcImNsaWVudElkXCI6IHRoaXMuaGVhZGVyRGF0YT8uY2xpZW50LFxyXG4gICAgICAgIFwiZnJvbURhdGVcIjogdGhpcy5oZWFkZXJEYXRhPy5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgICAgICBcInRvRGF0ZVwiOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuZW5kRGF0ZSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy50cmF4U2VydmljZS5jaGVja2xpc3RDb3VudEJ5VHlwZShkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY2FyZE1ldHJpY3NBcGlTdGF0ZS5uZXh0KCdsb2FkZWQnKTtcclxuICAgICAgICAgICAgaWYgKHJlcz8uY29kZSA9PT0gMjAwICYmIHJlcz8uc3RhdHVzID09PSBcInN1Y2Nlc3NcIiAmJiByZXM/LmRhdGEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2FyZE1ldHJpY3NEYXRhQnlUeXBlID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGFpQ2hlY2tsaXN0Q291bnQ6IHJlcy5kYXRhLmFpQ2hlY2tsaXN0Q291bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgY3VzdG9tQ2hlY2tsaXN0Q291bnQ6IHJlcy5kYXRhLmN1c3RvbUNoZWNrbGlzdENvdW50LFxyXG4gICAgICAgICAgICAgICAgICAgIHNob3dDYXJkczogcmVzLmRhdGEuc2hvd0NhcmRzXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2FyZE1ldHJpY3NEYXRhQnlUeXBlLnNob3dDYXJkcyA9PT0gJ2FpQ2FyZHMnKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0VGFicygnZGV0ZWN0aW9uJyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jYXJkTWV0cmljc0RhdGFCeVR5cGUgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGUpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59XHJcbn1cclxuXHJcbiIsIjxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8IS0tYWxsQ2FyZHMgLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhcmRNZXRyaWNzRGF0YUJ5VHlwZT8uc2hvd0NhcmRzID09PSAnYWxsQ2FyZHMnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInctOTVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB0LTIgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgcGUtM1wiIFtuZ0NsYXNzXT1cImNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5ydW5BSUZsYWcgPyAndy0yNScgOiAndy01MCdcIiAoY2xpY2spPVwic2VsZWN0VGFicygnYWxsJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0nYWxsJyA/ICdhY3RpdmUtY2FyZCcgOiAnaW5hY3RpdmUtY2FyZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J2FsbCcgPyAnYWN0aXZlLWhlYWRlcicgOiAnaW5hY3RpdmUtaGVhZGVyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvdGFsIEZsYWdzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmRzdWJjb3VudCBtZS0zXCI+e3soY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnRvdGFsRmxhZyA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnRvdGFsRmxhZykgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnRvdGFsRmxhZz8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJykgOiAnLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnRvdGFsQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnRvdGFsQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjhcIiB2aWV3Qm94PVwiMCAwIDEzIDhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMS44MzIgMUw3LjA4MjAzIDUuNzVMNC41ODIwMyAzLjI1TDAuODMyMDMxIDdNMTEuODMyIDFIOC44MzIwM00xMS44MzIgMVY0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8udG90YWxDb21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIGNsYXNzPVwibmctc3Rhci1pbnNlcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9XCJtdC0yXCI+PHNwYW4gY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3soY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8udG90YWxDb21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnRvdGFsQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy50b3RhbENvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YT8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICU8L3NwYW4+PHNwYW4gY2xhc3M9XCJ3ZWVrLWZvbnRcIj4gdnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IHt7ZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnd2Vla2x5JyA/ICd3ZWVrJyA6IGRhdGVDb21wYXJpc29uVHlwZSA9PT0gJ21vbnRobHknID8gJ21vbnRoJyA6ICdkYXknfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBwZS0zXCIgW25nQ2xhc3NdPVwiY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnJ1bkFJRmxhZyA/ICd3LTI1JyA6ICd3LTUwJ1wiIChjbGljayk9XCJzZWxlY3RUYWJzKCdxdWVzdGlvbicpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J3F1ZXN0aW9uJyA/ICdhY3RpdmUtY2FyZCcgOiAnaW5hY3RpdmUtY2FyZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J3F1ZXN0aW9uJyA/ICdhY3RpdmUtaGVhZGVyJyA6ICdpbmFjdGl2ZS1oZWFkZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlc3Rpb24gRmxhZ3NcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmRzdWJjb3VudCBteS0yIG1lLTNcIj57eyhjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucXVlc3Rpb25GbGFnPy5jb3VudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5xdWVzdGlvbkZsYWc/LmNvdW50KSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucXVlc3Rpb25GbGFnPy5jb3VudD8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJykgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5xdWVzdGlvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTIgbWUtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnF1ZXN0aW9uQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjhcIiB2aWV3Qm94PVwiMCAwIDEzIDhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMS44MzIgMUw3LjA4MjAzIDUuNzVMNC41ODIwMyAzLjI1TDAuODMyMDMxIDdNMTEuODMyIDFIOC44MzIwM00xMS44MzIgMVY0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucXVlc3Rpb25Db21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIGNsYXNzPVwibmctc3Rhci1pbnNlcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9XCJtdC0yXCI+PHNwYW4gY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3soY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucXVlc3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnF1ZXN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5xdWVzdGlvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YT8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICU8L3NwYW4+PHNwYW4gY2xhc3M9XCJ3ZWVrLWZvbnRcIj4gdnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IHt7ZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnd2Vla2x5JyA/ICd3ZWVrJyA6IGRhdGVDb21wYXJpc29uVHlwZSA9PT0gJ21vbnRobHknID8gJ21vbnRoJyA6ICdkYXknfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTI1IGN1cnNvci1wb2ludGVyIHBlLTNcIiAoY2xpY2spPVwic2VsZWN0VGFicygncnVuQUknKVwiICpuZ0lmPVwiY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnJ1bkFJRmxhZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdydW5BSScgPyAnYWN0aXZlLWNhcmQnIDogJ2luYWN0aXZlLWNhcmQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdydW5BSScgPyAnYWN0aXZlLWhlYWRlcicgOiAnaW5hY3RpdmUtaGVhZGVyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1biBBSSBGbGFnc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkc3ViY291bnQgbWUtM1wiPnt7KGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5ydW5BSUZsYWc/LmZsYWdDb3VudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5ydW5BSUZsYWc/LmZsYWdDb3VudCkgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnJ1bkFJRmxhZz8uZmxhZ0NvdW50Py50b0xvY2FsZVN0cmluZygnZW4tSU4nKSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnJ1bkFJQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnJ1bkFJQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjhcIiB2aWV3Qm94PVwiMCAwIDEzIDhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMS44MzIgMUw3LjA4MjAzIDUuNzVMNC41ODIwMyAzLjI1TDAuODMyMDMxIDdNMTEuODMyIDFIOC44MzIwM00xMS44MzIgMVY0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucnVuQUlDb21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIGNsYXNzPVwibmctc3Rhci1pbnNlcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9XCJtdC0yXCI+PHNwYW4gY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3soY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucnVuQUlDb21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnJ1bkFJQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5ydW5BSUNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YT8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICU8L3NwYW4+PHNwYW4gY2xhc3M9XCJ3ZWVrLWZvbnRcIj4gdnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IHt7ZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnd2Vla2x5JyA/ICd3ZWVrJyA6IGRhdGVDb21wYXJpc29uVHlwZSA9PT0gJ21vbnRobHknID8gJ21vbnRoJyA6ICdkYXknfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBwZS0zXCIgKGNsaWNrKT1cInNlbGVjdFRhYnMoJ3RpbWUnKVwiIFtuZ0NsYXNzXT1cImNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5ydW5BSUZsYWcgPyAndy0yNScgOiAndy01MCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0ndGltZScgPyAnYWN0aXZlLWNhcmQnIDogJ2luYWN0aXZlLWNhcmQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSd0aW1lJyA/ICdhY3RpdmUtaGVhZGVyJyA6ICdpbmFjdGl2ZS1oZWFkZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90IFN1Ym1pdHRlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZHN1YmNvdW50IG1lLTNcIj57eyhjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8uZGVsYXlJblN1Ym1pc3Npb24/LmNvdW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uPy5jb3VudCkgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uPy5jb3VudD8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZWxheUluU3VibWlzc2lvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZWxheUluU3VibWlzc2lvbkNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCI4XCIgdmlld0JveD1cIjAgMCAxMyA4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEuODMyIDFMNy4wODIwMyA1Ljc1TDQuNTgyMDMgMy4yNUwwLjgzMjAzMSA3TTExLjgzMiAxSDguODMyMDNNMTEuODMyIDFWNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIiBjbGFzcz1cIm5nLXN0YXItaW5zZXJ0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIzMjhfNDY1NClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDlMNi43NSA0LjI1TDQuMjUgNi43NUwwLjUgM00xMS41IDlIOC41TTExLjUgOVY2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjMyOF80NjU0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPVwibXQtMlwiPjxzcGFuIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7KGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZWxheUluU3VibWlzc2lvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGVsYXlJblN1Ym1pc3Npb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGE/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlPC9zcGFuPjxzcGFuIGNsYXNzPVwid2Vlay1mb250XCI+IHZzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCB7e2RhdGVDb21wYXJpc29uVHlwZSA9PT0gJ3dlZWtseScgPyAnd2VlaycgOiBkYXRlQ29tcGFyaXNvblR5cGUgPT09ICdtb250aGx5JyA/ICdtb250aCcgOiAnZGF5J319PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgcGUtM1wiIChjbGljayk9XCJzZWxlY3RUYWJzKCdkZXRlY3Rpb24nKVwiIFtuZ0NsYXNzXT1cImNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5ydW5BSUZsYWcgPyAndy0yNScgOiAndy01MCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0nZGV0ZWN0aW9uJyA/ICdhY3RpdmUtY2FyZCcgOiAnaW5hY3RpdmUtY2FyZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J2RldGVjdGlvbicgPyAnYWN0aXZlLWhlYWRlcicgOiAnaW5hY3RpdmUtaGVhZGVyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldGVjdGlvbiBGbGFnc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkc3ViY291bnQgbWUtM1wiPnt7KGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5kZXRlY3Rpb25GbGFnPy5jb3VudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5kZXRlY3Rpb25GbGFnPy5jb3VudCkgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LmRldGVjdGlvbkZsYWc/LmNvdW50Py50b0xvY2FsZVN0cmluZygnZW4tSU4nKSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS0nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRldGVjdGlvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZXRlY3Rpb25Db21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiOFwiIHZpZXdCb3g9XCIwIDAgMTMgOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjgzMiAxTDcuMDgyMDMgNS43NUw0LjU4MjAzIDMuMjVMMC44MzIwMzEgN00xMS44MzIgMUg4LjgzMjAzTTExLjgzMiAxVjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZXRlY3Rpb25Db21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIGNsYXNzPVwibmctc3Rhci1pbnNlcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9XCJtdC0yXCI+PHNwYW4gY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3soY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGV0ZWN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZXRlY3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRldGVjdGlvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YT8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICU8L3NwYW4+PHNwYW4gY2xhc3M9XCJ3ZWVrLWZvbnRcIj4gdnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IHt7ZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnd2Vla2x5JyA/ICd3ZWVrJyA6IGRhdGVDb21wYXJpc29uVHlwZSA9PT0gJ21vbnRobHknID8gJ21vbnRoJyA6ICdkYXknfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwhLS0gY3VzdG9tQ2hlY2tsaXN0Q291bnQgPiAxICYgYWlDaGVja2xpc3RDb3VudCA+IDAgc2hvdyAzIGNhcmRzIC0tPlxyXG4gICAgICAgIDwhLS0gY3VzdG9tQ2FyZHMgLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhcmRNZXRyaWNzRGF0YUJ5VHlwZT8uc2hvd0NhcmRzID09PSAnY3VzdG9tQ2FyZHMnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInctOTVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB0LTIgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMyBjdXJzb3ItcG9pbnRlciBwZS0zXCIgKGNsaWNrKT1cInNlbGVjdFRhYnMoJ2FsbCcpXCIgW25nQ2xhc3NdPVwiY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnJ1bkFJRmxhZyA/ICdjb2wtMycgOiAnY29sLTQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J2FsbCcgPyAnYWN0aXZlLWNhcmQnIDogJ2luYWN0aXZlLWNhcmQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdhbGwnID8gJ2FjdGl2ZS1oZWFkZXInIDogJ2luYWN0aXZlLWhlYWRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb3RhbCBGbGFnc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkc3ViY291bnQgbWUtM1wiPnt7KGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy50b3RhbEZsYWcgPT09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy50b3RhbEZsYWcpID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy50b3RhbEZsYWc/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpIDogJy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy50b3RhbENvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy50b3RhbENvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCI4XCIgdmlld0JveD1cIjAgMCAxMyA4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEuODMyIDFMNy4wODIwMyA1Ljc1TDQuNTgyMDMgMy4yNUwwLjgzMjAzMSA3TTExLjgzMiAxSDguODMyMDNNMTEuODMyIDFWNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnRvdGFsQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIiBjbGFzcz1cIm5nLXN0YXItaW5zZXJ0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIzMjhfNDY1NClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDlMNi43NSA0LjI1TDQuMjUgNi43NUwwLjUgM00xMS41IDlIOC41TTExLjUgOVY2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjMyOF80NjU0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPVwibXQtMlwiPjxzcGFuIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7KGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnRvdGFsQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy50b3RhbENvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8udG90YWxDb21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGE/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlPC9zcGFuPjxzcGFuIGNsYXNzPVwid2Vlay1mb250XCI+IHZzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCB7e2RhdGVDb21wYXJpc29uVHlwZSA9PT0gJ3dlZWtseScgPyAnd2VlaycgOiBkYXRlQ29tcGFyaXNvblR5cGUgPT09ICdtb250aGx5JyA/ICdtb250aCcgOiAnZGF5J319PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTMgY3Vyc29yLXBvaW50ZXIgcGUtM1wiIChjbGljayk9XCJzZWxlY3RUYWJzKCdxdWVzdGlvbicpXCIgW25nQ2xhc3NdPVwiY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LnJ1bkFJRmxhZyA/ICdjb2wtMycgOiAnY29sLTQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J3F1ZXN0aW9uJyA/ICdhY3RpdmUtY2FyZCcgOiAnaW5hY3RpdmUtY2FyZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J3F1ZXN0aW9uJyA/ICdhY3RpdmUtaGVhZGVyJyA6ICdpbmFjdGl2ZS1oZWFkZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlc3Rpb24gRmxhZ3NcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmRzdWJjb3VudCBteS0yIG1lLTNcIj57eyhjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucXVlc3Rpb25GbGFnPy5jb3VudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5xdWVzdGlvbkZsYWc/LmNvdW50KSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucXVlc3Rpb25GbGFnPy5jb3VudD8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJykgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5xdWVzdGlvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTIgbWUtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnF1ZXN0aW9uQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjhcIiB2aWV3Qm94PVwiMCAwIDEzIDhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMS44MzIgMUw3LjA4MjAzIDUuNzVMNC41ODIwMyAzLjI1TDAuODMyMDMxIDdNMTEuODMyIDFIOC44MzIwM00xMS44MzIgMVY0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAzOTg1NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucXVlc3Rpb25Db21wYXJpc29uRmxhZz8uQ29tcGFyaXNvbkZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIGNsYXNzPVwibmctc3Rhci1pbnNlcnRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMyOF80NjU0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjUgOUw2Ljc1IDQuMjVMNC4yNSA2Ljc1TDAuNSAzTTExLjUgOUg4LjVNMTEuNSA5VjZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzI4XzQ2NTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9XCJtdC0yXCI+PHNwYW4gY2xhc3M9XCJwZXJjZW50LXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3soY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucXVlc3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnF1ZXN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5xdWVzdGlvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YT8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICU8L3NwYW4+PHNwYW4gY2xhc3M9XCJ3ZWVrLWZvbnRcIj4gdnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IHt7ZGF0ZUNvbXBhcmlzb25UeXBlID09PSAnd2Vla2x5JyA/ICd3ZWVrJyA6IGRhdGVDb21wYXJpc29uVHlwZSA9PT0gJ21vbnRobHknID8gJ21vbnRoJyA6ICdkYXknfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMyBjdXJzb3ItcG9pbnRlciBwZS0zXCIgKGNsaWNrKT1cInNlbGVjdFRhYnMoJ3J1bkFJJylcIiAqbmdJZj1cImNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5ydW5BSUZsYWdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0ncnVuQUknID8gJ2FjdGl2ZS1jYXJkJyA6ICdpbmFjdGl2ZS1jYXJkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0ncnVuQUknID8gJ2FjdGl2ZS1oZWFkZXInIDogJ2luYWN0aXZlLWhlYWRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW4gQUkgRmxhZ3NcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZHN1YmNvdW50IG1lLTNcIj57eyhjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucnVuQUlGbGFnPy5mbGFnQ291bnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucnVuQUlGbGFnPy5mbGFnQ291bnQpID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5ydW5BSUZsYWc/LmZsYWdDb3VudD8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJykgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5ydW5BSUNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5ydW5BSUNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCI4XCIgdmlld0JveD1cIjAgMCAxMyA4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEuODMyIDFMNy4wODIwMyA1Ljc1TDQuNTgyMDMgMy4yNUwwLjgzMjAzMSA3TTExLjgzMiAxSDguODMyMDNNMTEuODMyIDFWNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnJ1bkFJQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIiBjbGFzcz1cIm5nLXN0YXItaW5zZXJ0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIzMjhfNDY1NClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDlMNi43NSA0LjI1TDQuMjUgNi43NUwwLjUgM00xMS41IDlIOC41TTExLjUgOVY2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjMyOF80NjU0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPVwibXQtMlwiPjxzcGFuIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7KGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LnJ1bkFJQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5ydW5BSUNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8ucnVuQUlDb21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGE/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlPC9zcGFuPjxzcGFuIGNsYXNzPVwid2Vlay1mb250XCI+IHZzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCB7e2RhdGVDb21wYXJpc29uVHlwZSA9PT0gJ3dlZWtseScgPyAnd2VlaycgOiBkYXRlQ29tcGFyaXNvblR5cGUgPT09ICdtb250aGx5JyA/ICdtb250aCcgOiAnZGF5J319PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTMgY3Vyc29yLXBvaW50ZXIgcGUtM1wiIChjbGljayk9XCJzZWxlY3RUYWJzKCd0aW1lJylcIiBbbmdDbGFzc109XCJjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8ucnVuQUlGbGFnID8gJ2NvbC0zJyA6ICdjb2wtNCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiIFtuZ0NsYXNzXT1cInNlbGVjdGVkRmxhZyA9PT0ndGltZScgPyAnYWN0aXZlLWNhcmQnIDogJ2luYWN0aXZlLWNhcmQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSd0aW1lJyA/ICdhY3RpdmUtaGVhZGVyJyA6ICdpbmFjdGl2ZS1oZWFkZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90IFN1Ym1pdHRlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZHN1YmNvdW50IG1lLTNcIj57eyhjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8uZGVsYXlJblN1Ym1pc3Npb24/LmNvdW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uPy5jb3VudCkgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uPy5jb3VudD8udG9Mb2NhbGVTdHJpbmcoJ2VuLUlOJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZWxheUluU3VibWlzc2lvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZWxheUluU3VibWlzc2lvbkNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTNcIiBoZWlnaHQ9XCI4XCIgdmlld0JveD1cIjAgMCAxMyA4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEuODMyIDFMNy4wODIwMyA1Ljc1TDQuNTgyMDMgMy4yNUwwLjgzMjAzMSA3TTExLjgzMiAxSDguODMyMDNNMTEuODMyIDFWNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIiBjbGFzcz1cIm5nLXN0YXItaW5zZXJ0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIzMjhfNDY1NClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS41IDlMNi43NSA0LjI1TDQuMjUgNi43NUwwLjUgM00xMS41IDlIOC41TTExLjUgOVY2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjMyOF80NjU0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPVwibXQtMlwiPjxzcGFuIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7KGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRlbGF5SW5TdWJtaXNzaW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT09IDAgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZWxheUluU3VibWlzc2lvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGVsYXlJblN1Ym1pc3Npb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGE/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlPC9zcGFuPjxzcGFuIGNsYXNzPVwid2Vlay1mb250XCI+IHZzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCB7e2RhdGVDb21wYXJpc29uVHlwZSA9PT0gJ3dlZWtseScgPyAnd2VlaycgOiBkYXRlQ29tcGFyaXNvblR5cGUgPT09ICdtb250aGx5JyA/ICdtb250aCcgOiAnZGF5J319PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FyZE1ldHJpY3NEYXRhQnlUeXBlPy5zaG93Q2FyZHMgPT09ICdhbGxDYXJkcycgfHwgY2FyZE1ldHJpY3NEYXRhQnlUeXBlPy5zaG93Q2FyZHMgPT09ICdjdXN0b21DYXJkcydcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidy01IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IG10LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIHRleHQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG1lLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTEgY3Vyc29yLXBvaW50ZXIgZnMtNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJkYXRlQ29tcGFyaXNvblR5cGUgPT09J2RhaWx5JyA/ICd0ZXh0LXByaW1hcnknIDonJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGF0ZUNvbXBhcmlzb25WYWx1ZUNoYW5nZSgnZGFpbHknKVwiPjFEPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0xIGN1cnNvci1wb2ludGVyIGZzLTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGF0ZUNvbXBhcmlzb25UeXBlID09PSd3ZWVrbHknID8gJ3RleHQtcHJpbWFyeScgOicnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkYXRlQ29tcGFyaXNvblZhbHVlQ2hhbmdlKCd3ZWVrbHknKVwiPjFXPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgICpuZ0lmPVwidHJheE1vbnRobHlDb21wYXJpc29uRGF0YVwiIGNsYXNzPVwibXQtMSBjdXJzb3ItcG9pbnRlciBmcy01XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRhdGVDb21wYXJpc29uVHlwZSA9PT0nbW9udGhseScgPyAndGV4dC1wcmltYXJ5JyA6JydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRhdGVDb21wYXJpc29uVmFsdWVDaGFuZ2UoJ21vbnRobHknKVwiPjFNPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiAgY2xhc3M9XCJtdC0xIGN1cnNvci1wb2ludGVyIGZzLTVcIiAgW25nQ2xhc3NdPVwiZGF0ZVR5cGUgPT09J21vbnRobHknID8gJ3RleHQtcHJpbWFyeScgOicnXCIgIChjbGljayk9XCJkYXRlVmFsdWUoJ21vbnRobHknKVwiPjFNPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBjdXN0b21DaGVja2xpc3RDb3VudCA+IDAgJiBhaUNoZWNrbGlzdENvdW50ID4gMSBzaG93IHNpbmdsZSBjYXJkcyAtLT5cclxuICAgIDwhLS0gYWlDYXJkcyAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYXJkTWV0cmljc0RhdGFCeVR5cGU/LnNob3dDYXJkcyA9PT0gJ2FpQ2FyZHMnXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbXQtMyBjdXJzb3ItcG9pbnRlciBwZS0zXCIgKGNsaWNrKT1cInNlbGVjdFRhYnMoJ2RldGVjdGlvbicpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTNcIiBbbmdDbGFzc109XCJzZWxlY3RlZEZsYWcgPT09J2RldGVjdGlvbicgPyAnYWN0aXZlLWNhcmQnIDogJ2luYWN0aXZlLWNhcmQnXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRGbGFnID09PSdkZXRlY3Rpb24nID8gJ2FjdGl2ZS1oZWFkZXInIDogJ2luYWN0aXZlLWhlYWRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICBEZXRlY3Rpb24gRmxhZ3NcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMyByb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMiBjb2wtMTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkc3ViY291bnQgbWUtM1wiPnt7KGNhcmRNZXRyaWNzRGF0YT8uZmxhZ0NhcmRzPy5kZXRlY3Rpb25GbGFnPy5jb3VudCA9PT0gMCB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NEYXRhPy5mbGFnQ2FyZHM/LmRldGVjdGlvbkZsYWc/LmNvdW50KSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0RhdGE/LmZsYWdDYXJkcz8uZGV0ZWN0aW9uRmxhZz8uY291bnQ/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpIDogJy0tJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZXRlY3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGV0ZWN0aW9uQ29tcGFyaXNvbkZsYWc/LkNvbXBhcmlzb25GbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjhcIiB2aWV3Qm94PVwiMCAwIDEzIDhcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuODMyIDFMNy4wODIwMyA1Ljc1TDQuNTgyMDMgMy4yNUwwLjgzMjAzMSA3TTExLjgzMiAxSDguODMyMDNNMTEuODMyIDFWNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRldGVjdGlvbkNvbXBhcmlzb25GbGFnPy5Db21wYXJpc29uRmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCIgY2xhc3M9XCJuZy1zdGFyLWluc2VydGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzI4XzQ2NTQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNSA5TDYuNzUgNC4yNUw0LjI1IDYuNzVMMC41IDNNMTEuNSA5SDguNU0xMS41IDlWNlwiIHN0cm9rZT1cIiNEOTJEMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjMyOF80NjU0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPVwibXQtMlwiPjxzcGFuIGNsYXNzPVwicGVyY2VudC12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7KGNhcmRNZXRyaWNzQ29tcGFyaXNvbkRhdGE/LmZsYWdDb21wYXJpc29uQ2FyZHM/LmRldGVjdGlvbkNvbXBhcmlzb25GbGFnPy5jb21wYXJpc29uRGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PSAwIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZE1ldHJpY3NDb21wYXJpc29uRGF0YT8uZmxhZ0NvbXBhcmlzb25DYXJkcz8uZGV0ZWN0aW9uQ29tcGFyaXNvbkZsYWc/LmNvbXBhcmlzb25EYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkTWV0cmljc0NvbXBhcmlzb25EYXRhPy5mbGFnQ29tcGFyaXNvbkNhcmRzPy5kZXRlY3Rpb25Db21wYXJpc29uRmxhZz8uY29tcGFyaXNvbkRhdGE/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlPC9zcGFuPjxzcGFuIGNsYXNzPVwid2Vlay1mb250XCI+IHZzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCB7e2RhdGVDb21wYXJpc29uVHlwZSA9PT0gJ3dlZWtseScgPyAnd2VlaycgOiBkYXRlQ29tcGFyaXNvblR5cGUgPT09ICdtb250aGx5JyA/ICdtb250aCcgOiAnZGF5J319PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTEgY3Vyc29yLXBvaW50ZXIgZnMtNSBteC0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRhdGVDb21wYXJpc29uVHlwZSA9PT0nZGFpbHknID8gJ3RleHQtcHJpbWFyeScgOicnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkYXRlQ29tcGFyaXNvblZhbHVlQ2hhbmdlKCdkYWlseScpXCI+MUQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMSBjdXJzb3ItcG9pbnRlciBmcy01IG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGF0ZUNvbXBhcmlzb25UeXBlID09PSd3ZWVrbHknID8gJ3RleHQtcHJpbWFyeScgOicnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkYXRlQ29tcGFyaXNvblZhbHVlQ2hhbmdlKCd3ZWVrbHknKVwiPjFXPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAgKm5nSWY9XCJ0cmF4TW9udGhseUNvbXBhcmlzb25EYXRhXCIgY2xhc3M9XCJtdC0xIGN1cnNvci1wb2ludGVyIGZzLTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGF0ZUNvbXBhcmlzb25UeXBlID09PSdtb250aGx5JyA/ICd0ZXh0LXByaW1hcnknIDonJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGF0ZUNvbXBhcmlzb25WYWx1ZUNoYW5nZSgnbW9udGhseScpXCI+MU08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiAgY2xhc3M9XCJtdC0xIGN1cnNvci1wb2ludGVyIGZzLTVcIiAgW25nQ2xhc3NdPVwiZGF0ZVR5cGUgPT09J21vbnRobHknID8gJ3RleHQtcHJpbWFyeScgOicnXCIgIChjbGljayk9XCJkYXRlVmFsdWUoJ21vbnRobHknKVwiPjFNPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtM1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC00IHB4LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC1sYWJlbCBtYi0yXCI+PHNwYW4gKm5nSWY9XCIhWyd0aW1lJywnYWxsJ10uaW5jbHVkZXMoc2VsZWN0ZWRGbGFnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZS0zXCI+e3tzZWxlY3RlZEZsYWcgIT09ICdydW5BSScgPyAgKHNlbGVjdGVkRmxhZyB8IHRpdGxlY2FzZSkgOiAnUnVuQUknfX0gRmxhZ3M8L3NwYW4+IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJbJ3RpbWUnLCdhbGwnXS5pbmNsdWRlcyhzZWxlY3RlZEZsYWcpXCIgY2xhc3M9XCJtZS0zXCI+e3tzZWxlY3RlZEZsYWcgPT09ICdhbGwnID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVG90YWwgRmxhZ3MnIDogJ05vdCBTdW1iaXR0ZWQnfX08L3NwYW4+IDxzcGFuICpuZ0lmPVwidG90YWxJdGVtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1wcmltYXJ5IFwiPnt7dG90YWxJdGVtc319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWw8L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc3ViIG1iLTJcIj4gQmFzZWQgb24ge3sgaGVhZGVyRGF0YT8uZGF0ZT8uc3RhcnREYXRlIHwgZGF0ZTogJ01NTSBkJyB9fSAtIHt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJEYXRhPy5kYXRlPy5lbmREYXRlIHwgZGF0ZTogJ01NTSBkLCB5JyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKGZsYWdzVGFibGVBcGlTdGF0ZSB8IGFzeW5jKSA9PT0gJ2xvYWRlZCdcIiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciAgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gZm9vdGZhbGxzZWFyY2ggc3ZnLWljb24tMSBwb3NpdGlvbi1hYnNvbHV0ZSAgbXMtOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBvcGFjaXR5PVwiMC41XCIgeD1cIjE3LjAzNjVcIiB5PVwiMTUuMTIyM1wiIHdpZHRoPVwiOC4xNTU0NlwiIGhlaWdodD1cIjJcIiByeD1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInJvdGF0ZSg0NSAxNy4wMzY1IDE1LjEyMjMpXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExIDE5QzYuNTU1NTYgMTkgMyAxNS40NDQ0IDMgMTFDMyA2LjU1NTU2IDYuNTU1NTYgMyAxMSAzQzE1LjQ0NDQgMyAxOSA2LjU1NTU2IDE5IDExQzE5IDE1LjQ0NDQgMTUuNDQ0NCAxOSAxMSAxOVpNMTEgNUM3LjUzMzMzIDUgNSA3LjUzMzMzIDUgMTFDNSAxNC40NjY3IDcuNTMzMzMgMTcgMTEgMTdDMTQuNDY2NyAxNyAxNyAxNC40NjY3IDE3IDExQzE3IDcuNTMzMzMgMTQuNDY2NyA1IDExIDVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFtmb3JtQ29udHJvbF09XCJzZWFyY2hJbnB1dFwiIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcHMtMTQgbXMtNCBtZS00IGZvb3RmYWxsc2VhcmNoXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGxpYi1yZWFjdGl2ZS1zZWxlY3QgW2Zvcm1Db250cm9sXT1cImZpbHRlcklucHV0XCIgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIiBbZGF0YV09XCJmaWx0ZXJWYWx1ZXNcIiBjbGFzcz1cInctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGliLXJlYWN0aXZlLXNlbGVjdD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImZsYWdzVGFibGVEYXRhPy5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiKGZsYWdzVGFibGVBcGlTdGF0ZSB8IGFzeW5jKSA9PT0gJ2xvYWRpbmcnXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkZsYWdzVGFibGVFeHBvcnQoKVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1vdXRsaW5lIGJ0biBhbGlnbi1pdGVtcy1lbmQgdGV4dC1ub3dyYXAgaW52aGVhZGVyIG1zLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBFeHBvcnQgSWNvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNMTQuMTY2NyA2LjY2NjY3TDEwIDIuNU0xMCAyLjVMNS44MzMzMyA2LjY2NjY3TTEwIDIuNVYxMi41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+PC9zcGFuPiBFeHBvcnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGZsYWdzVGFibGVBcGlTdGF0ZSB8IGFzeW5jKSA9PT0gJ2xvYWRlZCcgJiYgZmxhZ3NUYWJsZURhdGE/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZSBweC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0ZXh0LW5vd3JhcCBib3R0b20tYm9yZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnY2hlY2tMaXN0TmFtZScpXCI+Q2hlY2tsaXN0IE5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICdjaGVja0xpc3ROYW1lJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdjaGVja0xpc3ROYW1lJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2NvdmVyYWdlJylcIj5Db3ZlcmFnZTxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2NvdmVyYWdlJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdjb3ZlcmFnZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgncnVuQUlRdWVzdGlvbkNvdW50JylcIiAqbmdJZj1cIlsncnVuQUknXS5pbmNsdWRlcyhzZWxlY3RlZEZsYWcpXCI+Tm8gb2YgUXVlc3Rpb25zPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAncnVuQUlRdWVzdGlvbkNvdW50JyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdydW5BSVF1ZXN0aW9uQ291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2Fzc2lnbmVkU3RvcmVzJylcIj5Bc3NpZ25lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlczxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2Fzc2lnbmVkU3RvcmVzJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdhc3NpZ25lZFN0b3JlcycgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnZmxhZ2dlZFN0b3JlcycpXCIgKm5nSWY9XCIhWydydW5BSSddLmluY2x1ZGVzKHNlbGVjdGVkRmxhZylcIj5GbGFnZ2VkIFN0b3Jlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2ZsYWdnZWRTdG9yZXMnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ2ZsYWdnZWRTdG9yZXMnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnZmxhZ3MnKVwiICpuZ0lmPVwiWydydW5BSSddLmluY2x1ZGVzKHNlbGVjdGVkRmxhZylcIj5GbGFnc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2ZsYWdzJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdmbGFncycgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cIlsnYWxsJywncXVlc3Rpb24nXS5pbmNsdWRlcyhzZWxlY3RlZEZsYWcpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic29ydERhdGEoJ2N1c3RvbVF1ZXN0aW9uRmxhZ0NvdW50JylcIj57e3NlbGVjdGVkRmxhZyA9PT0gJ3F1ZXN0aW9uJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnRmxhZ3MnIDogJ1F1ZXN0aW9uIEZsYWdzJ319PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICdjdXN0b21RdWVzdGlvbkZsYWdDb3VudCcgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ2N1c3RvbVF1ZXN0aW9uRmxhZ0NvdW50JyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cIlsnYWxsJ10uaW5jbHVkZXMoc2VsZWN0ZWRGbGFnKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNvcnREYXRhKCdydW5BSUZsYWcnKVwiPlJ1biBBSSBGbGFnczxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAncnVuQUlGbGFnJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAncnVuQUlGbGFnJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiWydhbGwnLCd0aW1lJ10uaW5jbHVkZXMoc2VsZWN0ZWRGbGFnKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNvcnREYXRhKCdjdXN0b21UaW1lRmxhZ0NvdW50JylcIj57e3NlbGVjdGVkRmxhZyA9PT0gJ3RpbWUnID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGbGFncycgOiAnTm90IFN1Ym1pdHRlZCBGbGFncyd9fTxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAnY3VzdG9tVGltZUZsYWdDb3VudCcgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ2N1c3RvbVRpbWVGbGFnQ291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJbJ2FsbCcsJ2RldGVjdGlvbiddLmluY2x1ZGVzKHNlbGVjdGVkRmxhZylcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzb3J0RGF0YSgnZmxhZ0NvdW50JylcIj57e3NlbGVjdGVkRmxhZyA9PT0gJ2RldGVjdGlvbicgPyAnRGV0ZWN0aW9ucycgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RldGVjdGlvbiBGbGFncyd9fTxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAnZmxhZ0NvdW50JyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAnZmxhZ0NvdW50JyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHRoIHN0eWxlPVwid2lkdGg6IDIwMHB4O1wiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2ZsYWdDb3VudCcpXCI+RmxhZ2dlZDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAnZmxhZ0NvdW50JyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAnZmxhZ0NvdW50JyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC90aD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDx0aCAqbmdJZj1cInNlbGVjdGVkRmxhZyA9PT0gJ2RldGVjdGlvbidcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCdkZXRlY3Rpb25Db3VudCcpXCI+RGV0ZWN0aW9uIENvdW50PHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICdkZXRlY3Rpb25Db3VudCcgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ2RldGVjdGlvbkNvdW50JyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC90aD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnQ29tcGxpYW5jZScpXCI+Q29tcGxpYW5jZSAlPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAnQ29tcGxpYW5jZScgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAnQ29tcGxpYW5jZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+QWN0aW9uczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gKm5nRm9yPVwibGV0IHN0b3JlIG9mIGNoZWNrbGlzdFBlcmZvcm1hbmNlXCIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgZGF0YSBvZiBmbGFnc1RhYmxlRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTM1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YT8uY2hlY2tMaXN0Q2hhcj8udG9VcHBlckNhc2UoKSB8fCAnLS0nIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHNwYW4gKGNsaWNrKT1cInZpZXdJbkRldGFpbChkYXRhPy5zb3VyY2VDaGVja0xpc3RfaWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtdGl0bGUtcHJpbWFyeSBjdXJzb3ItcG9pbnRlclwiPnt7ZGF0YT8uY2hlY2tMaXN0TmFtZSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPy5jaGVja0xpc3ROYW1lIDogJy0tJ319PC9zcGFuPiA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkYXRhPy5jaGVja0xpc3RUeXBlICE9PSAnY3VzdG9tJ1wiIGNsYXNzPVwibXgtMlwiPuKcqDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGFibGUtdGl0bGVcIj57eyBkYXRhPy5jb3ZlcmFnZSA/IGRhdGE/LmNvdmVyYWdlIDogJy0tJyB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0YWJsZS10aXRsZVwiICpuZ0lmPVwiWydydW5BSSddLmluY2x1ZGVzKHNlbGVjdGVkRmxhZylcIj57eyBkYXRhPy5ydW5BSVF1ZXN0aW9uQ291bnQgPyBkYXRhPy5ydW5BSVF1ZXN0aW9uQ291bnQgOiAwIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3sgZGF0YS5jaGVja0xpc3RUeXBlID09PSAnY3VzdG9tJyA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChkYXRhPy5hc3NpZ25lZFN0b3JlcyB8fCBkYXRhPy5hc3NpZ25lZFN0b3JlcyA9PT0gMCkgPyBkYXRhPy5hc3NpZ25lZFN0b3Jlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0tJykgOiAoKGRhdGE/LmFzc2lnbmVkU3RvcmVzQWkgfHwgZGF0YT8uYXNzaWduZWRTdG9yZXNBaSA9PT0gMCkgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE/LmFzc2lnbmVkU3RvcmVzQWkgOiAnLS0nKX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3sgKGRhdGE/LmZsYWdnZWRTdG9yZXMgfHwgZGF0YT8uZmxhZ2dlZFN0b3JlcyA9PT0gMCkgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE/LmZsYWdnZWRTdG9yZXMgOiAnLS0nIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJbJ2FsbCcsJ3F1ZXN0aW9uJ10uaW5jbHVkZXMoc2VsZWN0ZWRGbGFnKVwiIGNsYXNzPVwidGFibGUtdGl0bGVcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPy5jdXN0b21RdWVzdGlvbkZsYWdDb3VudCA/PyAnLS0nIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJbJ2FsbCddLmluY2x1ZGVzKHNlbGVjdGVkRmxhZylcIiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT8ucnVuQUlGbGFnID8/ICctLScgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIlsnYWxsJywndGltZSddLmluY2x1ZGVzKHNlbGVjdGVkRmxhZylcIiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT8uY3VzdG9tVGltZUZsYWdDb3VudCA/PyAnLS0nIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJbJ2FsbCcsJ2RldGVjdGlvbiddLmluY2x1ZGVzKHNlbGVjdGVkRmxhZylcIiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YT8uY2hlY2tMaXN0VHlwZSA9PT0gJ2N1c3RvbScgPyAwIDogKGRhdGE/LmZsYWdDb3VudCA/PyAnLS0nKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHRkIGNsYXNzPVwidGFibGUtdGl0bGUtcHJpbWFyeVwiPiBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YT8uY2hlY2tMaXN0VHlwZSA9PT0gJ2N1c3RvbSdcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmlsdGVySW5wdXQudmFsdWUgPT09ICdhbGwnIHx8IGZpbHRlcklucHV0LnZhbHVlID09PSAncXVlc3Rpb24nXCIgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwidmlld0luRGV0YWlsKGRhdGE/LnNvdXJjZUNoZWNrTGlzdF9pZCwgJ3F1ZXN0aW9uJylcIiA+e3soZGF0YT8uY3VzdG9tUXVlc3Rpb25GbGFnQ291bnQgfHwgZGF0YT8uY3VzdG9tUXVlc3Rpb25GbGFnQ291bnQgPT09IDApID8gZGF0YT8uY3VzdG9tUXVlc3Rpb25GbGFnQ291bnQ/LnRvTG9jYWxlU3RyaW5nKCdlbi1JTicpIDogJy0tJ319IDwvc3Bhbj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0IG14LTNcIiA+UXVlc3Rpb25zPC9zcGFuPiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaWx0ZXJJbnB1dC52YWx1ZSA9PT0gJ2FsbCcgfHwgZmlsdGVySW5wdXQudmFsdWUgPT09ICd0aW1lJ1wiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJ2aWV3SW5EZXRhaWwoZGF0YT8uc291cmNlQ2hlY2tMaXN0X2lkLCAndGltZScpXCIgPnt7KGRhdGE/LmN1c3RvbVRpbWVGbGFnQ291bnQgfHwgZGF0YT8uY3VzdG9tVGltZUZsYWdDb3VudCA9PT0gMCkgPyBkYXRhPy5jdXN0b21UaW1lRmxhZ0NvdW50Py50b0xvY2FsZVN0cmluZygnZW4tSU4nKSA6ICctLSd9fSA8L3NwYW4+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCBteC0zXCIgPk5vdCBTdWJtaXR0ZWQ8L3NwYW4+ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRhdGE/LmNoZWNrTGlzdFR5cGUgIT09ICdjdXN0b20nXCIgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInZpZXdJbkRldGFpbChkYXRhPy5zb3VyY2VDaGVja0xpc3RfaWQpXCIgPnt7KGRhdGE/LmZsYWdDb3VudCB8fCBkYXRhPy5mbGFnQ291bnQgPT09IDApID8gZGF0YT8uZmxhZ0NvdW50Py50b0xvY2FsZVN0cmluZygnZW4tSU4nKSA6ICctLSd9fSA8L3NwYW4+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCBteC0zXCIgPkRldGVjdGlvbnM8L3NwYW4+ICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtNXB4IHctMTAwIGJnLWxpZ2h0IG10LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgcm9sZT1cInByb2dyZXNzYmFyXCIgYXJpYS12YWx1ZW1pbj1cIjIwXCIgYXJpYS12YWx1ZW1heD1cIjEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiZy1wcmltYXJ5IHJvdW5kZWQgaC01cHggXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiZGF0YT8uY29tcGxpYW5jZVJhdGUgKyAnJSdcIj4gPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1lbmQgdGFibGUtdGl0bGVcIj48c3BhbiBjbGFzcz1cIm15LTEgbXgtMSB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YT8uY29tcGxpYW5jZVJhdGU/LnRvTG9jYWxlU3RyaW5nKCdlbi1VUycsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAnLS0nfX0lPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwidmlld0luRGV0YWlsKGRhdGE/LnNvdXJjZUNoZWNrTGlzdF9pZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS10aXRsZS1wcmltYXJ5IGN1cnNvci1wb2ludGVyXCI+VmlldzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIoZmxhZ3NUYWJsZUFwaVN0YXRlIHwgYXN5bmMpID09PSAnbG9hZGVkJyAmJiBmbGFnc1RhYmxlRGF0YT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXBhZ2luYXRpb24gW2l0ZW1zUGVyUGFnZV09XCJpdGVtc1BlclBhZ2VcIiBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b3RhbEl0ZW1zXT1cInRvdGFsSXRlbXNcIiBbcGFnaW5hdGlvblNpemVzXT1cInBhZ2luYXRpb25TaXplc1wiIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj48L2xpYi1wYWdpbmF0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGZsYWdzVGFibGVBcGlTdGF0ZSB8IGFzeW5jKSA9PT0gJ2xvYWRpbmcnIHx8IChmbGFnc1RhYmxlQXBpU3RhdGUgfCBhc3luYykgPT09ICdpbml0aWFsJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZmxhZ3NUYWJsZUFwaVN0YXRlIHwgYXN5bmMpID09PSAnbG9hZGVkJyAmJiAhZmxhZ3NUYWJsZURhdGE/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG15LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXNyY1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGFtYWludGV4dCBtdC0zXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhc3VidGV4dFwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3IgRmxhZ3MgVGFibGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19