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
@@ -34,9 +34,9 @@ export class ActivityLogV2Component {
34
34
  totalItems = 0;
35
35
  paginationSizes = [];
36
36
  pageSize = 10;
37
- sortColumName = '';
38
- sortBy = '';
39
- sortDirection = '';
37
+ sortColumName = "";
38
+ sortBy = "";
39
+ sortDirection = "";
40
40
  searchInput = "";
41
41
  headerData;
42
42
  searchValue;
@@ -48,23 +48,24 @@ export class ActivityLogV2Component {
48
48
  receivedData = "checklist";
49
49
  dataObject = [
50
50
  {
51
- Description: 'Actions',
51
+ Description: "Actions",
52
52
  Issues: [
53
- { text: 'Created by', id: 'created' },
54
- { text: 'Updated by', id: 'updated' },
55
- { text: 'Saved as Draft', id: 'draft' },
56
- { text: 'Published by', id: 'published' },
57
- { text: 'Submitted by', id: 'submit' },
58
- { text: 'Started by', id: 'start' },
59
- { text: 'Approved by', id: 'approved' },
60
- { text: 'Redo Created by', id: 'redo' },
61
- { text: 'Subsequent Redo Created by', id: 'multiredo' },
62
- { text: 'Task Created by', id: 'task_created' },
53
+ { text: "Created by", id: "created" },
54
+ { text: "Updated by", id: "updated" },
55
+ { text: "Saved as Draft", id: "draft" },
56
+ { text: "Published by", id: "published" },
57
+ { text: "Submitted by", id: "submit" },
58
+ { text: "Started by", id: "start" },
59
+ { text: "Approved by", id: "approved" },
60
+ { text: "Redo Created by", id: "redo" },
61
+ { text: "Subsequent Redo Created by", id: "multiredo" },
62
+ { text: "Task Created by", id: "task_created" },
63
63
  // { text: 'Re-Opened by', id: 'reopened' },
64
- { text: 'Edited by', id: 'edited' },
65
- { text: 'Unpublished by', id: 'unpublished' },
66
- { text: 'Deleted by', id: 'deleted' },
67
- { text: 'Duplicated by', id: 'duplicated' },
64
+ { text: "Edited by", id: "edited" },
65
+ { text: "Unpublished by", id: "unpublished" },
66
+ { text: "Deleted by", id: "deleted" },
67
+ { text: "Duplicated by", id: "duplicated" },
68
+ { text: "Reinitiated by", id: "reinitiated" },
68
69
  ],
69
70
  },
70
71
  // {
@@ -75,7 +76,7 @@ export class ActivityLogV2Component {
75
76
  // },
76
77
  ];
77
78
  activityLogTableData = [];
78
- type = 'checklist';
79
+ type = "checklist";
79
80
  activityLogFilter = [];
80
81
  // reloadDate: string;
81
82
  sourceCheckList_id;
@@ -86,7 +87,7 @@ export class ActivityLogV2Component {
86
87
  editRequestData;
87
88
  isActivityLog = false;
88
89
  selectedDateRange = {
89
- startDate: dayjs().subtract(7, 'days'),
90
+ startDate: dayjs().subtract(7, "days"),
90
91
  endDate: dayjs().subtract(1, "days"),
91
92
  };
92
93
  isCustomDate = (m) => {
@@ -143,8 +144,18 @@ export class ActivityLogV2Component {
143
144
  setPageData() {
144
145
  this.pageInfo.setTitle("Dashboard");
145
146
  this.pageInfo.setBreadcrumbs([
146
- { title: "Tango Trax", path: "/manage/trax/dashboard", isActive: false, isSeparator: false },
147
- { title: "Tango Trax", path: "/manage/trax/dashboard", isActive: false, isSeparator: true },
147
+ {
148
+ title: "Tango Trax",
149
+ path: "/manage/trax/dashboard",
150
+ isActive: false,
151
+ isSeparator: false,
152
+ },
153
+ {
154
+ title: "Tango Trax",
155
+ path: "/manage/trax/dashboard",
156
+ isActive: false,
157
+ isSeparator: true,
158
+ },
148
159
  ]);
149
160
  }
150
161
  getActivityLogTableData() {
@@ -156,7 +167,9 @@ export class ActivityLogV2Component {
156
167
  const requestData = {
157
168
  fromDate: this.selectedFilters?.date?.startDate,
158
169
  toDate: this.selectedFilters?.date?.endDate,
159
- storeId: this.headerData?.stores.filter((store) => store.checked).map((store) => store.storeId),
170
+ storeId: this.headerData?.stores
171
+ .filter((store) => store.checked)
172
+ .map((store) => store.storeId),
160
173
  clientId: this.headerData.client,
161
174
  limit: this.itemsPerPage,
162
175
  offset: this.currentPage - 1,
@@ -165,7 +178,7 @@ export class ActivityLogV2Component {
165
178
  searchValue: this.searchInput,
166
179
  action: this.activityLogFilter,
167
180
  type: this.receivedData,
168
- userEmailes: this.userEmailes
181
+ userEmailes: this.userEmailes,
169
182
  // checkListName:this.checklistName,
170
183
  // "checkListName": "daily store checklist111",
171
184
  // "type": "checklist",
@@ -200,12 +213,11 @@ export class ActivityLogV2Component {
200
213
  this.totalItems = 0;
201
214
  this.changeDetector.detectChanges();
202
215
  }
203
- }, error => {
216
+ }, (error) => {
204
217
  this.activityLogTableData = [];
205
218
  this.changeDetector.detectChanges();
206
219
  });
207
220
  this.sourceCheckList_id = "";
208
- this.checklistId = "";
209
221
  }
210
222
  // removeQueryParams() {
211
223
  // const urlWithoutParams = this.location.path().split('?')[0];
@@ -231,7 +243,9 @@ export class ActivityLogV2Component {
231
243
  const requestData = {
232
244
  fromDate: this.headerData.date.startDate,
233
245
  toDate: this.headerData.date.endDate,
234
- storeId: this.headerData.stores.filter((store) => store.checked).map((store) => store.storeId),
246
+ storeId: this.headerData.stores
247
+ .filter((store) => store.checked)
248
+ .map((store) => store.storeId),
235
249
  userEmailes: this.userEmailes,
236
250
  clientId: this.headerData.client,
237
251
  limit: 10000,
@@ -247,11 +261,11 @@ export class ActivityLogV2Component {
247
261
  .pipe(takeUntil(this.destroy$))
248
262
  .subscribe({
249
263
  next: (res) => {
250
- this.TraxService.saveAsExcelFile(res, 'TaskTable');
264
+ this.TraxService.saveAsExcelFile(res, "TaskTable");
251
265
  },
252
266
  error: (e) => {
253
- this.toast.getErrorToast('Something went Wrong..');
254
- }
267
+ this.toast.getErrorToast("Something went Wrong..");
268
+ },
255
269
  });
256
270
  }
257
271
  searchField() {
@@ -285,7 +299,7 @@ export class ActivityLogV2Component {
285
299
  applyFilters(event) {
286
300
  if (event?.length) {
287
301
  event.forEach((element) => {
288
- if (element.Description === 'Actions') {
302
+ if (element.Description === "Actions") {
289
303
  this.activityLogFilter = element.Issues.map((val) => val.id);
290
304
  }
291
305
  });
@@ -312,114 +326,120 @@ export class ActivityLogV2Component {
312
326
  // this.router.navigate(['manage/trax/create-task'], { queryParams: {id:task._id} })
313
327
  // }
314
328
  dateFormat(date) {
315
- return this.dayjs.utc(date).format('DD MMM YYYY');
329
+ return this.dayjs.utc(date).format("DD MMM YYYY");
316
330
  }
317
331
  Selecttabs(tab) {
318
332
  this.receivedData = tab;
319
- // this.router.navigate([], {
333
+ // this.router.navigate([], {
320
334
  // queryParams: { type: tab },
321
335
  // queryParamsHandling: 'merge'
322
336
  // });
323
337
  this.getActivityLogTableData();
324
338
  }
325
339
  viewAction(log) {
326
- let modalSize = log.action === 'updated' || log.action === 'draft' ? 'xl' : log.action === 'edited' ? 'lg' : 'md';
340
+ let modalSize = log.action === "updated" || log.action === "draft"
341
+ ? "xl"
342
+ : log.action === "edited"
343
+ ? "lg"
344
+ : "md";
327
345
  const modalRef = this.modalService.open(ViewActionComponent, {
328
346
  centered: true,
329
347
  size: modalSize,
330
- scrollable: true
348
+ scrollable: true,
331
349
  });
332
350
  modalRef.componentInstance.logDetails = log.logDetails;
333
351
  modalRef.componentInstance.checkListName = log.checkListName;
334
352
  modalRef.componentInstance.storeName = log.storeName;
335
353
  modalRef.componentInstance.actionType = log.action;
336
354
  modalRef.componentInstance.receivedData = this.receivedData;
337
- modalRef.result
338
- .then(() => {
355
+ modalRef.result.then(() => {
339
356
  this.getActivityLogTableData();
340
357
  });
341
358
  }
342
359
  isLogDetailsEmpty(logDetails) {
343
- return !logDetails || Object.keys(logDetails).every(key => {
344
- const value = logDetails[key];
345
- if (Array.isArray(value))
346
- return value.length === 0;
347
- if (typeof value === 'object')
348
- return this.isLogDetailsEmpty(value);
349
- return !value;
350
- });
360
+ return (!logDetails ||
361
+ Object.keys(logDetails).every((key) => {
362
+ const value = logDetails[key];
363
+ if (Array.isArray(value))
364
+ return value.length === 0;
365
+ if (typeof value === "object")
366
+ return this.isLogDetailsEmpty(value);
367
+ return !value;
368
+ }));
351
369
  }
352
370
  formatDateTime(dateString) {
353
371
  if (!dateString)
354
- return '--';
372
+ return "--";
355
373
  const date = dayjs.utc(dateString).local();
356
374
  const now = dayjs();
357
- let formattedDate = '';
358
- if (date.isSame(now, 'day')) {
359
- formattedDate = 'Today';
375
+ let formattedDate = "";
376
+ if (date.isSame(now, "day")) {
377
+ formattedDate = "Today";
360
378
  }
361
- else if (date.isSame(now.subtract(1, 'day'), 'day')) {
362
- formattedDate = 'Yesterday';
379
+ else if (date.isSame(now.subtract(1, "day"), "day")) {
380
+ formattedDate = "Yesterday";
363
381
  }
364
382
  else {
365
- formattedDate = date.format('MMM D, YYYY');
383
+ formattedDate = date.format("MMM D, YYYY");
366
384
  }
367
- return `${formattedDate} <br> ${date.format('hh : mm A')}`;
385
+ return `${formattedDate} <br> ${date.format("hh : mm A")}`;
368
386
  }
369
387
  getActionBadgeClass(action) {
370
388
  const actionClasses = {
371
- created: 'badge-light-default',
372
- updated: 'badge-light-primary1',
373
- draft: 'badge-light-default',
374
- published: 'badge-light-primary1',
375
- submit: 'badge-light-primary1',
376
- start: 'badge-light-primary1',
377
- approved: 'badge-light-success',
378
- redo: 'badge-light-warning',
379
- multiredo: 'badge-light-warning',
380
- task_created: 'badge-light-default',
389
+ created: "badge-light-default",
390
+ updated: "badge-light-primary1",
391
+ draft: "badge-light-default",
392
+ published: "badge-light-primary1",
393
+ submit: "badge-light-primary1",
394
+ start: "badge-light-primary1",
395
+ approved: "badge-light-success",
396
+ redo: "badge-light-warning",
397
+ multiredo: "badge-light-warning",
398
+ task_created: "badge-light-default",
381
399
  // reopened: 'badge-light-default',
382
- edited: 'badge-light-warning',
383
- unpublished: 'badge-light-primary1',
384
- deleted: 'badge-light-delete',
385
- duplicated: 'badge-light-default',
400
+ edited: "badge-light-warning",
401
+ unpublished: "badge-light-primary1",
402
+ deleted: "badge-light-delete",
403
+ duplicated: "badge-light-default",
404
+ reinitiated: "badge-light-warning",
386
405
  };
387
- return actionClasses[action] || 'badge-light-default';
406
+ return actionClasses[action] || "badge-light-default";
388
407
  }
389
408
  getActionLabel(action) {
390
409
  const actionLabels = {
391
- created: 'Created by',
392
- updated: 'Updated by',
393
- draft: 'Saved as Draft',
394
- published: 'Published by',
395
- submit: 'Submitted by',
396
- start: 'Started by',
397
- approved: 'Approved by',
398
- redo: 'Redo Created by',
399
- multiredo: 'Subsequent Redo Created by',
400
- task_created: 'Task Created by',
410
+ created: "Created by",
411
+ updated: "Updated by",
412
+ draft: "Saved as Draft",
413
+ published: "Published by",
414
+ submit: "Submitted by",
415
+ start: "Started by",
416
+ approved: "Approved by",
417
+ redo: "Redo Created by",
418
+ multiredo: "Subsequent Redo Created by",
419
+ task_created: "Task Created by",
401
420
  // reopened: 'Re-opened by',
402
- edited: 'Edited by',
403
- unpublished: 'Unpublished by',
404
- deleted: 'Deleted by',
405
- duplicated: 'Duplicated by',
421
+ edited: "Edited by",
422
+ unpublished: "Unpublished by",
423
+ deleted: "Deleted by",
424
+ duplicated: "Duplicated by",
425
+ reinitiated: "Reinitiated by",
406
426
  };
407
427
  return actionLabels[action] || action;
408
428
  }
409
429
  navigateToGallery(log) {
410
- let formattedDate = dayjs(log.createAt).format('YYYY-MM-DD');
430
+ let formattedDate = dayjs(log.createAt).format("YYYY-MM-DD");
411
431
  let checklistType;
412
- if (log.checkListType === 'custom') {
413
- checklistType = 'custom';
432
+ if (log.checkListType === "custom") {
433
+ checklistType = "custom";
414
434
  }
415
- else if (['task', 'checklistTask', 'cctv'].includes(log.type)) {
416
- checklistType = 'task';
435
+ else if (["task", "checklistTask", "cctv"].includes(log.type)) {
436
+ checklistType = "task";
417
437
  }
418
438
  else {
419
- checklistType = log.type || '--';
439
+ checklistType = log.type || "--";
420
440
  }
421
441
  let queryParams = {};
422
- if (log.store_id && log.store_id != '') {
442
+ if (log.store_id && log.store_id != "") {
423
443
  queryParams = {
424
444
  ChecklistDate: formattedDate,
425
445
  storeId: log.store_id,
@@ -438,17 +458,17 @@ export class ActivityLogV2Component {
438
458
  if (log.redoStatus) {
439
459
  queryParams.redoStatus = true;
440
460
  }
441
- this.router.navigate(['/manage/trax/gallery'], { queryParams });
461
+ this.router.navigate(["/manage/trax/gallery"], { queryParams });
442
462
  }
443
463
  datechange(event) {
444
464
  if (event && event.startDate && event.endDate) {
445
465
  this.selectedDateRange = {
446
466
  startDate: event.startDate,
447
- endDate: event.endDate
467
+ endDate: event.endDate,
448
468
  };
449
469
  this.selectedFilters.date = {
450
470
  startDate: event.startDate,
451
- endDate: event.endDate
471
+ endDate: event.endDate,
452
472
  };
453
473
  // localStorage.setItem("header-filters", JSON.stringify(this.selectedFilters));
454
474
  // this.resetValidation();
@@ -469,14 +489,14 @@ export class ActivityLogV2Component {
469
489
  resetValidation() {
470
490
  this.isCustomDate = (m) => {
471
491
  // Check if the given date is before yesterday
472
- return m.isAfter(this.dayjs(), 'day') ? 'invalid-date' : false;
492
+ return m.isAfter(this.dayjs(), "day") ? "invalid-date" : false;
473
493
  };
474
494
  }
475
495
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActivityLogV2Component, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.GlobalStateService }, { token: i0.ChangeDetectorRef }, { token: i3.ToastService }, { token: i4.TraxService }, { token: i2.PageInfoService }, { token: i1.ActivatedRoute }, { token: i5.NgbModal }], target: i0.ɵɵFactoryTarget.Component });
476
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ActivityLogV2Component, selector: "lib-activity-log-v2", ngImport: i0, template: "<div class=\"col-lg-12 mt-4\">\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Activity Log </span>\r\n </h3>\r\n <div 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 *ngIf=\"receivedData === 'checklist'\" [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 mx-2 logsearch\"\r\n placeholder=\"Search with Store, Email, Checklist\" autocomplete=\"off\" (keyup.enter)=\"searchField()\" />\r\n <input *ngIf=\"receivedData === 'task'\" [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 mx-2 logsearch\"\r\n placeholder=\"Search with Store, Email, Task\" autocomplete=\"off\" (keyup.enter)=\"searchField()\" />\r\n <!-- datepicker start -->\r\n <lib-date-range-picker (dateChange)=\"datechange($event)\" [value]=\"count\"></lib-date-range-picker>\r\n <!-- datepicker end -->\r\n <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex overflow-auto mb-2 mx-4\">\r\n <ul\r\n class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs-2x justify-content-center align-items-center border-transparent flex-nowrap\">\r\n <li class=\"nav-item cursor-pointer\" (click)=\"Selecttabs('checklist')\" [routerLink]=\"['/manage/trax/actioncenter']\" [queryParams]=\"{ type: 'checklist' }\">\r\n <a [ngClass]=\"receivedData === 'checklist'?'btn activebtn':''\" class=\"fw-semibold nav-link me-6\">\r\n Checklist\r\n </a>\r\n </li>\r\n <li class=\"nav-item cursor-pointer\" (click)=\"Selecttabs('task')\" [routerLink]=\"['/manage/trax/actioncenter']\" [queryParams]=\"{ type: 'task' }\">\r\n <a [ngClass]=\"receivedData === 'task' || receivedData === 'Group Details Value'? 'btn activebtn':''\"\r\n class=\"nav-link me-6\">Task\r\n </a>\r\n </li>\r\n </ul>\r\n <!-- <lib-view-action [receivedData]=\"receivedData\"></lib-view-action> -->\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table *ngIf=\"!taskLoading && !taskNoData\" class=\"table text-nowrap bottom-border\">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('datetime')\">Date & Time<svg\r\n [ngClass]=\"sortColumName === 'datetime' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n 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 === 'datetime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n \r\n <th *ngIf=\"receivedData === 'checklist'\">Checklist Name</th>\r\n <th *ngIf=\"receivedData === 'task'\">Task Name</th>\r\n <th>Action Performed</th>\r\n <th>Performed by</th>\r\n <th>Store Name</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n \r\n <tr *ngFor=\"let log of activityLogTableData\">\r\n <td>\r\n <span class=\"table-title\" [innerHTML]=\"formatDateTime(log._source.createAt)\"></span>\r\n\r\n </td>\r\n <td>\r\n <div *ngIf=\"!(log._source.type === 'task' && log._source.fromCheckListName)\">\r\n <span class=\"table-title me-2\">\r\n {{ log._source.checkListName || '--' }}\r\n </span>\r\n </div>\r\n <div *ngIf=\"log._source.type === 'task' && log._source.fromCheckListName\">\r\n <span class=\"table-title me-2\">\r\n {{ log._source.checkListName || '--' }} <br>\r\n <span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M11.6654 7.50016L7.4987 3.3335M7.4987 3.3335L3.33203 7.50016M7.4987 3.3335V13.3335C7.4987 14.2176 7.84989 15.0654 8.47501 15.6905C9.10013 16.3156 9.94798 16.6668 10.832 16.6668H16.6654\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"23\" height=\"23\" viewBox=\"0 0 23 23\" fill=\"none\">\r\n <path d=\"M8.41448 4.52303C8.69518 4.80371 8.69518 5.2588 8.41448 5.53948L5.53948 8.41448C5.2588 8.69518 4.80371 8.69518 4.52303 8.41448L3.08553 6.97698C2.80482 6.6963 2.80482 6.24121 3.08553 5.96053C3.36621 5.67982 3.8213 5.67982 4.10198 5.96053L5.03125 6.88978L7.39803 4.52303C7.67871 4.24232 8.1338 4.24232 8.41448 4.52303Z\" fill=\"#667085\"/>\r\n <path d=\"M8.41448 11.7105C8.69518 11.9912 8.69518 12.4463 8.41448 12.727L5.53948 15.602C5.2588 15.8826 4.80371 15.8826 4.52303 15.602L3.08553 14.1645C2.80482 13.8838 2.80482 13.4287 3.08553 13.1479C3.36621 12.8673 3.8213 12.8673 4.10198 13.1479L5.03125 14.0773L7.39803 11.7105C7.67871 11.4299 8.1338 11.4299 8.41448 11.7105Z\" fill=\"#667085\"/>\r\n <path d=\"M10.0625 6.46875C10.0625 6.0718 10.3844 5.75 10.7812 5.75H15.0938C15.4906 5.75 15.8125 6.0718 15.8125 6.46875C15.8125 6.8657 15.4906 7.1875 15.0938 7.1875H10.7812C10.3844 7.1875 10.0625 6.8657 10.0625 6.46875Z\" fill=\"#667085\"/>\r\n <path d=\"M3.59375 0C1.60898 0 0 1.60898 0 3.59375V16.5312C0 18.516 1.60898 20.125 3.59375 20.125H9.48708C9.25429 19.6696 9.06436 19.1886 8.92261 18.6875H3.59375C2.40288 18.6875 1.4375 17.7221 1.4375 16.5312V3.59375C1.4375 2.40288 2.40288 1.4375 3.59375 1.4375H16.5312C17.7221 1.4375 18.6875 2.40288 18.6875 3.59375V8.92261C19.1886 9.06436 19.6696 9.25429 20.125 9.48708V3.59375C20.125 1.60898 18.516 0 16.5312 0H3.59375Z\" fill=\"#667085\"/>\r\n <path d=\"M16.5313 23C20.1039 23 23 20.1039 23 16.5313C23 12.9586 20.1039 10.0625 16.5313 10.0625C12.9586 10.0625 10.0625 12.9586 10.0625 16.5313C10.0625 20.1039 12.9586 23 16.5313 23ZM16.5313 12.9375C16.9281 12.9375 17.25 13.2594 17.25 13.6563V15.8125H19.4063C19.8031 15.8125 20.125 16.1344 20.125 16.5313C20.125 16.9281 19.8031 17.25 19.4063 17.25H17.25V19.4063C17.25 19.8031 16.9281 20.125 16.5313 20.125C16.1344 20.125 15.8125 19.8031 15.8125 19.4063V17.25H13.6563C13.2594 17.25 12.9375 16.9281 12.9375 16.5313C12.9375 16.1344 13.2594 15.8125 13.6563 15.8125H15.8125V13.6563C15.8125 13.2594 16.1344 12.9375 16.5313 12.9375Z\" fill=\"#667085\"/>\r\n </svg></span><span class=\"table-title\"> {{ log._source.fromCheckListName || '--' }} </span>\r\n </span>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <span class=\"table-title badge-light\" [ngClass]=\"getActionBadgeClass(log._source.action)\">\r\n {{ getActionLabel(log._source.action) }}\r\n </span>\r\n </div>\r\n \r\n </td> \r\n <td>\r\n <div \r\n class=\"table-title d-flex\"><span class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span>{{ log._source.createdByEmail }}</span></div>\r\n </td>\r\n <td>\r\n <div \r\n class=\"table-title d-flex\"><span *ngIf=\"log._source?.storeName\" class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M2.67893 5.80366L2.62568 5.88683C2.06764 6.87388 2.66347 8.1213 3.73508 8.2644C3.83217 8.27627 3.92251 8.28255 4.01078 8.28255C4.58893 8.28255 5.1001 8.03453 5.45637 7.6478L6.0097 7.04718L6.56116 7.64953C6.9131 8.03395 7.42311 8.28255 8.00517 8.28255C8.58461 8.28255 9.09755 8.0336 9.44917 7.64953L10.0024 7.04529L10.5555 7.64953C10.9072 8.0336 11.4201 8.28255 11.9996 8.28255C12.579 8.28255 13.0919 8.0336 13.4436 7.64953L13.9967 7.04529L14.5499 7.64953C14.9016 8.0336 15.4145 8.28255 15.9939 8.28255C16.0793 8.28255 16.1724 8.27625 16.2688 8.2645C17.3639 8.11518 17.9618 6.80091 17.323 5.80416C17.323 5.8041 17.323 5.80405 17.3229 5.80399L15.5648 3.06258L15.5648 3.06258L15.5638 3.06111C15.5486 3.03728 15.5112 3.01172 15.464 3.01172H4.53458C4.48744 3.01172 4.44995 3.03728 4.43474 3.06111L4.43413 3.06208L2.67893 5.80366ZM15.6504 10.7369V13.8689V14.6189H14.9004H5.09821H4.34821V13.8689V10.7374C4.23798 10.7456 4.12646 10.7498 4.01384 10.7498C3.97154 10.7498 3.92952 10.7492 3.88778 10.748V13.8689V15.8034C3.88778 16.4468 4.42168 16.9879 5.09821 16.9879H14.9004C15.5769 16.9879 16.1108 16.4468 16.1108 15.8034V13.8689V10.7482C16.071 10.7493 16.031 10.7498 15.9909 10.7498C15.8765 10.7498 15.7629 10.7455 15.6504 10.7369Z\" stroke=\"#667085\" stroke-width=\"1.5\"/>\r\n </svg></span><span>{{ log._source.storeName || '-' }}</span></div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <!-- \"['updated', 'edited', 'draft'].includes(log._source.action)\" -->\r\n <span *ngIf=\"['updated', 'edited'].includes(log._source.action) || (log._source.action === 'draft' && log._source.logDetails && !isLogDetailsEmpty(log._source.logDetails))\"\r\n (click)=\"viewAction(log._source)\" \r\n class=\"text-primary cursor-pointer\">\r\n <u>View</u>\r\n </span>\r\n <span *ngIf=\"log._source.action === 'submit'\"\r\n (click)=\"navigateToGallery(log._source)\" \r\n class=\"text-primary cursor-pointer\">\r\n <u>View</u>\r\n </span>\r\n <!-- *ngIf=\"!['updated', 'edited', 'submit', 'draft'].includes(log._source.action)\" -->\r\n <span *ngIf=\"!['updated', 'edited', 'submit'].includes(log._source.action) && !(log._source.action === 'draft' && log._source.logDetails && !isLogDetailsEmpty(log._source.logDetails))\">-</span>\r\n </div>\r\n </td>\r\n \r\n \r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n <ng-container *ngIf=\"taskLoading\">\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>\r\n </ng-container>\r\n <ng-container *ngIf=\"taskNoData && !taskLoading\">\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 Activity Log</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n <div *ngIf=\"!taskLoading && !taskNoData\">\r\n <lib-pagination class=\"text-start\" [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 </div>\r\n</div>\r\n</div>", styles: [".table-title{color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-size:14px;font-style:normal;font-weight:500;line-height:20px;text-decoration-line:underline}.card .card-header{padding:0px 1.5rem}.nav-item .nav-link{color:var(--Gray-500, #667085);font-size:16px;font-weight:500}.activebtn{color:var(--Primary-700, #009BF3)!important;border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;font-size:16px!important;font-weight:500!important}.daterange{color:var(--Gray-500, #667085);font-size:16px;font-style:normal;font-weight:600;line-height:24px}.nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.rotate{transform:rotate(180deg)}.logsearch{width:370px}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.badge-light{display:flex;padding:8px 16px;justify-content:center;align-items:center;flex:1 0 0;border-radius:16px;opacity:.8;font-weight:500;width:70%}.badge-light-default{background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054)}.badge-light-primary1{background:var(--Blue-50, #EFF8FF);color:var(--Blue-700, #175CD3)}.badge-light-success{background:var(--Success-50, #ECFDF3);color:var(--Success-700, #027A48)}.badge-light-warning{background:var(--Warning-50, #FFFAEB);color:var(--Warning-700, #B54708)}.badge-light-delete{background:var(--Error-50, #FEF3F2);color:var(----Error-700, #B42318)}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "component", type: i3.FiltersComponent, selector: "lib-filters", inputs: ["dataObject"], outputs: ["appliedFilters"] }, { kind: "directive", type: i7.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: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.DateRangePickerComponent, selector: "lib-date-range-picker", inputs: ["value"], outputs: ["dateChange"] }] });
496
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ActivityLogV2Component, selector: "lib-activity-log-v2", ngImport: i0, template: "<div class=\"col-lg-12 mt-4\">\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Activity Log </span>\r\n </h3>\r\n <div 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 *ngIf=\"receivedData === 'checklist'\" [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 mx-2 logsearch\"\r\n placeholder=\"Search with Store, Email, Checklist\" autocomplete=\"off\" (keyup.enter)=\"searchField()\" />\r\n <input *ngIf=\"receivedData === 'task'\" [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 mx-2 logsearch\"\r\n placeholder=\"Search with Store, Email, Task\" autocomplete=\"off\" (keyup.enter)=\"searchField()\" />\r\n <!-- datepicker start -->\r\n <lib-date-range-picker (dateChange)=\"datechange($event)\" [value]=\"count\"></lib-date-range-picker>\r\n <!-- datepicker end -->\r\n <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex overflow-auto mb-2 mx-4\">\r\n <ul\r\n class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs-2x justify-content-center align-items-center border-transparent flex-nowrap\">\r\n <li class=\"nav-item cursor-pointer\" (click)=\"Selecttabs('checklist')\" [routerLink]=\"['/manage/trax/actioncenter']\" [queryParams]=\"{ type: 'checklist' }\">\r\n <a [ngClass]=\"receivedData === 'checklist'?'btn activebtn':''\" class=\"fw-semibold nav-link me-6\">\r\n Checklist\r\n </a>\r\n </li>\r\n <li class=\"nav-item cursor-pointer\" (click)=\"Selecttabs('task')\" [routerLink]=\"['/manage/trax/actioncenter']\" [queryParams]=\"{ type: 'task' }\">\r\n <a [ngClass]=\"receivedData === 'task' || receivedData === 'Group Details Value'? 'btn activebtn':''\"\r\n class=\"nav-link me-6\">Task\r\n </a>\r\n </li>\r\n </ul>\r\n <!-- <lib-view-action [receivedData]=\"receivedData\"></lib-view-action> -->\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table *ngIf=\"!taskLoading && !taskNoData\" class=\"table text-nowrap bottom-border\">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('datetime')\">Date & Time<svg\r\n [ngClass]=\"sortColumName === 'datetime' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n 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 === 'datetime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n \r\n <th *ngIf=\"receivedData === 'checklist'\">Checklist Name</th>\r\n <th *ngIf=\"receivedData === 'task'\">Task Name</th>\r\n <th>Action Performed</th>\r\n <th>Performed by</th>\r\n <th>Name</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n \r\n <tr *ngFor=\"let log of activityLogTableData\">\r\n <td>\r\n <span class=\"table-title\" [innerHTML]=\"formatDateTime(log._source.createAt)\"></span>\r\n\r\n </td>\r\n <td>\r\n <div *ngIf=\"!(log._source.type === 'task' && log._source.fromCheckListName)\">\r\n <span class=\"table-title me-2\">\r\n {{ log._source.checkListName || '--' }}\r\n </span>\r\n </div>\r\n <div *ngIf=\"log._source.type === 'task' && log._source.fromCheckListName\">\r\n <span class=\"table-title me-2\">\r\n {{ log._source.checkListName || '--' }} <br>\r\n <span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M11.6654 7.50016L7.4987 3.3335M7.4987 3.3335L3.33203 7.50016M7.4987 3.3335V13.3335C7.4987 14.2176 7.84989 15.0654 8.47501 15.6905C9.10013 16.3156 9.94798 16.6668 10.832 16.6668H16.6654\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"23\" height=\"23\" viewBox=\"0 0 23 23\" fill=\"none\">\r\n <path d=\"M8.41448 4.52303C8.69518 4.80371 8.69518 5.2588 8.41448 5.53948L5.53948 8.41448C5.2588 8.69518 4.80371 8.69518 4.52303 8.41448L3.08553 6.97698C2.80482 6.6963 2.80482 6.24121 3.08553 5.96053C3.36621 5.67982 3.8213 5.67982 4.10198 5.96053L5.03125 6.88978L7.39803 4.52303C7.67871 4.24232 8.1338 4.24232 8.41448 4.52303Z\" fill=\"#667085\"/>\r\n <path d=\"M8.41448 11.7105C8.69518 11.9912 8.69518 12.4463 8.41448 12.727L5.53948 15.602C5.2588 15.8826 4.80371 15.8826 4.52303 15.602L3.08553 14.1645C2.80482 13.8838 2.80482 13.4287 3.08553 13.1479C3.36621 12.8673 3.8213 12.8673 4.10198 13.1479L5.03125 14.0773L7.39803 11.7105C7.67871 11.4299 8.1338 11.4299 8.41448 11.7105Z\" fill=\"#667085\"/>\r\n <path d=\"M10.0625 6.46875C10.0625 6.0718 10.3844 5.75 10.7812 5.75H15.0938C15.4906 5.75 15.8125 6.0718 15.8125 6.46875C15.8125 6.8657 15.4906 7.1875 15.0938 7.1875H10.7812C10.3844 7.1875 10.0625 6.8657 10.0625 6.46875Z\" fill=\"#667085\"/>\r\n <path d=\"M3.59375 0C1.60898 0 0 1.60898 0 3.59375V16.5312C0 18.516 1.60898 20.125 3.59375 20.125H9.48708C9.25429 19.6696 9.06436 19.1886 8.92261 18.6875H3.59375C2.40288 18.6875 1.4375 17.7221 1.4375 16.5312V3.59375C1.4375 2.40288 2.40288 1.4375 3.59375 1.4375H16.5312C17.7221 1.4375 18.6875 2.40288 18.6875 3.59375V8.92261C19.1886 9.06436 19.6696 9.25429 20.125 9.48708V3.59375C20.125 1.60898 18.516 0 16.5312 0H3.59375Z\" fill=\"#667085\"/>\r\n <path d=\"M16.5313 23C20.1039 23 23 20.1039 23 16.5313C23 12.9586 20.1039 10.0625 16.5313 10.0625C12.9586 10.0625 10.0625 12.9586 10.0625 16.5313C10.0625 20.1039 12.9586 23 16.5313 23ZM16.5313 12.9375C16.9281 12.9375 17.25 13.2594 17.25 13.6563V15.8125H19.4063C19.8031 15.8125 20.125 16.1344 20.125 16.5313C20.125 16.9281 19.8031 17.25 19.4063 17.25H17.25V19.4063C17.25 19.8031 16.9281 20.125 16.5313 20.125C16.1344 20.125 15.8125 19.8031 15.8125 19.4063V17.25H13.6563C13.2594 17.25 12.9375 16.9281 12.9375 16.5313C12.9375 16.1344 13.2594 15.8125 13.6563 15.8125H15.8125V13.6563C15.8125 13.2594 16.1344 12.9375 16.5313 12.9375Z\" fill=\"#667085\"/>\r\n </svg></span><span class=\"table-title\"> {{ log._source.fromCheckListName || '--' }} </span>\r\n </span>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <span class=\"table-title badge-light\" [ngClass]=\"getActionBadgeClass(log._source.action)\">\r\n {{ getActionLabel(log._source.action) }}\r\n </span>\r\n </div>\r\n \r\n </td> \r\n <td>\r\n <div \r\n class=\"table-title d-flex\"><span class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span>{{ log._source.createdByEmail }}</span></div>\r\n </td>\r\n <td>\r\n <div \r\n class=\"table-title d-flex\"><span *ngIf=\"log._source?.coverage === 'store' || (!log._source?.coverage && log._source?.storeName) \"><span class=\"me-3\" *ngIf=\"log._source?.storeName\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M2.67893 5.80366L2.62568 5.88683C2.06764 6.87388 2.66347 8.1213 3.73508 8.2644C3.83217 8.27627 3.92251 8.28255 4.01078 8.28255C4.58893 8.28255 5.1001 8.03453 5.45637 7.6478L6.0097 7.04718L6.56116 7.64953C6.9131 8.03395 7.42311 8.28255 8.00517 8.28255C8.58461 8.28255 9.09755 8.0336 9.44917 7.64953L10.0024 7.04529L10.5555 7.64953C10.9072 8.0336 11.4201 8.28255 11.9996 8.28255C12.579 8.28255 13.0919 8.0336 13.4436 7.64953L13.9967 7.04529L14.5499 7.64953C14.9016 8.0336 15.4145 8.28255 15.9939 8.28255C16.0793 8.28255 16.1724 8.27625 16.2688 8.2645C17.3639 8.11518 17.9618 6.80091 17.323 5.80416C17.323 5.8041 17.323 5.80405 17.3229 5.80399L15.5648 3.06258L15.5648 3.06258L15.5638 3.06111C15.5486 3.03728 15.5112 3.01172 15.464 3.01172H4.53458C4.48744 3.01172 4.44995 3.03728 4.43474 3.06111L4.43413 3.06208L2.67893 5.80366ZM15.6504 10.7369V13.8689V14.6189H14.9004H5.09821H4.34821V13.8689V10.7374C4.23798 10.7456 4.12646 10.7498 4.01384 10.7498C3.97154 10.7498 3.92952 10.7492 3.88778 10.748V13.8689V15.8034C3.88778 16.4468 4.42168 16.9879 5.09821 16.9879H14.9004C15.5769 16.9879 16.1108 16.4468 16.1108 15.8034V13.8689V10.7482C16.071 10.7493 16.031 10.7498 15.9909 10.7498C15.8765 10.7498 15.7629 10.7455 15.6504 10.7369Z\" stroke=\"#667085\" stroke-width=\"1.5\"/>\r\n </svg></span><span>{{ log._source.storeName || '-' }}</span></span>\r\n <span *ngIf=\"log._source?.coverage === 'user' || (!log._source?.coverage && log._source?.userEmail)\">\r\n <span class=\"me-3\" *ngIf=\"log._source?.userEmail\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span>{{ log._source?.userEmail || '-'}}</span>\r\n </span>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <!-- \"['updated', 'edited', 'draft'].includes(log._source.action)\" -->\r\n <span *ngIf=\"['updated', 'edited'].includes(log._source.action) || (log._source.action === 'draft' && log._source.logDetails && !isLogDetailsEmpty(log._source.logDetails))\"\r\n (click)=\"viewAction(log._source)\" \r\n class=\"text-primary cursor-pointer\">\r\n <u>View</u>\r\n </span>\r\n <span *ngIf=\"log._source.action === 'submit'\"\r\n (click)=\"navigateToGallery(log._source)\" \r\n class=\"text-primary cursor-pointer\">\r\n <u>View</u>\r\n </span>\r\n <!-- *ngIf=\"!['updated', 'edited', 'submit', 'draft'].includes(log._source.action)\" -->\r\n <span *ngIf=\"!['updated', 'edited', 'submit'].includes(log._source.action) && !(log._source.action === 'draft' && log._source.logDetails && !isLogDetailsEmpty(log._source.logDetails))\">-</span>\r\n </div>\r\n </td>\r\n \r\n \r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n <ng-container *ngIf=\"taskLoading\">\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>\r\n </ng-container>\r\n <ng-container *ngIf=\"taskNoData && !taskLoading\">\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 Activity Log</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n <div *ngIf=\"!taskLoading && !taskNoData\">\r\n <lib-pagination class=\"text-start\" [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 </div>\r\n</div>\r\n</div>", styles: [".table-title{color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-size:14px;font-style:normal;font-weight:500;line-height:20px;text-decoration-line:underline}.card .card-header{padding:0px 1.5rem}.nav-item .nav-link{color:var(--Gray-500, #667085);font-size:16px;font-weight:500}.activebtn{color:var(--Primary-700, #009BF3)!important;border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;font-size:16px!important;font-weight:500!important}.daterange{color:var(--Gray-500, #667085);font-size:16px;font-style:normal;font-weight:600;line-height:24px}.nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.rotate{transform:rotate(180deg)}.logsearch{width:370px}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.badge-light{display:flex;padding:8px 16px;justify-content:center;align-items:center;flex:1 0 0;border-radius:16px;opacity:.8;font-weight:500;width:70%}.badge-light-default{background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054)}.badge-light-primary1{background:var(--Blue-50, #EFF8FF);color:var(--Blue-700, #175CD3)}.badge-light-success{background:var(--Success-50, #ECFDF3);color:var(--Success-700, #027A48)}.badge-light-warning{background:var(--Warning-50, #FFFAEB);color:var(--Warning-700, #B54708)}.badge-light-delete{background:var(--Error-50, #FEF3F2);color:var(----Error-700, #B42318)}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "component", type: i3.FiltersComponent, selector: "lib-filters", inputs: ["dataObject"], outputs: ["appliedFilters"] }, { kind: "directive", type: i7.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: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.DateRangePickerComponent, selector: "lib-date-range-picker", inputs: ["value"], outputs: ["dateChange"] }] });
477
497
  }
478
498
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActivityLogV2Component, decorators: [{
479
499
  type: Component,
480
- args: [{ selector: 'lib-activity-log-v2', template: "<div class=\"col-lg-12 mt-4\">\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Activity Log </span>\r\n </h3>\r\n <div 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 *ngIf=\"receivedData === 'checklist'\" [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 mx-2 logsearch\"\r\n placeholder=\"Search with Store, Email, Checklist\" autocomplete=\"off\" (keyup.enter)=\"searchField()\" />\r\n <input *ngIf=\"receivedData === 'task'\" [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 mx-2 logsearch\"\r\n placeholder=\"Search with Store, Email, Task\" autocomplete=\"off\" (keyup.enter)=\"searchField()\" />\r\n <!-- datepicker start -->\r\n <lib-date-range-picker (dateChange)=\"datechange($event)\" [value]=\"count\"></lib-date-range-picker>\r\n <!-- datepicker end -->\r\n <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex overflow-auto mb-2 mx-4\">\r\n <ul\r\n class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs-2x justify-content-center align-items-center border-transparent flex-nowrap\">\r\n <li class=\"nav-item cursor-pointer\" (click)=\"Selecttabs('checklist')\" [routerLink]=\"['/manage/trax/actioncenter']\" [queryParams]=\"{ type: 'checklist' }\">\r\n <a [ngClass]=\"receivedData === 'checklist'?'btn activebtn':''\" class=\"fw-semibold nav-link me-6\">\r\n Checklist\r\n </a>\r\n </li>\r\n <li class=\"nav-item cursor-pointer\" (click)=\"Selecttabs('task')\" [routerLink]=\"['/manage/trax/actioncenter']\" [queryParams]=\"{ type: 'task' }\">\r\n <a [ngClass]=\"receivedData === 'task' || receivedData === 'Group Details Value'? 'btn activebtn':''\"\r\n class=\"nav-link me-6\">Task\r\n </a>\r\n </li>\r\n </ul>\r\n <!-- <lib-view-action [receivedData]=\"receivedData\"></lib-view-action> -->\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table *ngIf=\"!taskLoading && !taskNoData\" class=\"table text-nowrap bottom-border\">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('datetime')\">Date & Time<svg\r\n [ngClass]=\"sortColumName === 'datetime' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n 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 === 'datetime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n \r\n <th *ngIf=\"receivedData === 'checklist'\">Checklist Name</th>\r\n <th *ngIf=\"receivedData === 'task'\">Task Name</th>\r\n <th>Action Performed</th>\r\n <th>Performed by</th>\r\n <th>Store Name</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n \r\n <tr *ngFor=\"let log of activityLogTableData\">\r\n <td>\r\n <span class=\"table-title\" [innerHTML]=\"formatDateTime(log._source.createAt)\"></span>\r\n\r\n </td>\r\n <td>\r\n <div *ngIf=\"!(log._source.type === 'task' && log._source.fromCheckListName)\">\r\n <span class=\"table-title me-2\">\r\n {{ log._source.checkListName || '--' }}\r\n </span>\r\n </div>\r\n <div *ngIf=\"log._source.type === 'task' && log._source.fromCheckListName\">\r\n <span class=\"table-title me-2\">\r\n {{ log._source.checkListName || '--' }} <br>\r\n <span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M11.6654 7.50016L7.4987 3.3335M7.4987 3.3335L3.33203 7.50016M7.4987 3.3335V13.3335C7.4987 14.2176 7.84989 15.0654 8.47501 15.6905C9.10013 16.3156 9.94798 16.6668 10.832 16.6668H16.6654\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"23\" height=\"23\" viewBox=\"0 0 23 23\" fill=\"none\">\r\n <path d=\"M8.41448 4.52303C8.69518 4.80371 8.69518 5.2588 8.41448 5.53948L5.53948 8.41448C5.2588 8.69518 4.80371 8.69518 4.52303 8.41448L3.08553 6.97698C2.80482 6.6963 2.80482 6.24121 3.08553 5.96053C3.36621 5.67982 3.8213 5.67982 4.10198 5.96053L5.03125 6.88978L7.39803 4.52303C7.67871 4.24232 8.1338 4.24232 8.41448 4.52303Z\" fill=\"#667085\"/>\r\n <path d=\"M8.41448 11.7105C8.69518 11.9912 8.69518 12.4463 8.41448 12.727L5.53948 15.602C5.2588 15.8826 4.80371 15.8826 4.52303 15.602L3.08553 14.1645C2.80482 13.8838 2.80482 13.4287 3.08553 13.1479C3.36621 12.8673 3.8213 12.8673 4.10198 13.1479L5.03125 14.0773L7.39803 11.7105C7.67871 11.4299 8.1338 11.4299 8.41448 11.7105Z\" fill=\"#667085\"/>\r\n <path d=\"M10.0625 6.46875C10.0625 6.0718 10.3844 5.75 10.7812 5.75H15.0938C15.4906 5.75 15.8125 6.0718 15.8125 6.46875C15.8125 6.8657 15.4906 7.1875 15.0938 7.1875H10.7812C10.3844 7.1875 10.0625 6.8657 10.0625 6.46875Z\" fill=\"#667085\"/>\r\n <path d=\"M3.59375 0C1.60898 0 0 1.60898 0 3.59375V16.5312C0 18.516 1.60898 20.125 3.59375 20.125H9.48708C9.25429 19.6696 9.06436 19.1886 8.92261 18.6875H3.59375C2.40288 18.6875 1.4375 17.7221 1.4375 16.5312V3.59375C1.4375 2.40288 2.40288 1.4375 3.59375 1.4375H16.5312C17.7221 1.4375 18.6875 2.40288 18.6875 3.59375V8.92261C19.1886 9.06436 19.6696 9.25429 20.125 9.48708V3.59375C20.125 1.60898 18.516 0 16.5312 0H3.59375Z\" fill=\"#667085\"/>\r\n <path d=\"M16.5313 23C20.1039 23 23 20.1039 23 16.5313C23 12.9586 20.1039 10.0625 16.5313 10.0625C12.9586 10.0625 10.0625 12.9586 10.0625 16.5313C10.0625 20.1039 12.9586 23 16.5313 23ZM16.5313 12.9375C16.9281 12.9375 17.25 13.2594 17.25 13.6563V15.8125H19.4063C19.8031 15.8125 20.125 16.1344 20.125 16.5313C20.125 16.9281 19.8031 17.25 19.4063 17.25H17.25V19.4063C17.25 19.8031 16.9281 20.125 16.5313 20.125C16.1344 20.125 15.8125 19.8031 15.8125 19.4063V17.25H13.6563C13.2594 17.25 12.9375 16.9281 12.9375 16.5313C12.9375 16.1344 13.2594 15.8125 13.6563 15.8125H15.8125V13.6563C15.8125 13.2594 16.1344 12.9375 16.5313 12.9375Z\" fill=\"#667085\"/>\r\n </svg></span><span class=\"table-title\"> {{ log._source.fromCheckListName || '--' }} </span>\r\n </span>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <span class=\"table-title badge-light\" [ngClass]=\"getActionBadgeClass(log._source.action)\">\r\n {{ getActionLabel(log._source.action) }}\r\n </span>\r\n </div>\r\n \r\n </td> \r\n <td>\r\n <div \r\n class=\"table-title d-flex\"><span class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span>{{ log._source.createdByEmail }}</span></div>\r\n </td>\r\n <td>\r\n <div \r\n class=\"table-title d-flex\"><span *ngIf=\"log._source?.storeName\" class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M2.67893 5.80366L2.62568 5.88683C2.06764 6.87388 2.66347 8.1213 3.73508 8.2644C3.83217 8.27627 3.92251 8.28255 4.01078 8.28255C4.58893 8.28255 5.1001 8.03453 5.45637 7.6478L6.0097 7.04718L6.56116 7.64953C6.9131 8.03395 7.42311 8.28255 8.00517 8.28255C8.58461 8.28255 9.09755 8.0336 9.44917 7.64953L10.0024 7.04529L10.5555 7.64953C10.9072 8.0336 11.4201 8.28255 11.9996 8.28255C12.579 8.28255 13.0919 8.0336 13.4436 7.64953L13.9967 7.04529L14.5499 7.64953C14.9016 8.0336 15.4145 8.28255 15.9939 8.28255C16.0793 8.28255 16.1724 8.27625 16.2688 8.2645C17.3639 8.11518 17.9618 6.80091 17.323 5.80416C17.323 5.8041 17.323 5.80405 17.3229 5.80399L15.5648 3.06258L15.5648 3.06258L15.5638 3.06111C15.5486 3.03728 15.5112 3.01172 15.464 3.01172H4.53458C4.48744 3.01172 4.44995 3.03728 4.43474 3.06111L4.43413 3.06208L2.67893 5.80366ZM15.6504 10.7369V13.8689V14.6189H14.9004H5.09821H4.34821V13.8689V10.7374C4.23798 10.7456 4.12646 10.7498 4.01384 10.7498C3.97154 10.7498 3.92952 10.7492 3.88778 10.748V13.8689V15.8034C3.88778 16.4468 4.42168 16.9879 5.09821 16.9879H14.9004C15.5769 16.9879 16.1108 16.4468 16.1108 15.8034V13.8689V10.7482C16.071 10.7493 16.031 10.7498 15.9909 10.7498C15.8765 10.7498 15.7629 10.7455 15.6504 10.7369Z\" stroke=\"#667085\" stroke-width=\"1.5\"/>\r\n </svg></span><span>{{ log._source.storeName || '-' }}</span></div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <!-- \"['updated', 'edited', 'draft'].includes(log._source.action)\" -->\r\n <span *ngIf=\"['updated', 'edited'].includes(log._source.action) || (log._source.action === 'draft' && log._source.logDetails && !isLogDetailsEmpty(log._source.logDetails))\"\r\n (click)=\"viewAction(log._source)\" \r\n class=\"text-primary cursor-pointer\">\r\n <u>View</u>\r\n </span>\r\n <span *ngIf=\"log._source.action === 'submit'\"\r\n (click)=\"navigateToGallery(log._source)\" \r\n class=\"text-primary cursor-pointer\">\r\n <u>View</u>\r\n </span>\r\n <!-- *ngIf=\"!['updated', 'edited', 'submit', 'draft'].includes(log._source.action)\" -->\r\n <span *ngIf=\"!['updated', 'edited', 'submit'].includes(log._source.action) && !(log._source.action === 'draft' && log._source.logDetails && !isLogDetailsEmpty(log._source.logDetails))\">-</span>\r\n </div>\r\n </td>\r\n \r\n \r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n <ng-container *ngIf=\"taskLoading\">\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>\r\n </ng-container>\r\n <ng-container *ngIf=\"taskNoData && !taskLoading\">\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 Activity Log</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n <div *ngIf=\"!taskLoading && !taskNoData\">\r\n <lib-pagination class=\"text-start\" [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 </div>\r\n</div>\r\n</div>", styles: [".table-title{color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-size:14px;font-style:normal;font-weight:500;line-height:20px;text-decoration-line:underline}.card .card-header{padding:0px 1.5rem}.nav-item .nav-link{color:var(--Gray-500, #667085);font-size:16px;font-weight:500}.activebtn{color:var(--Primary-700, #009BF3)!important;border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;font-size:16px!important;font-weight:500!important}.daterange{color:var(--Gray-500, #667085);font-size:16px;font-style:normal;font-weight:600;line-height:24px}.nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.rotate{transform:rotate(180deg)}.logsearch{width:370px}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.badge-light{display:flex;padding:8px 16px;justify-content:center;align-items:center;flex:1 0 0;border-radius:16px;opacity:.8;font-weight:500;width:70%}.badge-light-default{background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054)}.badge-light-primary1{background:var(--Blue-50, #EFF8FF);color:var(--Blue-700, #175CD3)}.badge-light-success{background:var(--Success-50, #ECFDF3);color:var(--Success-700, #027A48)}.badge-light-warning{background:var(--Warning-50, #FFFAEB);color:var(--Warning-700, #B54708)}.badge-light-delete{background:var(--Error-50, #FEF3F2);color:var(----Error-700, #B42318)}\n"] }]
500
+ args: [{ selector: "lib-activity-log-v2", template: "<div class=\"col-lg-12 mt-4\">\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Activity Log </span>\r\n </h3>\r\n <div 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 *ngIf=\"receivedData === 'checklist'\" [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 mx-2 logsearch\"\r\n placeholder=\"Search with Store, Email, Checklist\" autocomplete=\"off\" (keyup.enter)=\"searchField()\" />\r\n <input *ngIf=\"receivedData === 'task'\" [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 mx-2 logsearch\"\r\n placeholder=\"Search with Store, Email, Task\" autocomplete=\"off\" (keyup.enter)=\"searchField()\" />\r\n <!-- datepicker start -->\r\n <lib-date-range-picker (dateChange)=\"datechange($event)\" [value]=\"count\"></lib-date-range-picker>\r\n <!-- datepicker end -->\r\n <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex overflow-auto mb-2 mx-4\">\r\n <ul\r\n class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs-2x justify-content-center align-items-center border-transparent flex-nowrap\">\r\n <li class=\"nav-item cursor-pointer\" (click)=\"Selecttabs('checklist')\" [routerLink]=\"['/manage/trax/actioncenter']\" [queryParams]=\"{ type: 'checklist' }\">\r\n <a [ngClass]=\"receivedData === 'checklist'?'btn activebtn':''\" class=\"fw-semibold nav-link me-6\">\r\n Checklist\r\n </a>\r\n </li>\r\n <li class=\"nav-item cursor-pointer\" (click)=\"Selecttabs('task')\" [routerLink]=\"['/manage/trax/actioncenter']\" [queryParams]=\"{ type: 'task' }\">\r\n <a [ngClass]=\"receivedData === 'task' || receivedData === 'Group Details Value'? 'btn activebtn':''\"\r\n class=\"nav-link me-6\">Task\r\n </a>\r\n </li>\r\n </ul>\r\n <!-- <lib-view-action [receivedData]=\"receivedData\"></lib-view-action> -->\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table *ngIf=\"!taskLoading && !taskNoData\" class=\"table text-nowrap bottom-border\">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('datetime')\">Date & Time<svg\r\n [ngClass]=\"sortColumName === 'datetime' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n 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 === 'datetime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n \r\n <th *ngIf=\"receivedData === 'checklist'\">Checklist Name</th>\r\n <th *ngIf=\"receivedData === 'task'\">Task Name</th>\r\n <th>Action Performed</th>\r\n <th>Performed by</th>\r\n <th>Name</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n \r\n <tr *ngFor=\"let log of activityLogTableData\">\r\n <td>\r\n <span class=\"table-title\" [innerHTML]=\"formatDateTime(log._source.createAt)\"></span>\r\n\r\n </td>\r\n <td>\r\n <div *ngIf=\"!(log._source.type === 'task' && log._source.fromCheckListName)\">\r\n <span class=\"table-title me-2\">\r\n {{ log._source.checkListName || '--' }}\r\n </span>\r\n </div>\r\n <div *ngIf=\"log._source.type === 'task' && log._source.fromCheckListName\">\r\n <span class=\"table-title me-2\">\r\n {{ log._source.checkListName || '--' }} <br>\r\n <span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M11.6654 7.50016L7.4987 3.3335M7.4987 3.3335L3.33203 7.50016M7.4987 3.3335V13.3335C7.4987 14.2176 7.84989 15.0654 8.47501 15.6905C9.10013 16.3156 9.94798 16.6668 10.832 16.6668H16.6654\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"23\" height=\"23\" viewBox=\"0 0 23 23\" fill=\"none\">\r\n <path d=\"M8.41448 4.52303C8.69518 4.80371 8.69518 5.2588 8.41448 5.53948L5.53948 8.41448C5.2588 8.69518 4.80371 8.69518 4.52303 8.41448L3.08553 6.97698C2.80482 6.6963 2.80482 6.24121 3.08553 5.96053C3.36621 5.67982 3.8213 5.67982 4.10198 5.96053L5.03125 6.88978L7.39803 4.52303C7.67871 4.24232 8.1338 4.24232 8.41448 4.52303Z\" fill=\"#667085\"/>\r\n <path d=\"M8.41448 11.7105C8.69518 11.9912 8.69518 12.4463 8.41448 12.727L5.53948 15.602C5.2588 15.8826 4.80371 15.8826 4.52303 15.602L3.08553 14.1645C2.80482 13.8838 2.80482 13.4287 3.08553 13.1479C3.36621 12.8673 3.8213 12.8673 4.10198 13.1479L5.03125 14.0773L7.39803 11.7105C7.67871 11.4299 8.1338 11.4299 8.41448 11.7105Z\" fill=\"#667085\"/>\r\n <path d=\"M10.0625 6.46875C10.0625 6.0718 10.3844 5.75 10.7812 5.75H15.0938C15.4906 5.75 15.8125 6.0718 15.8125 6.46875C15.8125 6.8657 15.4906 7.1875 15.0938 7.1875H10.7812C10.3844 7.1875 10.0625 6.8657 10.0625 6.46875Z\" fill=\"#667085\"/>\r\n <path d=\"M3.59375 0C1.60898 0 0 1.60898 0 3.59375V16.5312C0 18.516 1.60898 20.125 3.59375 20.125H9.48708C9.25429 19.6696 9.06436 19.1886 8.92261 18.6875H3.59375C2.40288 18.6875 1.4375 17.7221 1.4375 16.5312V3.59375C1.4375 2.40288 2.40288 1.4375 3.59375 1.4375H16.5312C17.7221 1.4375 18.6875 2.40288 18.6875 3.59375V8.92261C19.1886 9.06436 19.6696 9.25429 20.125 9.48708V3.59375C20.125 1.60898 18.516 0 16.5312 0H3.59375Z\" fill=\"#667085\"/>\r\n <path d=\"M16.5313 23C20.1039 23 23 20.1039 23 16.5313C23 12.9586 20.1039 10.0625 16.5313 10.0625C12.9586 10.0625 10.0625 12.9586 10.0625 16.5313C10.0625 20.1039 12.9586 23 16.5313 23ZM16.5313 12.9375C16.9281 12.9375 17.25 13.2594 17.25 13.6563V15.8125H19.4063C19.8031 15.8125 20.125 16.1344 20.125 16.5313C20.125 16.9281 19.8031 17.25 19.4063 17.25H17.25V19.4063C17.25 19.8031 16.9281 20.125 16.5313 20.125C16.1344 20.125 15.8125 19.8031 15.8125 19.4063V17.25H13.6563C13.2594 17.25 12.9375 16.9281 12.9375 16.5313C12.9375 16.1344 13.2594 15.8125 13.6563 15.8125H15.8125V13.6563C15.8125 13.2594 16.1344 12.9375 16.5313 12.9375Z\" fill=\"#667085\"/>\r\n </svg></span><span class=\"table-title\"> {{ log._source.fromCheckListName || '--' }} </span>\r\n </span>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <span class=\"table-title badge-light\" [ngClass]=\"getActionBadgeClass(log._source.action)\">\r\n {{ getActionLabel(log._source.action) }}\r\n </span>\r\n </div>\r\n \r\n </td> \r\n <td>\r\n <div \r\n class=\"table-title d-flex\"><span class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span>{{ log._source.createdByEmail }}</span></div>\r\n </td>\r\n <td>\r\n <div \r\n class=\"table-title d-flex\"><span *ngIf=\"log._source?.coverage === 'store' || (!log._source?.coverage && log._source?.storeName) \"><span class=\"me-3\" *ngIf=\"log._source?.storeName\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M2.67893 5.80366L2.62568 5.88683C2.06764 6.87388 2.66347 8.1213 3.73508 8.2644C3.83217 8.27627 3.92251 8.28255 4.01078 8.28255C4.58893 8.28255 5.1001 8.03453 5.45637 7.6478L6.0097 7.04718L6.56116 7.64953C6.9131 8.03395 7.42311 8.28255 8.00517 8.28255C8.58461 8.28255 9.09755 8.0336 9.44917 7.64953L10.0024 7.04529L10.5555 7.64953C10.9072 8.0336 11.4201 8.28255 11.9996 8.28255C12.579 8.28255 13.0919 8.0336 13.4436 7.64953L13.9967 7.04529L14.5499 7.64953C14.9016 8.0336 15.4145 8.28255 15.9939 8.28255C16.0793 8.28255 16.1724 8.27625 16.2688 8.2645C17.3639 8.11518 17.9618 6.80091 17.323 5.80416C17.323 5.8041 17.323 5.80405 17.3229 5.80399L15.5648 3.06258L15.5648 3.06258L15.5638 3.06111C15.5486 3.03728 15.5112 3.01172 15.464 3.01172H4.53458C4.48744 3.01172 4.44995 3.03728 4.43474 3.06111L4.43413 3.06208L2.67893 5.80366ZM15.6504 10.7369V13.8689V14.6189H14.9004H5.09821H4.34821V13.8689V10.7374C4.23798 10.7456 4.12646 10.7498 4.01384 10.7498C3.97154 10.7498 3.92952 10.7492 3.88778 10.748V13.8689V15.8034C3.88778 16.4468 4.42168 16.9879 5.09821 16.9879H14.9004C15.5769 16.9879 16.1108 16.4468 16.1108 15.8034V13.8689V10.7482C16.071 10.7493 16.031 10.7498 15.9909 10.7498C15.8765 10.7498 15.7629 10.7455 15.6504 10.7369Z\" stroke=\"#667085\" stroke-width=\"1.5\"/>\r\n </svg></span><span>{{ log._source.storeName || '-' }}</span></span>\r\n <span *ngIf=\"log._source?.coverage === 'user' || (!log._source?.coverage && log._source?.userEmail)\">\r\n <span class=\"me-3\" *ngIf=\"log._source?.userEmail\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span>{{ log._source?.userEmail || '-'}}</span>\r\n </span>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <!-- \"['updated', 'edited', 'draft'].includes(log._source.action)\" -->\r\n <span *ngIf=\"['updated', 'edited'].includes(log._source.action) || (log._source.action === 'draft' && log._source.logDetails && !isLogDetailsEmpty(log._source.logDetails))\"\r\n (click)=\"viewAction(log._source)\" \r\n class=\"text-primary cursor-pointer\">\r\n <u>View</u>\r\n </span>\r\n <span *ngIf=\"log._source.action === 'submit'\"\r\n (click)=\"navigateToGallery(log._source)\" \r\n class=\"text-primary cursor-pointer\">\r\n <u>View</u>\r\n </span>\r\n <!-- *ngIf=\"!['updated', 'edited', 'submit', 'draft'].includes(log._source.action)\" -->\r\n <span *ngIf=\"!['updated', 'edited', 'submit'].includes(log._source.action) && !(log._source.action === 'draft' && log._source.logDetails && !isLogDetailsEmpty(log._source.logDetails))\">-</span>\r\n </div>\r\n </td>\r\n \r\n \r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n <ng-container *ngIf=\"taskLoading\">\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>\r\n </ng-container>\r\n <ng-container *ngIf=\"taskNoData && !taskLoading\">\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 Activity Log</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n <div *ngIf=\"!taskLoading && !taskNoData\">\r\n <lib-pagination class=\"text-start\" [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 </div>\r\n</div>\r\n</div>", styles: [".table-title{color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-size:14px;font-style:normal;font-weight:500;line-height:20px;text-decoration-line:underline}.card .card-header{padding:0px 1.5rem}.nav-item .nav-link{color:var(--Gray-500, #667085);font-size:16px;font-weight:500}.activebtn{color:var(--Primary-700, #009BF3)!important;border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;font-size:16px!important;font-weight:500!important}.daterange{color:var(--Gray-500, #667085);font-size:16px;font-style:normal;font-weight:600;line-height:24px}.nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.rotate{transform:rotate(180deg)}.logsearch{width:370px}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.badge-light{display:flex;padding:8px 16px;justify-content:center;align-items:center;flex:1 0 0;border-radius:16px;opacity:.8;font-weight:500;width:70%}.badge-light-default{background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054)}.badge-light-primary1{background:var(--Blue-50, #EFF8FF);color:var(--Blue-700, #175CD3)}.badge-light-success{background:var(--Success-50, #ECFDF3);color:var(--Success-700, #027A48)}.badge-light-warning{background:var(--Warning-50, #FFFAEB);color:var(--Warning-700, #B54708)}.badge-light-delete{background:var(--Error-50, #FEF3F2);color:var(----Error-700, #B42318)}\n"] }]
481
501
  }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.GlobalStateService }, { type: i0.ChangeDetectorRef }, { type: i3.ToastService }, { type: i4.TraxService }, { type: i2.PageInfoService }, { type: i1.ActivatedRoute }, { type: i5.NgbModal }] });
482
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktbG9nLXYyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtdHJheC9zcmMvbGliL2NvbXBvbmVudHMvYWN0aXZpdHktbG9nLXYyL2FjdGl2aXR5LWxvZy12Mi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2FjdGl2aXR5LWxvZy12Mi9hY3Rpdml0eS1sb2ctdjIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBS2hGLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFnQyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEYsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBSW5DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ3pGLE9BQU8sWUFBWSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7O0FBSnJELEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFNbEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUMzQixLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBVWxCLE1BQU0sT0FBTyxzQkFBc0I7SUFzRmI7SUFBK0I7SUFBc0I7SUFBK0I7SUFBMEM7SUFDeEk7SUFBa0M7SUFBa0M7SUFBdUM7SUF0RnJILEtBQUssR0FBRyxLQUFLLENBQUE7SUFDTCxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUNqQyxRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLFlBQVksR0FBRyxFQUFFLENBQUE7SUFD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eUNBQXlDO1lBQ3pDLFVBQVU7WUFFVixXQUFXO1lBQ1gsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7U0FDaEM7YUFBTTtTQUNOO0lBQ0gsQ0FBQztJQUlDLGVBQWU7UUFDYixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBYyxFQUFFLEVBQUU7WUFDckMsOENBQThDO1lBQzlDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ2pFLENBQUMsQ0FBQztJQUNKLENBQUM7d0dBaGRNLHNCQUFzQjs0RkFBdEIsc0JBQXNCLDJEQ3pCbkMsK3BmQXNMTTs7NEZEN0pPLHNCQUFzQjtrQkFObEMsU0FBUzsrQkFDRSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgVHJheFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmF4LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UsIFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcclxuaW1wb3J0IHsgU3ViamVjdCwgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5pbXBvcnQgdXRjIGZyb20gJ2RheWpzL3BsdWdpbi91dGMnO1xyXG5kYXlqcy5leHRlbmQodXRjKTtcclxuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgVmlld0FjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vbG9nLXZpZXctcG9wdXAvdmlldy1hY3Rpb24vdmlldy1hY3Rpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHJlbGF0aXZlVGltZSBmcm9tICdkYXlqcy9wbHVnaW4vcmVsYXRpdmVUaW1lJztcclxuXHJcbmRheWpzLmV4dGVuZChyZWxhdGl2ZVRpbWUpO1xyXG5kYXlqcy5leHRlbmQodXRjKTtcclxuXHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYWN0aXZpdHktbG9nLXYyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWN0aXZpdHktbG9nLXYyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYWN0aXZpdHktbG9nLXYyLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEFjdGl2aXR5TG9nVjJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCB7XHJcbiAgZGF5anMgPSBkYXlqc1xyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIGlzRXhwb3J0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXRlbXNQZXJQYWdlID0gMTBcclxuICBjdXJyZW50UGFnZSA9IDFcclxuICB0b3RhbEl0ZW1zID0gMFxyXG4gIHBhZ2luYXRpb25TaXplczphbnlbXSA9IFtdO1xyXG4gIHBhZ2VTaXplID0gMTBcclxuICBzb3J0Q29sdW1OYW1lOiBzdHJpbmcgPSAnJztcclxuICBzb3J0Qnk6IGFueSA9ICcnO1xyXG4gIHNvcnREaXJlY3Rpb246IGFueSA9ICcnO1xyXG4gIHNlYXJjaElucHV0OiBhbnkgPVwiXCI7XHJcbiAgaGVhZGVyRGF0YTogYW55O1xyXG4gIHNlYXJjaFZhbHVlOiBzdHJpbmc7XHJcbiAgbGltaXQ6IG51bWJlcjtcclxuICBvZmZzZXQ6IG51bWJlcjtcclxuICBzZWFyY2hEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRhc2tMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICB0YXNrTm9EYXRhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcmVjZWl2ZWREYXRhOiBzdHJpbmcgPSBcImNoZWNrbGlzdFwiO1xyXG4gIGRhdGFPYmplY3Q6IGFueSA9IFtcclxuICAgIHtcclxuICAgICAgRGVzY3JpcHRpb246ICdBY3Rpb25zJyxcclxuICAgICAgSXNzdWVzOiBbXHJcbiAgICAgICAgeyB0ZXh0OiAnQ3JlYXRlZCBieScsIGlkOiAnY3JlYXRlZCcgfSxcclxuICAgICAgICB7IHRleHQ6ICdVcGRhdGVkIGJ5JywgaWQ6ICd1cGRhdGVkJyB9LFxyXG4gICAgICAgIHsgdGV4dDogJ1NhdmVkIGFzIERyYWZ0JywgaWQ6ICdkcmFmdCcgfSxcclxuICAgICAgICB7IHRleHQ6ICdQdWJsaXNoZWQgYnknLCBpZDogJ3B1Ymxpc2hlZCcgfSxcclxuICAgICAgICB7IHRleHQ6ICdTdWJtaXR0ZWQgYnknLCBpZDogJ3N1Ym1pdCcgfSxcclxuICAgICAgICB7IHRleHQ6ICdTdGFydGVkIGJ5JywgaWQ6ICdzdGFydCcgfSxcclxuICAgICAgICB7IHRleHQ6ICdBcHByb3ZlZCBieScsIGlkOiAnYXBwcm92ZWQnIH0sXHJcbiAgICAgICAgeyB0ZXh0OiAnUmVkbyBDcmVhdGVkIGJ5JywgaWQ6ICdyZWRvJyB9LFxyXG4gICAgICAgIHsgdGV4dDogJ1N1YnNlcXVlbnQgUmVkbyBDcmVhdGVkIGJ5JywgaWQ6ICdtdWx0aXJlZG8nIH0sXHJcbiAgICAgICAgeyB0ZXh0OiAnVGFzayBDcmVhdGVkIGJ5JywgaWQ6ICd0YXNrX2NyZWF0ZWQnIH0sXHJcbiAgICAgICAgLy8geyB0ZXh0OiAnUmUtT3BlbmVkIGJ5JywgaWQ6ICdyZW9wZW5lZCcgfSxcclxuICAgICAgICB7IHRleHQ6ICdFZGl0ZWQgYnknLCBpZDogJ2VkaXRlZCcgfSxcclxuICAgICAgICB7IHRleHQ6ICdVbnB1Ymxpc2hlZCBieScsIGlkOiAndW5wdWJsaXNoZWQnIH0sXHJcbiAgICAgICAgeyB0ZXh0OiAnRGVsZXRlZCBieScsIGlkOiAnZGVsZXRlZCcgfSxcclxuICAgICAgICB7IHRleHQ6ICdEdXBsaWNhdGVkIGJ5JywgaWQ6ICdkdXBsaWNhdGVkJyB9LFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIC8vIHtcclxuICAgIC8vICAgRGVzY3JpcHRpb246ICdDb3ZlcmFnZScsXHJcbiAgICAvLyAgIElzc3VlczogW1xyXG4gICAgLy8gICAgIHsgdGV4dDogJ0NoZWNrbGlzdCcsIGlkOiAnY2hlY2tsaXN0JyB9LFxyXG4gICAgICAgXHJcbiAgICAvLyAgIF0sXHJcbiAgICAvLyB9LFxyXG4gIF07XHJcbiAgYWN0aXZpdHlMb2dUYWJsZURhdGE6IGFueVtdID0gW107XHJcbiAgdHlwZTogc3RyaW5nID0gJ2NoZWNrbGlzdCc7IFxyXG4gIGFjdGl2aXR5TG9nRmlsdGVyOiBhbnkgPSBbXTtcclxuICAvLyByZWxvYWREYXRlOiBzdHJpbmc7XHJcbiAgc291cmNlQ2hlY2tMaXN0X2lkOiBhbnk7XHJcbiAgY2hlY2tsaXN0SWQ6IGFueTtcclxuICAvLyBjb3ZlcmFnZVR5cGU6IGFueSA9IFtdO1xyXG4gIHVzZXJFbWFpbGVzOiBhbnkgPSBbXTtcclxuICBjaGVja2xpc3ROYW1lOiBhbnk7XHJcbiAgZWRpdFJlcXVlc3REYXRhOiBhbnk7XHJcbiAgaXNBY3Rpdml0eUxvZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFxyXG4gc2VsZWN0ZWREYXRlUmFuZ2U6IGFueSA9IHtcclxuICAgIHN0YXJ0RGF0ZTogZGF5anMoKS5zdWJ0cmFjdCg3LCAnZGF5cycpLFxyXG4gICAgZW5kRGF0ZTogZGF5anMoKS5zdWJ0cmFjdCgxLCBcImRheXNcIiksXHJcbiAgfTtcclxuICAgIGlzQ3VzdG9tRGF0ZSA9IChtOiBkYXlqcy5EYXlqcykgPT4ge1xyXG4gICAgICAgIGNvbnN0IGlzVmFsaWREYXRlID0gbSA+IHRoaXMuZGF5anMoKTtcclxuICAgICAgICByZXR1cm4gaXNWYWxpZERhdGUgPyBcImludmFsaWQtZGF0ZVwiIDogZmFsc2U7XHJcbiAgICAgIH07XHJcbiAgc2VsZWN0ZWRGaWx0ZXJzOiBhbnkgPSB7XHJcbiAgICBjbGllbnQ6IG51bGwsXHJcbiAgICBjbGllbnROYW1lOiBudWxsLFxyXG4gICAgY2xpZW50czogW10sXHJcbiAgICBzdG9yZTogbnVsbCxcclxuICAgIHN0b3JlczogW10sXHJcbiAgICAvLyBkYXRlOiBudWxsLFxyXG4gICAgZGF0ZToge1xyXG4gICAgICBzdGFydERhdGU6IGRheWpzKCkuc3VidHJhY3QoNywgXCJkYXlzXCIpLmZvcm1hdChcIllZWVktTU0tRERcIiksXHJcbiAgICAgIGVuZERhdGU6IGRheWpzKCkuc3VidHJhY3QoMSwgXCJkYXlzXCIpLmZvcm1hdChcIllZWVktTU0tRERcIiksXHJcbiAgICB9LFxyXG4gICAgZ3JvdXA6IFtdLFxyXG4gICAgbG9jYXRpb246IFtdLFxyXG4gIH07XHJcbmNvdW50Om51bWJlciA9IDA7XHJcbiAgXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIscHVibGljIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UscHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYscHJpdmF0ZSB0b2FzdDogVG9hc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBUcmF4U2VydmljZTogVHJheFNlcnZpY2UsIHByaXZhdGUgcGFnZUluZm86IFBhZ2VJbmZvU2VydmljZSxwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHVibGljIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXHJcbiAgKSB7XHJcbiAgICB0aGlzLnVzZXJFbWFpbGVzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInVzZXJzRW1haWwtaW5mb1wiKSB8fCBcIltdXCIgKVxyXG4gICAgXHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWVcclxuICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSwgZGVib3VuY2VUaW1lKDMwMCkpXHJcbiAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLml0ZW1zUGVyUGFnZSA9IDEwO1xyXG4gICAgICAgIHRoaXMucGFnZVNpemUgPTEwO1xyXG4gICAgICAgIHRoaXMuaGVhZGVyRGF0YSA9IGRhdGE7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgICAgdGhpcy5zZXRQYWdlRGF0YSgpO1xyXG4gICAgICAgIHRoaXMuZ2V0QWN0aXZpdHlMb2dUYWJsZURhdGEoKTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuY291bnQrKztcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyB0aGlzLmFwcGx5RmlsdGVycyhbeyBEZXNjcmlwdGlvbjogJ0NvdmVyYWdlJywgSXNzdWVzOiBbeyB0ZXh0OiB0aGlzLmNvdmVyYWdlVHlwZVswXSwgaWQ6IHRoaXMuY292ZXJhZ2VUeXBlWzBdLCBjaGVja2VkOiB0cnVlfV0gfV0pO1xyXG4gICAgXHJcbiAgICAgIFxyXG59KVxyXG59XHJcbiAgc2V0UGFnZURhdGEoKSB7XHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldFRpdGxlKFwiRGFzaGJvYXJkXCIpO1xyXG4gICAgdGhpcy5wYWdlSW5mby5zZXRCcmVhZGNydW1icyhbXHJcbiAgICAgIHsgdGl0bGU6IFwiVGFuZ28gVHJheFwiLCBwYXRoOiBcIi9tYW5hZ2UvdHJheC9kYXNoYm9hcmRcIiwgaXNBY3RpdmU6IGZhbHNlLCBpc1NlcGFyYXRvcjogZmFsc2UgfSxcclxuICAgICAgeyB0aXRsZTogXCJUYW5nbyBUcmF4XCIsIHBhdGg6IFwiL21hbmFnZS90cmF4L2Rhc2hib2FyZFwiLCBpc0FjdGl2ZTogZmFsc2UsIGlzU2VwYXJhdG9yOiB0cnVlIH0sXHJcbiAgICBdKVxyXG4gIH1cclxuICBnZXRBY3Rpdml0eUxvZ1RhYmxlRGF0YSgpOiB2b2lkIHtcclxuICAgIFxyXG4gICAgdGhpcy5pc0FjdGl2aXR5TG9nID0gdHJ1ZTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpOyAvLyBGb3JjZSBVSSB1cGRhdGVcclxuICAgIHRoaXMuc2VhcmNoRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgdGhpcy50YXNrTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnRhc2tOb0RhdGEgPSB0cnVlO1xyXG4gICAgY29uc3QgcmVxdWVzdERhdGEgPSB7XHJcbiAgICAgIGZyb21EYXRlOiB0aGlzLnNlbGVjdGVkRmlsdGVycz8uZGF0ZT8uc3RhcnREYXRlLFxyXG4gICAgICB0b0RhdGU6IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzPy5kYXRlPy5lbmREYXRlLFxyXG4gICAgICBzdG9yZUlkOiB0aGlzLmhlYWRlckRhdGE/LnN0b3Jlcy5maWx0ZXIoKHN0b3JlOiBhbnkpID0+IHN0b3JlLmNoZWNrZWQpLm1hcCgoc3RvcmU6IGFueSkgPT4gc3RvcmUuc3RvcmVJZCksXHJcbiAgICAgIGNsaWVudElkOnRoaXMuaGVhZGVyRGF0YS5jbGllbnQsXHJcbiAgICAgIGxpbWl0OiB0aGlzLml0ZW1zUGVyUGFnZSwgICAgICAgICAgICAgICAgIFxyXG4gICAgICBvZmZzZXQ6IHRoaXMuY3VycmVudFBhZ2UgLTEsXHJcbiAgICAgIHNvcnRCeTogdGhpcy5zb3J0RGlyZWN0aW9uLFxyXG4gICAgICBzb3J0Q29sdW1uTmFtZTogdGhpcy5zb3J0Q29sdW1OYW1lLFxyXG4gICAgICBzZWFyY2hWYWx1ZTogdGhpcy5zZWFyY2hJbnB1dCxcclxuICAgICAgYWN0aW9uOiB0aGlzLmFjdGl2aXR5TG9nRmlsdGVyLFxyXG4gICAgICB0eXBlOiB0aGlzLnJlY2VpdmVkRGF0YSxcclxuICAgICAgdXNlckVtYWlsZXM6dGhpcy51c2VyRW1haWxlc1xyXG4gICAgICAvLyBjaGVja0xpc3ROYW1lOnRoaXMuY2hlY2tsaXN0TmFtZSxcclxuICAgICAgLy8gXCJjaGVja0xpc3ROYW1lXCI6IFwiZGFpbHkgc3RvcmUgY2hlY2tsaXN0MTExXCIsXHJcbiAgICAgIC8vIFwidHlwZVwiOiBcImNoZWNrbGlzdFwiLFxyXG4gICAgICAvLyBcImFjdGlvblwiOiBbXCJjcmVhdGVkXCJdLFxyXG4gICAgICAvLyBcImxpbWl0XCI6IDUsXHJcbiAgICAgIC8vIFwib2Zmc2V0XCI6IDAsXHJcbiAgICAgIC8vIFwic29ydEJ5XCI6IFwiXCIsXHJcbiAgICAgIC8vIFwic29ydENvbHVtbk5hbWVcIjogXCJcIixcclxuICAgICAgLy8gXCJzZWFyY2hWYWx1ZVwiOiBcIkRhaWx5IHN0b3JlIGNoZWNrbGlzdCBOZXdcIlxyXG4gIH07XHJcblxyXG4gICAgdGhpcy5UcmF4U2VydmljZS5hY3Rpdml0eUxvZ0xpc3QocmVxdWVzdERhdGEpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMudGFza0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBpZiAocmVzcG9uc2U/LmNvZGUgPT09IDIwMCAmJiByZXNwb25zZT8uc3RhdHVzID09PSBcInN1Y2Nlc3NcIikge1xyXG4gICAgICAgICAgdGhpcy5hY3Rpdml0eUxvZ1RhYmxlRGF0YSA9IHJlc3BvbnNlLmRhdGEucmVzdWx0IHx8IFtdO1xyXG4gICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gcmVzcG9uc2UuZGF0YS5jb3VudFxyXG4gICAgICAgICAgdGhpcy5zZXRQYWdpbmF0aW9uU2l6ZXMoKVxyXG4gICAgICAgICAgdGhpcy50YXNrTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy50YXNrTm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaERpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuYWN0aXZpdHlMb2dUYWJsZURhdGEgPSBbXTtcclxuICAgICAgICAgIHRoaXMudGFza0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudGFza05vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaERpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgIGlmICh0aGlzLnNlYXJjaElucHV0Py5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hEaXNhYmxlZCA9IHRydWVcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuYWN0aXZpdHlMb2dUYWJsZURhdGEgPSBbXVxyXG4gICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gMFxyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLmFjdGl2aXR5TG9nVGFibGVEYXRhID0gW11cclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zb3VyY2VDaGVja0xpc3RfaWQgPSBcIlwiO1xyXG4gICAgICB0aGlzLmNoZWNrbGlzdElkID0gXCJcIjtcclxuICB9XHJcbiAgLy8gcmVtb3ZlUXVlcnlQYXJhbXMoKSB7XHJcbiAgLy8gICBjb25zdCB1cmxXaXRob3V0UGFyYW1zID0gdGhpcy5sb2NhdGlvbi5wYXRoKCkuc3BsaXQoJz8nKVswXTtcclxuICAvLyAgIHRoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlKHVybFdpdGhvdXRQYXJhbXMpO1xyXG4gIC8vIH1cclxuICBzZXRQYWdpbmF0aW9uU2l6ZXMoKSB7XHJcbiAgICBpZiAodGhpcy50b3RhbEl0ZW1zID4gMTApIHtcclxuICAgICAgaWYodGhpcy5wYWdlU2l6ZSA+IDEwKXtcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb25TaXplcyA9IFsxMCwgMjAsIDMwXTtcclxuICAgICAgfSBlbHNle1xyXG4gICAgICAgIHRoaXMucGFnaW5hdGlvblNpemVzID0gWzEwLCAyMCwgMzBdO1xyXG4gICAgICAgIHRoaXMucGFnZVNpemUgPSAxMFxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnBhZ2luYXRpb25TaXplcyA9IFt0aGlzLnRvdGFsSXRlbXNdO1xyXG4gICAgICB0aGlzLnBhZ2VTaXplID0gdGhpcy50b3RhbEl0ZW1zO1xyXG4gICAgfSAgICBcclxuICB9XHJcbiAgXHJcbiAgb25FeHBvcnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICAgIGNvbnN0IHJlcXVlc3REYXRhID0ge1xyXG4gICAgICBmcm9tRGF0ZTogdGhpcy5oZWFkZXJEYXRhLmRhdGUuc3RhcnREYXRlLFxyXG4gICAgICB0b0RhdGU6IHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGUsXHJcbiAgICAgIHN0b3JlSWQ6IHRoaXMuaGVhZGVyRGF0YS5zdG9yZXMuZmlsdGVyKChzdG9yZTogYW55KSA9PiBzdG9yZS5jaGVja2VkKS5tYXAoKHN0b3JlOiBhbnkpID0+IHN0b3JlLnN0b3JlSWQpLFxyXG4gICAgICB1c2VyRW1haWxlczogdGhpcy51c2VyRW1haWxlcyxcclxuICAgICAgY2xpZW50SWQ6dGhpcy5oZWFkZXJEYXRhLmNsaWVudCxcclxuICAgICAgbGltaXQ6IDEwMDAwLCAgICAgICAgICAgICAgICAgXHJcbiAgICAgIG9mZnNldDogMCxcclxuICAgICAgc29ydEJ5OiB0aGlzLnNvcnREaXJlY3Rpb24sXHJcbiAgICAgIHNvcnRDb2x1bW5OYW1lOiB0aGlzLnNvcnRDb2x1bU5hbWUsXHJcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaElucHV0LFxyXG4gICAgICBleHBvcnQ6IHRydWUsXHJcbiAgICAgIGZpbHRlcjogdGhpcy5hY3Rpdml0eUxvZ0ZpbHRlcixcclxuICAgICAgLy8gY292ZXJhZ2U6IHRoaXMuY292ZXJhZ2VUeXBlIHx8IFtdXHJcbiAgICB9O1xyXG4gICAgICAgIHRoaXMuVHJheFNlcnZpY2UuZ2V0VGFza1RhYmxlRGF0YUV4cG9ydChyZXF1ZXN0RGF0YSlcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuVHJheFNlcnZpY2Uuc2F2ZUFzRXhjZWxGaWxlKHJlcywgJ1Rhc2tUYWJsZScpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ1NvbWV0aGluZyB3ZW50IFdyb25nLi4nKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgXHJcbiAgICB9ICBcclxuICBzZWFyY2hGaWVsZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaGVhZGVyRGF0YS5zZWFyY2hWYWx1ZSA9IHRoaXMuc2VhcmNoSW5wdXQ7XHJcbiAgICB0aGlzLmhlYWRlckRhdGEuZXhwb3J0ID0gZmFsc2U7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICAgIHRoaXMucGFnZVNpemU9MTA7XHJcbiAgICB0aGlzLmdldEFjdGl2aXR5TG9nVGFibGVEYXRhKCk7XHJcbiAgICB9XHJcbiAgc29ydERhdGEoY29sdW1uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNvcnRDb2x1bU5hbWUgPT09IGNvbHVtbikge1xyXG4gICAgICB0aGlzLnNvcnREaXJlY3Rpb24gPSB0aGlzLnNvcnREaXJlY3Rpb24gPT09IDEgPyAtMSA6IDE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNvcnRDb2x1bU5hbWUgPSBjb2x1bW47XHJcbiAgICAgIHRoaXMuc29ydERpcmVjdGlvbiA9IDE7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldEFjdGl2aXR5TG9nVGFibGVEYXRhKCk7XHJcbiAgICB9XHJcbiAgXHJcbiAgb25QYWdlU2l6ZUNoYW5nZShwYWdlU2l6ZTogYW55KSB7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICAgIHRoaXMuaXRlbXNQZXJQYWdlID0gcGFyc2VJbnQocGFnZVNpemUpO1xyXG4gICAgdGhpcy5wYWdlU2l6ZSA9IHBhcnNlSW50KHBhZ2VTaXplKTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5nZXRBY3Rpdml0eUxvZ1RhYmxlRGF0YSgpO1xyXG4gICAgfVxyXG4gIG9uUGFnZUNoYW5nZShwYWdlT2Zmc2V0OiBhbnkpIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlT2Zmc2V0XHJcbiAgICB0aGlzLmdldEFjdGl2aXR5TG9nVGFibGVEYXRhKCk7XHJcbiAgfVxyXG4gIGFwcGx5RmlsdGVycyhldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQ/Lmxlbmd0aCkge1xyXG4gICAgICBldmVudC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZWxlbWVudC5EZXNjcmlwdGlvbiA9PT0gJ0FjdGlvbnMnKSB7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2aXR5TG9nRmlsdGVyID0gZWxlbWVudC5Jc3N1ZXMubWFwKCh2YWw6IGFueSkgPT4gdmFsLmlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gdGhpcy5kYXRhT2JqZWN0LmZvckVhY2goKGNhdGVnb3J5OiBhbnkpID0+IHtcclxuICAgICAgLy8gICBjYXRlZ29yeS5Jc3N1ZXMuZm9yRWFjaCgoaXNzdWU6IGFueSkgPT4ge1xyXG4gICAgICAvLyAgICAgaXNzdWUuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgIC8vICAgfSk7XHJcbiAgICAgIC8vIH0pO1xyXG4gIFxyXG4gICAgICAvLyBjb25zdCBhY3Rpb25zRmlsdGVyID0gdGhpcy5kYXRhT2JqZWN0LmZpbmQoKGl0ZW06IGFueSkgPT4gaXRlbS5EZXNjcmlwdGlvbiA9PT0gJ0FjdGlvbnMnKTtcclxuICAgICAgLy8gdGhpcy5hY3Rpdml0eUxvZ0ZpbHRlciA9IGFjdGlvbnNGaWx0ZXIgPyBhY3Rpb25zRmlsdGVyLklzc3Vlcy5tYXAoKHZhbDogYW55KSA9PiB2YWwuaWQpIDogW107XHJcbiAgICAgIHRoaXMuYWN0aXZpdHlMb2dGaWx0ZXIgPSBbXTtcclxuICAgICAgXHJcbiAgICB9XHJcbiAgICB0aGlzLmdldEFjdGl2aXR5TG9nVGFibGVEYXRhKCk7XHJcbiAgfVxyXG4gIHNlbGVjdFBsYW4oc2VsZWN0ZWRUeXBlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMudHlwZSA9IHNlbGVjdGVkVHlwZTsgIFxyXG59XHJcblxyXG4vLyBuYXZpZ2F0ZVRvVGFza0NvbmZpZyh0YXNrOiBhbnkpOiB2b2lkIHtcclxuLy8gICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnbWFuYWdlL3RyYXgvdGFzay1jb25maWd1cmUnXSwgeyBxdWVyeVBhcmFtczoge3Rhc2tJZDp0YXNrLl9pZH0gfSlcclxuLy8gfVxyXG5cclxuLy8gbmF2aWdhdGVUb1Rhc2tFZGl0KHRhc2s6IGFueSk6IHZvaWQge1xyXG4vLyAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydtYW5hZ2UvdHJheC9jcmVhdGUtdGFzayddLCB7IHF1ZXJ5UGFyYW1zOiB7aWQ6dGFzay5faWR9IH0pXHJcbi8vIH1cclxuXHJcbmRhdGVGb3JtYXQoZGF0ZTphbnkpIHtcclxuICByZXR1cm4gdGhpcy5kYXlqcy51dGMoZGF0ZSkuZm9ybWF0KCdERCBNTU0gWVlZWScpXHJcbn1cclxuU2VsZWN0dGFicyh0YWI6IHN0cmluZykge1xyXG4gIHRoaXMucmVjZWl2ZWREYXRhID0gdGFiO1xyXG5cclxuICAvLyB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwgeyBcclxuICAvLyAgIHF1ZXJ5UGFyYW1zOiB7IHR5cGU6IHRhYiB9LFxyXG4gIC8vICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJ1xyXG4gIC8vIH0pO1xyXG5cclxuICB0aGlzLmdldEFjdGl2aXR5TG9nVGFibGVEYXRhKCk7XHJcbn1cclxudmlld0FjdGlvbihsb2c6IGFueSkge1xyXG4gIGxldCBtb2RhbFNpemUgPSBsb2cuYWN0aW9uID09PSAndXBkYXRlZCcgfHwgbG9nLmFjdGlvbiA9PT0gJ2RyYWZ0JyA/ICd4bCcgIDogbG9nLmFjdGlvbiA9PT0gJ2VkaXRlZCcgPyAnbGcnIDogJ21kJztcclxuICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oVmlld0FjdGlvbkNvbXBvbmVudCwge1xyXG4gICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICBzaXplOiBtb2RhbFNpemUsXHJcbiAgICBzY3JvbGxhYmxlOiB0cnVlXHJcbiAgfSk7XHJcbiAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UubG9nRGV0YWlscyA9IGxvZy5sb2dEZXRhaWxzO1xyXG4gIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmNoZWNrTGlzdE5hbWUgPSBsb2cuY2hlY2tMaXN0TmFtZTtcclxuICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zdG9yZU5hbWUgPSBsb2cuc3RvcmVOYW1lO1xyXG4gIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmFjdGlvblR5cGUgPSBsb2cuYWN0aW9uO1xyXG4gIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnJlY2VpdmVkRGF0YSA9IHRoaXMucmVjZWl2ZWREYXRhO1xyXG4gIG1vZGFsUmVmLnJlc3VsdFxyXG4gICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICB0aGlzLmdldEFjdGl2aXR5TG9nVGFibGVEYXRhKCk7XHJcbiAgICB9KVxyXG59XHJcblxyXG5pc0xvZ0RldGFpbHNFbXB0eShsb2dEZXRhaWxzOiBhbnkpOiBib29sZWFuIHtcclxuICByZXR1cm4gIWxvZ0RldGFpbHMgfHwgT2JqZWN0LmtleXMobG9nRGV0YWlscykuZXZlcnkoa2V5ID0+IHtcclxuICAgIGNvbnN0IHZhbHVlID0gbG9nRGV0YWlsc1trZXldO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSByZXR1cm4gdmFsdWUubGVuZ3RoID09PSAwO1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHJldHVybiB0aGlzLmlzTG9nRGV0YWlsc0VtcHR5KHZhbHVlKTtcclxuICAgIHJldHVybiAhdmFsdWU7XHJcbiAgfSk7XHJcbn1cclxuXHJcblxyXG4gIGZvcm1hdERhdGVUaW1lKGRhdGVTdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIWRhdGVTdHJpbmcpIHJldHVybiAnLS0nO1xyXG4gIFxyXG4gICAgY29uc3QgZGF0ZSA9IGRheWpzLnV0YyhkYXRlU3RyaW5nKS5sb2NhbCgpO1xyXG4gICAgY29uc3Qgbm93ID0gZGF5anMoKTtcclxuICAgIFxyXG4gICAgbGV0IGZvcm1hdHRlZERhdGUgPSAnJztcclxuICAgIFxyXG4gICAgaWYgKGRhdGUuaXNTYW1lKG5vdywgJ2RheScpKSB7XHJcbiAgICAgIGZvcm1hdHRlZERhdGUgPSAnVG9kYXknO1xyXG4gICAgfSBlbHNlIGlmIChkYXRlLmlzU2FtZShub3cuc3VidHJhY3QoMSwgJ2RheScpLCAnZGF5JykpIHtcclxuICAgICAgZm9ybWF0dGVkRGF0ZSA9ICdZZXN0ZXJkYXknO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZm9ybWF0dGVkRGF0ZSA9IGRhdGUuZm9ybWF0KCdNTU0gRCwgWVlZWScpO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgcmV0dXJuIGAke2Zvcm1hdHRlZERhdGV9IDxicj4gJHtkYXRlLmZvcm1hdCgnaGggOiBtbSBBJyl9YDtcclxuICB9XHJcbiAgZ2V0QWN0aW9uQmFkZ2VDbGFzcyhhY3Rpb246IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBhY3Rpb25DbGFzc2VzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xyXG4gICAgICBjcmVhdGVkOiAnYmFkZ2UtbGlnaHQtZGVmYXVsdCcsXHJcbiAgICAgIHVwZGF0ZWQ6ICdiYWRnZS1saWdodC1wcmltYXJ5MScsXHJcbiAgICAgIGRyYWZ0OiAnYmFkZ2UtbGlnaHQtZGVmYXVsdCcsXHJcbiAgICAgIHB1Ymxpc2hlZDogJ2JhZGdlLWxpZ2h0LXByaW1hcnkxJyxcclxuICAgICAgc3VibWl0OiAnYmFkZ2UtbGlnaHQtcHJpbWFyeTEnLFxyXG4gICAgICBzdGFydDogJ2JhZGdlLWxpZ2h0LXByaW1hcnkxJyxcclxuICAgICAgYXBwcm92ZWQ6ICdiYWRnZS1saWdodC1zdWNjZXNzJyxcclxuICAgICAgcmVkbzogJ2JhZGdlLWxpZ2h0LXdhcm5pbmcnLFxyXG4gICAgICBtdWx0aXJlZG86ICdiYWRnZS1saWdodC13YXJuaW5nJyxcclxuICAgICAgdGFza19jcmVhdGVkOiAnYmFkZ2UtbGlnaHQtZGVmYXVsdCcsXHJcbiAgICAgIC8vIHJlb3BlbmVkOiAnYmFkZ2UtbGlnaHQtZGVmYXVsdCcsXHJcbiAgICAgIGVkaXRlZDogJ2JhZGdlLWxpZ2h0LXdhcm5pbmcnLFxyXG4gICAgICB1bnB1Ymxpc2hlZDogJ2JhZGdlLWxpZ2h0LXByaW1hcnkxJyxcclxuICAgICAgZGVsZXRlZDogJ2JhZGdlLWxpZ2h0LWRlbGV0ZScsXHJcbiAgICAgIGR1cGxpY2F0ZWQ6ICdiYWRnZS1saWdodC1kZWZhdWx0JyxcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIGFjdGlvbkNsYXNzZXNbYWN0aW9uXSB8fCAnYmFkZ2UtbGlnaHQtZGVmYXVsdCc7XHJcbiAgfVxyXG5cclxuICBnZXRBY3Rpb25MYWJlbChhY3Rpb246IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBhY3Rpb25MYWJlbHM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XHJcbiAgICAgIGNyZWF0ZWQ6ICdDcmVhdGVkIGJ5JyxcclxuICAgICAgdXBkYXRlZDogJ1VwZGF0ZWQgYnknLFxyXG4gICAgICBkcmFmdDogJ1NhdmVkIGFzIERyYWZ0JyxcclxuICAgICAgcHVibGlzaGVkOiAnUHVibGlzaGVkIGJ5JyxcclxuICAgICAgc3VibWl0OiAnU3VibWl0dGVkIGJ5JyxcclxuICAgICAgc3RhcnQ6ICdTdGFydGVkIGJ5JyxcclxuICAgICAgYXBwcm92ZWQ6ICdBcHByb3ZlZCBieScsXHJcbiAgICAgIHJlZG86ICdSZWRvIENyZWF0ZWQgYnknLFxyXG4gICAgICBtdWx0aXJlZG86ICdTdWJzZXF1ZW50IFJlZG8gQ3JlYXRlZCBieScsXHJcbiAgICAgIHRhc2tfY3JlYXRlZDogJ1Rhc2sgQ3JlYXRlZCBieScsXHJcbiAgICAgIC8vIHJlb3BlbmVkOiAnUmUtb3BlbmVkIGJ5JyxcclxuICAgICAgZWRpdGVkOiAnRWRpdGVkIGJ5JyxcclxuICAgICAgdW5wdWJsaXNoZWQ6ICdVbnB1Ymxpc2hlZCBieScsXHJcbiAgICAgIGRlbGV0ZWQ6ICdEZWxldGVkIGJ5JyxcclxuICAgICAgZHVwbGljYXRlZDogJ0R1cGxpY2F0ZWQgYnknLFxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gYWN0aW9uTGFiZWxzW2FjdGlvbl0gfHwgYWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgIG5hdmlnYXRlVG9HYWxsZXJ5KGxvZzogYW55KTogdm9pZCB7XHJcbiAgICAgIGxldCBmb3JtYXR0ZWREYXRlID0gZGF5anMobG9nLmNyZWF0ZUF0KS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcclxuICAgICAgbGV0IGNoZWNrbGlzdFR5cGU6IHN0cmluZztcclxuICAgICAgaWYgKGxvZy5jaGVja0xpc3RUeXBlID09PSAnY3VzdG9tJykge1xyXG4gICAgICAgIGNoZWNrbGlzdFR5cGUgPSAnY3VzdG9tJztcclxuICAgICAgfSBlbHNlIGlmIChbJ3Rhc2snLCAnY2hlY2tsaXN0VGFzaycsICdjY3R2J10uaW5jbHVkZXMobG9nLnR5cGUpKSB7XHJcbiAgICAgICAgY2hlY2tsaXN0VHlwZSA9ICd0YXNrJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjaGVja2xpc3RUeXBlID0gbG9nLnR5cGUgfHwgJy0tJztcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgbGV0IHF1ZXJ5UGFyYW1zOmFueT0ge31cclxuICAgICAgaWYobG9nLnN0b3JlX2lkJiZsb2cuc3RvcmVfaWQhPScnKXtcclxuICAgICAgICAgcXVlcnlQYXJhbXMgPSB7XHJcbiAgICAgICAgICBDaGVja2xpc3REYXRlOiBmb3JtYXR0ZWREYXRlLFxyXG4gICAgICAgICAgc3RvcmVJZDogbG9nLnN0b3JlX2lkLFxyXG4gICAgICAgICAgY2hlY2tsaXN0VHlwZTogY2hlY2tsaXN0VHlwZSxcclxuICAgICAgICAgIHNvdXJjZUNoZWNrTGlzdF9pZDogbG9nLnNvdXJjZUNoZWNrTGlzdF9pZCxcclxuICAgICAgICB9O1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICAgcXVlcnlQYXJhbXMgPSB7XHJcbiAgICAgICAgICBDaGVja2xpc3REYXRlOiBmb3JtYXR0ZWREYXRlLFxyXG4gICAgICAgICAgdXNlckVtYWlsOiBsb2cudXNlckVtYWlsLFxyXG4gICAgICAgICAgY2hlY2tsaXN0VHlwZTogY2hlY2tsaXN0VHlwZSxcclxuICAgICAgICAgIHNvdXJjZUNoZWNrTGlzdF9pZDogbG9nLnNvdXJjZUNoZWNrTGlzdF9pZCxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChsb2cucmVkb1N0YXR1cykge1xyXG4gICAgICAgIHF1ZXJ5UGFyYW1zLnJlZG9TdGF0dXMgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL21hbmFnZS90cmF4L2dhbGxlcnknXSwgeyBxdWVyeVBhcmFtcyB9KTtcclxuICAgIH0gXHJcblxyXG4gICAgZGF0ZWNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICAgIGlmIChldmVudCAmJiBldmVudC5zdGFydERhdGUgJiYgZXZlbnQuZW5kRGF0ZSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UgPSB7IFxyXG4gICAgICAgICAgc3RhcnREYXRlOiBldmVudC5zdGFydERhdGUsIFxyXG4gICAgICAgICAgZW5kRGF0ZTogZXZlbnQuZW5kRGF0ZSBcclxuICAgICAgICB9O1xyXG4gICAgXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlcnMuZGF0ZSA9IHsgXHJcbiAgICAgICAgICBzdGFydERhdGU6IGV2ZW50LnN0YXJ0RGF0ZSxcclxuICAgICAgICAgIGVuZERhdGU6IGV2ZW50LmVuZERhdGVcclxuICAgICAgICB9O1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiaGVhZGVyLWZpbHRlcnNcIiwgSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZEZpbHRlcnMpKTtcclxuICAgICAgICAvLyB0aGlzLnJlc2V0VmFsaWRhdGlvbigpO1xyXG4gICAgICAgIC8vIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUubmV4dCh0aGlzLnNlbGVjdGVkRmlsdGVycyk7XHJcbiAgICBcclxuICAgICAgICAvLyBSZXNldCB0aGUgcGlja2VyIHRvIGZvcmNlIHJlLXJlbmRlclxyXG4gICAgICAgIHRoaXMuaXNBY3Rpdml0eUxvZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIC8vICAgdGhpcy5pc0FjdGl2aXR5TG9nID0gdHJ1ZTtcclxuICAgICAgICAvLyAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIC8vIH0sIDEwKTtcclxuICAgICAgICBcclxuICAgICAgICAvLyBDYWxsIEFQSVxyXG4gICAgICAgIHRoaXMuZ2V0QWN0aXZpdHlMb2dUYWJsZURhdGEoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICBcclxuXHJcbiAgICAgIHJlc2V0VmFsaWRhdGlvbigpIHtcclxuICAgICAgICB0aGlzLmlzQ3VzdG9tRGF0ZSA9IChtOiBkYXlqcy5EYXlqcykgPT4ge1xyXG4gICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGdpdmVuIGRhdGUgaXMgYmVmb3JlIHllc3RlcmRheVxyXG4gICAgICAgICAgcmV0dXJuIG0uaXNBZnRlcih0aGlzLmRheWpzKCksICdkYXknKSA/ICdpbnZhbGlkLWRhdGUnIDogZmFsc2U7XHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbXQtNFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC0zXCI+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtbGFiZWwgbWItMlwiPkFjdGl2aXR5IExvZyA8L3NwYW4+XHJcbiAgICAgICAgPC9oMz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyICBwb3NpdGlvbi1yZWxhdGl2ZSBteS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBmb290ZmFsbHNlYXJjaCBzdmctaWNvbi0xIHBvc2l0aW9uLWFic29sdXRlICBtcy04XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IG9wYWNpdHk9XCIwLjVcIiB4PVwiMTcuMDM2NVwiIHk9XCIxNS4xMjIzXCIgd2lkdGg9XCI4LjE1NTQ2XCIgaGVpZ2h0PVwiMlwiIHJ4PVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwicm90YXRlKDQ1IDE3LjAzNjUgMTUuMTIyMylcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEgMTlDNi41NTU1NiAxOSAzIDE1LjQ0NDQgMyAxMUMzIDYuNTU1NTYgNi41NTU1NiAzIDExIDNDMTUuNDQ0NCAzIDE5IDYuNTU1NTYgMTkgMTFDMTkgMTUuNDQ0NCAxNS40NDQ0IDE5IDExIDE5Wk0xMSA1QzcuNTMzMzMgNSA1IDcuNTMzMzMgNSAxMUM1IDE0LjQ2NjcgNy41MzMzMyAxNyAxMSAxN0MxNC40NjY3IDE3IDE3IDE0LjQ2NjcgMTcgMTFDMTcgNy41MzMzMyAxNC40NjY3IDUgMTEgNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCJyZWNlaXZlZERhdGEgPT09ICdjaGVja2xpc3QnXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hJbnB1dFwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcHMtMTQgbXgtMiBsb2dzZWFyY2hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCB3aXRoIFN0b3JlLCBFbWFpbCwgQ2hlY2tsaXN0XCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGtleXVwLmVudGVyKT1cInNlYXJjaEZpZWxkKClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cInJlY2VpdmVkRGF0YSA9PT0gJ3Rhc2snXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hJbnB1dFwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcHMtMTQgbXgtMiBsb2dzZWFyY2hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCB3aXRoIFN0b3JlLCBFbWFpbCwgVGFza1wiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChrZXl1cC5lbnRlcik9XCJzZWFyY2hGaWVsZCgpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIGRhdGVwaWNrZXIgc3RhcnQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItZGF0ZS1yYW5nZS1waWNrZXIgKGRhdGVDaGFuZ2UpPVwiZGF0ZWNoYW5nZSgkZXZlbnQpXCIgW3ZhbHVlXT1cImNvdW50XCI+PC9saWItZGF0ZS1yYW5nZS1waWNrZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBkYXRlcGlja2VyIGVuZCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1maWx0ZXJzICBbZGF0YU9iamVjdF09XCJkYXRhT2JqZWN0XCIgKGFwcGxpZWRGaWx0ZXJzKT1cImFwcGx5RmlsdGVycygkZXZlbnQpXCI+PC9saWItZmlsdGVycz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBvdmVyZmxvdy1hdXRvIG1iLTIgbXgtNFwiPlxyXG4gICAgICAgIDx1bFxyXG4gICAgICAgICAgICBjbGFzcz1cIm5hdiBuYXYtc3RyZXRjaCBuYXYtbGluZS10YWJzMSBuYXYtbGluZS10YWJzLTJ4ICBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBib3JkZXItdHJhbnNwYXJlbnQgZmxleC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW0gY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiU2VsZWN0dGFicygnY2hlY2tsaXN0JylcIiBbcm91dGVyTGlua109XCJbJy9tYW5hZ2UvdHJheC9hY3Rpb25jZW50ZXInXVwiIFtxdWVyeVBhcmFtc109XCJ7IHR5cGU6ICdjaGVja2xpc3QnIH1cIj5cclxuICAgICAgICAgICAgICAgIDxhIFtuZ0NsYXNzXT1cInJlY2VpdmVkRGF0YSA9PT0gJ2NoZWNrbGlzdCc/J2J0biBhY3RpdmVidG4nOicnXCIgY2xhc3M9XCJmdy1zZW1pYm9sZCBuYXYtbGluayBtZS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgQ2hlY2tsaXN0XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIlNlbGVjdHRhYnMoJ3Rhc2snKVwiIFtyb3V0ZXJMaW5rXT1cIlsnL21hbmFnZS90cmF4L2FjdGlvbmNlbnRlciddXCIgW3F1ZXJ5UGFyYW1zXT1cInsgdHlwZTogJ3Rhc2snIH1cIj5cclxuICAgICAgICAgICAgICAgIDxhIFtuZ0NsYXNzXT1cInJlY2VpdmVkRGF0YSA9PT0gJ3Rhc2snIHx8IHJlY2VpdmVkRGF0YSA9PT0gJ0dyb3VwIERldGFpbHMgVmFsdWUnPyAnYnRuIGFjdGl2ZWJ0bic6JydcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmsgbWUtNlwiPlRhc2tcclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwhLS0gPGxpYi12aWV3LWFjdGlvbiBbcmVjZWl2ZWREYXRhXT1cInJlY2VpdmVkRGF0YVwiPjwvbGliLXZpZXctYWN0aW9uPiAtLT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICA8dGFibGUgKm5nSWY9XCIhdGFza0xvYWRpbmcgJiYgIXRhc2tOb0RhdGFcIiBjbGFzcz1cInRhYmxlIHRleHQtbm93cmFwIGJvdHRvbS1ib3JkZXJcIj5cclxuICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKCdkYXRldGltZScpXCI+RGF0ZSAmIFRpbWU8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAnZGF0ZXRpbWUnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAnZGF0ZXRpbWUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwicmVjZWl2ZWREYXRhID09PSAnY2hlY2tsaXN0J1wiPkNoZWNrbGlzdCBOYW1lPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwicmVjZWl2ZWREYXRhID09PSAndGFzaydcIj5UYXNrIE5hbWU8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+QWN0aW9uIFBlcmZvcm1lZDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5QZXJmb3JtZWQgYnk8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+U3RvcmUgTmFtZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5BY3Rpb25zPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGxvZyBvZiBhY3Rpdml0eUxvZ1RhYmxlRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhYmxlLXRpdGxlXCIgW2lubmVySFRNTF09XCJmb3JtYXREYXRlVGltZShsb2cuX3NvdXJjZS5jcmVhdGVBdClcIj48L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIShsb2cuX3NvdXJjZS50eXBlID09PSAndGFzaycgJiYgbG9nLl9zb3VyY2UuZnJvbUNoZWNrTGlzdE5hbWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWJsZS10aXRsZSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGxvZy5fc291cmNlLmNoZWNrTGlzdE5hbWUgfHwgJy0tJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImxvZy5fc291cmNlLnR5cGUgPT09ICd0YXNrJyAmJiBsb2cuX3NvdXJjZS5mcm9tQ2hlY2tMaXN0TmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFibGUtdGl0bGUgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBsb2cuX3NvdXJjZS5jaGVja0xpc3ROYW1lIHx8ICctLScgfX0gPGJyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm14LTJcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNjY1NCA3LjUwMDE2TDcuNDk4NyAzLjMzMzVNNy40OTg3IDMuMzMzNUwzLjMzMjAzIDcuNTAwMTZNNy40OTg3IDMuMzMzNVYxMy4zMzM1QzcuNDk4NyAxNC4yMTc2IDcuODQ5ODkgMTUuMDY1NCA4LjQ3NTAxIDE1LjY5MDVDOS4xMDAxMyAxNi4zMTU2IDkuOTQ3OTggMTYuNjY2OCAxMC44MzIgMTYuNjY2OEgxNi42NjU0XCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PHNwYW4gY2xhc3M9XCJteC0yXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyM1wiIGhlaWdodD1cIjIzXCIgdmlld0JveD1cIjAgMCAyMyAyM1wiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjQxNDQ4IDQuNTIzMDNDOC42OTUxOCA0LjgwMzcxIDguNjk1MTggNS4yNTg4IDguNDE0NDggNS41Mzk0OEw1LjUzOTQ4IDguNDE0NDhDNS4yNTg4IDguNjk1MTggNC44MDM3MSA4LjY5NTE4IDQuNTIzMDMgOC40MTQ0OEwzLjA4NTUzIDYuOTc2OThDMi44MDQ4MiA2LjY5NjMgMi44MDQ4MiA2LjI0MTIxIDMuMDg1NTMgNS45NjA1M0MzLjM2NjIxIDUuNjc5ODIgMy44MjEzIDUuNjc5ODIgNC4xMDE5OCA1Ljk2MDUzTDUuMDMxMjUgNi44ODk3OEw3LjM5ODAzIDQuNTIzMDNDNy42Nzg3MSA0LjI0MjMyIDguMTMzOCA0LjI0MjMyIDguNDE0NDggNC41MjMwM1pcIiBmaWxsPVwiIzY2NzA4NVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguNDE0NDggMTEuNzEwNUM4LjY5NTE4IDExLjk5MTIgOC42OTUxOCAxMi40NDYzIDguNDE0NDggMTIuNzI3TDUuNTM5NDggMTUuNjAyQzUuMjU4OCAxNS44ODI2IDQuODAzNzEgMTUuODgyNiA0LjUyMzAzIDE1LjYwMkwzLjA4NTUzIDE0LjE2NDVDMi44MDQ4MiAxMy44ODM4IDIuODA0ODIgMTMuNDI4NyAzLjA4NTUzIDEzLjE0NzlDMy4zNjYyMSAxMi44NjczIDMuODIxMyAxMi44NjczIDQuMTAxOTggMTMuMTQ3OUw1LjAzMTI1IDE0LjA3NzNMNy4zOTgwMyAxMS43MTA1QzcuNjc4NzEgMTEuNDI5OSA4LjEzMzggMTEuNDI5OSA4LjQxNDQ4IDExLjcxMDVaXCIgZmlsbD1cIiM2NjcwODVcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMC4wNjI1IDYuNDY4NzVDMTAuMDYyNSA2LjA3MTggMTAuMzg0NCA1Ljc1IDEwLjc4MTIgNS43NUgxNS4wOTM4QzE1LjQ5MDYgNS43NSAxNS44MTI1IDYuMDcxOCAxNS44MTI1IDYuNDY4NzVDMTUuODEyNSA2Ljg2NTcgMTUuNDkwNiA3LjE4NzUgMTUuMDkzOCA3LjE4NzVIMTAuNzgxMkMxMC4zODQ0IDcuMTg3NSAxMC4wNjI1IDYuODY1NyAxMC4wNjI1IDYuNDY4NzVaXCIgZmlsbD1cIiM2NjcwODVcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zLjU5Mzc1IDBDMS42MDg5OCAwIDAgMS42MDg5OCAwIDMuNTkzNzVWMTYuNTMxMkMwIDE4LjUxNiAxLjYwODk4IDIwLjEyNSAzLjU5Mzc1IDIwLjEyNUg5LjQ4NzA4QzkuMjU0MjkgMTkuNjY5NiA5LjA2NDM2IDE5LjE4ODYgOC45MjI2MSAxOC42ODc1SDMuNTkzNzVDMi40MDI4OCAxOC42ODc1IDEuNDM3NSAxNy43MjIxIDEuNDM3NSAxNi41MzEyVjMuNTkzNzVDMS40Mzc1IDIuNDAyODggMi40MDI4OCAxLjQzNzUgMy41OTM3NSAxLjQzNzVIMTYuNTMxMkMxNy43MjIxIDEuNDM3NSAxOC42ODc1IDIuNDAyODggMTguNjg3NSAzLjU5Mzc1VjguOTIyNjFDMTkuMTg4NiA5LjA2NDM2IDE5LjY2OTYgOS4yNTQyOSAyMC4xMjUgOS40ODcwOFYzLjU5Mzc1QzIwLjEyNSAxLjYwODk4IDE4LjUxNiAwIDE2LjUzMTIgMEgzLjU5Mzc1WlwiIGZpbGw9XCIjNjY3MDg1XCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTYuNTMxMyAyM0MyMC4xMDM5IDIzIDIzIDIwLjEwMzkgMjMgMTYuNTMxM0MyMyAxMi45NTg2IDIwLjEwMzkgMTAuMDYyNSAxNi41MzEzIDEwLjA2MjVDMTIuOTU4NiAxMC4wNjI1IDEwLjA2MjUgMTIuOTU4NiAxMC4wNjI1IDE2LjUzMTNDMTAuMDYyNSAyMC4xMDM5IDEyLjk1ODYgMjMgMTYuNTMxMyAyM1pNMTYuNTMxMyAxMi45Mzc1QzE2LjkyODEgMTIuOTM3NSAxNy4yNSAxMy4yNTk0IDE3LjI1IDEzLjY1NjNWMTUuODEyNUgxOS40MDYzQzE5LjgwMzEgMTUuODEyNSAyMC4xMjUgMTYuMTM0NCAyMC4xMjUgMTYuNTMxM0MyMC4xMjUgMTYuOTI4MSAxOS44MDMxIDE3LjI1IDE5LjQwNjMgMTcuMjVIMTcuMjVWMTkuNDA2M0MxNy4yNSAxOS44MDMxIDE2LjkyODEgMjAuMTI1IDE2LjUzMTMgMjAuMTI1QzE2LjEzNDQgMjAuMTI1IDE1LjgxMjUgMTkuODAzMSAxNS44MTI1IDE5LjQwNjNWMTcuMjVIMTMuNjU2M0MxMy4yNTk0IDE3LjI1IDEyLjkzNzUgMTYuOTI4MSAxMi45Mzc1IDE2LjUzMTNDMTIuOTM3NSAxNi4xMzQ0IDEzLjI1OTQgMTUuODEyNSAxMy42NTYzIDE1LjgxMjVIMTUuODEyNVYxMy42NTYzQzE1LjgxMjUgMTMuMjU5NCAxNi4xMzQ0IDEyLjkzNzUgMTYuNTMxMyAxMi45Mzc1WlwiIGZpbGw9XCIjNjY3MDg1XCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48c3BhbiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+IHt7IGxvZy5fc291cmNlLmZyb21DaGVja0xpc3ROYW1lIHx8ICctLScgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhYmxlLXRpdGxlIGJhZGdlLWxpZ2h0XCIgW25nQ2xhc3NdPVwiZ2V0QWN0aW9uQmFkZ2VDbGFzcyhsb2cuX3NvdXJjZS5hY3Rpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEFjdGlvbkxhYmVsKGxvZy5fc291cmNlLmFjdGlvbikgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS10aXRsZSBkLWZsZXhcIj48c3BhbiBjbGFzcz1cIm1lLTNcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48c3Bhbj57eyBsb2cuX3NvdXJjZS5jcmVhdGVkQnlFbWFpbCB9fTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS10aXRsZSBkLWZsZXhcIj48c3BhbiAqbmdJZj1cImxvZy5fc291cmNlPy5zdG9yZU5hbWVcIiBjbGFzcz1cIm1lLTNcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yLjY3ODkzIDUuODAzNjZMMi42MjU2OCA1Ljg4NjgzQzIuMDY3NjQgNi44NzM4OCAyLjY2MzQ3IDguMTIxMyAzLjczNTA4IDguMjY0NEMzLjgzMjE3IDguMjc2MjcgMy45MjI1MSA4LjI4MjU1IDQuMDEwNzggOC4yODI1NUM0LjU4ODkzIDguMjgyNTUgNS4xMDAxIDguMDM0NTMgNS40NTYzNyA3LjY0NzhMNi4wMDk3IDcuMDQ3MThMNi41NjExNiA3LjY0OTUzQzYuOTEzMSA4LjAzMzk1IDcuNDIzMTEgOC4yODI1NSA4LjAwNTE3IDguMjgyNTVDOC41ODQ2MSA4LjI4MjU1IDkuMDk3NTUgOC4wMzM2IDkuNDQ5MTcgNy42NDk1M0wxMC4wMDI0IDcuMDQ1MjlMMTAuNTU1NSA3LjY0OTUzQzEwLjkwNzIgOC4wMzM2IDExLjQyMDEgOC4yODI1NSAxMS45OTk2IDguMjgyNTVDMTIuNTc5IDguMjgyNTUgMTMuMDkxOSA4LjAzMzYgMTMuNDQzNiA3LjY0OTUzTDEzLjk5NjcgNy4wNDUyOUwxNC41NDk5IDcuNjQ5NTNDMTQuOTAxNiA4LjAzMzYgMTUuNDE0NSA4LjI4MjU1IDE1Ljk5MzkgOC4yODI1NUMxNi4wNzkzIDguMjgyNTUgMTYuMTcyNCA4LjI3NjI1IDE2LjI2ODggOC4yNjQ1QzE3LjM2MzkgOC4xMTUxOCAxNy45NjE4IDYuODAwOTEgMTcuMzIzIDUuODA0MTZDMTcuMzIzIDUuODA0MSAxNy4zMjMgNS44MDQwNSAxNy4zMjI5IDUuODAzOTlMMTUuNTY0OCAzLjA2MjU4TDE1LjU2NDggMy4wNjI1OEwxNS41NjM4IDMuMDYxMTFDMTUuNTQ4NiAzLjAzNzI4IDE1LjUxMTIgMy4wMTE3MiAxNS40NjQgMy4wMTE3Mkg0LjUzNDU4QzQuNDg3NDQgMy4wMTE3MiA0LjQ0OTk1IDMuMDM3MjggNC40MzQ3NCAzLjA2MTExTDQuNDM0MTMgMy4wNjIwOEwyLjY3ODkzIDUuODAzNjZaTTE1LjY1MDQgMTAuNzM2OVYxMy44Njg5VjE0LjYxODlIMTQuOTAwNEg1LjA5ODIxSDQuMzQ4MjFWMTMuODY4OVYxMC43Mzc0QzQuMjM3OTggMTAuNzQ1NiA0LjEyNjQ2IDEwLjc0OTggNC4wMTM4NCAxMC43NDk4QzMuOTcxNTQgMTAuNzQ5OCAzLjkyOTUyIDEwLjc0OTIgMy44ODc3OCAxMC43NDhWMTMuODY4OVYxNS44MDM0QzMuODg3NzggMTYuNDQ2OCA0LjQyMTY4IDE2Ljk4NzkgNS4wOTgyMSAxNi45ODc5SDE0LjkwMDRDMTUuNTc2OSAxNi45ODc5IDE2LjExMDggMTYuNDQ2OCAxNi4xMTA4IDE1LjgwMzRWMTMuODY4OVYxMC43NDgyQzE2LjA3MSAxMC43NDkzIDE2LjAzMSAxMC43NDk4IDE1Ljk5MDkgMTAuNzQ5OEMxNS44NzY1IDEwLjc0OTggMTUuNzYyOSAxMC43NDU1IDE1LjY1MDQgMTAuNzM2OVpcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PHNwYW4+e3sgbG9nLl9zb3VyY2Uuc3RvcmVOYW1lIHx8ICctJyB9fTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBcIlsndXBkYXRlZCcsICdlZGl0ZWQnLCAnZHJhZnQnXS5pbmNsdWRlcyhsb2cuX3NvdXJjZS5hY3Rpb24pXCIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gICpuZ0lmPVwiWyd1cGRhdGVkJywgJ2VkaXRlZCddLmluY2x1ZGVzKGxvZy5fc291cmNlLmFjdGlvbikgfHwgKGxvZy5fc291cmNlLmFjdGlvbiA9PT0gJ2RyYWZ0JyAmJiBsb2cuX3NvdXJjZS5sb2dEZXRhaWxzICYmICFpc0xvZ0RldGFpbHNFbXB0eShsb2cuX3NvdXJjZS5sb2dEZXRhaWxzKSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ2aWV3QWN0aW9uKGxvZy5fc291cmNlKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1wcmltYXJ5IGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1PlZpZXc8L3U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibG9nLl9zb3VyY2UuYWN0aW9uID09PSAnc3VibWl0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9HYWxsZXJ5KGxvZy5fc291cmNlKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1wcmltYXJ5IGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1PlZpZXc8L3U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gKm5nSWY9XCIhWyd1cGRhdGVkJywgJ2VkaXRlZCcsICdzdWJtaXQnLCAnZHJhZnQnXS5pbmNsdWRlcyhsb2cuX3NvdXJjZS5hY3Rpb24pXCIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhWyd1cGRhdGVkJywgJ2VkaXRlZCcsICdzdWJtaXQnXS5pbmNsdWRlcyhsb2cuX3NvdXJjZS5hY3Rpb24pICYmICEobG9nLl9zb3VyY2UuYWN0aW9uID09PSAnZHJhZnQnICYmIGxvZy5fc291cmNlLmxvZ0RldGFpbHMgJiYgIWlzTG9nRGV0YWlsc0VtcHR5KGxvZy5fc291cmNlLmxvZ0RldGFpbHMpKVwiPi08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgIDwvdGFibGU+XHJcblxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFza0xvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbG9hZGVyICBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YXNrTm9EYXRhICYmICF0YXNrTG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbXktNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmNcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YW1haW50ZXh0IG10LTNcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhc3VidGV4dFwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3IgQWN0aXZpdHkgTG9nPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIXRhc2tMb2FkaW5nICYmICF0YXNrTm9EYXRhXCI+XHJcbiAgICAgICAgICAgIDxsaWItcGFnaW5hdGlvbiBjbGFzcz1cInRleHQtc3RhcnRcIiBbaXRlbXNQZXJQYWdlXT1cIml0ZW1zUGVyUGFnZVwiIFtjdXJyZW50UGFnZV09XCJjdXJyZW50UGFnZVwiXHJcbiAgICAgICAgICAgICAgICBbdG90YWxJdGVtc109XCJ0b3RhbEl0ZW1zXCIgW3BhZ2luYXRpb25TaXplc109XCJwYWdpbmF0aW9uU2l6ZXNcIiBbcGFnZVNpemVdPVwicGFnZVNpemVcIlxyXG4gICAgICAgICAgICAgICAgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiPjwvbGliLXBhZ2luYXRpb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbjwvZGl2PiJdfQ==
502
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktbG9nLXYyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtdHJheC9zcmMvbGliL2NvbXBvbmVudHMvYWN0aXZpdHktbG9nLXYyL2FjdGl2aXR5LWxvZy12Mi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2FjdGl2aXR5LWxvZy12Mi9hY3Rpdml0eS1sb2ctdjIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBS2hGLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFnQyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEYsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBSW5DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ3pGLE9BQU8sWUFBWSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7O0FBSnJELEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFNbEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUMzQixLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBU2xCLE1BQU0sT0FBTyxzQkFBc0I7SUF3RnZCO0lBQ0E7SUFDRDtJQUNDO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDRDtJQS9GVCxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ04sUUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFDakMsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUMxQixZQUFZLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLFdBQVcs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RCxzQ0FBc0M7WUFDdEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUVwQyxxQkFBcUI7WUFDckIsK0JBQStCO1lBQy9CLHlDQUF5QztZQUN6QyxVQUFVO1lBRVYsV0FBVztZQUNYLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1NBQ2hDO2FBQU07U0FDTjtJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQWMsRUFBRSxFQUFFO1lBQ3JDLDhDQUE4QztZQUM5QyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNqRSxDQUFDLENBQUM7SUFDSixDQUFDO3dHQTNlVSxzQkFBc0I7NEZBQXRCLHNCQUFzQiwyREN4Qm5DLHMwaEJBNExNOzs0RkRwS08sc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBUcmF4U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYXguc2VydmljZSc7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSwgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XHJcbmltcG9ydCB1dGMgZnJvbSAnZGF5anMvcGx1Z2luL3V0Yyc7XHJcbmRheWpzLmV4dGVuZCh1dGMpO1xyXG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBWaWV3QWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9sb2ctdmlldy1wb3B1cC92aWV3LWFjdGlvbi92aWV3LWFjdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgcmVsYXRpdmVUaW1lIGZyb20gJ2RheWpzL3BsdWdpbi9yZWxhdGl2ZVRpbWUnO1xyXG5cclxuZGF5anMuZXh0ZW5kKHJlbGF0aXZlVGltZSk7XHJcbmRheWpzLmV4dGVuZCh1dGMpO1xyXG5cclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJsaWItYWN0aXZpdHktbG9nLXYyXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9hY3Rpdml0eS1sb2ctdjIuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL2FjdGl2aXR5LWxvZy12Mi5jb21wb25lbnQuc2Nzc1wiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWN0aXZpdHlMb2dWMkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcclxuICBkYXlqcyA9IGRheWpzO1xyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIGlzRXhwb3J0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXRlbXNQZXJQYWdlID0gMTA7XHJcbiAgY3VycmVudFBhZ2UgPSAxO1xyXG4gIHRvdGFsSXRlbXMgPSAwO1xyXG4gIHBhZ2luYXRpb25TaXplczogYW55W10gPSBbXTtcclxuICBwYWdlU2l6ZSA9IDEwO1xyXG4gIHNvcnRDb2x1bU5hbWU6IHN0cmluZyA9IFwiXCI7XHJcbiAgc29ydEJ5OiBhbnkgPSBcIlwiO1xyXG4gIHNvcnREaXJlY3Rpb246IGFueSA9IFwiXCI7XHJcbiAgc2VhcmNoSW5wdXQ6IGFueSA9IFwiXCI7XHJcbiAgaGVhZGVyRGF0YTogYW55O1xyXG4gIHNlYXJjaFZhbHVlOiBzdHJpbmc7XHJcbiAgbGltaXQ6IG51bWJlcjtcclxuICBvZmZzZXQ6IG51bWJlcjtcclxuICBzZWFyY2hEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRhc2tMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICB0YXNrTm9EYXRhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcmVjZWl2ZWREYXRhOiBzdHJpbmcgPSBcImNoZWNrbGlzdFwiO1xyXG4gIGRhdGFPYmplY3Q6IGFueSA9IFtcclxuICAgIHtcclxuICAgICAgRGVzY3JpcHRpb246IFwiQWN0aW9uc1wiLFxyXG4gICAgICBJc3N1ZXM6IFtcclxuICAgICAgICB7IHRleHQ6IFwiQ3JlYXRlZCBieVwiLCBpZDogXCJjcmVhdGVkXCIgfSxcclxuICAgICAgICB7IHRleHQ6IFwiVXBkYXRlZCBieVwiLCBpZDogXCJ1cGRhdGVkXCIgfSxcclxuICAgICAgICB7IHRleHQ6IFwiU2F2ZWQgYXMgRHJhZnRcIiwgaWQ6IFwiZHJhZnRcIiB9LFxyXG4gICAgICAgIHsgdGV4dDogXCJQdWJsaXNoZWQgYnlcIiwgaWQ6IFwicHVibGlzaGVkXCIgfSxcclxuICAgICAgICB7IHRleHQ6IFwiU3VibWl0dGVkIGJ5XCIsIGlkOiBcInN1Ym1pdFwiIH0sXHJcbiAgICAgICAgeyB0ZXh0OiBcIlN0YXJ0ZWQgYnlcIiwgaWQ6IFwic3RhcnRcIiB9LFxyXG4gICAgICAgIHsgdGV4dDogXCJBcHByb3ZlZCBieVwiLCBpZDogXCJhcHByb3ZlZFwiIH0sXHJcbiAgICAgICAgeyB0ZXh0OiBcIlJlZG8gQ3JlYXRlZCBieVwiLCBpZDogXCJyZWRvXCIgfSxcclxuICAgICAgICB7IHRleHQ6IFwiU3Vic2VxdWVudCBSZWRvIENyZWF0ZWQgYnlcIiwgaWQ6IFwibXVsdGlyZWRvXCIgfSxcclxuICAgICAgICB7IHRleHQ6IFwiVGFzayBDcmVhdGVkIGJ5XCIsIGlkOiBcInRhc2tfY3JlYXRlZFwiIH0sXHJcbiAgICAgICAgLy8geyB0ZXh0OiAnUmUtT3BlbmVkIGJ5JywgaWQ6ICdyZW9wZW5lZCcgfSxcclxuICAgICAgICB7IHRleHQ6IFwiRWRpdGVkIGJ5XCIsIGlkOiBcImVkaXRlZFwiIH0sXHJcbiAgICAgICAgeyB0ZXh0OiBcIlVucHVibGlzaGVkIGJ5XCIsIGlkOiBcInVucHVibGlzaGVkXCIgfSxcclxuICAgICAgICB7IHRleHQ6IFwiRGVsZXRlZCBieVwiLCBpZDogXCJkZWxldGVkXCIgfSxcclxuICAgICAgICB7IHRleHQ6IFwiRHVwbGljYXRlZCBieVwiLCBpZDogXCJkdXBsaWNhdGVkXCIgfSxcclxuICAgICAgICB7IHRleHQ6IFwiUmVpbml0aWF0ZWQgYnlcIiwgaWQ6IFwicmVpbml0aWF0ZWRcIiB9LFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIC8vIHtcclxuICAgIC8vICAgRGVzY3JpcHRpb246ICdDb3ZlcmFnZScsXHJcbiAgICAvLyAgIElzc3VlczogW1xyXG4gICAgLy8gICAgIHsgdGV4dDogJ0NoZWNrbGlzdCcsIGlkOiAnY2hlY2tsaXN0JyB9LFxyXG5cclxuICAgIC8vICAgXSxcclxuICAgIC8vIH0sXHJcbiAgXTtcclxuICBhY3Rpdml0eUxvZ1RhYmxlRGF0YTogYW55W10gPSBbXTtcclxuICB0eXBlOiBzdHJpbmcgPSBcImNoZWNrbGlzdFwiO1xyXG4gIGFjdGl2aXR5TG9nRmlsdGVyOiBhbnkgPSBbXTtcclxuICAvLyByZWxvYWREYXRlOiBzdHJpbmc7XHJcbiAgc291cmNlQ2hlY2tMaXN0X2lkOiBhbnk7XHJcbiAgY2hlY2tsaXN0SWQ6IGFueTtcclxuICAvLyBjb3ZlcmFnZVR5cGU6IGFueSA9IFtdO1xyXG4gIHVzZXJFbWFpbGVzOiBhbnkgPSBbXTtcclxuICBjaGVja2xpc3ROYW1lOiBhbnk7XHJcbiAgZWRpdFJlcXVlc3REYXRhOiBhbnk7XHJcbiAgaXNBY3Rpdml0eUxvZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBzZWxlY3RlZERhdGVSYW5nZTogYW55ID0ge1xyXG4gICAgc3RhcnREYXRlOiBkYXlqcygpLnN1YnRyYWN0KDcsIFwiZGF5c1wiKSxcclxuICAgIGVuZERhdGU6IGRheWpzKCkuc3VidHJhY3QoMSwgXCJkYXlzXCIpLFxyXG4gIH07XHJcbiAgaXNDdXN0b21EYXRlID0gKG06IGRheWpzLkRheWpzKSA9PiB7XHJcbiAgICBjb25zdCBpc1ZhbGlkRGF0ZSA9IG0gPiB0aGlzLmRheWpzKCk7XHJcbiAgICByZXR1cm4gaXNWYWxpZERhdGUgPyBcImludmFsaWQtZGF0ZVwiIDogZmFsc2U7XHJcbiAgfTtcclxuICBzZWxlY3RlZEZpbHRlcnM6IGFueSA9IHtcclxuICAgIGNsaWVudDogbnVsbCxcclxuICAgIGNsaWVudE5hbWU6IG51bGwsXHJcbiAgICBjbGllbnRzOiBbXSxcclxuICAgIHN0b3JlOiBudWxsLFxyXG4gICAgc3RvcmVzOiBbXSxcclxuICAgIC8vIGRhdGU6IG51bGwsXHJcbiAgICBkYXRlOiB7XHJcbiAgICAgIHN0YXJ0RGF0ZTogZGF5anMoKS5zdWJ0cmFjdCg3LCBcImRheXNcIikuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKSxcclxuICAgICAgZW5kRGF0ZTogZGF5anMoKS5zdWJ0cmFjdCgxLCBcImRheXNcIikuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKSxcclxuICAgIH0sXHJcbiAgICBncm91cDogW10sXHJcbiAgICBsb2NhdGlvbjogW10sXHJcbiAgfTtcclxuICBjb3VudDogbnVtYmVyID0gMDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwdWJsaWMgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSB0b2FzdDogVG9hc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBUcmF4U2VydmljZTogVHJheFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHBhZ2VJbmZvOiBQYWdlSW5mb1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHB1YmxpYyBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsXHJcbiAgKSB7XHJcbiAgICB0aGlzLnVzZXJFbWFpbGVzID0gSlNPTi5wYXJzZShcclxuICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ1c2Vyc0VtYWlsLWluZm9cIikgfHwgXCJbXVwiXHJcbiAgICApO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSwgZGVib3VuY2VUaW1lKDMwMCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuaXRlbXNQZXJQYWdlID0gMTA7XHJcbiAgICAgICAgdGhpcy5wYWdlU2l6ZSA9IDEwO1xyXG4gICAgICAgIHRoaXMuaGVhZGVyRGF0YSA9IGRhdGE7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgICAgdGhpcy5zZXRQYWdlRGF0YSgpO1xyXG4gICAgICAgIHRoaXMuZ2V0QWN0aXZpdHlMb2dUYWJsZURhdGEoKTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuY291bnQrKztcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyB0aGlzLmFwcGx5RmlsdGVycyhbeyBEZXNjcmlwdGlvbjogJ0NvdmVyYWdlJywgSXNzdWVzOiBbeyB0ZXh0OiB0aGlzLmNvdmVyYWdlVHlwZVswXSwgaWQ6IHRoaXMuY292ZXJhZ2VUeXBlWzBdLCBjaGVja2VkOiB0cnVlfV0gfV0pO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgc2V0UGFnZURhdGEoKSB7XHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldFRpdGxlKFwiRGFzaGJvYXJkXCIpO1xyXG4gICAgdGhpcy5wYWdlSW5mby5zZXRCcmVhZGNydW1icyhbXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogXCJUYW5nbyBUcmF4XCIsXHJcbiAgICAgICAgcGF0aDogXCIvbWFuYWdlL3RyYXgvZGFzaGJvYXJkXCIsXHJcbiAgICAgICAgaXNBY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGlzU2VwYXJhdG9yOiBmYWxzZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiBcIlRhbmdvIFRyYXhcIixcclxuICAgICAgICBwYXRoOiBcIi9tYW5hZ2UvdHJheC9kYXNoYm9hcmRcIixcclxuICAgICAgICBpc0FjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgaXNTZXBhcmF0b3I6IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICBdKTtcclxuICB9XHJcbiAgZ2V0QWN0aXZpdHlMb2dUYWJsZURhdGEoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzQWN0aXZpdHlMb2cgPSB0cnVlO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7IC8vIEZvcmNlIFVJIHVwZGF0ZVxyXG4gICAgdGhpcy5zZWFyY2hEaXNhYmxlZCA9IHRydWU7XHJcbiAgICB0aGlzLnRhc2tMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMudGFza05vRGF0YSA9IHRydWU7XHJcbiAgICBjb25zdCByZXF1ZXN0RGF0YSA9IHtcclxuICAgICAgZnJvbURhdGU6IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzPy5kYXRlPy5zdGFydERhdGUsXHJcbiAgICAgIHRvRGF0ZTogdGhpcy5zZWxlY3RlZEZpbHRlcnM/LmRhdGU/LmVuZERhdGUsXHJcbiAgICAgIHN0b3JlSWQ6IHRoaXMuaGVhZGVyRGF0YT8uc3RvcmVzXHJcbiAgICAgICAgLmZpbHRlcigoc3RvcmU6IGFueSkgPT4gc3RvcmUuY2hlY2tlZClcclxuICAgICAgICAubWFwKChzdG9yZTogYW55KSA9PiBzdG9yZS5zdG9yZUlkKSxcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuaGVhZGVyRGF0YS5jbGllbnQsXHJcbiAgICAgIGxpbWl0OiB0aGlzLml0ZW1zUGVyUGFnZSxcclxuICAgICAgb2Zmc2V0OiB0aGlzLmN1cnJlbnRQYWdlIC0gMSxcclxuICAgICAgc29ydEJ5OiB0aGlzLnNvcnREaXJlY3Rpb24sXHJcbiAgICAgIHNvcnRDb2x1bW5OYW1lOiB0aGlzLnNvcnRDb2x1bU5hbWUsXHJcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaElucHV0LFxyXG4gICAgICBhY3Rpb246IHRoaXMuYWN0aXZpdHlMb2dGaWx0ZXIsXHJcbiAgICAgIHR5cGU6IHRoaXMucmVjZWl2ZWREYXRhLFxyXG4gICAgICB1c2VyRW1haWxlczogdGhpcy51c2VyRW1haWxlcyxcclxuICAgICAgLy8gY2hlY2tMaXN0TmFtZTp0aGlzLmNoZWNrbGlzdE5hbWUsXHJcbiAgICAgIC8vIFwiY2hlY2tMaXN0TmFtZVwiOiBcImRhaWx5IHN0b3JlIGNoZWNrbGlzdDExMVwiLFxyXG4gICAgICAvLyBcInR5cGVcIjogXCJjaGVja2xpc3RcIixcclxuICAgICAgLy8gXCJhY3Rpb25cIjogW1wiY3JlYXRlZFwiXSxcclxuICAgICAgLy8gXCJsaW1pdFwiOiA1LFxyXG4gICAgICAvLyBcIm9mZnNldFwiOiAwLFxyXG4gICAgICAvLyBcInNvcnRCeVwiOiBcIlwiLFxyXG4gICAgICAvLyBcInNvcnRDb2x1bW5OYW1lXCI6IFwiXCIsXHJcbiAgICAgIC8vIFwic2VhcmNoVmFsdWVcIjogXCJEYWlseSBzdG9yZSBjaGVja2xpc3QgTmV3XCJcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5UcmF4U2VydmljZS5hY3Rpdml0eUxvZ0xpc3QocmVxdWVzdERhdGEpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50YXNrTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlPy5jb2RlID09PSAyMDAgJiYgcmVzcG9uc2U/LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHtcclxuICAgICAgICAgICAgdGhpcy5hY3Rpdml0eUxvZ1RhYmxlRGF0YSA9IHJlc3BvbnNlLmRhdGEucmVzdWx0IHx8IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSByZXNwb25zZS5kYXRhLmNvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnNldFBhZ2luYXRpb25TaXplcygpO1xyXG4gICAgICAgICAgICB0aGlzLnRhc2tMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMudGFza05vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaERpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmFjdGl2aXR5TG9nVGFibGVEYXRhID0gW107XHJcbiAgICAgICAgICAgIHRoaXMudGFza0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy50YXNrTm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hEaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaElucHV0Py5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaERpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmFjdGl2aXR5TG9nVGFibGVEYXRhID0gW107XHJcbiAgICAgICAgICAgIHRoaXMudG90YWxJdGVtcyA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2aXR5TG9nVGFibGVEYXRhID0gW107XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB0aGlzLnNvdXJjZUNoZWNrTGlzdF9pZCA9IFwiXCI7XHJcbiAgfVxyXG4gIC8vIHJlbW92ZVF1ZXJ5UGFyYW1zKCkge1xyXG4gIC8vICAgY29uc3QgdXJsV2l0aG91dFBhcmFtcyA9IHRoaXMubG9jYXRpb24ucGF0aCgpLnNwbGl0KCc/JylbMF07XHJcbiAgLy8gICB0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh1cmxXaXRob3V0UGFyYW1zKTtcclxuICAvLyB9XHJcbiAgc2V0UGFnaW5hdGlvblNpemVzKCkge1xyXG4gICAgaWYgKHRoaXMudG90YWxJdGVtcyA+IDEwKSB7XHJcbiAgICAgIGlmICh0aGlzLnBhZ2VTaXplID4gMTApIHtcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb25TaXplcyA9IFsxMCwgMjAsIDMwXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb25TaXplcyA9IFsxMCwgMjAsIDMwXTtcclxuICAgICAgICB0aGlzLnBhZ2VTaXplID0gMTA7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucGFnaW5hdGlvblNpemVzID0gW3RoaXMudG90YWxJdGVtc107XHJcbiAgICAgIHRoaXMucGFnZVNpemUgPSB0aGlzLnRvdGFsSXRlbXM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkV4cG9ydCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgY29uc3QgcmVxdWVzdERhdGEgPSB7XHJcbiAgICAgIGZyb21EYXRlOiB0aGlzLmhlYWRlckRhdGEuZGF0ZS5zdGFydERhdGUsXHJcbiAgICAgIHRvRGF0ZTogdGhpcy5oZWFkZXJEYXRhLmRhdGUuZW5kRGF0ZSxcclxuICAgICAgc3RvcmVJZDogdGhpcy5oZWFkZXJEYXRhLnN0b3Jlc1xyXG4gICAgICAgIC5maWx0ZXIoKHN0b3JlOiBhbnkpID0+IHN0b3JlLmNoZWNrZWQpXHJcbiAgICAgICAgLm1hcCgoc3RvcmU6IGFueSkgPT4gc3RvcmUuc3RvcmVJZCksXHJcbiAgICAgIHVzZXJFbWFpbGVzOiB0aGlzLnVzZXJFbWFpbGVzLFxyXG4gICAgICBjbGllbnRJZDogdGhpcy5oZWFkZXJEYXRhLmNsaWVudCxcclxuICAgICAgbGltaXQ6IDEwMDAwLFxyXG4gICAgICBvZmZzZXQ6IDAsXHJcbiAgICAgIHNvcnRCeTogdGhpcy5zb3J0RGlyZWN0aW9uLFxyXG4gICAgICBzb3J0Q29sdW1uTmFtZTogdGhpcy5zb3J0Q29sdW1OYW1lLFxyXG4gICAgICBzZWFyY2hWYWx1ZTogdGhpcy5zZWFyY2hJbnB1dCxcclxuICAgICAgZXhwb3J0OiB0cnVlLFxyXG4gICAgICBmaWx0ZXI6IHRoaXMuYWN0aXZpdHlMb2dGaWx0ZXIsXHJcbiAgICAgIC8vIGNvdmVyYWdlOiB0aGlzLmNvdmVyYWdlVHlwZSB8fCBbXVxyXG4gICAgfTtcclxuICAgIHRoaXMuVHJheFNlcnZpY2UuZ2V0VGFza1RhYmxlRGF0YUV4cG9ydChyZXF1ZXN0RGF0YSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLlRyYXhTZXJ2aWNlLnNhdmVBc0V4Y2VsRmlsZShyZXMsIFwiVGFza1RhYmxlXCIpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoXCJTb21ldGhpbmcgd2VudCBXcm9uZy4uXCIpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBzZWFyY2hGaWVsZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaGVhZGVyRGF0YS5zZWFyY2hWYWx1ZSA9IHRoaXMuc2VhcmNoSW5wdXQ7XHJcbiAgICB0aGlzLmhlYWRlckRhdGEuZXhwb3J0ID0gZmFsc2U7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICAgIHRoaXMucGFnZVNpemUgPSAxMDtcclxuICAgIHRoaXMuZ2V0QWN0aXZpdHlMb2dUYWJsZURhdGEoKTtcclxuICB9XHJcbiAgc29ydERhdGEoY29sdW1uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNvcnRDb2x1bU5hbWUgPT09IGNvbHVtbikge1xyXG4gICAgICB0aGlzLnNvcnREaXJlY3Rpb24gPSB0aGlzLnNvcnREaXJlY3Rpb24gPT09IDEgPyAtMSA6IDE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNvcnRDb2x1bU5hbWUgPSBjb2x1bW47XHJcbiAgICAgIHRoaXMuc29ydERpcmVjdGlvbiA9IDE7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldEFjdGl2aXR5TG9nVGFibGVEYXRhKCk7XHJcbiAgfVxyXG5cclxuICBvblBhZ2VTaXplQ2hhbmdlKHBhZ2VTaXplOiBhbnkpIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgdGhpcy5pdGVtc1BlclBhZ2UgPSBwYXJzZUludChwYWdlU2l6ZSk7XHJcbiAgICB0aGlzLnBhZ2VTaXplID0gcGFyc2VJbnQocGFnZVNpemUpO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLmdldEFjdGl2aXR5TG9nVGFibGVEYXRhKCk7XHJcbiAgfVxyXG4gIG9uUGFnZUNoYW5nZShwYWdlT2Zmc2V0OiBhbnkpIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlT2Zmc2V0O1xyXG4gICAgdGhpcy5nZXRBY3Rpdml0eUxvZ1RhYmxlRGF0YSgpO1xyXG4gIH1cclxuICBhcHBseUZpbHRlcnMoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50Py5sZW5ndGgpIHtcclxuICAgICAgZXZlbnQuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQuRGVzY3JpcHRpb24gPT09IFwiQWN0aW9uc1wiKSB7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2aXR5TG9nRmlsdGVyID0gZWxlbWVudC5Jc3N1ZXMubWFwKCh2YWw6IGFueSkgPT4gdmFsLmlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gdGhpcy5kYXRhT2JqZWN0LmZvckVhY2goKGNhdGVnb3J5OiBhbnkpID0+IHtcclxuICAgICAgLy8gICBjYXRlZ29yeS5Jc3N1ZXMuZm9yRWFjaCgoaXNzdWU6IGFueSkgPT4ge1xyXG4gICAgICAvLyAgICAgaXNzdWUuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgIC8vICAgfSk7XHJcbiAgICAgIC8vIH0pO1xyXG5cclxuICAgICAgLy8gY29uc3QgYWN0aW9uc0ZpbHRlciA9IHRoaXMuZGF0YU9iamVjdC5maW5kKChpdGVtOiBhbnkpID0+IGl0ZW0uRGVzY3JpcHRpb24gPT09ICdBY3Rpb25zJyk7XHJcbiAgICAgIC8vIHRoaXMuYWN0aXZpdHlMb2dGaWx0ZXIgPSBhY3Rpb25zRmlsdGVyID8gYWN0aW9uc0ZpbHRlci5Jc3N1ZXMubWFwKCh2YWw6IGFueSkgPT4gdmFsLmlkKSA6IFtdO1xyXG4gICAgICB0aGlzLmFjdGl2aXR5TG9nRmlsdGVyID0gW107XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldEFjdGl2aXR5TG9nVGFibGVEYXRhKCk7XHJcbiAgfVxyXG4gIHNlbGVjdFBsYW4oc2VsZWN0ZWRUeXBlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMudHlwZSA9IHNlbGVjdGVkVHlwZTtcclxuICB9XHJcblxyXG4gIC8vIG5hdmlnYXRlVG9UYXNrQ29uZmlnKHRhc2s6IGFueSk6IHZvaWQge1xyXG4gIC8vICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ21hbmFnZS90cmF4L3Rhc2stY29uZmlndXJlJ10sIHsgcXVlcnlQYXJhbXM6IHt0YXNrSWQ6dGFzay5faWR9IH0pXHJcbiAgLy8gfVxyXG5cclxuICAvLyBuYXZpZ2F0ZVRvVGFza0VkaXQodGFzazogYW55KTogdm9pZCB7XHJcbiAgLy8gICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnbWFuYWdlL3RyYXgvY3JlYXRlLXRhc2snXSwgeyBxdWVyeVBhcmFtczoge2lkOnRhc2suX2lkfSB9KVxyXG4gIC8vIH1cclxuXHJcbiAgZGF0ZUZvcm1hdChkYXRlOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmRheWpzLnV0YyhkYXRlKS5mb3JtYXQoXCJERCBNTU0gWVlZWVwiKTtcclxuICB9XHJcbiAgU2VsZWN0dGFicyh0YWI6IHN0cmluZykge1xyXG4gICAgdGhpcy5yZWNlaXZlZERhdGEgPSB0YWI7XHJcblxyXG4gICAgLy8gdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtcclxuICAgIC8vICAgcXVlcnlQYXJhbXM6IHsgdHlwZTogdGFiIH0sXHJcbiAgICAvLyAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZSdcclxuICAgIC8vIH0pO1xyXG5cclxuICAgIHRoaXMuZ2V0QWN0aXZpdHlMb2dUYWJsZURhdGEoKTtcclxuICB9XHJcbiAgdmlld0FjdGlvbihsb2c6IGFueSkge1xyXG4gICAgbGV0IG1vZGFsU2l6ZSA9XHJcbiAgICAgIGxvZy5hY3Rpb24gPT09IFwidXBkYXRlZFwiIHx8IGxvZy5hY3Rpb24gPT09IFwiZHJhZnRcIlxyXG4gICAgICAgID8gXCJ4bFwiXHJcbiAgICAgICAgOiBsb2cuYWN0aW9uID09PSBcImVkaXRlZFwiXHJcbiAgICAgICAgPyBcImxnXCJcclxuICAgICAgICA6IFwibWRcIjtcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihWaWV3QWN0aW9uQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICBzaXplOiBtb2RhbFNpemUsXHJcbiAgICAgIHNjcm9sbGFibGU6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmxvZ0RldGFpbHMgPSBsb2cubG9nRGV0YWlscztcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmNoZWNrTGlzdE5hbWUgPSBsb2cuY2hlY2tMaXN0TmFtZTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnN0b3JlTmFtZSA9IGxvZy5zdG9yZU5hbWU7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5hY3Rpb25UeXBlID0gbG9nLmFjdGlvbjtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnJlY2VpdmVkRGF0YSA9IHRoaXMucmVjZWl2ZWREYXRhO1xyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKCkgPT4ge1xyXG4gICAgICB0aGlzLmdldEFjdGl2aXR5TG9nVGFibGVEYXRhKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGlzTG9nRGV0YWlsc0VtcHR5KGxvZ0RldGFpbHM6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgIWxvZ0RldGFpbHMgfHxcclxuICAgICAgT2JqZWN0LmtleXMobG9nRGV0YWlscykuZXZlcnkoKGtleSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gbG9nRGV0YWlsc1trZXldO1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIHZhbHVlLmxlbmd0aCA9PT0gMDtcclxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiKSByZXR1cm4gdGhpcy5pc0xvZ0RldGFpbHNFbXB0eSh2YWx1ZSk7XHJcbiAgICAgICAgcmV0dXJuICF2YWx1ZTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBmb3JtYXREYXRlVGltZShkYXRlU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFkYXRlU3RyaW5nKSByZXR1cm4gXCItLVwiO1xyXG5cclxuICAgIGNvbnN0IGRhdGUgPSBkYXlqcy51dGMoZGF0ZVN0cmluZykubG9jYWwoKTtcclxuICAgIGNvbnN0IG5vdyA9IGRheWpzKCk7XHJcblxyXG4gICAgbGV0IGZvcm1hdHRlZERhdGUgPSBcIlwiO1xyXG5cclxuICAgIGlmIChkYXRlLmlzU2FtZShub3csIFwiZGF5XCIpKSB7XHJcbiAgICAgIGZvcm1hdHRlZERhdGUgPSBcIlRvZGF5XCI7XHJcbiAgICB9IGVsc2UgaWYgKGRhdGUuaXNTYW1lKG5vdy5zdWJ0cmFjdCgxLCBcImRheVwiKSwgXCJkYXlcIikpIHtcclxuICAgICAgZm9ybWF0dGVkRGF0ZSA9IFwiWWVzdGVyZGF5XCI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3JtYXR0ZWREYXRlID0gZGF0ZS5mb3JtYXQoXCJNTU0gRCwgWVlZWVwiKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYCR7Zm9ybWF0dGVkRGF0ZX0gPGJyPiAke2RhdGUuZm9ybWF0KFwiaGggOiBtbSBBXCIpfWA7XHJcbiAgfVxyXG4gIGdldEFjdGlvbkJhZGdlQ2xhc3MoYWN0aW9uOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgYWN0aW9uQ2xhc3NlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcclxuICAgICAgY3JlYXRlZDogXCJiYWRnZS1saWdodC1kZWZhdWx0XCIsXHJcbiAgICAgIHVwZGF0ZWQ6IFwiYmFkZ2UtbGlnaHQtcHJpbWFyeTFcIixcclxuICAgICAgZHJhZnQ6IFwiYmFkZ2UtbGlnaHQtZGVmYXVsdFwiLFxyXG4gICAgICBwdWJsaXNoZWQ6IFwiYmFkZ2UtbGlnaHQtcHJpbWFyeTFcIixcclxuICAgICAgc3VibWl0OiBcImJhZGdlLWxpZ2h0LXByaW1hcnkxXCIsXHJcbiAgICAgIHN0YXJ0OiBcImJhZGdlLWxpZ2h0LXByaW1hcnkxXCIsXHJcbiAgICAgIGFwcHJvdmVkOiBcImJhZGdlLWxpZ2h0LXN1Y2Nlc3NcIixcclxuICAgICAgcmVkbzogXCJiYWRnZS1saWdodC13YXJuaW5nXCIsXHJcbiAgICAgIG11bHRpcmVkbzogXCJiYWRnZS1saWdodC13YXJuaW5nXCIsXHJcbiAgICAgIHRhc2tfY3JlYXRlZDogXCJiYWRnZS1saWdodC1kZWZhdWx0XCIsXHJcbiAgICAgIC8vIHJlb3BlbmVkOiAnYmFkZ2UtbGlnaHQtZGVmYXVsdCcsXHJcbiAgICAgIGVkaXRlZDogXCJiYWRnZS1saWdodC13YXJuaW5nXCIsXHJcbiAgICAgIHVucHVibGlzaGVkOiBcImJhZGdlLWxpZ2h0LXByaW1hcnkxXCIsXHJcbiAgICAgIGRlbGV0ZWQ6IFwiYmFkZ2UtbGlnaHQtZGVsZXRlXCIsXHJcbiAgICAgIGR1cGxpY2F0ZWQ6IFwiYmFkZ2UtbGlnaHQtZGVmYXVsdFwiLFxyXG4gICAgICByZWluaXRpYXRlZDogXCJiYWRnZS1saWdodC13YXJuaW5nXCIsXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBhY3Rpb25DbGFzc2VzW2FjdGlvbl0gfHwgXCJiYWRnZS1saWdodC1kZWZhdWx0XCI7XHJcbiAgfVxyXG5cclxuICBnZXRBY3Rpb25MYWJlbChhY3Rpb246IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBhY3Rpb25MYWJlbHM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XHJcbiAgICAgIGNyZWF0ZWQ6IFwiQ3JlYXRlZCBieVwiLFxyXG4gICAgICB1cGRhdGVkOiBcIlVwZGF0ZWQgYnlcIixcclxuICAgICAgZHJhZnQ6IFwiU2F2ZWQgYXMgRHJhZnRcIixcclxuICAgICAgcHVibGlzaGVkOiBcIlB1Ymxpc2hlZCBieVwiLFxyXG4gICAgICBzdWJtaXQ6IFwiU3VibWl0dGVkIGJ5XCIsXHJcbiAgICAgIHN0YXJ0OiBcIlN0YXJ0ZWQgYnlcIixcclxuICAgICAgYXBwcm92ZWQ6IFwiQXBwcm92ZWQgYnlcIixcclxuICAgICAgcmVkbzogXCJSZWRvIENyZWF0ZWQgYnlcIixcclxuICAgICAgbXVsdGlyZWRvOiBcIlN1YnNlcXVlbnQgUmVkbyBDcmVhdGVkIGJ5XCIsXHJcbiAgICAgIHRhc2tfY3JlYXRlZDogXCJUYXNrIENyZWF0ZWQgYnlcIixcclxuICAgICAgLy8gcmVvcGVuZWQ6ICdSZS1vcGVuZWQgYnknLFxyXG4gICAgICBlZGl0ZWQ6IFwiRWRpdGVkIGJ5XCIsXHJcbiAgICAgIHVucHVibGlzaGVkOiBcIlVucHVibGlzaGVkIGJ5XCIsXHJcbiAgICAgIGRlbGV0ZWQ6IFwiRGVsZXRlZCBieVwiLFxyXG4gICAgICBkdXBsaWNhdGVkOiBcIkR1cGxpY2F0ZWQgYnlcIixcclxuICAgICAgcmVpbml0aWF0ZWQ6IFwiUmVpbml0aWF0ZWQgYnlcIixcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIGFjdGlvbkxhYmVsc1thY3Rpb25dIHx8IGFjdGlvbjtcclxuICB9XHJcblxyXG4gIG5hdmlnYXRlVG9HYWxsZXJ5KGxvZzogYW55KTogdm9pZCB7XHJcbiAgICBsZXQgZm9ybWF0dGVkRGF0ZSA9IGRheWpzKGxvZy5jcmVhdGVBdCkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKTtcclxuICAgIGxldCBjaGVja2xpc3RUeXBlOiBzdHJpbmc7XHJcbiAgICBpZiAobG9nLmNoZWNrTGlzdFR5cGUgPT09IFwiY3VzdG9tXCIpIHtcclxuICAgICAgY2hlY2tsaXN0VHlwZSA9IFwiY3VzdG9tXCI7XHJcbiAgICB9IGVsc2UgaWYgKFtcInRhc2tcIiwgXCJjaGVja2xpc3RUYXNrXCIsIFwiY2N0dlwiXS5pbmNsdWRlcyhsb2cudHlwZSkpIHtcclxuICAgICAgY2hlY2tsaXN0VHlwZSA9IFwidGFza1wiO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY2hlY2tsaXN0VHlwZSA9IGxvZy50eXBlIHx8IFwiLS1cIjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHt9O1xyXG4gICAgaWYgKGxvZy5zdG9yZV9pZCAmJiBsb2cuc3RvcmVfaWQgIT0gXCJcIikge1xyXG4gICAgICBxdWVyeVBhcmFtcyA9IHtcclxuICAgICAgICBDaGVja2xpc3REYXRlOiBmb3JtYXR0ZWREYXRlLFxyXG4gICAgICAgIHN0b3JlSWQ6IGxvZy5zdG9yZV9pZCxcclxuICAgICAgICBjaGVja2xpc3RUeXBlOiBjaGVja2xpc3RUeXBlLFxyXG4gICAgICAgIHNvdXJjZUNoZWNrTGlzdF9pZDogbG9nLnNvdXJjZUNoZWNrTGlzdF9pZCxcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zID0ge1xyXG4gICAgICAgIENoZWNrbGlzdERhdGU6IGZvcm1hdHRlZERhdGUsXHJcbiAgICAgICAgdXNlckVtYWlsOiBsb2cudXNlckVtYWlsLFxyXG4gICAgICAgIGNoZWNrbGlzdFR5cGU6IGNoZWNrbGlzdFR5cGUsXHJcbiAgICAgICAgc291cmNlQ2hlY2tMaXN0X2lkOiBsb2cuc291cmNlQ2hlY2tMaXN0X2lkLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgaWYgKGxvZy5yZWRvU3RhdHVzKSB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zLnJlZG9TdGF0dXMgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL21hbmFnZS90cmF4L2dhbGxlcnlcIl0sIHsgcXVlcnlQYXJhbXMgfSk7XHJcbiAgfVxyXG5cclxuICBkYXRlY2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudCAmJiBldmVudC5zdGFydERhdGUgJiYgZXZlbnQuZW5kRGF0ZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlID0ge1xyXG4gICAgICAgIHN0YXJ0RGF0ZTogZXZlbnQuc3RhcnREYXRlLFxyXG4gICAgICAgIGVuZERhdGU6IGV2ZW50LmVuZERhdGUsXHJcbiAgICAgIH07XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5kYXRlID0ge1xyXG4gICAgICAgIHN0YXJ0RGF0ZTogZXZlbnQuc3RhcnREYXRlLFxyXG4gICAgICAgIGVuZERhdGU6IGV2ZW50LmVuZERhdGUsXHJcbiAgICAgIH07XHJcblxyXG4gICAgICAvLyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIsIEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRGaWx0ZXJzKSk7XHJcbiAgICAgIC8vIHRoaXMucmVzZXRWYWxpZGF0aW9uKCk7XHJcbiAgICAgIC8vIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUubmV4dCh0aGlzLnNlbGVjdGVkRmlsdGVycyk7XHJcblxyXG4gICAgICAvLyBSZXNldCB0aGUgcGlja2VyIHRvIGZvcmNlIHJlLXJlbmRlclxyXG4gICAgICB0aGlzLmlzQWN0aXZpdHlMb2cgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgLy8gICB0aGlzLmlzQWN0aXZpdHlMb2cgPSB0cnVlO1xyXG4gICAgICAvLyAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAvLyB9LCAxMCk7XHJcblxyXG4gICAgICAvLyBDYWxsIEFQSVxyXG4gICAgICB0aGlzLmdldEFjdGl2aXR5TG9nVGFibGVEYXRhKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRWYWxpZGF0aW9uKCkge1xyXG4gICAgdGhpcy5pc0N1c3RvbURhdGUgPSAobTogZGF5anMuRGF5anMpID0+IHtcclxuICAgICAgLy8gQ2hlY2sgaWYgdGhlIGdpdmVuIGRhdGUgaXMgYmVmb3JlIHllc3RlcmRheVxyXG4gICAgICByZXR1cm4gbS5pc0FmdGVyKHRoaXMuZGF5anMoKSwgXCJkYXlcIikgPyBcImludmFsaWQtZGF0ZVwiIDogZmFsc2U7XHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG10LTRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtM1wiPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWxhYmVsIG1iLTJcIj5BY3Rpdml0eSBMb2cgPC9zcGFuPlxyXG4gICAgICAgIDwvaDM+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciAgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gZm9vdGZhbGxzZWFyY2ggc3ZnLWljb24tMSBwb3NpdGlvbi1hYnNvbHV0ZSAgbXMtOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBvcGFjaXR5PVwiMC41XCIgeD1cIjE3LjAzNjVcIiB5PVwiMTUuMTIyM1wiIHdpZHRoPVwiOC4xNTU0NlwiIGhlaWdodD1cIjJcIiByeD1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInJvdGF0ZSg0NSAxNy4wMzY1IDE1LjEyMjMpXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExIDE5QzYuNTU1NTYgMTkgMyAxNS40NDQ0IDMgMTFDMyA2LjU1NTU2IDYuNTU1NTYgMyAxMSAzQzE1LjQ0NDQgMyAxOSA2LjU1NTU2IDE5IDExQzE5IDE1LjQ0NDQgMTUuNDQ0NCAxOSAxMSAxOVpNMTEgNUM3LjUzMzMzIDUgNSA3LjUzMzMzIDUgMTFDNSAxNC40NjY3IDcuNTMzMzMgMTcgMTEgMTdDMTQuNDY2NyAxNyAxNyAxNC40NjY3IDE3IDExQzE3IDcuNTMzMzMgMTQuNDY2NyA1IDExIDVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwicmVjZWl2ZWREYXRhID09PSAnY2hlY2tsaXN0J1wiIFsobmdNb2RlbCldPVwic2VhcmNoSW5wdXRcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHBzLTE0IG14LTIgbG9nc2VhcmNoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggd2l0aCBTdG9yZSwgRW1haWwsIENoZWNrbGlzdFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChrZXl1cC5lbnRlcik9XCJzZWFyY2hGaWVsZCgpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCJyZWNlaXZlZERhdGEgPT09ICd0YXNrJ1wiIFsobmdNb2RlbCldPVwic2VhcmNoSW5wdXRcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHBzLTE0IG14LTIgbG9nc2VhcmNoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggd2l0aCBTdG9yZSwgRW1haWwsIFRhc2tcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAoa2V5dXAuZW50ZXIpPVwic2VhcmNoRmllbGQoKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBkYXRlcGlja2VyIHN0YXJ0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLWRhdGUtcmFuZ2UtcGlja2VyIChkYXRlQ2hhbmdlKT1cImRhdGVjaGFuZ2UoJGV2ZW50KVwiIFt2YWx1ZV09XCJjb3VudFwiPjwvbGliLWRhdGUtcmFuZ2UtcGlja2VyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gZGF0ZXBpY2tlciBlbmQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItZmlsdGVycyAgW2RhdGFPYmplY3RdPVwiZGF0YU9iamVjdFwiIChhcHBsaWVkRmlsdGVycyk9XCJhcHBseUZpbHRlcnMoJGV2ZW50KVwiPjwvbGliLWZpbHRlcnM+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggb3ZlcmZsb3ctYXV0byBtYi0yIG14LTRcIj5cclxuICAgICAgICA8dWxcclxuICAgICAgICAgICAgY2xhc3M9XCJuYXYgbmF2LXN0cmV0Y2ggbmF2LWxpbmUtdGFiczEgbmF2LWxpbmUtdGFicy0yeCAganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgYm9yZGVyLXRyYW5zcGFyZW50IGZsZXgtbm93cmFwXCI+XHJcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIlNlbGVjdHRhYnMoJ2NoZWNrbGlzdCcpXCIgW3JvdXRlckxpbmtdPVwiWycvbWFuYWdlL3RyYXgvYWN0aW9uY2VudGVyJ11cIiBbcXVlcnlQYXJhbXNdPVwieyB0eXBlOiAnY2hlY2tsaXN0JyB9XCI+XHJcbiAgICAgICAgICAgICAgICA8YSBbbmdDbGFzc109XCJyZWNlaXZlZERhdGEgPT09ICdjaGVja2xpc3QnPydidG4gYWN0aXZlYnRuJzonJ1wiIGNsYXNzPVwiZnctc2VtaWJvbGQgbmF2LWxpbmsgbWUtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIENoZWNrbGlzdFxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJTZWxlY3R0YWJzKCd0YXNrJylcIiBbcm91dGVyTGlua109XCJbJy9tYW5hZ2UvdHJheC9hY3Rpb25jZW50ZXInXVwiIFtxdWVyeVBhcmFtc109XCJ7IHR5cGU6ICd0YXNrJyB9XCI+XHJcbiAgICAgICAgICAgICAgICA8YSBbbmdDbGFzc109XCJyZWNlaXZlZERhdGEgPT09ICd0YXNrJyB8fCByZWNlaXZlZERhdGEgPT09ICdHcm91cCBEZXRhaWxzIFZhbHVlJz8gJ2J0biBhY3RpdmVidG4nOicnXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIG1lLTZcIj5UYXNrXHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC91bD5cclxuICAgICAgICA8IS0tIDxsaWItdmlldy1hY3Rpb24gW3JlY2VpdmVkRGF0YV09XCJyZWNlaXZlZERhdGFcIj48L2xpYi12aWV3LWFjdGlvbj4gLS0+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgPHRhYmxlICpuZ0lmPVwiIXRhc2tMb2FkaW5nICYmICF0YXNrTm9EYXRhXCIgY2xhc3M9XCJ0YWJsZSB0ZXh0LW5vd3JhcCBib3R0b20tYm9yZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnZGF0ZXRpbWUnKVwiPkRhdGUgJiBUaW1lPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2RhdGV0aW1lJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ2RhdGV0aW1lJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cInJlY2VpdmVkRGF0YSA9PT0gJ2NoZWNrbGlzdCdcIj5DaGVja2xpc3QgTmFtZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cInJlY2VpdmVkRGF0YSA9PT0gJ3Rhc2snXCI+VGFzayBOYW1lPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkFjdGlvbiBQZXJmb3JtZWQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+UGVyZm9ybWVkIGJ5PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPk5hbWU8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+QWN0aW9uczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBsb2cgb2YgYWN0aXZpdHlMb2dUYWJsZURhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWJsZS10aXRsZVwiIFtpbm5lckhUTUxdPVwiZm9ybWF0RGF0ZVRpbWUobG9nLl9zb3VyY2UuY3JlYXRlQXQpXCI+PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiEobG9nLl9zb3VyY2UudHlwZSA9PT0gJ3Rhc2snICYmIGxvZy5fc291cmNlLmZyb21DaGVja0xpc3ROYW1lKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFibGUtdGl0bGUgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBsb2cuX3NvdXJjZS5jaGVja0xpc3ROYW1lIHx8ICctLScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJsb2cuX3NvdXJjZS50eXBlID09PSAndGFzaycgJiYgbG9nLl9zb3VyY2UuZnJvbUNoZWNrTGlzdE5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhYmxlLXRpdGxlIG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbG9nLl9zb3VyY2UuY2hlY2tMaXN0TmFtZSB8fCAnLS0nIH19IDxicj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0yXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjY2NTQgNy41MDAxNkw3LjQ5ODcgMy4zMzM1TTcuNDk4NyAzLjMzMzVMMy4zMzIwMyA3LjUwMDE2TTcuNDk4NyAzLjMzMzVWMTMuMzMzNUM3LjQ5ODcgMTQuMjE3NiA3Ljg0OTg5IDE1LjA2NTQgOC40NzUwMSAxNS42OTA1QzkuMTAwMTMgMTYuMzE1NiA5Ljk0Nzk4IDE2LjY2NjggMTAuODMyIDE2LjY2NjhIMTYuNjY1NFwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjxzcGFuIGNsYXNzPVwibXgtMlwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjNcIiBoZWlnaHQ9XCIyM1wiIHZpZXdCb3g9XCIwIDAgMjMgMjNcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOC40MTQ0OCA0LjUyMzAzQzguNjk1MTggNC44MDM3MSA4LjY5NTE4IDUuMjU4OCA4LjQxNDQ4IDUuNTM5NDhMNS41Mzk0OCA4LjQxNDQ4QzUuMjU4OCA4LjY5NTE4IDQuODAzNzEgOC42OTUxOCA0LjUyMzAzIDguNDE0NDhMMy4wODU1MyA2Ljk3Njk4QzIuODA0ODIgNi42OTYzIDIuODA0ODIgNi4yNDEyMSAzLjA4NTUzIDUuOTYwNTNDMy4zNjYyMSA1LjY3OTgyIDMuODIxMyA1LjY3OTgyIDQuMTAxOTggNS45NjA1M0w1LjAzMTI1IDYuODg5NzhMNy4zOTgwMyA0LjUyMzAzQzcuNjc4NzEgNC4yNDIzMiA4LjEzMzggNC4yNDIzMiA4LjQxNDQ4IDQuNTIzMDNaXCIgZmlsbD1cIiM2NjcwODVcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjQxNDQ4IDExLjcxMDVDOC42OTUxOCAxMS45OTEyIDguNjk1MTggMTIuNDQ2MyA4LjQxNDQ4IDEyLjcyN0w1LjUzOTQ4IDE1LjYwMkM1LjI1ODggMTUuODgyNiA0LjgwMzcxIDE1Ljg4MjYgNC41MjMwMyAxNS42MDJMMy4wODU1MyAxNC4xNjQ1QzIuODA0ODIgMTMuODgzOCAyLjgwNDgyIDEzLjQyODcgMy4wODU1MyAxMy4xNDc5QzMuMzY2MjEgMTIuODY3MyAzLjgyMTMgMTIuODY3MyA0LjEwMTk4IDEzLjE0NzlMNS4wMzEyNSAxNC4wNzczTDcuMzk4MDMgMTEuNzEwNUM3LjY3ODcxIDExLjQyOTkgOC4xMzM4IDExLjQyOTkgOC40MTQ0OCAxMS43MTA1WlwiIGZpbGw9XCIjNjY3MDg1XCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuMDYyNSA2LjQ2ODc1QzEwLjA2MjUgNi4wNzE4IDEwLjM4NDQgNS43NSAxMC43ODEyIDUuNzVIMTUuMDkzOEMxNS40OTA2IDUuNzUgMTUuODEyNSA2LjA3MTggMTUuODEyNSA2LjQ2ODc1QzE1LjgxMjUgNi44NjU3IDE1LjQ5MDYgNy4xODc1IDE1LjA5MzggNy4xODc1SDEwLjc4MTJDMTAuMzg0NCA3LjE4NzUgMTAuMDYyNSA2Ljg2NTcgMTAuMDYyNSA2LjQ2ODc1WlwiIGZpbGw9XCIjNjY3MDg1XCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMy41OTM3NSAwQzEuNjA4OTggMCAwIDEuNjA4OTggMCAzLjU5Mzc1VjE2LjUzMTJDMCAxOC41MTYgMS42MDg5OCAyMC4xMjUgMy41OTM3NSAyMC4xMjVIOS40ODcwOEM5LjI1NDI5IDE5LjY2OTYgOS4wNjQzNiAxOS4xODg2IDguOTIyNjEgMTguNjg3NUgzLjU5Mzc1QzIuNDAyODggMTguNjg3NSAxLjQzNzUgMTcuNzIyMSAxLjQzNzUgMTYuNTMxMlYzLjU5Mzc1QzEuNDM3NSAyLjQwMjg4IDIuNDAyODggMS40Mzc1IDMuNTkzNzUgMS40Mzc1SDE2LjUzMTJDMTcuNzIyMSAxLjQzNzUgMTguNjg3NSAyLjQwMjg4IDE4LjY4NzUgMy41OTM3NVY4LjkyMjYxQzE5LjE4ODYgOS4wNjQzNiAxOS42Njk2IDkuMjU0MjkgMjAuMTI1IDkuNDg3MDhWMy41OTM3NUMyMC4xMjUgMS42MDg5OCAxOC41MTYgMCAxNi41MzEyIDBIMy41OTM3NVpcIiBmaWxsPVwiIzY2NzA4NVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2LjUzMTMgMjNDMjAuMTAzOSAyMyAyMyAyMC4xMDM5IDIzIDE2LjUzMTNDMjMgMTIuOTU4NiAyMC4xMDM5IDEwLjA2MjUgMTYuNTMxMyAxMC4wNjI1QzEyLjk1ODYgMTAuMDYyNSAxMC4wNjI1IDEyLjk1ODYgMTAuMDYyNSAxNi41MzEzQzEwLjA2MjUgMjAuMTAzOSAxMi45NTg2IDIzIDE2LjUzMTMgMjNaTTE2LjUzMTMgMTIuOTM3NUMxNi45MjgxIDEyLjkzNzUgMTcuMjUgMTMuMjU5NCAxNy4yNSAxMy42NTYzVjE1LjgxMjVIMTkuNDA2M0MxOS44MDMxIDE1LjgxMjUgMjAuMTI1IDE2LjEzNDQgMjAuMTI1IDE2LjUzMTNDMjAuMTI1IDE2LjkyODEgMTkuODAzMSAxNy4yNSAxOS40MDYzIDE3LjI1SDE3LjI1VjE5LjQwNjNDMTcuMjUgMTkuODAzMSAxNi45MjgxIDIwLjEyNSAxNi41MzEzIDIwLjEyNUMxNi4xMzQ0IDIwLjEyNSAxNS44MTI1IDE5LjgwMzEgMTUuODEyNSAxOS40MDYzVjE3LjI1SDEzLjY1NjNDMTMuMjU5NCAxNy4yNSAxMi45Mzc1IDE2LjkyODEgMTIuOTM3NSAxNi41MzEzQzEyLjkzNzUgMTYuMTM0NCAxMy4yNTk0IDE1LjgxMjUgMTMuNjU2MyAxNS44MTI1SDE1LjgxMjVWMTMuNjU2M0MxNS44MTI1IDEzLjI1OTQgMTYuMTM0NCAxMi45Mzc1IDE2LjUzMTMgMTIuOTM3NVpcIiBmaWxsPVwiIzY2NzA4NVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PHNwYW4gY2xhc3M9XCJ0YWJsZS10aXRsZVwiPiB7eyBsb2cuX3NvdXJjZS5mcm9tQ2hlY2tMaXN0TmFtZSB8fCAnLS0nIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWJsZS10aXRsZSBiYWRnZS1saWdodFwiIFtuZ0NsYXNzXT1cImdldEFjdGlvbkJhZGdlQ2xhc3MobG9nLl9zb3VyY2UuYWN0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRBY3Rpb25MYWJlbChsb2cuX3NvdXJjZS5hY3Rpb24pIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtdGl0bGUgZC1mbGV4XCI+PHNwYW4gY2xhc3M9XCJtZS0zXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTYuNjY1NCAxNy41VjE1LjgzMzNDMTYuNjY1NCAxNC45NDkzIDE2LjMxNDIgMTQuMTAxNCAxNS42ODkxIDEzLjQ3NjNDMTUuMDYzOSAxMi44NTEyIDE0LjIxNjEgMTIuNSAxMy4zMzIgMTIuNUg2LjY2NTM2QzUuNzgxMzEgMTIuNSA0LjkzMzQ2IDEyLjg1MTIgNC4zMDgzNCAxMy40NzYzQzMuNjgzMjIgMTQuMTAxNCAzLjMzMjAzIDE0Ljk0OTMgMy4zMzIwMyAxNS44MzMzVjE3LjVNMTMuMzMyIDUuODMzMzNDMTMuMzMyIDcuNjc0MjggMTEuODM5NiA5LjE2NjY3IDkuOTk4NyA5LjE2NjY3QzguMTU3NzUgOS4xNjY2NyA2LjY2NTM2IDcuNjc0MjggNi42NjUzNiA1LjgzMzMzQzYuNjY1MzYgMy45OTIzOCA4LjE1Nzc1IDIuNSA5Ljk5ODcgMi41QzExLjgzOTYgMi41IDEzLjMzMiAzLjk5MjM4IDEzLjMzMiA1LjgzMzMzWlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PHNwYW4+e3sgbG9nLl9zb3VyY2UuY3JlYXRlZEJ5RW1haWwgfX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtdGl0bGUgZC1mbGV4XCI+PHNwYW4gKm5nSWY9XCJsb2cuX3NvdXJjZT8uY292ZXJhZ2UgPT09ICdzdG9yZScgfHwgKCFsb2cuX3NvdXJjZT8uY292ZXJhZ2UgJiYgbG9nLl9zb3VyY2U/LnN0b3JlTmFtZSkgXCI+PHNwYW4gY2xhc3M9XCJtZS0zXCIgKm5nSWY9XCJsb2cuX3NvdXJjZT8uc3RvcmVOYW1lXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMi42Nzg5MyA1LjgwMzY2TDIuNjI1NjggNS44ODY4M0MyLjA2NzY0IDYuODczODggMi42NjM0NyA4LjEyMTMgMy43MzUwOCA4LjI2NDRDMy44MzIxNyA4LjI3NjI3IDMuOTIyNTEgOC4yODI1NSA0LjAxMDc4IDguMjgyNTVDNC41ODg5MyA4LjI4MjU1IDUuMTAwMSA4LjAzNDUzIDUuNDU2MzcgNy42NDc4TDYuMDA5NyA3LjA0NzE4TDYuNTYxMTYgNy42NDk1M0M2LjkxMzEgOC4wMzM5NSA3LjQyMzExIDguMjgyNTUgOC4wMDUxNyA4LjI4MjU1QzguNTg0NjEgOC4yODI1NSA5LjA5NzU1IDguMDMzNiA5LjQ0OTE3IDcuNjQ5NTNMMTAuMDAyNCA3LjA0NTI5TDEwLjU1NTUgNy42NDk1M0MxMC45MDcyIDguMDMzNiAxMS40MjAxIDguMjgyNTUgMTEuOTk5NiA4LjI4MjU1QzEyLjU3OSA4LjI4MjU1IDEzLjA5MTkgOC4wMzM2IDEzLjQ0MzYgNy42NDk1M0wxMy45OTY3IDcuMDQ1MjlMMTQuNTQ5OSA3LjY0OTUzQzE0LjkwMTYgOC4wMzM2IDE1LjQxNDUgOC4yODI1NSAxNS45OTM5IDguMjgyNTVDMTYuMDc5MyA4LjI4MjU1IDE2LjE3MjQgOC4yNzYyNSAxNi4yNjg4IDguMjY0NUMxNy4zNjM5IDguMTE1MTggMTcuOTYxOCA2LjgwMDkxIDE3LjMyMyA1LjgwNDE2QzE3LjMyMyA1LjgwNDEgMTcuMzIzIDUuODA0MDUgMTcuMzIyOSA1LjgwMzk5TDE1LjU2NDggMy4wNjI1OEwxNS41NjQ4IDMuMDYyNThMMTUuNTYzOCAzLjA2MTExQzE1LjU0ODYgMy4wMzcyOCAxNS41MTEyIDMuMDExNzIgMTUuNDY0IDMuMDExNzJINC41MzQ1OEM0LjQ4NzQ0IDMuMDExNzIgNC40NDk5NSAzLjAzNzI4IDQuNDM0NzQgMy4wNjExMUw0LjQzNDEzIDMuMDYyMDhMMi42Nzg5MyA1LjgwMzY2Wk0xNS42NTA0IDEwLjczNjlWMTMuODY4OVYxNC42MTg5SDE0LjkwMDRINS4wOTgyMUg0LjM0ODIxVjEzLjg2ODlWMTAuNzM3NEM0LjIzNzk4IDEwLjc0NTYgNC4xMjY0NiAxMC43NDk4IDQuMDEzODQgMTAuNzQ5OEMzLjk3MTU0IDEwLjc0OTggMy45Mjk1MiAxMC43NDkyIDMuODg3NzggMTAuNzQ4VjEzLjg2ODlWMTUuODAzNEMzLjg4Nzc4IDE2LjQ0NjggNC40MjE2OCAxNi45ODc5IDUuMDk4MjEgMTYuOTg3OUgxNC45MDA0QzE1LjU3NjkgMTYuOTg3OSAxNi4xMTA4IDE2LjQ0NjggMTYuMTEwOCAxNS44MDM0VjEzLjg2ODlWMTAuNzQ4MkMxNi4wNzEgMTAuNzQ5MyAxNi4wMzEgMTAuNzQ5OCAxNS45OTA5IDEwLjc0OThDMTUuODc2NSAxMC43NDk4IDE1Ljc2MjkgMTAuNzQ1NSAxNS42NTA0IDEwLjczNjlaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjxzcGFuPnt7IGxvZy5fc291cmNlLnN0b3JlTmFtZSB8fCAnLScgfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZy5fc291cmNlPy5jb3ZlcmFnZSA9PT0gJ3VzZXInIHx8ICghbG9nLl9zb3VyY2U/LmNvdmVyYWdlICYmIGxvZy5fc291cmNlPy51c2VyRW1haWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTNcIiAqbmdJZj1cImxvZy5fc291cmNlPy51c2VyRW1haWxcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48c3Bhbj57eyBsb2cuX3NvdXJjZT8udXNlckVtYWlsIHx8ICctJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gXCJbJ3VwZGF0ZWQnLCAnZWRpdGVkJywgJ2RyYWZ0J10uaW5jbHVkZXMobG9nLl9zb3VyY2UuYWN0aW9uKVwiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICAqbmdJZj1cIlsndXBkYXRlZCcsICdlZGl0ZWQnXS5pbmNsdWRlcyhsb2cuX3NvdXJjZS5hY3Rpb24pIHx8IChsb2cuX3NvdXJjZS5hY3Rpb24gPT09ICdkcmFmdCcgJiYgbG9nLl9zb3VyY2UubG9nRGV0YWlscyAmJiAhaXNMb2dEZXRhaWxzRW1wdHkobG9nLl9zb3VyY2UubG9nRGV0YWlscykpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidmlld0FjdGlvbihsb2cuX3NvdXJjZSlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtcHJpbWFyeSBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dT5WaWV3PC91PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZy5fc291cmNlLmFjdGlvbiA9PT0gJ3N1Ym1pdCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVRvR2FsbGVyeShsb2cuX3NvdXJjZSlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtcHJpbWFyeSBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dT5WaWV3PC91PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tICpuZ0lmPVwiIVsndXBkYXRlZCcsICdlZGl0ZWQnLCAnc3VibWl0JywgJ2RyYWZ0J10uaW5jbHVkZXMobG9nLl9zb3VyY2UuYWN0aW9uKVwiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIVsndXBkYXRlZCcsICdlZGl0ZWQnLCAnc3VibWl0J10uaW5jbHVkZXMobG9nLl9zb3VyY2UuYWN0aW9uKSAmJiAhKGxvZy5fc291cmNlLmFjdGlvbiA9PT0gJ2RyYWZ0JyAmJiBsb2cuX3NvdXJjZS5sb2dEZXRhaWxzICYmICFpc0xvZ0RldGFpbHNFbXB0eShsb2cuX3NvdXJjZS5sb2dEZXRhaWxzKSlcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhc2tMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFza05vRGF0YSAmJiAhdGFza0xvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG15LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGFtYWludGV4dCBtdC0zXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YXN1YnRleHRcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIEFjdGl2aXR5IExvZzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiF0YXNrTG9hZGluZyAmJiAhdGFza05vRGF0YVwiPlxyXG4gICAgICAgICAgICA8bGliLXBhZ2luYXRpb24gY2xhc3M9XCJ0ZXh0LXN0YXJ0XCIgW2l0ZW1zUGVyUGFnZV09XCJpdGVtc1BlclBhZ2VcIiBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2VcIlxyXG4gICAgICAgICAgICAgICAgW3RvdGFsSXRlbXNdPVwidG90YWxJdGVtc1wiIFtwYWdpbmF0aW9uU2l6ZXNdPVwicGFnaW5hdGlvblNpemVzXCIgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcclxuICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj48L2xpYi1wYWdpbmF0aW9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG48L2Rpdj4iXX0=