tango-app-ui-analyse-traffic 3.8.0-alpha.30 → 3.8.0-alpha.31

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.
@@ -278,7 +278,7 @@ export class ImgRvpsComponent {
278
278
  "non-tagging": 0,
279
279
  duplicate: 0,
280
280
  employee: 0,
281
- "house-keeping": 0,
281
+ "houseKeeping": 0,
282
282
  junk: 0,
283
283
  };
284
284
  let totalCount = 0;
@@ -287,15 +287,18 @@ export class ImgRvpsComponent {
287
287
  item.data?.forEach((image) => {
288
288
  this.overallArrayData.push(image);
289
289
  totalCount++;
290
- const type = image.revopsType?.trim().toLowerCase() || "unknown";
290
+ // const type =
291
+ // image.revopsType?.trim().toLowerCase() || "unknown";
292
+ const type = image.revopsType?.trim() || "unknown";
293
+ console.log('image revopsType ::', type);
291
294
  if (type === "non-tagging") {
292
295
  revopsTypeCount["non-tagging"]++;
293
296
  }
294
297
  else if (type === "employee") {
295
298
  revopsTypeCount["employee"]++;
296
299
  }
297
- else if (type === "house-keeping") {
298
- revopsTypeCount["house-keeping"]++;
300
+ else if (type === "houseKeeping") {
301
+ revopsTypeCount["houseKeeping"]++;
299
302
  }
300
303
  else if (type === "junk") {
301
304
  revopsTypeCount["junk"]++;
@@ -312,9 +315,10 @@ export class ImgRvpsComponent {
312
315
  nonTags: revopsTypeCount["non-tagging"],
313
316
  duplicate: revopsTypeCount["duplicate"],
314
317
  employee: revopsTypeCount["employee"],
315
- housekeeping: revopsTypeCount["house-keeping"],
318
+ houseKeeping: revopsTypeCount["houseKeeping"],
316
319
  junk: revopsTypeCount["junk"]
317
320
  };
321
+ console.log('revops countData ::', this.countData);
318
322
  // Apply type filter after loading timeRange data
319
323
  this.applyFilters();
320
324
  this.cd.detectChanges();
@@ -479,13 +483,13 @@ export class ImgRvpsComponent {
479
483
  if (!isDuplicateMode) {
480
484
  if (obj?.revopsType === "duplicate" ||
481
485
  obj?.revopsType === "employee" ||
482
- obj?.revopsType === "house-keeping" || obj?.revopsType === "junk") {
486
+ obj?.revopsType === "houseKeeping" || obj?.revopsType === "junk") {
483
487
  if (obj?.revopsType === "duplicate" &&
484
488
  obj?.duplicateImagePath?.length > 0) {
485
489
  this.editBtnShow = true;
486
490
  }
487
491
  else if (obj?.revopsType === "employee" ||
488
- obj?.revopsType === "house-keeping" || obj?.revopsType === "junk") {
492
+ obj?.revopsType === "houseKeeping" || obj?.revopsType === "junk") {
489
493
  this.editBtnShow = true;
490
494
  }
491
495
  else {
@@ -533,13 +537,13 @@ export class ImgRvpsComponent {
533
537
  // ✅ Handle edit button / radio logic
534
538
  if (obj?.revopsType === "duplicate" ||
535
539
  obj?.revopsType === "employee" ||
536
- obj?.revopsType === "house-keeping" || obj?.revopsType === "junk") {
540
+ obj?.revopsType === "houseKeeping" || obj?.revopsType === "junk") {
537
541
  if (obj?.revopsType === "duplicate" &&
538
542
  obj?.duplicateImagePath?.length > 0) {
539
543
  this.editBtnShow = true;
540
544
  }
541
545
  else if (obj?.revopsType === "employee" ||
542
- obj?.revopsType === "house-keeping" || obj?.revopsType === "junk") {
546
+ obj?.revopsType === "houseKeeping" || obj?.revopsType === "junk") {
543
547
  this.editBtnShow = true;
544
548
  }
545
549
  else {
@@ -642,7 +646,7 @@ export class ImgRvpsComponent {
642
646
  this.imagesArrayData = [...this.currentTimeRangeData];
643
647
  }
644
648
  else {
645
- // For tagged types like 'duplicate', 'employee', 'housekeeping'
649
+ // For tagged types like 'duplicate', 'employee', 'houseKeeping'
646
650
  this.imagesArrayData = this.overallArrayData.filter((item) => item.revopsType?.toLowerCase() === selectedType);
647
651
  }
648
652
  // else {
@@ -882,6 +886,7 @@ export class ImgRvpsComponent {
882
886
  }
883
887
  },
884
888
  error: (err) => {
889
+ console.error("submitValue error:", err);
885
890
  const msg = err.error?.error || err.error || err?.message || "Unknown error";
886
891
  this.toast.getErrorToast(msg);
887
892
  },
@@ -890,7 +895,7 @@ export class ImgRvpsComponent {
890
895
  noDataMessages = {
891
896
  duplicate: "No duplicates found",
892
897
  employee: "No employee/staff found",
893
- "house-keeping": "No house keeping found",
898
+ houseKeeping: "No house keeping found",
894
899
  "non-tagging": "No non-tagging found",
895
900
  junk: "No junk found"
896
901
  };
@@ -961,7 +966,7 @@ export class ImgRvpsComponent {
961
966
  payload.employeeCount++;
962
967
  }
963
968
  // HOUSEKEEPING
964
- else if (type === "house-keeping" && isChecked) {
969
+ else if (type === "houseKeeping" && isChecked) {
965
970
  payload.houseKeeping.push({
966
971
  tempId: item.templd,
967
972
  filePath: item.filePath,
@@ -1113,9 +1118,9 @@ export class ImgRvpsComponent {
1113
1118
  if (!this.countData || !this.folderDate) {
1114
1119
  return false;
1115
1120
  }
1116
- const { duplicate, housekeeping, employee, junk } = this.countData;
1121
+ const { duplicate, houseKeeping, employee, junk } = this.countData;
1117
1122
  // Check count condition
1118
- const hasCount = duplicate > 0 || housekeeping > 0 || employee > 0 || junk > 0;
1123
+ const hasCount = duplicate > 0 || houseKeeping > 0 || employee > 0 || junk > 0;
1119
1124
  // Convert folderDate to Date
1120
1125
  const folder = new Date(this.folderDate);
1121
1126
  const today = new Date();
@@ -1342,11 +1347,11 @@ export class ImgRvpsComponent {
1342
1347
  return normalizedDate ? this.cardDataMap[normalizedDate] : null;
1343
1348
  }
1344
1349
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImgRvpsComponent, deps: [{ token: i1.TrafficService }, { token: i2.GlobalStateService }, { token: i0.ChangeDetectorRef }, { token: i3.NgbModal }, { token: i4.ToastService }, { token: i5.TrafficRvpsService }], target: i0.ɵɵFactoryTarget.Component });
1345
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ImgRvpsComponent, selector: "lib-img-rvps", viewQueries: [{ propertyName: "zoomPopup", first: true, predicate: ["zoomPopup"], descendants: true }, { propertyName: "raisedPopup", first: true, predicate: ["raisedPopup"], descendants: true }, { propertyName: "resetRequestPopup", first: true, predicate: ["resetRequestPopup"], descendants: true }, { propertyName: "imagePopup", first: true, predicate: ["imagePopup"], descendants: true }], ngImport: i0, template: "<div class=\"card mt-3\">\n <div class=\"card-header mt-3 px-0 border-bottom-0\">\n <div class=\"custom-accordion\">\n <div class=\"custom-accordion-item\">\n <!-- for new navigation changes -->\n <!-- old view while folder view -->\n <button *ngIf=\"folderView\" class=\"mainheading pb-0 custom-accordion-header\" (click)=\"toggleAccordion()\">\n <div class=\"header-row\">\n <span class=\"img-direc\" style=\"padding-left: 40px;\">Image Directory</span>\n\n <span class=\"divider\"></span>\n <span class=\"accordion-arrow\">\n <!-- Down arrow for collapsed state, up arrow for expanded state -->\n <svg *ngIf=\"!isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 1L5 5L9 1\" stroke=\"#071437\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <svg *ngIf=\"isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 5L5 1L9 5\" stroke=\"#1b84ff\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </button>\n <!-- new view while not in folder view view -->\n <div *ngIf=\"!folderView\" class=\"header-row\">\n <div class=\"header-left-section\">\n <span *ngIf=\"backnav && !imageFlow\" class=\"cursor-pointer\" (click)=\"backToFootfall()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_2585_7036)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_2585_7036\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </span>\n <!-- back from image flow -->\n <span *ngIf=\"imageFlow\" class=\"cursor-pointer\" (click)=\"backToFootfall1()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_2585_7036)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_2585_7036\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </span>\n <span class=\"img-direc\">Image Directory | {{folderDate | date:'dd MMM, yyyy'}}</span>\n </div>\n <div class=\"header-right-section\">\n <span class=\"divider\"></span>\n <button *ngIf=\"!folderView\" class=\"accordion-toggle-btn\" (click)=\"toggleAccordion()\">\n <span class=\"accordion-arrow\">\n <!-- Down arrow for collapsed state, up arrow for expanded state -->\n <svg *ngIf=\"!isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 1L5 5L9 1\" stroke=\"#071437\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <svg *ngIf=\"isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 5L5 1L9 5\" stroke=\"#1b84ff\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <section *ngIf=\"isAccordionExpanded\">\n\n <div *ngIf=\"folderView\" class=\"card-body px-0\">\n <div class=\"date-list-container\">\n <div class=\"date-list-scroll\">\n <div class=\"date-card\" *ngFor=\"let obj of dateArray; let i = index\"\n [ngClass]=\"{'date-card-active': i === selectIndex}\" (click)=\"getimages(i, obj)\">\n <div class=\"date-card-header\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\" class=\"calendar-icon\">\n <path\n d=\"M12.6667 2.66667H12V2C12 1.63181 11.7015 1.33333 11.3333 1.33333C10.9651 1.33333 10.6667 1.63181 10.6667 2V2.66667H5.33333V2C5.33333 1.63181 5.03486 1.33333 4.66667 1.33333C4.29848 1.33333 4 1.63181 4 2V2.66667H3.33333C2.59695 2.66667 2 3.26362 2 4V13.3333C2 14.0697 2.59695 14.6667 3.33333 14.6667H12.6667C13.403 14.6667 14 14.0697 14 13.3333V4C14 3.26362 13.403 2.66667 12.6667 2.66667ZM12.6667 13.3333H3.33333V6H12.6667V13.3333Z\"\n fill=\"#667085\" />\n </svg>\n <span class=\"date-text\">{{obj | date:'dd MMM'}}</span>\n <span *ngIf=\"cardDataMap[obj]?.ticketStatusLower as status\" class=\"badge ms-2\" [ngClass]=\"{\n 'badge-light-success': status === 'closed',\n 'badge-light-warning': status === 'raised',\n 'badge-light-default': status !== 'closed' && status !== 'raised'\n }\">\n {{ status === 'closed' ? 'Ticket closed' : (status === 'raised' ? 'Ticket raised' :\n (cardDataMap[obj]?.ticketStatus || '')) }}\n </span>\n </div>\n <div class=\"footfall-count\">{{ cardDataMap[obj]?.footfallCount || 0 }}</div>\n <div class=\"footfall-label\">Total footfall</div>\n </div>\n </div>\n </div>\n </div>\n\n\n\n <div *ngIf=\"!folderView\" class=\"card-body\">\n <section *ngIf=\"!imageFlow\">\n <div class=\"row\">\n <!-- Ticket Block Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'block'\" class=\"col-12 mb-3\">\n <div class=\"ticket-block-alert\">\n <div class=\"ticket-block-alert-content\">\n <div class=\"ticket-block-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"12\" fill=\"#F04438\" />\n <path d=\"M12 8V13\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n </div>\n <div class=\"ticket-block-alert-text\">\n <div class=\"ticket-block-alert-title\">\n You cannot raise ticket for next {{ getSelectedDateCardData()?.noOfBlockedDays\n || '0' }} days\n </div>\n <div class=\"ticket-block-alert-description\">\n It looks like you have achieved 95% accuracy for the three tickets raised this\n month. This limits you from raising more tickets to avoid redundancy.\n </div>\n <div class=\"ticket-block-alert-action\">\n If you still want to raise tickets, <span class=\"ticket-block-alert-link\"\n (click)=\"requestReset()\">send request</span> to reset.\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Ticket Request Success Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'request'\" class=\"col-12 mb-3\">\n <div class=\"ticket-request-alert\">\n <div class=\"ticket-request-alert-content\">\n <div class=\"ticket-request-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 21L23 12L2 3V10L17 12L2 14V21Z\" fill=\"#10B981\" />\n </svg>\n </div>\n <div class=\"ticket-request-alert-text\">\n <div class=\"ticket-request-alert-title\">\n Reset Request Sent\n </div>\n <div class=\"ticket-request-alert-description\">\n Your request to enable ticket raising has been submitted. You'll be notified\n once it's approved. Please ensure future ticket accuracy remains within the 95%\n threshold.\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- footfall trends feature -->\n <ng-container *ngTemplateOutlet=\"footfallTrendsTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"ticketStatusTemplate\"></ng-container>\n <span class=\"divider\"></span>\n <!-- footfall trends feature end -->\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\n <!-- <span *ngIf=\"backnav\" class=\"cursor-pointer\" (click)=\"backToFootfall()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_2585_7036)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_2585_7036\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </span> -->\n <!-- <span class=\"img-direc ms-2 mt-1\">{{folderDate | date:'dd MMM, yyyy'}}\n <span class=\"badge badge-light-warning mx-2\"\n *ngIf=\"!getTicketStatuses().includes('closed') && getTicketStatuses().includes('open')\">\n Ticket Raised\n </span>\n <span class=\"badge badge-light-success mx-2\"\n *ngIf=\"getTicketStatuses().includes('closed')\">Ticket Closed</span>\n\n </span> -->\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"ms-auto text-end\">\n <button [disabled]=\"!canEnableButton()\" class=\"btn btn-primary\" type=\"button\"\n (click)=\"Raised()\">\n Raise ticket\n </button>\n </div>\n </div>\n <div *ngIf=\"!folderView\" class=\"d-flex flex-wrap align-items-center justify-content-between w-100 my-2 gap-3\">\n <div class=\"nav-group bg-white border-1 btn-group w-auto\">\n <ng-container *ngIf=\"!(countData?.length > 0)\">\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('footfall')\">\n Total Footfall\n <span\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.footfallCount || 0 }}\n </span>\n </button>\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('non-tagging')\">\n Non-tags\n <span\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.nonTags || 0 }}\n </span>\n </button>\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('duplicate')\">\n Duplicated\n <span\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.duplicate || 0 }}\n </span>\n </button>\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'employee' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('employee')\">\n Employee/Staff\n <span\n [ngClass]=\"type === 'employee' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.employee || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\" [ngClass]=\"type === 'junk' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('junk')\">\n Junk\n <span\n [ngClass]=\"type === 'junk' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.junk || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'house-keeping' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('house-keeping')\">\n House Keeping\n <span\n [ngClass]=\"type === 'house-keeping' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.housekeeping || 0 }}\n </span>\n </button>\n \n \n </ng-container>\n \n </div>\n \n <div class=\"btn-group view-toggle ms-auto\" role=\"group\" aria-label=\"Toggle view\">\n <button type=\"button\" class=\"btn btn-outline px-3 py-2\" [ngClass]=\"{'active': viewMode === 'grid'}\"\n (click)=\"setViewMode('grid')\" aria-label=\"Grid view\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"3\" y=\"3\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"11\" y=\"3\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"3\" y=\"11\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"11\" y=\"11\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n </svg>\n </button>\n <button type=\"button\" class=\"btn btn-outline px-3 py-2\" [ngClass]=\"{'active': viewMode === 'list'}\"\n (click)=\"setViewMode('list')\" aria-label=\"List view\">\n <svg width=\"20\" height=\"18\" viewBox=\"0 0 20 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"2\" y=\"3\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'list' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"8\" y=\"4.5\" width=\"10\" height=\"1.5\" rx=\"0.75\" fill=\"#475467\"></rect>\n <rect x=\"8\" y=\"12.5\" width=\"10\" height=\"1.5\" rx=\"0.75\" fill=\"#475467\"></rect>\n <rect x=\"2\" y=\"11\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'list' ? '#EAF8FF' : 'none'\"></rect>\n </svg>\n </button>\n </div>\n </div>\n <ng-container *ngIf=\"!imageFlow\">\n <div *ngIf=\"type === 'footfall' && viewMode === 'grid'\" class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\n <div class=\"col text-nowrap\" *ngFor=\"let obj of objectsArray\">\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\n <li class=\"nav-item cursor-pointer\">\n <a (click)=\"selectedTimes(obj.timeRange)\"\n [ngClass]=\"selectedTime === obj?.timeRange ? 'active' : ''\"\n class=\"nav-link cursor-pointer no-border mx-3 mb-2\">\n {{obj?.timeRange}}<span class=\"mx-2\"\n [ngClass]=\"selectedTime === obj?.timeRange ? 'badge-num-primary' :'badge-num-muted'\">\n {{ obj?.count ? obj?.count : 0 }}\n </span>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </ng-container>\n\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n </div>\n <div *ngIf=\"noData\" class=\"row\">\n\n <div class=\"col-lg-12 mb-3\">\n\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column \" style=\"margin: 64px;border-radius: 8px;\nbackground: var(--Gray-50, #F9FAFB);\">\n <svg width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\" />\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\"\n stroke-width=\"13.3333\" />\n <path\n d=\"M35.332 51.9999H33.6654C32.7813 51.9999 31.9335 51.6487 31.3083 51.0236C30.6832 50.3985 30.332 49.5506 30.332 48.6666V33.6666C30.332 32.7825 30.6832 31.9347 31.3083 31.3096C31.9335 30.6844 32.7813 30.3333 33.6654 30.3333H48.6654C49.5494 30.3333 50.3973 30.6844 51.0224 31.3096C51.6475 31.9347 51.9987 32.7825 51.9987 33.6666V35.3333M45.332 41.9999H60.332C62.173 41.9999 63.6654 43.4923 63.6654 45.3333V60.3333C63.6654 62.1742 62.173 63.6666 60.332 63.6666H45.332C43.4911 63.6666 41.9987 62.1742 41.9987 60.3333V45.3333C41.9987 43.4923 43.4911 41.9999 45.332 41.9999Z\"\n stroke=\"#00A3FF\" stroke-width=\"4\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <div class=\"nodata-title my-3\">\n {{ noDataMessages[type?.toLowerCase()] || 'No data found' }}\n </div>\n\n </div>\n </div>\n\n </div>\n\n\n <!-- Split-screen layout (only shown after clicking an image) -->\n <div class=\"split-screen-container\" *ngIf=\"splitScreenEnabled && !noData && !loading\">\n <!-- Left Panel: Thumbnail List + Related Images -->\n <div class=\"left-panel\">\n <!-- Main Images List (hidden when duplicate is selected) -->\n <ng-container *ngIf=\"selectedRadioType !== 'duplicate'\">\n <div class=\"thumbnail-list-section\" *ngFor=\"let group of listViewGroups\">\n <div class=\"time-range-header\">\n <span class=\"time-range-title\">{{ group?.timeRange }}</span>\n <span class=\"time-range-count\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_2149_23440)\">\n <path\n d=\"M2 9.00077H4.75V9.62577C4.75 9.99045 4.60513 10.3402 4.34727 10.598C4.08941 10.8559 3.73967 11.0008 3.375 11.0008C3.01033 11.0008 2.66059 10.8559 2.40273 10.598C2.14487 10.3402 2 9.99045 2 9.62577V9.00077ZM4 3.06077C5 3.06077 5.5 4.50077 5.5 5.50077C5.5 6.00077 5.25 6.50077 5 7.25077L4.75 8.00077H2C2 7.50077 1.75 6.75077 1.75 5.50077C1.75 4.25077 2.749 3.06077 4 3.06077ZM10.027 7.04977L9.9185 7.66527C9.85117 8.02058 9.64656 8.33507 9.34901 8.5406C9.05146 8.74613 8.68492 8.82616 8.32878 8.76337C7.97263 8.70057 7.65557 8.49999 7.44626 8.20509C7.23695 7.91018 7.15225 7.54469 7.2105 7.18777L7.3185 6.57277L10.027 7.04977ZM9.089 0.853272C10.321 1.07027 11.098 2.41577 10.881 3.64677C10.664 4.87777 10.2875 5.57277 10.201 6.06527L7.4925 5.58777L7.3765 4.80577C7.2605 4.02377 7.1015 3.48777 7.188 2.99577C7.3615 2.01077 8.104 0.679772 9.089 0.853272Z\"\n fill=\"#00A3FF\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2149_23440\">\n <rect width=\"12\" height=\"12\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>{{ group?.data?.length || 0 }}\n </span>\n </div>\n <div class=\"thumbnail-grid\">\n <div class=\"thumbnail-item\" *ngFor=\"let obj of group?.data\"\n [ngClass]=\"{'selected': selectImageArray?.templd === obj?.templd}\"\n (click)=\"selectImageForSplitView(obj)\">\n <img class=\"thumbnail-image\" [src]=\"imageUrl + obj?.filePath\"\n (error)=\"obj.filePath = null\" alt=\"\" *ngIf=\"obj?.filePath\" />\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\"\n style=\"height: 120px; padding: 20px;\">\n <span style=\"color: #667085; font-size: 11px;\">No preview</span>\n </div>\n <div class=\"thumbnail-info\">\n <div class=\"tango-id\">Tango ID: {{ obj?.templd }}</div>\n <div class=\"entry-time\">Entry Time: {{ obj?.entryTme || obj?.entryTime}}</div>\n <!-- left panel image logo -->\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- left panel Images Section (ONLY shown when duplicate is selected) -->\n <div class=\"thumbnail-list-section\"\n *ngIf=\"selectedRadioType === 'duplicate' && remainingImagesGroups && remainingImagesGroups.length > 0\">\n <div class=\"thumbnail-list-section\" *ngFor=\"let group of remainingImagesGroups\">\n <div class=\"time-range-header\" style=\"margin-top: 16px;\">\n <span class=\"time-range-title\">{{ group?.timeRange }}</span>\n <span class=\"time-range-count\"><svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_2149_23440)\">\n <path\n d=\"M2 9.00077H4.75V9.62577C4.75 9.99045 4.60513 10.3402 4.34727 10.598C4.08941 10.8559 3.73967 11.0008 3.375 11.0008C3.01033 11.0008 2.66059 10.8559 2.40273 10.598C2.14487 10.3402 2 9.99045 2 9.62577V9.00077ZM4 3.06077C5 3.06077 5.5 4.50077 5.5 5.50077C5.5 6.00077 5.25 6.50077 5 7.25077L4.75 8.00077H2C2 7.50077 1.75 6.75077 1.75 5.50077C1.75 4.25077 2.749 3.06077 4 3.06077ZM10.027 7.04977L9.9185 7.66527C9.85117 8.02058 9.64656 8.33507 9.34901 8.5406C9.05146 8.74613 8.68492 8.82616 8.32878 8.76337C7.97263 8.70057 7.65557 8.49999 7.44626 8.20509C7.23695 7.91018 7.15225 7.54469 7.2105 7.18777L7.3185 6.57277L10.027 7.04977ZM9.089 0.853272C10.321 1.07027 11.098 2.41577 10.881 3.64677C10.664 4.87777 10.2875 5.57277 10.201 6.06527L7.4925 5.58777L7.3765 4.80577C7.2605 4.02377 7.1015 3.48777 7.188 2.99577C7.3615 2.01077 8.104 0.679772 9.089 0.853272Z\"\n fill=\"#00A3FF\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2149_23440\">\n <rect width=\"12\" height=\"12\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>{{ group?.data?.length || 0 }}</span>\n </div>\n <div class=\"thumbnail-grid\">\n <div class=\"thumbnail-item\" *ngFor=\"let obj of group?.data\" [ngClass]=\"{'selected': obj.selected}\">\n <div class=\"position-relative\">\n <input *ngIf=\"!revopsTypeValue && selectedRadioType === 'duplicate'\" type=\"checkbox\"\n [checked]=\"obj.selected\" class=\"position-absolute absolute form-check-input cursor-pointer\"\n style=\"top: 5px; right: 5px; z-index: 2;\" (change)=\"onImageCheckboxChange($event, obj, 'duplicate')\"\n (click)=\"$event.stopPropagation()\" [disabled]=\"obj.duplicateImagePath?.length > 0\" />\n <img class=\"thumbnail-image cursor-pointer\" [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\"\n alt=\"\" *ngIf=\"obj?.filePath\" (click)=\"handleImageClick($event, obj)\" />\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview cursor-pointer\" style=\"height: 120px; padding: 20px;\"\n (click)=\"handleImageClick($event, obj)\">\n <span style=\"color: #667085; font-size: 11px;\">No preview</span>\n </div>\n <div class=\"thumbnail-info\">\n <div class=\"tango-id\">Tango ID: {{ obj?.templd || obj?.tempId }}\n </div>\n <div class=\"entry-time\">Entry Time: {{ obj?.entryTme ||\n obj?.entryTime }}</div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Right Panel: Selected Image Details -->\n <div class=\"right-panel\" *ngIf=\"selectImageArray\">\n <ng-container\n *ngTemplateOutlet=\"imageDetailView; context: { $implicit: selectImageArray }\"></ng-container>\n </div>\n <div class=\"right-panel\" *ngIf=\"!selectImageArray\"\n style=\"display: flex; align-items: center; justify-content: center; color: var(--Gray-500, #667085);\">\n <div style=\"text-align: center;\">\n <p style=\"font-size: 16px; font-weight: 500;\">Select an image to view details</p>\n </div>\n </div>\n </div>\n\n <!-- Image Detail View Template for Split-Screen Right Panel -->\n <ng-template #imageDetailView let-obj>\n <div class=\"border-gray p-3 mb-3\">\n <div class=\"position-relative\">\n <img class=\"img-src1\" [src]=\"imageUrl + obj?.filePath\" alt=\"\" *ngIf=\"obj?.filePath\" />\n <!-- Zoom Icon -->\n <div class=\"zoom-icon-button\" (click)=\"openImageZoomModal(imageUrl, obj)\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M18.3333 18.3333L15 15M16.6667 9.16667C16.6667 13.3067 13.3067 16.6667 9.16667 16.6667C5.02667 16.6667 1.66667 13.3067 1.66667 9.16667C1.66667 5.02667 5.02667 1.66667 9.16667 1.66667C13.3067 1.66667 16.6667 5.02667 16.6667 9.16667Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M9.16667 6.66667V11.6667M6.66667 9.16667H11.6667\" stroke=\"#475467\" stroke-width=\"2\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </div>\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\" style=\"height: 375px;\">\n <span class=\"mb-5\">\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Group\">\n <path id=\"Vector\" d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path id=\"Vector_2\"\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n </svg>\n </span>\n <span class=\"header mb-5 text-center\">Preview not available</span>\n <span class=\"description mb-5 text-center\">The selected camera is not available at\n the moment.</span>\n </div>\n </div>\n <div class=\"row px-2 mb-2 mt-3\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd}}\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\">\n <svg style=\"width: 20px; height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\"\n height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\">\n <svg style=\"width: 20px; height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\"\n height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme || obj?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\" viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n <div class=\"border-gray p-3\">\n <div class=\"row mb-3\">\n <div class=\"col-md-6 title-type\">Select non-shopper type</div>\n <!-- <div class=\"col-md-6 text-end\" \n *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\"> -->\n <div class=\"col-md-6 text-end\">\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"mb-3 text-end d-inline-flex align-items-center gap-2\">\n <!-- Clear Tag Button (visible when Edit button OR Save/Cancel buttons are visible) -->\n <button *ngIf=\"!revopsTypeValue || (revopsTypeValue && editBtnShow)\"\n [disabled]=\"(selectedRadioType === undefined || selectedRadioType === '') || (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\"\n class=\"btn btn-clear-tag d-inline-flex align-items-center justify-content-center\" type=\"button\"\n (click)=\"clearValue()\">\n <svg width=\"49\" height=\"49\" viewBox=\"0 0 49 49\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_516_96841)\">\n <rect x=\"2.16797\" y=\"1.08447\" width=\"44.0342\" height=\"44.0284\" rx=\"8.67445\"\n fill=\"#FEF3F2\" />\n <rect x=\"2.71012\" y=\"1.62663\" width=\"42.9499\" height=\"42.9441\" rx=\"8.13229\"\n stroke=\"#FEF3F2\" stroke-width=\"1.08431\" />\n <path\n d=\"M33.4893 21.3613L33.4912 21.3643C34.0533 21.9297 34.369 22.6949 34.3691 23.4922C34.3691 24.2895 34.0533 25.0546 33.4912 25.6201L26.7256 32.3857C26.4454 32.6661 26.1122 32.8882 25.7461 33.04C25.3798 33.1919 24.9873 33.2705 24.5908 33.2705C24.1942 33.2705 23.801 33.1919 23.4346 33.04C23.0686 32.8883 22.7361 32.6659 22.4561 32.3857L20.7676 30.6992L22.3682 29.0986L24.0557 30.7842L24.0566 30.7852C24.1267 30.8553 24.2102 30.9112 24.3018 30.9492C24.3933 30.9872 24.4917 31.0068 24.5908 31.0068C24.6899 31.0068 24.7883 30.9872 24.8799 30.9492C24.9713 30.9113 25.0541 30.8552 25.124 30.7852H25.125L31.8877 24.0215C32.0267 23.8804 32.1055 23.6903 32.1055 23.4922C32.1054 23.2941 32.0267 23.1039 31.8877 22.9629L30.1963 21.2715L31.7979 19.6699L33.4893 21.3613ZM24.6982 12.9336C24.9571 12.9594 25.2011 13.0733 25.3867 13.2588L30.1973 18.0693L28.5957 19.6709L24.1162 15.1914H16.2852V23.0225L20.7666 27.499L19.166 29.0996L14.3535 24.293C14.1411 24.0807 14.0215 23.7925 14.0215 23.4922V14.0596C14.0217 13.4346 14.5283 12.9277 15.1533 12.9277H24.5859L24.6982 12.9336ZM19.8789 17.6436C20.5038 17.6436 21.0103 18.1506 21.0107 18.7754C21.0107 19.4005 20.504 19.9082 19.8789 19.9082H19.8691C19.2442 19.908 18.7373 19.4004 18.7373 18.7754C18.7378 18.1508 19.2445 17.6438 19.8691 17.6436H19.8789Z\"\n fill=\"#B42318\" />\n <path d=\"M33.1699 14.0845L15.1699 32.0845\" stroke=\"#B42318\" stroke-width=\"2\"\n stroke-linecap=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_516_96841\" x=\"-0.000643253\" y=\"0.000166655\" width=\"48.3724\"\n height=\"48.3655\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1.08431\" />\n <feGaussianBlur stdDeviation=\"1.08431\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_516_96841\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_516_96841\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </button>\n <!-- Cancel and Save Buttons (when !revopsTypeValue) -->\n <div *ngIf=\"!revopsTypeValue\">\n <button class=\"btn btn-outline me-2\" (click)=\"cancel()\">Cancel</button>\n <button class=\"btn btn-primary\" id=\"alert-toast\" (click)=\"save(selectedType)\"\n [disabled]=\"(selectedRadioType === undefined || selectedRadioType === '') || (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\">Save</button>\n </div>\n <!-- Edit Button (when revopsTypeValue && editBtnShow) -->\n <div *ngIf=\"revopsTypeValue && editBtnShow\">\n <button class=\"btn btn-outline me-2\" (click)=\"editValue()\">\n <span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\n viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M14.6554 1.71047C14.8927 1.47315 15.1745 1.2849 15.4845 1.15646C15.7946 1.02802 16.1269 0.961914 16.4626 0.961914C16.7982 0.961914 17.1305 1.02802 17.4406 1.15646C17.7507 1.2849 18.0324 1.47315 18.2697 1.71047C18.5071 1.94779 18.6953 2.22953 18.8238 2.53961C18.9522 2.84969 19.0183 3.18202 19.0183 3.51765C19.0183 3.85327 18.9522 4.18561 18.8238 4.49568C18.6953 4.80576 18.5071 5.0875 18.2697 5.32482L6.0713 17.5233L1.10156 18.8786L2.45695 13.9089L14.6554 1.71047Z\"\n stroke=\"#344054\" stroke-width=\"1.81079\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg></span>Edit\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate\" id=\"duplicate-split\"\n [(ngModel)]=\"selectedType\" [value]=\"'duplicate'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"duplicate-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">Duplicate</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"employee\" id=\"employee-split\"\n [(ngModel)]=\"selectedType\" [value]=\"'employee'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"employee-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">Employee/Staff</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"house-keeping\" id=\"house-keeping-split\"\n [(ngModel)]=\"selectedType\" [value]=\"'house-keeping'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"house-keeping-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\" viewBox=\"0 0 21 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">House Keeping</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"junk\" id=\"junk-split\"\n [(ngModel)]=\"selectedType\" [value]=\"'junk'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"junk-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\n fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg></span>\n <span class=\"ms-5 tag-class\">Junk</span>\n </label>\n </div>\n <div class=\"mt-3\">\n <label class=\"form-label\">Remarks (Optional)</label>\n <textarea class=\"form-control\" rows=\"3\" placeholder=\"Comment here\" [(ngModel)]=\"userComment\"></textarea>\n </div>\n </div>\n </ng-template>\n\n <!-- Grid/List View (shown when split-screen is not enabled) -->\n <div class=\"row px-0 img-traffic contain high-400px scroll-y\"\n *ngIf=\"viewMode === 'grid' && !noData && !loading && !splitScreenEnabled\">\n <ng-container *ngFor=\"let obj of imagesArrayData\">\n <ng-container *ngTemplateOutlet=\"imageCard; context: { $implicit: obj }\"></ng-container>\n </ng-container>\n </div>\n\n <div class=\"list-view-wrapper\"\n *ngIf=\"viewMode === 'list' && !noData && !loading && !splitScreenEnabled\">\n <div class=\"list-group mb-5\" *ngFor=\"let group of listViewGroups\">\n <div class=\"list-group-header d-flex align-items-center mb-3\">\n <div class=\"group-title\">{{ group?.timeRange }}</div>\n <span class=\"group-count badge badge-light-default ms-2\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_2149_23440)\">\n <path\n d=\"M2 9.00077H4.75V9.62577C4.75 9.99045 4.60513 10.3402 4.34727 10.598C4.08941 10.8559 3.73967 11.0008 3.375 11.0008C3.01033 11.0008 2.66059 10.8559 2.40273 10.598C2.14487 10.3402 2 9.99045 2 9.62577V9.00077ZM4 3.06077C5 3.06077 5.5 4.50077 5.5 5.50077C5.5 6.00077 5.25 6.50077 5 7.25077L4.75 8.00077H2C2 7.50077 1.75 6.75077 1.75 5.50077C1.75 4.25077 2.749 3.06077 4 3.06077ZM10.027 7.04977L9.9185 7.66527C9.85117 8.02058 9.64656 8.33507 9.34901 8.5406C9.05146 8.74613 8.68492 8.82616 8.32878 8.76337C7.97263 8.70057 7.65557 8.49999 7.44626 8.20509C7.23695 7.91018 7.15225 7.54469 7.2105 7.18777L7.3185 6.57277L10.027 7.04977ZM9.089 0.853272C10.321 1.07027 11.098 2.41577 10.881 3.64677C10.664 4.87777 10.2875 5.57277 10.201 6.06527L7.4925 5.58777L7.3765 4.80577C7.2605 4.02377 7.1015 3.48777 7.188 2.99577C7.3615 2.01077 8.104 0.679772 9.089 0.853272Z\"\n fill=\"#00A3FF\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2149_23440\">\n <rect width=\"12\" height=\"12\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>{{ group?.data?.length || 0 }}\n </span>\n </div>\n <div class=\"row gx-4 list-group-row\">\n <ng-container *ngFor=\"let obj of group?.data\">\n <ng-container\n *ngTemplateOutlet=\"imageCard; context: { $implicit: obj }\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n\n <ng-template #imageCard let-obj>\n <!-- main image card selection section-->\n <div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\n class=\"col-md-3 border-gray mx-2 p-2 mt-5\">\n <!-- Condition: Only show if not duplicate OR duplicate with non-empty duplicateImagePath -->\n <ng-container>\n <img class=\"img-src cursor-pointer\" [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\" alt=\"\"\n (click)=\"selectImageForSplitView(obj)\" />\n </ng-container>\n \n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\n <span class=\"mb-5\">\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Group\">\n <path id=\"Vector\" d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path id=\"Vector_2\"\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n </svg>\n \n </span>\n <span class=\"header mb-5 text-center\">Preview not available</span>\n <span class=\"description mb-5 text-center\">The selected camera is not available at\n the\n moment.</span>\n </div>\n <div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\n class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd}} <span\n *ngIf=\"(type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\n class=\"mx-2 badge badge-light-primary\">{{obj.duplicateImagePath?.length}}\n </span>\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\">\n <svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\"\n height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\">\n <svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\"\n height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n \n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </ng-template>\n\n </div>\n </section>\n\n <!-- full image View -->\n <section *ngIf=\"imageFlow\">\n <div class=\"row\">\n <!-- Ticket Block Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'block'\" class=\"col-12 mb-3\">\n <div class=\"ticket-block-alert\">\n <div class=\"ticket-block-alert-content\">\n <div class=\"ticket-block-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"12\" fill=\"#F04438\" />\n <path d=\"M12 8V13\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n </div>\n <div class=\"ticket-block-alert-text\">\n <div class=\"ticket-block-alert-title\">\n You cannot raise ticket for next {{ getSelectedDateCardData()?.noOfBlockedDays\n || '0' }} days\n </div>\n <div class=\"ticket-block-alert-description\">\n It looks like you have achieved 95% accuracy for the three tickets raised this\n month. This limits you from raising more tickets to avoid redundancy.\n </div>\n <div class=\"ticket-block-alert-action\">\n If you still want to raise tickets, <span class=\"ticket-block-alert-link\"\n (click)=\"requestReset()\">send request</span> to reset.\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Ticket Request Success Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'request'\" class=\"col-12 mb-3\">\n <div class=\"ticket-request-alert\">\n <div class=\"ticket-request-alert-content\">\n <div class=\"ticket-request-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 21L23 12L2 3V10L17 12L2 14V21Z\" fill=\"#10B981\" />\n </svg>\n </div>\n <div class=\"ticket-request-alert-text\">\n <div class=\"ticket-request-alert-title\">\n Reset Request Sent\n </div>\n <div class=\"ticket-request-alert-description\">\n Your request to enable ticket raising has been submitted. You'll be notified\n once it's approved. Please ensure future ticket accuracy remains within the 95%\n threshold.\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\n <ng-container *ngTemplateOutlet=\"footfallTrendsTemplate\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"ticketStatusTemplate\"></ng-container>\n <span class=\"divider\"></span>\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"ms-auto text-end\">\n {{getTicketStatus()}}\n <button [disabled]=\"!canEnableButton()\" class=\"btn btn-primary\" type=\"button\"\n (click)=\"Raised()\">\n Raise ticket\n </button>\n </div>\n </div>\n <div class=\"nav-group bg-white border-1 btn-group w-auto\">\n <ng-container *ngIf=\"!(countData?.length > 0)\">\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('footfall')\">\n Total Footfall\n <span\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.footfallCount || 0 }}\n </span>\n </button>\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('non-tagging')\">\n Non-tags\n <span\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.nonTags || 0 }}\n </span>\n </button>\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('duplicate')\">\n Duplicated\n <span\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.duplicate || 0 }}\n </span>\n </button>\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'employee' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('employee')\">\n Employee/Staff\n <span\n [ngClass]=\"type === 'employee' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.employee || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'junk' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('junk')\">\n Junk\n <span\n [ngClass]=\"type === 'junk' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.junk || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'house-keeping' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('house-keeping')\">\n House Keeping\n <span\n [ngClass]=\"type === 'house-keeping' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.housekeeping || 0 }}\n </span>\n </button>\n\n </ng-container>\n\n </div>\n\n <div class=\"row mx-0 border-gray img-traffic\" *ngIf=\"!noData && !loading\">\n <div class=\"col-md-6 p-2 mb-2 mt-5\">\n <div class=\"position-relative border-gray p-2 \">\n <!-- Main Image -->\n <!-- <img class=\"img-src cursor-pointer h-450px\"\n (click)=\"selectedImageArray(imageUrl, selectImageArray)\"\n [src]=\"imageUrl + selectImageArray?.filePath\" appMagnifier alt=\"\"> -->\n <img class=\"img-src cursor-pointer h-450px\" (click)=\"selectedImageArray(imageUrl, selectImageArray)\"\n [src]=\"imageUrl + selectImageArray?.filePath\" alt=\"\">\n \n <!-- Right arrow button -->\n <div class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{selectImageArray?.templd}}\n <span *ngIf=\"selectImageArray?.status ==='approved'\" class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg></span>\n <span *ngIf=\"selectImageArray?.status ==='rejected'\" class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg></span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{(tempModalImage ||\n selectImageArray)?.entryTme || (tempModalImage ||\n selectImageArray)?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='non-tagging'\"\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\" viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='duplicate'\">\n <svg *ngIf=\"selectImageArray?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!selectImageArray?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\n height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"col-md-6 p-2 mb-2 mt-5\">\n <div class=\"mx-2 \">\n <div class=\"row\">\n <div class=\"col-md-6 title-type\">\n Select non-shopper type\n </div>\n \n \n <!-- <section class=\"col-md-6 text-end\"\n *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\"> -->\n <section class=\"col-md-6 text-end\">\n \n <div *ngIf=\"!revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\">\n \n <button [disabled]=\"\n (selectedRadioType === undefined || selectedRadioType === '') ||\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\n \" class=\"btn btn-default\" type=\"button\" (click)=\"clearValue()\">Clear</button>\n <button class=\"btn btn-outline me-2\" (click)=\"cancel()\">Cancel</button>\n <button class=\"btn btn-primary\" id=\"alert-toast\" (click)=\"save(selectedType)\" [disabled]=\"\n (selectedRadioType === undefined || selectedRadioType === '') ||\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\n \">\n Save\n </button>\n </div>\n </div>\n \n <!-- <div *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\"> -->\n <div *ngIf=\"selectedRadioType ==='junk'\">\n <ng-container *ngIf=\"editBtnShow\">\n <div *ngIf=\"revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\n <button\n *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"btn btn-outline me-2\" (click)=\"editValue()\"><span class=\"me-2\"><svg\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\n viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M14.6554 1.71047C14.8927 1.47315 15.1745 1.2849 15.4845 1.15646C15.7946 1.02802 16.1269 0.961914 16.4626 0.961914C16.7982 0.961914 17.1305 1.02802 17.4406 1.15646C17.7507 1.2849 18.0324 1.47315 18.2697 1.71047C18.5071 1.94779 18.6953 2.22953 18.8238 2.53961C18.9522 2.84969 19.0183 3.18202 19.0183 3.51765C19.0183 3.85327 18.9522 4.18561 18.8238 4.49568C18.6953 4.80576 18.5071 5.0875 18.2697 5.32482L6.0713 17.5233L1.10156 18.8786L2.45695 13.9089L14.6554 1.71047Z\"\n stroke=\"#344054\" stroke-width=\"1.81079\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg></span>Edit</button>\n \n </div>\n </ng-container>\n </div>\n </section>\n \n </div>\n \n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate\" id=\"duplicate\"\n [(ngModel)]=\"selectedType\" [value]=\"'duplicate'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"duplicate\">\n <span class=\"ms-5\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span class=\"ms-5 tag-class\">Duplicate</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"employee\" id=\"employee\"\n [(ngModel)]=\"selectedType\" [value]=\"'employee'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"employee\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">Employee/Staff</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"house-keeping\" id=\"house-keeping\"\n [(ngModel)]=\"selectedType\" [value]=\"'house-keeping'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"house-keeping\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\"> House Keeping</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"junk\" id=\"junk\"\n [(ngModel)]=\"selectedType\" [value]=\"'junk'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"users?.role ==='user' && this.users?.userType ==='client' || revopsTypeValue\">\n <label class=\"form-check-label\" for=\"junk\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg></span>\n <span class=\"ms-5 tag-class\"> Junk</span>\n </label>\n </div>\n </div>\n \n \n </div>\n </div>\n\n\n <div class=\"row px-0 img-traffic mt-3 high-400px scroll-y\">\n <div class=\"col-md-3 border-gray mx-2 p-2 mt-5\" *ngFor=\"let obj of remainingImageArray\">\n <div class=\"position-relative\">\n <input *ngIf=\"!revopsTypeValue && selectedRadioType === 'duplicate'\" type=\"checkbox\"\n [checked]=\"obj.selected\"\n class=\"position-absolute absolute form-check-input cursor-pointer\"\n (change)=\"onImageCheckboxChange($event, obj, 'duplicate')\"\n [disabled]=\"obj.duplicateImagePath?.length > 0\" />\n\n <img class=\"img-src\"\n [ngClass]=\"selectedRadioType !== 'duplicate' ? 'cursor-pointer' : 'cursor-pointer'\"\n [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\" alt=\"\"\n (click)=\"handleImageClick($event, obj)\" />\n\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\n <span class=\"mb-5\">\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Group\">\n <path id=\"Vector\"\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path id=\"Vector_2\"\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n </svg>\n\n </span>\n <span class=\"header mb-5 text-center\">Preview not available</span>\n <span class=\"description mb-5 text-center\">The selected camera is not available at\n the\n moment.</span>\n </div>\n <div class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd ? obj?.templd :\n obj?.tempId}}\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg></span>\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg></span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme ? obj?.entryTme\n :obj?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\"\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\n viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n </section>\n </div>\n </section>\n</div>\n\n\n<ng-template #zoomPopup let-model>\n <div class=\"p-4 m-4\">\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\n <span *ngIf=\"popupType === 'non-tagging'\" class=\"my-3\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\n <g clip-path=\"url(#clip0_2088_98337)\">\n <path\n d=\"M29.1693 13.3333V18.3333M29.1693 18.3333H24.1693M29.1693 18.3333L25.3026 14.7C24.407 13.8039 23.299 13.1493 22.0819 12.7973C20.8649 12.4453 19.5785 12.4073 18.3428 12.6869C17.1072 12.9665 15.9624 13.5545 15.0155 14.3962C14.0685 15.2378 13.3502 16.3056 12.9276 17.5M10.8359 26.6666V21.6666M10.8359 21.6666H15.8359M10.8359 21.6666L14.7026 25.3C15.5982 26.1961 16.7062 26.8506 17.9233 27.2027C19.1403 27.5547 20.4267 27.5927 21.6624 27.3131C22.898 27.0335 24.0428 26.4455 24.9897 25.6038C25.9367 24.7621 26.655 23.6943 27.0776 22.5\"\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2088_98337\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(10 10)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <!-- Heading -->\n <h5 class=\"modal-title mb-2\">\n <span *ngIf=\"popupType === 'employee'\">Tagging as employee/staff </span>\n <span *ngIf=\"popupType === 'duplicate'\">Tagging as duplicates </span>\n <span *ngIf=\"popupType === 'house-keeping'\">Tagging as house keeping </span>\n <span *ngIf=\"popupType === 'non-tagging'\">Clear duplicates</span>\n <span *ngIf=\"popupType ==='junk'\">Tagging as junk</span>\n\n </h5>\n <p class=\"mb-3\">\n <span *ngIf=\"popupType === 'employee'\">Are you sure you want to tag this as employee/staff?</span>\n <span *ngIf=\"popupType === 'duplicate'\">Are you sure you want to tag this as duplicates? </span>\n <span *ngIf=\"popupType === 'house-keeping'\">Are you sure you want to tag this as house keeping? </span>\n <span *ngIf=\"popupType === 'non-tagging'\">This will remove tagged duplicates and move them to\n 'Non-tag'.</span>\n <span *ngIf=\"popupType ==='junk'\">Are you sure you want to tag this as junk?</span>\n\n </p>\n </div>\n\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\n <button class=\"btn btn-outline me-2\" (click)=\"cancelSubmit()\">Cancel</button>\n <button *ngIf=\"popupType !== 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\n Yes, Tag\n </button>\n <button *ngIf=\"popupType === 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\n Yes, clear\n </button>\n </div>\n </div>\n</ng-template>\n\n\n<ng-template #raisedPopup let-model>\n <div class=\"p-4 m-4\">\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\n <span class=\"my-3\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\n <path\n d=\"M21.251 11.0806C21.7405 11.0699 22.2153 11.2487 22.5762 11.5796L23.4922 12.4204C23.8089 12.7097 23.893 13.1017 23.8652 13.4263V13.4272C23.836 13.7478 23.6954 14.0592 23.4785 14.2944C23.3699 14.413 23.2865 14.5525 23.2314 14.7036C23.1764 14.8548 23.1512 15.0155 23.1582 15.1763C23.1652 15.337 23.2035 15.4953 23.2715 15.6411C23.3394 15.7869 23.4362 15.9172 23.5547 16.0259C23.6733 16.1346 23.8117 16.2198 23.9629 16.2749C24.1141 16.33 24.2748 16.3541 24.4355 16.3472C24.5961 16.3402 24.7537 16.3017 24.8994 16.2339C25.0089 16.1829 25.1106 16.116 25.2002 16.0356L25.3701 15.8657C25.5759 15.6748 25.8385 15.5408 26.1152 15.4907C26.2972 15.4546 26.485 15.4617 26.6641 15.5103C26.8439 15.5591 27.0103 15.649 27.1494 15.7729L27.1514 15.7749L28.2598 16.7905C28.445 16.9605 28.5948 17.1658 28.7002 17.394C28.8056 17.6223 28.8648 17.8694 28.874 18.1206C28.8832 18.372 28.8423 18.6234 28.7539 18.8589C28.6655 19.0941 28.5316 19.3096 28.3594 19.4927L20.1113 28.2583C19.937 28.4434 19.7268 28.5912 19.4941 28.6938C19.2614 28.7965 19.0102 28.8522 18.7559 28.856C18.5016 28.8597 18.2493 28.8119 18.0137 28.7163C17.7779 28.6206 17.5636 28.4784 17.3838 28.2983L16.2539 27.1685C15.7511 26.6656 15.8832 25.9552 16.1514 25.5542L16.2061 25.4644C16.3241 25.2486 16.3742 25.0008 16.3496 24.7544C16.3214 24.4731 16.197 24.2102 15.9971 24.0103C15.7971 23.8103 15.5343 23.6859 15.2529 23.6577C14.9715 23.6297 14.6887 23.6995 14.4531 23.856H14.4521C14.0494 24.1222 13.3407 24.2552 12.8379 23.7515L11.6797 22.5933C11.5034 22.4169 11.364 22.2074 11.2686 21.9771C11.1731 21.7467 11.1231 21.4999 11.123 21.2505C11.123 21.001 11.1731 20.7535 11.2686 20.5229C11.364 20.2926 11.5034 20.0831 11.6797 19.9067L19.9492 11.6362C20.2954 11.2902 20.7616 11.0912 21.251 11.0806ZM21.2783 12.3804C21.1237 12.3838 20.9765 12.4468 20.8672 12.5562L12.5967 20.8257C12.5409 20.8814 12.497 20.9482 12.4668 21.021C12.4367 21.0938 12.4209 21.1717 12.4209 21.2505C12.4209 21.3292 12.4367 21.4073 12.4668 21.48C12.497 21.5528 12.541 21.6196 12.5967 21.6753L13.7061 22.7837L13.7314 22.772C14.2169 22.4485 14.7993 22.3035 15.3799 22.3608C15.9608 22.4183 16.5042 22.6747 16.917 23.0874C17.3298 23.5002 17.587 24.0436 17.6445 24.6245C17.702 25.2055 17.5565 25.7892 17.2324 26.2749L17.2305 26.2759C17.2261 26.2822 17.2226 26.2893 17.2197 26.2964L18.3018 27.3804C18.3585 27.4372 18.4266 27.482 18.501 27.5122C18.5755 27.5425 18.6559 27.5574 18.7363 27.5562C18.8166 27.5549 18.8963 27.5378 18.9697 27.5054C19.043 27.4729 19.1091 27.4261 19.1641 27.3677L27.4131 18.6021C27.4673 18.5442 27.5093 18.4761 27.5371 18.4019C27.5649 18.3276 27.5781 18.2487 27.5752 18.1694C27.5722 18.0902 27.5538 18.0119 27.5205 17.9399C27.4872 17.8679 27.4394 17.8032 27.3809 17.7495L26.3223 16.7778C26.2925 16.7885 26.2648 16.8053 26.2432 16.8286C26.0217 17.0788 25.7529 17.2827 25.4521 17.4282C25.15 17.5743 24.8214 17.6585 24.4863 17.6763C24.1511 17.694 23.815 17.6452 23.499 17.5317C23.1832 17.4183 22.8928 17.2429 22.6455 17.0161C22.3982 16.7893 22.1988 16.5153 22.0586 16.2104C21.9183 15.9055 21.8404 15.5752 21.8291 15.2397C21.8178 14.9043 21.8737 14.57 21.9932 14.2563C22.1121 13.9442 22.2915 13.6587 22.5215 13.4165L22.5547 13.3657C22.5594 13.3552 22.5607 13.3437 22.5635 13.3325L21.6973 12.5386V12.5376C21.5833 12.4331 21.4329 12.377 21.2783 12.3804Z\"\n fill=\"#00A3FF\" stroke=\"#00A3FF\" stroke-width=\"0.3\" />\n </svg>\n </span>\n <!-- Heading -->\n <h5 class=\"modal-title mb-2\">\n <span>Raise tickets for the following</span>\n\n </h5>\n <p class=\"mb-3\">\n <span>Raising a ticket for footfall count issues. Make sure all records are identified for\n validation.</span>\n\n\n </p>\n </div>\n <div class=\"row\">\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.duplicateCount ? tempRaisedPayload?.duplicateCount :'0'}}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n Duplicates\n </div>\n </div>\n </div>\n\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.employeeCount ? tempRaisedPayload?.employeeCount:'0' }}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n Employee\n </div>\n </div>\n </div>\n\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.houseKeepingCount ? tempRaisedPayload?.houseKeepingCount :'0'}}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n House Keeping\n </div>\n </div>\n </div>\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.junkCount ? tempRaisedPayload?.junkCount :'0'}}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n Junk\n </div>\n </div>\n\n </div>\n </div>\n\n <!-- Label and Textarea -->\n <div class=\"my-3\">\n <label class=\"form-label\">Description (Optional)</label>\n <textarea rows=\"3\" [(ngModel)]=\"commentText\" class=\"form-control\"\n placeholder=\"Enter description\"></textarea>\n </div>\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\n\n <button class=\"btn btn-outline w-50 me-2\" (click)=\"cancelRasied()\">Cancel</button>\n <button class=\"btn btn-primary w-50\" (click)=\"submitRaised()\">\n Raise Ticket\n </button>\n </div>\n </div>\n</ng-template>\n\n\n<ng-template #imagePopup let-model>\n <div class=\"mx-4\">\n <div class=\"row\">\n <div class=\" p-2 mb-2 mt-5\">\n <div *ngIf=\"isModalOpen\" class=\"position-relative border-gray p-2 \">\n <!-- <button *ngIf=\"canNavigateLeft\" (click)=\"navigateImage('left')\"\n class=\"btn btn-light position-absolute start-0 top-50 z-index-10\">\n \u25C0\n </button> -->\n\n <!-- Main Image -->\n <!-- <img class=\" cursor-pointer w-100 h-525px\" \n [src]=\"imageUrl + (tempModalImage?.filePath || selectImageArray?.filePath)\"\n appMagnifier alt=\"\"> -->\n <img class=\" cursor-pointer w-100 h-525px\"\n [src]=\"imageUrl + (tempModalImage?.filePath || selectImageArray?.filePath)\" alt=\"\">\n <!-- <button *ngIf=\"canNavigateRight\" (click)=\"navigateImage('right')\"\n class=\"btn btn-light position-absolute end-0 top-50 z-index-10\">\n \u25B6\n </button> -->\n\n <!-- Right arrow button -->\n <div class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{(tempModalImage || selectImageArray)?.templd ||\n (tempModalImage || selectImageArray)?.tempId}}\n <span *ngIf=\"(tempModalImage || selectImageArray)?.status ==='approved'\"\n class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg></span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.status ==='rejected'\"\n class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{(tempModalImage || selectImageArray)?.entryTme ||\n (tempModalImage || selectImageArray)?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n {{(tempModalImage || selectImageArray)?.revopsType}}\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='non-tagging'\"\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\" viewBox=\"0 0 19 18\"\n fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='duplicate'\">\n <svg *ngIf=\"(tempModalImage || selectImageArray)?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!(tempModalImage || selectImageArray)?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\" viewBox=\"0 0 21 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- <div class=\"modal-footer py-2 px-0\"> -->\n\n <div class=\"w-100 py-2 mb-2 px-0 d-flex justify-content-end\">\n\n <button class=\"btn btn-outline\" (click)=\"closeImage()\">Close</button>\n\n </div>\n <!-- </div> -->\n </div>\n</ng-template>\n\n<!-- Footfall Trends Template -->\n<ng-template #footfallTrendsTemplate>\n <div class=\"row w-100 mb-1 g-1\">\n <!-- Total Footfall Card -->\n <div class=\"col-md-3\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <div class=\"d-flex align-items-center gap-2\">\n <span class=\"metric-title\">Total Footfall</span>\n <svg placement=\"top\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M4 18H9.5V19.25C9.5 19.9793 9.21027 20.6788 8.69454 21.1945C8.17882 21.7103 7.47935 22 6.75 22C6.02065 22 5.32118 21.7103 4.80546 21.1945C4.28973 20.6788 4 19.9793 4 19.25V18ZM8 6.11999C10 6.11999 11 8.99999 11 11C11 12 10.5 13 10 14.5L9.5 16H4C4 15 3.5 13.5 3.5 11C3.5 8.49999 5.498 6.11999 8 6.11999ZM20.054 14.098L19.837 15.329C19.7023 16.0396 19.2931 16.6686 18.698 17.0796C18.1029 17.4907 17.3698 17.6508 16.6576 17.5252C15.9453 17.3996 15.3111 16.9984 14.8925 16.4086C14.4739 15.8188 14.3045 15.0878 14.421 14.374L14.637 13.144L20.054 14.098ZM18.178 1.70499C20.642 2.13899 22.196 4.82999 21.762 7.29199C21.328 9.75399 20.575 11.144 20.402 12.129L14.985 11.174L14.753 9.60999C14.521 8.04599 14.203 6.97399 14.376 5.98999C14.723 4.01999 16.208 1.35799 18.178 1.70499Z\"\n fill=\"#00A3FF\" />\n </svg>\n </div>\n </div>\n <div class=\"metric-value\">{{ getCurrentFootfall() || 0 }}</div>\n <!-- [ngClass]=\"getFootfallPercentageChange() >= 0 ? 'up' : 'down'\" -->\n <div class=\"metric-trend\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M15.3327 3.99998L8.99935 10.3333L5.66602 6.99998L0.666016 12M15.3327 3.99998H11.3327M15.3327 3.99998V7.99998\"\n stroke=\"#039855\" stroke-width=\"1.18681\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n <span style=\"color: #10B981\">{{getFootfallPercentageChange() }}% </span><span>vs Yesterday</span>\n </div>\n </div>\n </div>\n <!-- Total Downtime Card -->\n <div class=\"col-md-3\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <div class=\"d-flex align-items-center gap-2\">\n <span class=\"metric-title\">Total Downtime</span>\n <div class=\"downtime-icons\">\n <svg width=\"40\" height=\"41\" viewBox=\"0 0 40 41\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <rect y=\"0.5\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\n <path\n d=\"M21.9004 12.1675C22.9958 12.1675 24.0423 12.3918 24.9977 12.7987C25.9889 13.2207 26.8809 13.8402 27.6279 14.6087C28.3734 15.3756 28.9756 16.2931 29.3857 17.3162C29.7813 18.299 29.9993 19.3756 29.9993 20.5008C29.9993 21.6277 29.7813 22.7043 29.3857 23.6871C28.9756 24.7068 28.3734 25.6244 27.6263 26.3929C26.8809 27.1598 25.9889 27.7793 24.9945 28.2012C24.0391 28.6081 22.9925 28.8325 21.8988 28.8325C20.8034 28.8325 19.7568 28.6081 18.8014 28.2012C17.8102 27.7793 16.9183 27.1598 16.1729 26.3929L16.1712 26.3912C15.4242 25.6227 14.8236 24.7052 14.4134 23.6871C14.2865 23.3707 14.1774 23.0459 14.0879 22.7127C14.2572 22.7294 14.4297 22.7378 14.6038 22.7378C14.9342 22.7378 15.2565 22.7076 15.5706 22.649C15.6227 22.8098 15.6797 22.9688 15.7415 23.1246C16.0785 23.9617 16.5732 24.7152 17.1885 25.3481C17.8037 25.981 18.5378 26.49 19.3499 26.8366C20.1328 27.1698 20.9938 27.3557 21.8988 27.3557C22.8037 27.3557 23.6631 27.1715 24.4476 26.8366C25.2614 26.49 25.9938 25.981 26.6091 25.3481C27.2243 24.7152 27.7191 23.9601 28.056 23.1246C28.3799 22.3192 28.5605 21.4334 28.5605 20.5025C28.5605 19.5715 28.3815 18.6875 28.056 17.8804C27.7191 17.0432 27.2243 16.2898 26.6091 15.6569C25.9938 15.024 25.2598 14.5149 24.4476 14.1684C23.6647 13.8352 22.8037 13.6493 21.8988 13.6493C20.9938 13.6493 20.1344 13.8335 19.3499 14.1684C19.2799 14.1985 19.21 14.2303 19.1416 14.2621C18.8747 13.8301 18.5524 13.4383 18.1829 13.0984C18.3848 12.9913 18.5915 12.8925 18.8014 12.8021C19.7601 12.3918 20.805 12.1675 21.9004 12.1675ZM20.971 16.5393C20.971 16.335 21.0524 16.1508 21.181 16.0169C21.3112 15.8829 21.4902 15.8009 21.6888 15.8009C21.8874 15.8009 22.0664 15.8829 22.1966 16.0169C22.3268 16.1508 22.4066 16.335 22.4066 16.5393V20.4271L25.2305 22.1501C25.3997 22.2539 25.5137 22.4196 25.5592 22.6021C25.6048 22.7847 25.5837 22.9856 25.4827 23.1597V23.1614C25.3818 23.3355 25.2207 23.4527 25.0433 23.4996C24.8659 23.5465 24.6706 23.5247 24.5013 23.4209H24.4997L21.3405 21.4937C21.2314 21.4318 21.1419 21.3413 21.0768 21.2342C21.0101 21.122 20.971 20.9897 20.971 20.8491V16.5393Z\"\n fill=\"#667085\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M14.3913 12.6095C16.8164 12.6095 18.7826 14.6321 18.7826 17.1269C18.7826 19.6218 16.8164 21.6444 14.3913 21.6444C11.9661 21.6444 10 19.6218 10 17.1269C10 14.6321 11.9661 12.6095 14.3913 12.6095ZM14.3913 19.7172L16.748 16.7201H15.2848V15.1261H13.4977V16.7201H12.0345L14.3913 19.7172Z\"\n fill=\"#F04438\" />\n </svg>\n </div>\n </div>\n </div>\n <div class=\"metric-value\">{{ getFormattedDowntime() || '-' }}</div>\n <div class=\"metric-trend metric-trend-placeholder\"></div>\n <!-- <div class=\"metric-tag success\" *ngIf=\"hasDowntime()\"> -->\n <!-- <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M11.6667 3.5L5.25 9.91667L2.33334 7\" stroke=\"#10B981\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg> -->\n <!-- <span>Issue submitted</span>\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4.5 2.5L7.5 5.5L10.5 2.5\" stroke=\"#10B981\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg> -->\n <!-- </div> -->\n </div>\n </div>\n\n <!-- Ticket Status Card -->\n <div class=\"col-md-3\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <span class=\"metric-title\">Ticket status</span>\n </div>\n <div class=\"metric-value\" \n [ngClass]=\"{\n 'ticket-status-raised': getTicketStatus()?.toLowerCase() === 'raised',\n 'ticket-status-closed': getTicketStatus()?.toLowerCase() === 'closed'\n }\">\n {{ getTicketStatus() === '-' ? '-' : (getTicketStatus() | titlecase) }}\n </div>\n <div class=\"metric-trend metric-trend-placeholder\"></div>\n </div>\n </div>\n <span class=\"divider\"></span>\n </div>\n</ng-template>\n\n<ng-template #resetRequestPopup let-model>\n <div class=\"p-4\">\n <div class=\"modal-header border-0 p-0 w-100\">\n <h5 class=\"modal-title mb-3 fw-bold\">\n Reset request.\n </h5>\n </div>\n <div class=\"modal-body p-0\">\n <p class=\"text-muted mb-3\">\n You're requesting to re-enable footfall tickets, disabled after three instances of exceeding 95%\n accuracy.\n </p>\n <p class=\"text-muted mb-0\">\n Please ensure future accuracy stays on or within 95%.\n </p>\n </div>\n <div class=\"modal-footer border-0 p-0 mt-4 d-flex justify-content-end gap-2\">\n <button type=\"button\" class=\"btn btn-outline\" (click)=\"cancelResetRequest()\">\n Cancel\n </button>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"submitResetRequest()\">\n Send Request\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #ticketStatusTemplate let-model>\n <!-- Ticket Review Card (shown when ticket status is raised) -->\n <div class=\"col-12 mb-3\" *ngIf=\"isTicketRaised() && getTaggingData('tagging')\">\n <div class=\"ticket-review-card\">\n <!-- Actual Footfall Header -->\n <div class=\"actual-footfall-header\">\n <span class=\"actual-footfall-number\">{{ getTaggingData('tagging')?.footfall || 0 }}</span>\n <span class=\"actual-footfall-label\">Actual Footfall</span>\n </div>\n <!-- Ticket Created By Section -->\n <div class=\"ticket-creator-section\"\n *ngIf=\"getTaggingData('tagging')?.createdByEmail || getTaggingData('tagging')?.createdAt\">\n <div class=\"d-flex align-items-center gap-2\">\n <!-- <div class=\"creator-avatar\" *ngIf=\"getTaggingData()?.createdByEmail?.profilePicture\">\n <img [src]=\"getTaggingData()?.createdByEmail?.profilePicture\" alt=\"Profile\" />\n </div> -->\n <div class=\"creator-avatar-placeholder\"\n *ngIf=\"!getTaggingData('tagging')?.createdByEmail?.profilePicture\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\n <path\n d=\"M16 10C17.6569 10 19 11.3431 19 13C19 14.6569 17.6569 16 16 16C14.3431 16 13 14.6569 13 13C13 11.3431 14.3431 10 16 10Z\"\n fill=\"#00A3FF\" />\n <path d=\"M11 22C11 19.2386 13.2386 17 16 17C18.7614 17 21 19.2386 21 22V23H11V22Z\"\n fill=\"#00A3FF\" />\n </svg>\n </div>\n <div class=\"creator-info\">\n <div class=\"creator-label\">Ticket created by</div>\n <div class=\"creator-details\">\n <span class=\"creator-email\">{{ getTaggingData('tagging')?.createdByEmail ||\n getTaggingData('tagging')?.createdByEmail || 'N/A' }}</span>\n <span class=\"creator-separator\" *ngIf=\"getTaggingData('tagging')?.createdAt\">\u2022</span>\n <span class=\"creator-time\" *ngIf=\"getTaggingData('tagging')?.createdAt\">{{\n getTaggingData('tagging')?.createdAt | date:'h:mm:ss a - d MMM yyyy' }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Ticket Revised Footfall and Metrics -->\n <div class=\"revised-footfall-section\">\n <div class=\"metrics-row\">\n <div class=\"metric-item\">\n <div class=\"metric-number blue-text\">\n {{ getTaggingData('tagging')?.revicedFootfall || 0 }}\n <span class=\"metric-percentage\">\n ({{ getTaggingData('tagging')?.revicedPerc || 0 }}%)\n </span>\n <span class=\"metric-arrow\">\u2193</span>\n </div>\n <div class=\"metric-label\">Revised footfall</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">({{ getRevisionCalculation('tagging')}}%)</div>\n <div class=\"metric-label\">Ticket%</div>\n </div>\n <div class=\"metric-divider\"></div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'duplicate') }}</div>\n <div class=\"metric-label\">Duplicates</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'employee') }}</div>\n <div class=\"metric-label\">Employee/Staff</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'junk') }}</div>\n <div class=\"metric-label\">Junk</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'houseKeeping') }}</div>\n <div class=\"metric-label\">House Keeping</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Ticket Final revision Card (shown when ticket status is closed) -->\n <div class=\"col-12 mb-3\" *ngIf=\"isTicketClosed() && getTaggingData('finalRevision')\">\n <div class=\"ticket-review-card\">\n <!-- Ticket card section in revision start -->\n\n <!-- Actual Footfall Header -->\n <div class=\"actual-footfall-header\">\n <span class=\"actual-footfall-number\">{{ getTaggingData('tagging')?.footfall || 0 }}</span>\n <span class=\"actual-footfall-label\">Actual Footfall</span>\n </div>\n <!-- Ticket Created By Section -->\n <div class=\"ticket-creator-section\"\n *ngIf=\"getTaggingData('tagging')?.createdByEmail || getTaggingData('tagging')?.createdAt\">\n <div class=\"d-flex align-items-center gap-2\">\n <!-- <div class=\"creator-avatar\" *ngIf=\"getTaggingData()?.createdByEmail?.profilePicture\">\n <img [src]=\"getTaggingData()?.createdByEmail?.profilePicture\" alt=\"Profile\" />\n </div> -->\n <div class=\"creator-avatar-placeholder\"\n *ngIf=\"!getTaggingData('tagging')?.createdByEmail?.profilePicture\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\n <path\n d=\"M16 10C17.6569 10 19 11.3431 19 13C19 14.6569 17.6569 16 16 16C14.3431 16 13 14.6569 13 13C13 11.3431 14.3431 10 16 10Z\"\n fill=\"#00A3FF\" />\n <path d=\"M11 22C11 19.2386 13.2386 17 16 17C18.7614 17 21 19.2386 21 22V23H11V22Z\"\n fill=\"#00A3FF\" />\n </svg>\n </div>\n <div class=\"creator-info\">\n <div class=\"creator-label\">Ticket created by</div>\n <div class=\"creator-details\">\n <span class=\"creator-email\">{{ getTaggingData('tagging')?.createdByEmail ||\n getTaggingData('tagging')?.createdByEmail || 'N/A' }}</span>\n <span class=\"creator-separator\" *ngIf=\"getTaggingData('tagging')?.createdAt\">\u2022</span>\n <span class=\"creator-time\" *ngIf=\"getTaggingData('tagging')?.createdAt\">{{\n getTaggingData('tagging')?.createdAt | date:'h:mm:ss a - d MMM yyyy' }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Ticket Revised Footfall and Metrics -->\n <div class=\"revised-footfall-section\">\n <div class=\"metrics-row\">\n <div class=\"metric-item\">\n <div class=\"metric-number blue-text\">\n {{ getTaggingData('tagging')?.revicedFootfall || 0 }}\n <span class=\"metric-percentage\">\n ({{ getTaggingData('tagging')?.revicedPerc || 0 }}%)\n </span>\n <span class=\"metric-arrow\">\u2193</span>\n </div>\n <div class=\"metric-label\">Revised footfall</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">({{ getRevisionCalculation('tagging')}}%)</div>\n <div class=\"metric-label\">Ticket%</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'duplicate') }}</div>\n <div class=\"metric-label\">Duplicates</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'employee') }}</div>\n <div class=\"metric-label\">Employee/Staff</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'junk') }}</div>\n <div class=\"metric-label\">Junk</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'houseKeeping') }}</div>\n <div class=\"metric-label\">House Keeping</div>\n </div>\n </div>\n </div>\n <!-- Ticket card section in revision end -->\n\n <!-- Final Revision Section -->\n <div class=\"revision-section\">\n <div class=\"revision-title\">Final revision</div>\n <div class=\"final-revision-note\">\n Please reach <a [href]=\"'mailto:' + revisionMailTo\" class=\"email-link\">{{ revisionMailTo }}</a> for any further\n discrepancies\n </div>\n <div class=\"revised-footfall-section\">\n <div class=\"metrics-row\">\n <div class=\"metric-item\">\n <div class=\"metric-number blue-text\">\n {{ getTaggingData('finalRevision')?.revicedFootfall || 0 }}\n <span class=\"metric-percentage\">\n ({{ getTaggingData('finalRevision')?.revicedPerc || 0}}%)\n </span>\n <span class=\"metric-arrow\">\u2191</span>\n </div>\n <div class=\"metric-label\">Revised footfall</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">({{ getRevisionCalculation('finalRevision')}}%)</div>\n <div class=\"metric-label\">Ticket%</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalRevision'), 'duplicate') }}\n </div>\n <div class=\"metric-label\">Duplicates</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalRevision'), 'employee') }}\n </div>\n <div class=\"metric-label\">Employee/Staff</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalRevision'), 'junk') }}</div>\n <div class=\"metric-label\">Junk</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalRevision'), 'houseKeeping')\n }}</div>\n <div class=\"metric-label\">House Keeping</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-template>", styles: ["@charset \"UTF-8\";.switch-form-card{padding:8px 16px;border-radius:4px;border-left:2px solid var(--Primary-600, #00A3FF);background:var(--Primary-25, #F6FCFF);display:flex;align-items:center;justify-content:space-between}.switch-form-card .txt-one{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:140%}.nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.badge-num-primary{border-radius:16px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;text-align:center;font-size:14px!important;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.badge-num-muted{border-radius:16px!important;background:var(--Primary-50, #F2F4F7)!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:14px;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.img-src{width:100%;height:195px;border-radius:.625rem}.img-traffic .col-md-3{width:calc(20% - 16px)!important;flex:0 0 calc(20% - 16px)!important;max-width:calc(20% - 16px)!important}.border-gray{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.img-doc-directory{color:var(--Gray-900, #101828)!important;font-size:14px!important;font-weight:600;line-height:20px;text-decoration-line:underline}.img-doc-time{color:var(--Gray-800, #1D2939);font-size:14px;font-weight:500;line-height:20px}.img-doc-value{color:var(--Gray-600, #667085);font-size:14px;font-weight:500;line-height:20px}.overflow-x{overflow-x:auto}.no-preview{border:1px solid #F04438;background:#fee4e2;border-radius:8px;stroke-width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:41px 16px}.no-preview .header{color:#f04438;font-size:20px;font-weight:700;line-height:20px}.no-preview .description{color:#f04438;font-size:12px;font-weight:500;line-height:18px}.img-nodata{width:25%;height:15%}.img-nodata1{width:15%;height:15%}.nodata-title{font-size:14px!important;font-weight:600}.img-direc{color:var(--Gray-900, #101828)!important;font-size:18px!important;font-weight:500;line-height:28px;display:flex;align-items:center;white-space:nowrap}.custom-accordion{border-radius:5px}.custom-accordion-item{margin-bottom:10px}.custom-accordion-header{background-color:#fff;border:none;cursor:pointer;padding:10px;text-align:left;width:100%;display:flex;justify-content:space-between;align-items:center}.custom-accordion{width:100%}.mainheading{width:100%;display:flex;justify-content:space-between;align-items:center;padding:19px;border:none;background:none;cursor:pointer}.mainheading-1{width:77%;display:flex;justify-content:space-between;align-items:center;padding:19px;border:none;background:none;cursor:pointer}.header-row{display:flex;align-items:center;width:100%;justify-content:space-between;gap:12px}.header-left-section{display:flex;align-items:center;gap:12px;flex-shrink:0}.header-right-section{display:flex;align-items:center;flex:1;min-width:0}.accordion-toggle-btn{background:none;border:none;cursor:pointer;padding:0;display:flex;align-items:center;flex-shrink:0}.img-dire{font-size:16px;font-weight:700}.divider{flex-grow:1;height:1px;background-color:#ddd;margin:0 10px;align-self:center}.accordion-arrow{display:flex;align-items:center}.scroll-container{max-height:400px;overflow-y:auto;overflow-x:hidden}.view-toggle .btn{border-radius:6px}.view-toggle .btn.active{background:var(--Primary-50, #EAF8FF);border-color:var(--Primary-200, #99DAFF)}.date-list-container{padding:4px 23px;width:100%}.date-list-scroll{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:16px;max-height:287px;overflow-y:auto;overflow-x:hidden;padding-bottom:8px}.date-card{min-width:0;max-width:none;padding:16px;background:#fff;border:1px solid #D0D5DD;border-radius:8px;cursor:pointer;transition:all .2s ease;display:flex;flex-direction:column;gap:8px}.date-card:hover{box-shadow:0 2px 8px #0000001a;border-color:#00a3ff}.date-card .date-card-header{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.date-card .date-card-header .calendar-icon{flex-shrink:0}.date-card .date-card-header .date-text{color:var(--Gray-900, #101828);font-size:14px;font-weight:500;line-height:20px;flex:1}.date-card .footfall-count{color:var(--Gray-900, #101828);font-size:32px;font-weight:400;line-height:40px;margin-top:4px}.date-card .footfall-label{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px}.date-card-active{background:var(--Primary-50, #EAF8FF);border-color:var(--Primary-600, #00A3FF);border-width:2px}.date-card-active .date-text{color:var(--Primary-700, #009BF3);font-weight:600}.date-card-active .footfall-count{color:var(--Primary-700, #009BF3)}.list-view-wrapper{padding:0 8px 16px;max-height:480px;overflow-y:auto}.list-group{border:1px solid var(--Gray-200, #EAECF0);border-radius:12px;background:#fff;padding:16px 20px}.list-group-header{border-bottom:1px solid var(--Gray-200, #EAECF0);padding-bottom:12px;margin-bottom:16px!important}.list-group-header .group-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.list-group-header .group-count{background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;font-weight:600;padding:4px 10px!important;border-radius:12px!important;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.list-group-header .group-count svg{flex-shrink:0;display:block}.high-400px{min-height:auto!important;max-height:800px!important}.scroll-y{overflow-y:auto}.absolute{top:5px;right:5px;z-index:2}.slider{position:relative}.slider .previous{position:absolute;top:30%;left:2%;width:32px;height:32px;background-color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.slider .next{position:absolute;top:30%;right:2%;width:32px;height:32px;background-color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.img-src1{border-radius:12px;border:1px solid var(--Gray-400, #98A2B3);background:var(--Gray-50, #F9FAFB);width:100%;height:375px;object-fit:contain}.zoom-icon-button{position:absolute;top:10px;right:10px;z-index:10;cursor:pointer;background:#fffffff2;border-radius:50%;padding:8px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #00000026;transition:all .2s ease}.zoom-icon-button:hover{background:#fff;box-shadow:0 4px 12px #0003;transform:scale(1.05)}.zoom-icon-button svg{width:20px;height:20px}.border-gray{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);padding:0 4px}.border-gray-active{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #EAF8FF);padding:0 4px}.zone-header{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:20px}.last-visit{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.toggle-label{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.nav-dev{border-radius:8px!important;border:1px solid var(--Primary-200, #99DAFF)!important;background:var(--Primary-25, #F6FCFF)!important}.tab-active{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3)!important;font-size:14px;font-weight:500;line-height:20px}.tab-text-default{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px}.border-gray-active1{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #ffffff);padding:12px!important}.nav-item1 .nav-link1.active{border:none;border-radius:0;background:var(--Primary-50, #EAF8FF);border-bottom:2px solid #009BF3!important;padding:12px;color:var(--Primary-700, #009BF3);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.active-normal{padding:12px;color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.nav-item1 .nav-link1:hover{border:none}.tag-class{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:20px}.spent-title{color:var(--Gray-600, #475467);font-size:14px;font-weight:600;line-height:20px}.spent-value{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.spent-value1{color:var(--Primary-500, #33B5FF);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font}.w-33{width:30%}.w-45{width:45%}.view-tetory{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:600;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;text-transform:capitalize}.border-gray-tagged{border-radius:4px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #ffffff);padding:8px!important}.desc-id{color:var(--Gray-900, #101828);font-size:12px;font-style:normal;font-weight:400;line-height:20px}.active-tab{border-bottom:2px solid #0d6efd;font-weight:600;color:#0d6efd}.badge-selected{background-color:#e0f3ff;color:#0d6efd;border:1px solid #0d6efd;border-radius:20px;padding:6px 12px}.badge-unselected{background-color:#f0f0f0;color:#333;border-radius:20px;padding:6px 12px}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;appearance:textfield}.cursor-not-allowed{cursor:not-allowed!important}.title-type{color:var(--Gray-800, #1D2939);font-size:16px;font-weight:600;line-height:24px}.top-50{top:35%!important}.activePlanBtn{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #344054)!important;font-size:14px;font-weight:500!important;line-height:20px}.badge-active{border-radius:16px;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);text-align:center;font-size:12px;font-style:normal;font-weight:500;line-height:20px;mix-blend-mode:multiply}input[type=checkbox]{width:18px!important;height:18px!important;margin:-2px 5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #D0D5DD)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}::ng-deep .modal-backdrop{pointer-events:none}.meta-change.up{color:#10b981}.meta-change.down{color:#ef4444}.meta-change.neutral{color:#64748b}.split-screen-container{display:flex;height:calc(100vh - 200px);min-height:700px;gap:16px;margin-top:16px}.split-screen-container .left-panel{flex:0 0 40%;max-width:40%;overflow-y:auto;overflow-x:hidden;padding-right:8px;border-right:1px solid var(--Gray-200, #EAECF0)}.split-screen-container .right-panel{flex:1;overflow-y:auto}.thumbnail-list-section{margin-bottom:24px}.thumbnail-list-section .time-range-header{display:flex;align-items:center;gap:8px;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--Gray-200, #EAECF0)}.thumbnail-list-section .time-range-header .time-range-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.thumbnail-list-section .time-range-header .time-range-count{color:var(--Gray-600, #667085);font-size:14px;font-weight:500;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);padding:2px 10px;border-radius:16px}.thumbnail-list-section .thumbnail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.thumbnail-list-section .thumbnail-item{cursor:pointer;border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);padding:8px;transition:all .2s ease}.thumbnail-list-section .thumbnail-item:hover{border-color:var(--Primary-600, #00A3FF);box-shadow:0 2px 8px #00a3ff1a}.thumbnail-list-section .thumbnail-item.selected{border-color:var(--Primary-600, #00A3FF);border-width:2px;background:var(--Primary-50, #EAF8FF)}.thumbnail-list-section .thumbnail-item .thumbnail-image{width:100%;height:120px;object-fit:cover;border-radius:4px;margin-bottom:8px}.thumbnail-list-section .thumbnail-item .thumbnail-info{display:grid;grid-template-columns:1fr auto;align-items:flex-start;gap:8px}.thumbnail-list-section .thumbnail-item .thumbnail-info .tango-id{color:var(--Gray-900, #101828);font-size:12px;font-weight:600;line-height:16px;margin-bottom:4px;grid-column:1}.thumbnail-list-section .thumbnail-item .thumbnail-info .entry-time{color:var(--Gray-600, #667085);font-size:11px;font-weight:400;line-height:16px;grid-column:1}.thumbnail-list-section .thumbnail-item .thumbnail-info .col-md-5{grid-column:2;grid-row:1/-1;display:flex;align-items:center;justify-content:flex-end;padding:0!important;margin:0!important}.thumbnail-list-section .thumbnail-item .thumbnail-info .col-md-5 svg{display:block}.metric-card{background:var(--White, #FFF);border-radius:8px;padding:2px 2px 4px 1px;height:100%;min-height:104px;display:flex;flex-direction:column;gap:4px;flex:1}.metric-card .metric-header{display:flex;justify-content:space-between;align-items:center;flex-shrink:0;margin-bottom:0;margin-top:-4px}.metric-card .metric-header .metric-title{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.metric-card .metric-header .metric-icon,.metric-card .metric-header .footfall-icon-header{flex-shrink:0}.metric-card .metric-header .downtime-icons{position:relative;display:inline-flex;align-items:center;width:31px;height:24px}.metric-card .metric-header .downtime-icons .clock-icon{position:absolute;left:0;top:2px;z-index:1}.metric-card .metric-header .downtime-icons .alert-icon{position:absolute;right:-2px;top:-2px;z-index:2}.metric-card .metric-value{color:var(--Gray-900, #101828);font-size:32px;font-weight:400;line-height:40px;margin-top:0;margin-bottom:0}.metric-card .metric-value.ticket-status-raised{display:inline-block;width:fit-content;padding:6px 14px;border-radius:16px;background:#fef3c7;color:#92400e;font-weight:600;font-size:21px;line-height:20px}.metric-card .metric-value.ticket-status-closed{display:inline-block;width:fit-content;padding:6px 14px;border-radius:16px;background:#d1fae5;color:#10b981;font-weight:600;font-size:21px;line-height:20px}.metric-card .metric-trend{display:flex;align-items:center;gap:4px;font-size:14px;font-weight:500;line-height:20px;margin-top:0;margin-bottom:0;min-height:20px}.metric-card .metric-trend.up{color:#10b981}.metric-card .metric-trend.down{color:#f04438}.metric-card .metric-trend.metric-trend-placeholder{visibility:hidden;height:20px}.metric-card .metric-trend svg{flex-shrink:0}.metric-card .metric-tag{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:500;line-height:16px;width:fit-content}.metric-card .metric-tag.success{background:#d1fadf;color:#10b981}.metric-card .metric-tag svg{flex-shrink:0}.ticket-review-card{background:var(--White, #FFF);border-radius:12px;border:1px solid var(--Gray-200, #EAECF0);padding:20px;box-shadow:0 1px 3px #0000001a}.ticket-review-card .actual-footfall-header{background:var(--Primary-50, #EAF8FF);border-radius:8px;padding:12px 15px;margin-bottom:10px;display:flex;align-items:center;gap:4px}.ticket-review-card .actual-footfall-header .actual-footfall-number{color:var(--Gray-900, #101828);font-size:25px;font-weight:600;line-height:25px}.ticket-review-card .actual-footfall-header .actual-footfall-label{color:var(--Gray-700, #344054);font-size:16px;font-weight:500;line-height:24px}.ticket-review-card .ticket-creator-section{padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid var(--Gray-200, #EAECF0)}.ticket-review-card .ticket-creator-section .creator-avatar{width:40px;height:40px;border-radius:50%;overflow:hidden;flex-shrink:0}.ticket-review-card .ticket-creator-section .creator-avatar img{width:100%;height:100%;object-fit:cover}.ticket-review-card .ticket-creator-section .creator-avatar-placeholder{width:40px;height:40px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.ticket-review-card .ticket-creator-section .creator-info{flex:1}.ticket-review-card .ticket-creator-section .creator-info .creator-label{color:var(--Gray-600, #667085);font-size:12px;font-weight:400;line-height:18px;margin-bottom:4px}.ticket-review-card .ticket-creator-section .creator-info .creator-details{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ticket-review-card .ticket-creator-section .creator-info .creator-details .creator-email{color:var(--Gray-900, #101828);font-size:14px;font-weight:500;line-height:20px}.ticket-review-card .ticket-creator-section .creator-info .creator-details .creator-separator{color:var(--Gray-400, #98A2B3);font-size:14px}.ticket-review-card .ticket-creator-section .creator-info .creator-details .creator-time{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px}.ticket-review-card .revised-footfall-section .metrics-row{display:flex;flex-wrap:wrap;gap:24px;align-items:flex-start}.ticket-review-card .revised-footfall-section .metrics-row .metric-divider{width:1px;background-color:var(--Gray-200, #EAECF0);align-self:stretch;min-height:60px;flex-shrink:0}.ticket-review-card .revised-footfall-section .metrics-row .metric-item{flex:1;min-width:120px;display:flex;flex-direction:column;gap:4px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number{color:var(--Gray-900, #101828);font-size:24px;font-weight:600;line-height:32px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number.blue-text{color:var(--Primary-700, #009BF3)}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number.blue-text .metric-percentage{font-size:16px;font-weight:500;margin-left:4px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number.blue-text .metric-arrow{color:var(--Primary-700, #009BF3);font-size:16px;margin-left:4px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-label{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px}.ticket-review-card .revision-section{margin-top:24px;padding-top:24px;border-top:1px solid var(--Gray-200, #EAECF0)}.ticket-review-card .revision-section .revision-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px;margin-bottom:16px}.ticket-review-card .revision-section .final-revision-note{font-size:14px;font-weight:400;line-height:20px;margin-bottom:16px}.email-link{text-decoration:underline;color:#008edf}.ticket-block-alert{border-radius:8px;border:2px dashed #F04438;background:#fee4e2;padding:16px;margin-bottom:16px}.ticket-block-alert .ticket-block-alert-content{display:flex;align-items:flex-start;gap:12px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-icon{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-icon svg{width:24px;height:24px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text{flex:1;display:flex;flex-direction:column;gap:8px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-title{color:#f04438;font-size:16px;font-weight:700;line-height:24px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-description,.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-action{color:#f04438;font-size:14px;font-weight:400;line-height:20px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-action .ticket-block-alert-link{color:#f04438;text-decoration:underline;cursor:pointer;font-weight:500}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-action .ticket-block-alert-link:hover{color:#d92d20;text-decoration:underline}.ticket-request-alert{border-radius:8px;border:2px dashed #10B981;background:#d1fae5;padding:16px;margin-bottom:16px}.ticket-request-alert .ticket-request-alert-content{display:flex;align-items:flex-start;gap:12px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-icon{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-icon svg{width:24px;height:24px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-text{flex:1;display:flex;flex-direction:column;gap:8px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-text .ticket-request-alert-title{color:#10b981;font-size:16px;font-weight:700;line-height:24px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-text .ticket-request-alert-description{color:#10b981;font-size:14px;font-weight:400;line-height:20px}\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: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { 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: "directive", type: i3.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "pipe", type: i6.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i6.DatePipe, name: "date" }] });
1350
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ImgRvpsComponent, selector: "lib-img-rvps", viewQueries: [{ propertyName: "zoomPopup", first: true, predicate: ["zoomPopup"], descendants: true }, { propertyName: "raisedPopup", first: true, predicate: ["raisedPopup"], descendants: true }, { propertyName: "resetRequestPopup", first: true, predicate: ["resetRequestPopup"], descendants: true }, { propertyName: "imagePopup", first: true, predicate: ["imagePopup"], descendants: true }], ngImport: i0, template: "<div class=\"card mt-3\">\n <div class=\"card-header mt-3 px-0 border-bottom-0\">\n <div class=\"custom-accordion\">\n <div class=\"custom-accordion-item\">\n <!-- for new navigation changes -->\n <!-- old view while folder view -->\n <button *ngIf=\"folderView\" class=\"mainheading pb-0 custom-accordion-header\" (click)=\"toggleAccordion()\">\n <div class=\"header-row\">\n <span class=\"img-direc\" style=\"padding-left: 40px;\">Image Directory</span>\n\n <span class=\"divider\"></span>\n <span class=\"accordion-arrow\">\n <!-- Down arrow for collapsed state, up arrow for expanded state -->\n <svg *ngIf=\"!isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 1L5 5L9 1\" stroke=\"#071437\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <svg *ngIf=\"isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 5L5 1L9 5\" stroke=\"#1b84ff\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </button>\n <!-- new view while not in folder view view -->\n <div *ngIf=\"!folderView\" class=\"header-row\">\n <div class=\"header-left-section\">\n <span *ngIf=\"backnav && !imageFlow\" class=\"cursor-pointer\" (click)=\"backToFootfall()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_2585_7036)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_2585_7036\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </span>\n <!-- back from image flow -->\n <span *ngIf=\"imageFlow\" class=\"cursor-pointer\" (click)=\"backToFootfall1()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_2585_7036)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_2585_7036\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </span>\n <span class=\"img-direc\">Image Directory | {{folderDate | date:'dd MMM, yyyy'}}</span>\n </div>\n <div class=\"header-right-section\">\n <span class=\"divider\"></span>\n <button *ngIf=\"!folderView\" class=\"accordion-toggle-btn\" (click)=\"toggleAccordion()\">\n <span class=\"accordion-arrow\">\n <!-- Down arrow for collapsed state, up arrow for expanded state -->\n <svg *ngIf=\"!isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 1L5 5L9 1\" stroke=\"#071437\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <svg *ngIf=\"isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 5L5 1L9 5\" stroke=\"#1b84ff\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <section *ngIf=\"isAccordionExpanded\">\n\n <div *ngIf=\"folderView\" class=\"card-body px-0\">\n <div class=\"date-list-container\">\n <div class=\"date-list-scroll\">\n <div class=\"date-card\" *ngFor=\"let obj of dateArray; let i = index\"\n [ngClass]=\"{'date-card-active': i === selectIndex}\" (click)=\"getimages(i, obj)\">\n <div class=\"date-card-header\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\" class=\"calendar-icon\">\n <path\n d=\"M12.6667 2.66667H12V2C12 1.63181 11.7015 1.33333 11.3333 1.33333C10.9651 1.33333 10.6667 1.63181 10.6667 2V2.66667H5.33333V2C5.33333 1.63181 5.03486 1.33333 4.66667 1.33333C4.29848 1.33333 4 1.63181 4 2V2.66667H3.33333C2.59695 2.66667 2 3.26362 2 4V13.3333C2 14.0697 2.59695 14.6667 3.33333 14.6667H12.6667C13.403 14.6667 14 14.0697 14 13.3333V4C14 3.26362 13.403 2.66667 12.6667 2.66667ZM12.6667 13.3333H3.33333V6H12.6667V13.3333Z\"\n fill=\"#667085\" />\n </svg>\n <span class=\"date-text\">{{obj | date:'dd MMM'}}</span>\n <span *ngIf=\"cardDataMap[obj]?.ticketStatusLower as status\" class=\"badge ms-2\" [ngClass]=\"{\n 'badge-light-success': status === 'closed',\n 'badge-light-warning': status === 'raised',\n 'badge-light-default': status !== 'closed' && status !== 'raised'\n }\">\n {{ status === 'closed' ? 'Ticket closed' : (status === 'raised' ? 'Ticket raised' :\n (cardDataMap[obj]?.ticketStatus || '')) }}\n </span>\n </div>\n <div class=\"footfall-count\">{{ cardDataMap[obj]?.footfallCount || 0 }}</div>\n <div class=\"footfall-label\">Total footfall</div>\n </div>\n </div>\n </div>\n </div>\n\n\n\n <div *ngIf=\"!folderView\" class=\"card-body\">\n <section *ngIf=\"!imageFlow\">\n <div class=\"row\">\n <!-- Ticket Block Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'block'\" class=\"col-12 mb-3\">\n <div class=\"ticket-block-alert\">\n <div class=\"ticket-block-alert-content\">\n <div class=\"ticket-block-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"12\" fill=\"#F04438\" />\n <path d=\"M12 8V13\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n </div>\n <div class=\"ticket-block-alert-text\">\n <div class=\"ticket-block-alert-title\">\n You cannot raise ticket for next {{ getSelectedDateCardData()?.noOfBlockedDays\n || '0' }} days\n </div>\n <div class=\"ticket-block-alert-description\">\n It looks like you have achieved 95% accuracy for the three tickets raised this\n month. This limits you from raising more tickets to avoid redundancy.\n </div>\n <div class=\"ticket-block-alert-action\">\n If you still want to raise tickets, <span class=\"ticket-block-alert-link\"\n (click)=\"requestReset()\">send request</span> to reset.\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Ticket Request Success Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'request'\" class=\"col-12 mb-3\">\n <div class=\"ticket-request-alert\">\n <div class=\"ticket-request-alert-content\">\n <div class=\"ticket-request-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 21L23 12L2 3V10L17 12L2 14V21Z\" fill=\"#10B981\" />\n </svg>\n </div>\n <div class=\"ticket-request-alert-text\">\n <div class=\"ticket-request-alert-title\">\n Reset Request Sent\n </div>\n <div class=\"ticket-request-alert-description\">\n Your request to enable ticket raising has been submitted. You'll be notified\n once it's approved. Please ensure future ticket accuracy remains within the 95%\n threshold.\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- footfall trends feature -->\n <ng-container *ngTemplateOutlet=\"footfallTrendsTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"ticketStatusTemplate\"></ng-container>\n <span class=\"divider\"></span>\n <!-- footfall trends feature end -->\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\n <!-- <span *ngIf=\"backnav\" class=\"cursor-pointer\" (click)=\"backToFootfall()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_2585_7036)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_2585_7036\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </span> -->\n <!-- <span class=\"img-direc ms-2 mt-1\">{{folderDate | date:'dd MMM, yyyy'}}\n <span class=\"badge badge-light-warning mx-2\"\n *ngIf=\"!getTicketStatuses().includes('closed') && getTicketStatuses().includes('open')\">\n Ticket Raised\n </span>\n <span class=\"badge badge-light-success mx-2\"\n *ngIf=\"getTicketStatuses().includes('closed')\">Ticket Closed</span>\n\n </span> -->\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"ms-auto text-end\">\n <button [disabled]=\"!canEnableButton()\" class=\"btn btn-primary\" type=\"button\"\n (click)=\"Raised()\">\n Raise ticket\n </button>\n </div>\n </div>\n <div *ngIf=\"!folderView\" class=\"d-flex flex-wrap align-items-center justify-content-between w-100 my-2 gap-3\">\n <div class=\"nav-group bg-white border-1 btn-group w-auto\">\n <ng-container *ngIf=\"!(countData?.length > 0)\">\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('footfall')\">\n Total Footfall\n <span\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.footfallCount || 0 }}\n </span>\n </button>\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('non-tagging')\">\n Non-tags\n <span\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.nonTags || 0 }}\n </span>\n </button>\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('duplicate')\">\n Duplicated\n <span\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.duplicate || 0 }}\n </span>\n </button>\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'employee' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('employee')\">\n Employee/Staff\n <span\n [ngClass]=\"type === 'employee' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.employee || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\" [ngClass]=\"type === 'junk' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('junk')\">\n Junk\n <span\n [ngClass]=\"type === 'junk' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.junk || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'houseKeeping' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('houseKeeping')\">\n House Keeping\n <span\n [ngClass]=\"type === 'houseKeeping' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.houseKeeping || 0 }}\n </span>\n </button>\n \n \n </ng-container>\n \n </div>\n \n <div class=\"btn-group view-toggle ms-auto\" role=\"group\" aria-label=\"Toggle view\">\n <button type=\"button\" class=\"btn btn-outline px-3 py-2\" [ngClass]=\"{'active': viewMode === 'grid'}\"\n (click)=\"setViewMode('grid')\" aria-label=\"Grid view\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"3\" y=\"3\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"11\" y=\"3\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"3\" y=\"11\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"11\" y=\"11\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n </svg>\n </button>\n <button type=\"button\" class=\"btn btn-outline px-3 py-2\" [ngClass]=\"{'active': viewMode === 'list'}\"\n (click)=\"setViewMode('list')\" aria-label=\"List view\">\n <svg width=\"20\" height=\"18\" viewBox=\"0 0 20 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"2\" y=\"3\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'list' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"8\" y=\"4.5\" width=\"10\" height=\"1.5\" rx=\"0.75\" fill=\"#475467\"></rect>\n <rect x=\"8\" y=\"12.5\" width=\"10\" height=\"1.5\" rx=\"0.75\" fill=\"#475467\"></rect>\n <rect x=\"2\" y=\"11\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'list' ? '#EAF8FF' : 'none'\"></rect>\n </svg>\n </button>\n </div>\n </div>\n <ng-container *ngIf=\"!imageFlow\">\n <div *ngIf=\"type === 'footfall' && viewMode === 'grid'\" class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\n <div class=\"col text-nowrap\" *ngFor=\"let obj of objectsArray\">\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\n <li class=\"nav-item cursor-pointer\">\n <a (click)=\"selectedTimes(obj.timeRange)\"\n [ngClass]=\"selectedTime === obj?.timeRange ? 'active' : ''\"\n class=\"nav-link cursor-pointer no-border mx-3 mb-2\">\n {{obj?.timeRange}}<span class=\"mx-2\"\n [ngClass]=\"selectedTime === obj?.timeRange ? 'badge-num-primary' :'badge-num-muted'\">\n {{ obj?.count ? obj?.count : 0 }}\n </span>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </ng-container>\n\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n </div>\n <div *ngIf=\"noData\" class=\"row\">\n\n <div class=\"col-lg-12 mb-3\">\n\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column \" style=\"margin: 64px;border-radius: 8px;\nbackground: var(--Gray-50, #F9FAFB);\">\n <svg width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\" />\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\"\n stroke-width=\"13.3333\" />\n <path\n d=\"M35.332 51.9999H33.6654C32.7813 51.9999 31.9335 51.6487 31.3083 51.0236C30.6832 50.3985 30.332 49.5506 30.332 48.6666V33.6666C30.332 32.7825 30.6832 31.9347 31.3083 31.3096C31.9335 30.6844 32.7813 30.3333 33.6654 30.3333H48.6654C49.5494 30.3333 50.3973 30.6844 51.0224 31.3096C51.6475 31.9347 51.9987 32.7825 51.9987 33.6666V35.3333M45.332 41.9999H60.332C62.173 41.9999 63.6654 43.4923 63.6654 45.3333V60.3333C63.6654 62.1742 62.173 63.6666 60.332 63.6666H45.332C43.4911 63.6666 41.9987 62.1742 41.9987 60.3333V45.3333C41.9987 43.4923 43.4911 41.9999 45.332 41.9999Z\"\n stroke=\"#00A3FF\" stroke-width=\"4\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <div class=\"nodata-title my-3\">\n {{ noDataMessages[type?.toLowerCase()] || 'No data found' }}\n </div>\n\n </div>\n </div>\n\n </div>\n\n\n <!-- Split-screen layout (only shown after clicking an image) -->\n <div class=\"split-screen-container\" *ngIf=\"splitScreenEnabled && !noData && !loading\">\n <!-- Left Panel: Thumbnail List + Related Images -->\n <div class=\"left-panel\">\n <!-- Main Images List (hidden when duplicate is selected) -->\n <ng-container *ngIf=\"selectedRadioType !== 'duplicate'\">\n <div class=\"thumbnail-list-section\" *ngFor=\"let group of listViewGroups\">\n <div class=\"time-range-header\">\n <span class=\"time-range-title\">{{ group?.timeRange }}</span>\n <span class=\"time-range-count\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_2149_23440)\">\n <path\n d=\"M2 9.00077H4.75V9.62577C4.75 9.99045 4.60513 10.3402 4.34727 10.598C4.08941 10.8559 3.73967 11.0008 3.375 11.0008C3.01033 11.0008 2.66059 10.8559 2.40273 10.598C2.14487 10.3402 2 9.99045 2 9.62577V9.00077ZM4 3.06077C5 3.06077 5.5 4.50077 5.5 5.50077C5.5 6.00077 5.25 6.50077 5 7.25077L4.75 8.00077H2C2 7.50077 1.75 6.75077 1.75 5.50077C1.75 4.25077 2.749 3.06077 4 3.06077ZM10.027 7.04977L9.9185 7.66527C9.85117 8.02058 9.64656 8.33507 9.34901 8.5406C9.05146 8.74613 8.68492 8.82616 8.32878 8.76337C7.97263 8.70057 7.65557 8.49999 7.44626 8.20509C7.23695 7.91018 7.15225 7.54469 7.2105 7.18777L7.3185 6.57277L10.027 7.04977ZM9.089 0.853272C10.321 1.07027 11.098 2.41577 10.881 3.64677C10.664 4.87777 10.2875 5.57277 10.201 6.06527L7.4925 5.58777L7.3765 4.80577C7.2605 4.02377 7.1015 3.48777 7.188 2.99577C7.3615 2.01077 8.104 0.679772 9.089 0.853272Z\"\n fill=\"#00A3FF\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2149_23440\">\n <rect width=\"12\" height=\"12\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>{{ group?.data?.length || 0 }}\n </span>\n </div>\n <div class=\"thumbnail-grid\">\n <div class=\"thumbnail-item\" *ngFor=\"let obj of group?.data\"\n [ngClass]=\"{'selected': selectImageArray?.templd === obj?.templd}\"\n (click)=\"selectImageForSplitView(obj)\">\n <img class=\"thumbnail-image\" [src]=\"imageUrl + obj?.filePath\"\n (error)=\"obj.filePath = null\" alt=\"\" *ngIf=\"obj?.filePath\" />\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\"\n style=\"height: 120px; padding: 20px;\">\n <span style=\"color: #667085; font-size: 11px;\">No preview</span>\n </div>\n <div class=\"thumbnail-info\">\n <div class=\"tango-id\">Tango ID: {{ obj?.templd }}</div>\n <div class=\"entry-time\">Entry Time: {{ obj?.entryTme || obj?.entryTime}}</div>\n <!-- left panel image logo -->\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='houseKeeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- left panel Images Section (ONLY shown when duplicate is selected) -->\n <div class=\"thumbnail-list-section\"\n *ngIf=\"selectedRadioType === 'duplicate' && remainingImagesGroups && remainingImagesGroups.length > 0\">\n <div class=\"thumbnail-list-section\" *ngFor=\"let group of remainingImagesGroups\">\n <div class=\"time-range-header\" style=\"margin-top: 16px;\">\n <span class=\"time-range-title\">{{ group?.timeRange }}</span>\n <span class=\"time-range-count\"><svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_2149_23440)\">\n <path\n d=\"M2 9.00077H4.75V9.62577C4.75 9.99045 4.60513 10.3402 4.34727 10.598C4.08941 10.8559 3.73967 11.0008 3.375 11.0008C3.01033 11.0008 2.66059 10.8559 2.40273 10.598C2.14487 10.3402 2 9.99045 2 9.62577V9.00077ZM4 3.06077C5 3.06077 5.5 4.50077 5.5 5.50077C5.5 6.00077 5.25 6.50077 5 7.25077L4.75 8.00077H2C2 7.50077 1.75 6.75077 1.75 5.50077C1.75 4.25077 2.749 3.06077 4 3.06077ZM10.027 7.04977L9.9185 7.66527C9.85117 8.02058 9.64656 8.33507 9.34901 8.5406C9.05146 8.74613 8.68492 8.82616 8.32878 8.76337C7.97263 8.70057 7.65557 8.49999 7.44626 8.20509C7.23695 7.91018 7.15225 7.54469 7.2105 7.18777L7.3185 6.57277L10.027 7.04977ZM9.089 0.853272C10.321 1.07027 11.098 2.41577 10.881 3.64677C10.664 4.87777 10.2875 5.57277 10.201 6.06527L7.4925 5.58777L7.3765 4.80577C7.2605 4.02377 7.1015 3.48777 7.188 2.99577C7.3615 2.01077 8.104 0.679772 9.089 0.853272Z\"\n fill=\"#00A3FF\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2149_23440\">\n <rect width=\"12\" height=\"12\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>{{ group?.data?.length || 0 }}</span>\n </div>\n <div class=\"thumbnail-grid\">\n <div class=\"thumbnail-item\" *ngFor=\"let obj of group?.data\" [ngClass]=\"{'selected': obj.selected}\">\n <div class=\"position-relative\">\n <input *ngIf=\"!revopsTypeValue && selectedRadioType === 'duplicate'\" type=\"checkbox\"\n [checked]=\"obj.selected\" class=\"position-absolute absolute form-check-input cursor-pointer\"\n style=\"top: 5px; right: 5px; z-index: 2;\" (change)=\"onImageCheckboxChange($event, obj, 'duplicate')\"\n (click)=\"$event.stopPropagation()\" [disabled]=\"obj.duplicateImagePath?.length > 0\" />\n <img class=\"thumbnail-image cursor-pointer\" [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\"\n alt=\"\" *ngIf=\"obj?.filePath\" (click)=\"handleImageClick($event, obj)\" />\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview cursor-pointer\" style=\"height: 120px; padding: 20px;\"\n (click)=\"handleImageClick($event, obj)\">\n <span style=\"color: #667085; font-size: 11px;\">No preview</span>\n </div>\n <div class=\"thumbnail-info\">\n <div class=\"tango-id\">Tango ID: {{ obj?.templd || obj?.tempId }}\n </div>\n <div class=\"entry-time\">Entry Time: {{ obj?.entryTme ||\n obj?.entryTime }}</div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='houseKeeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Right Panel: Selected Image Details -->\n <div class=\"right-panel\" *ngIf=\"selectImageArray\">\n <ng-container\n *ngTemplateOutlet=\"imageDetailView; context: { $implicit: selectImageArray }\"></ng-container>\n </div>\n <div class=\"right-panel\" *ngIf=\"!selectImageArray\"\n style=\"display: flex; align-items: center; justify-content: center; color: var(--Gray-500, #667085);\">\n <div style=\"text-align: center;\">\n <p style=\"font-size: 16px; font-weight: 500;\">Select an image to view details</p>\n </div>\n </div>\n </div>\n\n <!-- Image Detail View Template for Split-Screen Right Panel -->\n <ng-template #imageDetailView let-obj>\n <div class=\"border-gray p-3 mb-3\">\n <div class=\"position-relative\">\n <img class=\"img-src1\" [src]=\"imageUrl + obj?.filePath\" alt=\"\" *ngIf=\"obj?.filePath\" />\n <!-- Zoom Icon -->\n <div class=\"zoom-icon-button\" (click)=\"openImageZoomModal(imageUrl, obj)\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M18.3333 18.3333L15 15M16.6667 9.16667C16.6667 13.3067 13.3067 16.6667 9.16667 16.6667C5.02667 16.6667 1.66667 13.3067 1.66667 9.16667C1.66667 5.02667 5.02667 1.66667 9.16667 1.66667C13.3067 1.66667 16.6667 5.02667 16.6667 9.16667Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M9.16667 6.66667V11.6667M6.66667 9.16667H11.6667\" stroke=\"#475467\" stroke-width=\"2\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </div>\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\" style=\"height: 375px;\">\n <span class=\"mb-5\">\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Group\">\n <path id=\"Vector\" d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path id=\"Vector_2\"\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n </svg>\n </span>\n <span class=\"header mb-5 text-center\">Preview not available</span>\n <span class=\"description mb-5 text-center\">The selected camera is not available at\n the moment.</span>\n </div>\n </div>\n <div class=\"row px-2 mb-2 mt-3\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd}}\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\">\n <svg style=\"width: 20px; height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\"\n height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\">\n <svg style=\"width: 20px; height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\"\n height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme || obj?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\" viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='houseKeeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n <div class=\"border-gray p-3\">\n <div class=\"row mb-3\">\n <div class=\"col-md-6 title-type\">Select non-shopper type</div>\n <!-- <div class=\"col-md-6 text-end\" \n *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\"> -->\n <div class=\"col-md-6 text-end\">\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"mb-3 d-flex justify-content-end align-items-center gap-2\">\n <!-- Clear Tag Button (visible when Edit button OR Save/Cancel buttons are visible) -->\n <button *ngIf=\"!revopsTypeValue || (revopsTypeValue && editBtnShow)\"\n [disabled]=\"(selectedRadioType === undefined || selectedRadioType === '') || (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\"\n class=\"btn btn-clear-tag d-inline-flex align-items-center justify-content-center\" type=\"button\"\n (click)=\"clearValue()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 49 49\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_516_96841)\">\n <rect x=\"2.16797\" y=\"1.08447\" width=\"44.0342\" height=\"44.0284\" rx=\"8.67445\"\n fill=\"#FEF3F2\" />\n <rect x=\"2.71012\" y=\"1.62663\" width=\"42.9499\" height=\"42.9441\" rx=\"8.13229\"\n stroke=\"#FEF3F2\" stroke-width=\"1.08431\" />\n <path\n d=\"M33.4893 21.3613L33.4912 21.3643C34.0533 21.9297 34.369 22.6949 34.3691 23.4922C34.3691 24.2895 34.0533 25.0546 33.4912 25.6201L26.7256 32.3857C26.4454 32.6661 26.1122 32.8882 25.7461 33.04C25.3798 33.1919 24.9873 33.2705 24.5908 33.2705C24.1942 33.2705 23.801 33.1919 23.4346 33.04C23.0686 32.8883 22.7361 32.6659 22.4561 32.3857L20.7676 30.6992L22.3682 29.0986L24.0557 30.7842L24.0566 30.7852C24.1267 30.8553 24.2102 30.9112 24.3018 30.9492C24.3933 30.9872 24.4917 31.0068 24.5908 31.0068C24.6899 31.0068 24.7883 30.9872 24.8799 30.9492C24.9713 30.9113 25.0541 30.8552 25.124 30.7852H25.125L31.8877 24.0215C32.0267 23.8804 32.1055 23.6903 32.1055 23.4922C32.1054 23.2941 32.0267 23.1039 31.8877 22.9629L30.1963 21.2715L31.7979 19.6699L33.4893 21.3613ZM24.6982 12.9336C24.9571 12.9594 25.2011 13.0733 25.3867 13.2588L30.1973 18.0693L28.5957 19.6709L24.1162 15.1914H16.2852V23.0225L20.7666 27.499L19.166 29.0996L14.3535 24.293C14.1411 24.0807 14.0215 23.7925 14.0215 23.4922V14.0596C14.0217 13.4346 14.5283 12.9277 15.1533 12.9277H24.5859L24.6982 12.9336ZM19.8789 17.6436C20.5038 17.6436 21.0103 18.1506 21.0107 18.7754C21.0107 19.4005 20.504 19.9082 19.8789 19.9082H19.8691C19.2442 19.908 18.7373 19.4004 18.7373 18.7754C18.7378 18.1508 19.2445 17.6438 19.8691 17.6436H19.8789Z\"\n fill=\"#B42318\" />\n <path d=\"M33.1699 14.0845L15.1699 32.0845\" stroke=\"#B42318\" stroke-width=\"2\"\n stroke-linecap=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_516_96841\" x=\"-0.000643253\" y=\"0.000166655\" width=\"48.3724\"\n height=\"48.3655\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1.08431\" />\n <feGaussianBlur stdDeviation=\"1.08431\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_516_96841\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_516_96841\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </button>\n <!-- Cancel and Save Buttons (when !revopsTypeValue) -->\n <div *ngIf=\"!revopsTypeValue\" class=\"d-flex align-items-center gap-2\">\n <button class=\"btn btn-outline\" (click)=\"cancel()\">Cancel</button>\n <button class=\"btn btn-primary\" id=\"alert-toast\" (click)=\"save(selectedType)\"\n [disabled]=\"(selectedRadioType === undefined || selectedRadioType === '') || (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\">Save & close</button>\n </div>\n <!-- Edit Button (when revopsTypeValue && editBtnShow) -->\n <div *ngIf=\"revopsTypeValue && editBtnShow\">\n <button class=\"btn btn-outline\" (click)=\"editValue()\">\n <span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\n viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M14.6554 1.71047C14.8927 1.47315 15.1745 1.2849 15.4845 1.15646C15.7946 1.02802 16.1269 0.961914 16.4626 0.961914C16.7982 0.961914 17.1305 1.02802 17.4406 1.15646C17.7507 1.2849 18.0324 1.47315 18.2697 1.71047C18.5071 1.94779 18.6953 2.22953 18.8238 2.53961C18.9522 2.84969 19.0183 3.18202 19.0183 3.51765C19.0183 3.85327 18.9522 4.18561 18.8238 4.49568C18.6953 4.80576 18.5071 5.0875 18.2697 5.32482L6.0713 17.5233L1.10156 18.8786L2.45695 13.9089L14.6554 1.71047Z\"\n stroke=\"#344054\" stroke-width=\"1.81079\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg></span>Edit\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate\" id=\"duplicate-split\"\n [(ngModel)]=\"selectedType\" [value]=\"'duplicate'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"duplicate-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">Duplicate</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"employee\" id=\"employee-split\"\n [(ngModel)]=\"selectedType\" [value]=\"'employee'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"employee-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">Employee/Staff</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"houseKeeping\" id=\"house-keeping-split\"\n [(ngModel)]=\"selectedType\" [value]=\"'houseKeeping'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"house-keeping-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\" viewBox=\"0 0 21 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">House Keeping</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"junk\" id=\"junk-split\"\n [(ngModel)]=\"selectedType\" [value]=\"'junk'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"junk-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\n fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg></span>\n <span class=\"ms-5 tag-class\">Junk</span>\n </label>\n </div>\n <div class=\"mt-3\">\n <label class=\"form-label\">Remarks (Optional)</label>\n <textarea class=\"form-control\" rows=\"3\" placeholder=\"Comment here\" [(ngModel)]=\"userComment\"></textarea>\n </div>\n </div>\n </ng-template>\n\n <!-- Grid/List View (shown when split-screen is not enabled) -->\n <div class=\"row px-0 img-traffic contain high-400px scroll-y\"\n *ngIf=\"viewMode === 'grid' && !noData && !loading && !splitScreenEnabled\">\n <ng-container *ngFor=\"let obj of imagesArrayData\">\n <ng-container *ngTemplateOutlet=\"imageCard; context: { $implicit: obj }\"></ng-container>\n </ng-container>\n </div>\n\n <div class=\"list-view-wrapper\"\n *ngIf=\"viewMode === 'list' && !noData && !loading && !splitScreenEnabled\">\n <div class=\"list-group mb-5\" *ngFor=\"let group of listViewGroups\">\n <div class=\"list-group-header d-flex align-items-center mb-3\">\n <div class=\"group-title\">{{ group?.timeRange }}</div>\n <span class=\"group-count badge badge-light-default ms-2\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_2149_23440)\">\n <path\n d=\"M2 9.00077H4.75V9.62577C4.75 9.99045 4.60513 10.3402 4.34727 10.598C4.08941 10.8559 3.73967 11.0008 3.375 11.0008C3.01033 11.0008 2.66059 10.8559 2.40273 10.598C2.14487 10.3402 2 9.99045 2 9.62577V9.00077ZM4 3.06077C5 3.06077 5.5 4.50077 5.5 5.50077C5.5 6.00077 5.25 6.50077 5 7.25077L4.75 8.00077H2C2 7.50077 1.75 6.75077 1.75 5.50077C1.75 4.25077 2.749 3.06077 4 3.06077ZM10.027 7.04977L9.9185 7.66527C9.85117 8.02058 9.64656 8.33507 9.34901 8.5406C9.05146 8.74613 8.68492 8.82616 8.32878 8.76337C7.97263 8.70057 7.65557 8.49999 7.44626 8.20509C7.23695 7.91018 7.15225 7.54469 7.2105 7.18777L7.3185 6.57277L10.027 7.04977ZM9.089 0.853272C10.321 1.07027 11.098 2.41577 10.881 3.64677C10.664 4.87777 10.2875 5.57277 10.201 6.06527L7.4925 5.58777L7.3765 4.80577C7.2605 4.02377 7.1015 3.48777 7.188 2.99577C7.3615 2.01077 8.104 0.679772 9.089 0.853272Z\"\n fill=\"#00A3FF\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2149_23440\">\n <rect width=\"12\" height=\"12\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>{{ group?.data?.length || 0 }}\n </span>\n </div>\n <div class=\"row gx-4 list-group-row\">\n <ng-container *ngFor=\"let obj of group?.data\">\n <ng-container\n *ngTemplateOutlet=\"imageCard; context: { $implicit: obj }\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n\n <ng-template #imageCard let-obj>\n <!-- main image card selection section-->\n <div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\n class=\"col-md-3 border-gray mx-2 p-2 mt-5\">\n <!-- Condition: Only show if not duplicate OR duplicate with non-empty duplicateImagePath -->\n <ng-container>\n <img class=\"img-src cursor-pointer\" [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\" alt=\"\"\n (click)=\"selectImageForSplitView(obj)\" />\n </ng-container>\n \n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\n <span class=\"mb-5\">\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Group\">\n <path id=\"Vector\" d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path id=\"Vector_2\"\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n </svg>\n \n </span>\n <span class=\"header mb-5 text-center\">Preview not available</span>\n <span class=\"description mb-5 text-center\">The selected camera is not available at\n the\n moment.</span>\n </div>\n <div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\n class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd}} <span\n *ngIf=\"(type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\n class=\"mx-2 badge badge-light-primary\">{{obj.duplicateImagePath?.length}}\n </span>\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\">\n <svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\"\n height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\">\n <svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\"\n height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='houseKeeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n \n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </ng-template>\n\n </div>\n </section>\n\n <!-- full image View -->\n <section *ngIf=\"imageFlow\">\n <div class=\"row\">\n <!-- Ticket Block Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'block'\" class=\"col-12 mb-3\">\n <div class=\"ticket-block-alert\">\n <div class=\"ticket-block-alert-content\">\n <div class=\"ticket-block-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"12\" fill=\"#F04438\" />\n <path d=\"M12 8V13\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n </div>\n <div class=\"ticket-block-alert-text\">\n <div class=\"ticket-block-alert-title\">\n You cannot raise ticket for next {{ getSelectedDateCardData()?.noOfBlockedDays\n || '0' }} days\n </div>\n <div class=\"ticket-block-alert-description\">\n It looks like you have achieved 95% accuracy for the three tickets raised this\n month. This limits you from raising more tickets to avoid redundancy.\n </div>\n <div class=\"ticket-block-alert-action\">\n If you still want to raise tickets, <span class=\"ticket-block-alert-link\"\n (click)=\"requestReset()\">send request</span> to reset.\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Ticket Request Success Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'request'\" class=\"col-12 mb-3\">\n <div class=\"ticket-request-alert\">\n <div class=\"ticket-request-alert-content\">\n <div class=\"ticket-request-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 21L23 12L2 3V10L17 12L2 14V21Z\" fill=\"#10B981\" />\n </svg>\n </div>\n <div class=\"ticket-request-alert-text\">\n <div class=\"ticket-request-alert-title\">\n Reset Request Sent\n </div>\n <div class=\"ticket-request-alert-description\">\n Your request to enable ticket raising has been submitted. You'll be notified\n once it's approved. Please ensure future ticket accuracy remains within the 95%\n threshold.\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\n <ng-container *ngTemplateOutlet=\"footfallTrendsTemplate\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"ticketStatusTemplate\"></ng-container>\n <span class=\"divider\"></span>\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"ms-auto text-end\">\n {{getTicketStatus()}}\n <button [disabled]=\"!canEnableButton()\" class=\"btn btn-primary\" type=\"button\"\n (click)=\"Raised()\">\n Raise ticket\n </button>\n </div>\n </div>\n <div class=\"nav-group bg-white border-1 btn-group w-auto\">\n <ng-container *ngIf=\"!(countData?.length > 0)\">\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('footfall')\">\n Total Footfall\n <span\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.footfallCount || 0 }}\n </span>\n </button>\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('non-tagging')\">\n Non-tags\n <span\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.nonTags || 0 }}\n </span>\n </button>\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('duplicate')\">\n Duplicated\n <span\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.duplicate || 0 }}\n </span>\n </button>\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'employee' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('employee')\">\n Employee/Staff\n <span\n [ngClass]=\"type === 'employee' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.employee || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'junk' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('junk')\">\n Junk\n <span\n [ngClass]=\"type === 'junk' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.junk || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'houseKeeping' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('houseKeeping')\">\n House Keeping\n <span\n [ngClass]=\"type === 'houseKeeping' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.houseKeeping || 0 }}\n </span>\n </button>\n\n </ng-container>\n\n </div>\n\n <div class=\"row mx-0 border-gray img-traffic\" *ngIf=\"!noData && !loading\">\n <div class=\"col-md-6 p-2 mb-2 mt-5\">\n <div class=\"position-relative border-gray p-2 \">\n <!-- Main Image -->\n <!-- <img class=\"img-src cursor-pointer h-450px\"\n (click)=\"selectedImageArray(imageUrl, selectImageArray)\"\n [src]=\"imageUrl + selectImageArray?.filePath\" appMagnifier alt=\"\"> -->\n <img class=\"img-src cursor-pointer h-450px\" (click)=\"selectedImageArray(imageUrl, selectImageArray)\"\n [src]=\"imageUrl + selectImageArray?.filePath\" alt=\"\">\n \n <!-- Right arrow button -->\n <div class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{selectImageArray?.templd}}\n <span *ngIf=\"selectImageArray?.status ==='approved'\" class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg></span>\n <span *ngIf=\"selectImageArray?.status ==='rejected'\" class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg></span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{(tempModalImage ||\n selectImageArray)?.entryTme || (tempModalImage ||\n selectImageArray)?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='non-tagging'\"\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\" viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='duplicate'\">\n <svg *ngIf=\"selectImageArray?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!selectImageArray?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\n height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='houseKeeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType === 'junk'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"col-md-6 p-2 mb-2 mt-5\">\n <div class=\"mx-2 \">\n <div class=\"row\">\n <div class=\"col-md-6 title-type\">\n Select non-shopper type\n </div>\n \n \n <!-- <section class=\"col-md-6 text-end\"\n *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\"> -->\n <section class=\"col-md-6 text-end\">\n \n <div *ngIf=\"!revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\">\n \n <button [disabled]=\"\n (selectedRadioType === undefined || selectedRadioType === '') ||\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\n \" class=\"btn btn-default\" type=\"button\" (click)=\"clearValue()\">Clear</button>\n <button class=\"btn btn-outline me-2\" (click)=\"cancel()\">Cancel</button>\n <button class=\"btn btn-primary\" id=\"alert-toast\" (click)=\"save(selectedType)\" [disabled]=\"\n (selectedRadioType === undefined || selectedRadioType === '') ||\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\n \">\n Save\n </button>\n </div>\n </div>\n \n <!-- <div *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\"> -->\n <div *ngIf=\"selectedRadioType ==='junk'\">\n <ng-container *ngIf=\"editBtnShow\">\n <div *ngIf=\"revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\n <button\n *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"btn btn-outline me-2\" (click)=\"editValue()\"><span class=\"me-2\"><svg\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\n viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M14.6554 1.71047C14.8927 1.47315 15.1745 1.2849 15.4845 1.15646C15.7946 1.02802 16.1269 0.961914 16.4626 0.961914C16.7982 0.961914 17.1305 1.02802 17.4406 1.15646C17.7507 1.2849 18.0324 1.47315 18.2697 1.71047C18.5071 1.94779 18.6953 2.22953 18.8238 2.53961C18.9522 2.84969 19.0183 3.18202 19.0183 3.51765C19.0183 3.85327 18.9522 4.18561 18.8238 4.49568C18.6953 4.80576 18.5071 5.0875 18.2697 5.32482L6.0713 17.5233L1.10156 18.8786L2.45695 13.9089L14.6554 1.71047Z\"\n stroke=\"#344054\" stroke-width=\"1.81079\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg></span>Edit</button>\n \n </div>\n </ng-container>\n </div>\n </section>\n \n </div>\n \n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate\" id=\"duplicate\"\n [(ngModel)]=\"selectedType\" [value]=\"'duplicate'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"duplicate\">\n <span class=\"ms-5\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span class=\"ms-5 tag-class\">Duplicate</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"employee\" id=\"employee\"\n [(ngModel)]=\"selectedType\" [value]=\"'employee'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"employee\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">Employee/Staff</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"house-keeping\" id=\"house-keeping\"\n [(ngModel)]=\"selectedType\" [value]=\"'houseKeeping'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"house-keeping\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\"> House Keeping</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"junk\" id=\"junk\"\n [(ngModel)]=\"selectedType\" [value]=\"'junk'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"users?.role ==='user' && this.users?.userType ==='client' || revopsTypeValue\">\n <label class=\"form-check-label\" for=\"junk\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg></span>\n <span class=\"ms-5 tag-class\"> Junk</span>\n </label>\n </div>\n </div>\n \n \n </div>\n </div>\n\n\n <div class=\"row px-0 img-traffic mt-3 high-400px scroll-y\">\n <div class=\"col-md-3 border-gray mx-2 p-2 mt-5\" *ngFor=\"let obj of remainingImageArray\">\n <div class=\"position-relative\">\n <input *ngIf=\"!revopsTypeValue && selectedRadioType === 'duplicate'\" type=\"checkbox\"\n [checked]=\"obj.selected\"\n class=\"position-absolute absolute form-check-input cursor-pointer\"\n (change)=\"onImageCheckboxChange($event, obj, 'duplicate')\"\n [disabled]=\"obj.duplicateImagePath?.length > 0\" />\n\n <img class=\"img-src\"\n [ngClass]=\"selectedRadioType !== 'duplicate' ? 'cursor-pointer' : 'cursor-pointer'\"\n [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\" alt=\"\"\n (click)=\"handleImageClick($event, obj)\" />\n\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\n <span class=\"mb-5\">\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Group\">\n <path id=\"Vector\"\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path id=\"Vector_2\"\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n </svg>\n\n </span>\n <span class=\"header mb-5 text-center\">Preview not available</span>\n <span class=\"description mb-5 text-center\">The selected camera is not available at\n the\n moment.</span>\n </div>\n <div class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd ? obj?.templd :\n obj?.tempId}}\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg></span>\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg></span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme ? obj?.entryTme\n :obj?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\"\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\n viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='houseKeeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n </section>\n </div>\n </section>\n</div>\n\n\n<ng-template #zoomPopup let-model>\n <div class=\"p-4 m-4\">\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\n <span *ngIf=\"popupType === 'non-tagging'\" class=\"my-3\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\n <g clip-path=\"url(#clip0_2088_98337)\">\n <path\n d=\"M29.1693 13.3333V18.3333M29.1693 18.3333H24.1693M29.1693 18.3333L25.3026 14.7C24.407 13.8039 23.299 13.1493 22.0819 12.7973C20.8649 12.4453 19.5785 12.4073 18.3428 12.6869C17.1072 12.9665 15.9624 13.5545 15.0155 14.3962C14.0685 15.2378 13.3502 16.3056 12.9276 17.5M10.8359 26.6666V21.6666M10.8359 21.6666H15.8359M10.8359 21.6666L14.7026 25.3C15.5982 26.1961 16.7062 26.8506 17.9233 27.2027C19.1403 27.5547 20.4267 27.5927 21.6624 27.3131C22.898 27.0335 24.0428 26.4455 24.9897 25.6038C25.9367 24.7621 26.655 23.6943 27.0776 22.5\"\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2088_98337\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(10 10)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <!-- Heading -->\n <h5 class=\"modal-title mb-2\">\n <span *ngIf=\"popupType === 'employee'\">Tagging as employee/staff </span>\n <span *ngIf=\"popupType === 'duplicate'\">Tagging as duplicates </span>\n <span *ngIf=\"popupType === 'houseKeeping'\">Tagging as house keeping </span>\n <span *ngIf=\"popupType === 'non-tagging'\">Clear duplicates</span>\n <span *ngIf=\"popupType ==='junk'\">Tagging as junk</span>\n\n </h5>\n <p class=\"mb-3\">\n <span *ngIf=\"popupType === 'employee'\">Are you sure you want to tag this as employee/staff?</span>\n <span *ngIf=\"popupType === 'duplicate'\">Are you sure you want to tag this as duplicates? </span>\n <span *ngIf=\"popupType === 'houseKeeping'\">Are you sure you want to tag this as house keeping? </span>\n <span *ngIf=\"popupType === 'non-tagging'\">This will remove tagged duplicates and move them to\n 'Non-tag'.</span>\n <span *ngIf=\"popupType ==='junk'\">Are you sure you want to tag this as junk?</span>\n\n </p>\n </div>\n\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\n <button class=\"btn btn-outline me-2\" (click)=\"cancelSubmit()\">Cancel</button>\n <button *ngIf=\"popupType !== 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\n Yes, Tag\n </button>\n <button *ngIf=\"popupType === 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\n Yes, clear\n </button>\n </div>\n </div>\n</ng-template>\n\n\n<ng-template #raisedPopup let-model>\n <div class=\"p-4 m-4\">\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\n <span class=\"my-3\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\n <path\n d=\"M21.251 11.0806C21.7405 11.0699 22.2153 11.2487 22.5762 11.5796L23.4922 12.4204C23.8089 12.7097 23.893 13.1017 23.8652 13.4263V13.4272C23.836 13.7478 23.6954 14.0592 23.4785 14.2944C23.3699 14.413 23.2865 14.5525 23.2314 14.7036C23.1764 14.8548 23.1512 15.0155 23.1582 15.1763C23.1652 15.337 23.2035 15.4953 23.2715 15.6411C23.3394 15.7869 23.4362 15.9172 23.5547 16.0259C23.6733 16.1346 23.8117 16.2198 23.9629 16.2749C24.1141 16.33 24.2748 16.3541 24.4355 16.3472C24.5961 16.3402 24.7537 16.3017 24.8994 16.2339C25.0089 16.1829 25.1106 16.116 25.2002 16.0356L25.3701 15.8657C25.5759 15.6748 25.8385 15.5408 26.1152 15.4907C26.2972 15.4546 26.485 15.4617 26.6641 15.5103C26.8439 15.5591 27.0103 15.649 27.1494 15.7729L27.1514 15.7749L28.2598 16.7905C28.445 16.9605 28.5948 17.1658 28.7002 17.394C28.8056 17.6223 28.8648 17.8694 28.874 18.1206C28.8832 18.372 28.8423 18.6234 28.7539 18.8589C28.6655 19.0941 28.5316 19.3096 28.3594 19.4927L20.1113 28.2583C19.937 28.4434 19.7268 28.5912 19.4941 28.6938C19.2614 28.7965 19.0102 28.8522 18.7559 28.856C18.5016 28.8597 18.2493 28.8119 18.0137 28.7163C17.7779 28.6206 17.5636 28.4784 17.3838 28.2983L16.2539 27.1685C15.7511 26.6656 15.8832 25.9552 16.1514 25.5542L16.2061 25.4644C16.3241 25.2486 16.3742 25.0008 16.3496 24.7544C16.3214 24.4731 16.197 24.2102 15.9971 24.0103C15.7971 23.8103 15.5343 23.6859 15.2529 23.6577C14.9715 23.6297 14.6887 23.6995 14.4531 23.856H14.4521C14.0494 24.1222 13.3407 24.2552 12.8379 23.7515L11.6797 22.5933C11.5034 22.4169 11.364 22.2074 11.2686 21.9771C11.1731 21.7467 11.1231 21.4999 11.123 21.2505C11.123 21.001 11.1731 20.7535 11.2686 20.5229C11.364 20.2926 11.5034 20.0831 11.6797 19.9067L19.9492 11.6362C20.2954 11.2902 20.7616 11.0912 21.251 11.0806ZM21.2783 12.3804C21.1237 12.3838 20.9765 12.4468 20.8672 12.5562L12.5967 20.8257C12.5409 20.8814 12.497 20.9482 12.4668 21.021C12.4367 21.0938 12.4209 21.1717 12.4209 21.2505C12.4209 21.3292 12.4367 21.4073 12.4668 21.48C12.497 21.5528 12.541 21.6196 12.5967 21.6753L13.7061 22.7837L13.7314 22.772C14.2169 22.4485 14.7993 22.3035 15.3799 22.3608C15.9608 22.4183 16.5042 22.6747 16.917 23.0874C17.3298 23.5002 17.587 24.0436 17.6445 24.6245C17.702 25.2055 17.5565 25.7892 17.2324 26.2749L17.2305 26.2759C17.2261 26.2822 17.2226 26.2893 17.2197 26.2964L18.3018 27.3804C18.3585 27.4372 18.4266 27.482 18.501 27.5122C18.5755 27.5425 18.6559 27.5574 18.7363 27.5562C18.8166 27.5549 18.8963 27.5378 18.9697 27.5054C19.043 27.4729 19.1091 27.4261 19.1641 27.3677L27.4131 18.6021C27.4673 18.5442 27.5093 18.4761 27.5371 18.4019C27.5649 18.3276 27.5781 18.2487 27.5752 18.1694C27.5722 18.0902 27.5538 18.0119 27.5205 17.9399C27.4872 17.8679 27.4394 17.8032 27.3809 17.7495L26.3223 16.7778C26.2925 16.7885 26.2648 16.8053 26.2432 16.8286C26.0217 17.0788 25.7529 17.2827 25.4521 17.4282C25.15 17.5743 24.8214 17.6585 24.4863 17.6763C24.1511 17.694 23.815 17.6452 23.499 17.5317C23.1832 17.4183 22.8928 17.2429 22.6455 17.0161C22.3982 16.7893 22.1988 16.5153 22.0586 16.2104C21.9183 15.9055 21.8404 15.5752 21.8291 15.2397C21.8178 14.9043 21.8737 14.57 21.9932 14.2563C22.1121 13.9442 22.2915 13.6587 22.5215 13.4165L22.5547 13.3657C22.5594 13.3552 22.5607 13.3437 22.5635 13.3325L21.6973 12.5386V12.5376C21.5833 12.4331 21.4329 12.377 21.2783 12.3804Z\"\n fill=\"#00A3FF\" stroke=\"#00A3FF\" stroke-width=\"0.3\" />\n </svg>\n </span>\n <!-- Heading -->\n <h5 class=\"modal-title mb-2\">\n <span>Raise tickets for the following</span>\n\n </h5>\n <p class=\"mb-3\">\n <span>Raising a ticket for footfall count issues. Make sure all records are identified for\n validation.</span>\n\n\n </p>\n </div>\n <div class=\"row\">\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.duplicateCount ? tempRaisedPayload?.duplicateCount :'0'}}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n Duplicates\n </div>\n </div>\n </div>\n\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.employeeCount ? tempRaisedPayload?.employeeCount:'0' }}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n Employee\n </div>\n </div>\n </div>\n\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.houseKeepingCount ? tempRaisedPayload?.houseKeepingCount :'0'}}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n House Keeping\n </div>\n </div>\n </div>\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.junkCount ? tempRaisedPayload?.junkCount :'0'}}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n Junk\n </div>\n </div>\n\n </div>\n </div>\n\n <!-- Label and Textarea -->\n <div class=\"my-3\">\n <label class=\"form-label\">Description (Optional)</label>\n <textarea rows=\"3\" [(ngModel)]=\"commentText\" class=\"form-control\"\n placeholder=\"Enter description\"></textarea>\n </div>\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\n\n <button class=\"btn btn-outline w-50 me-2\" (click)=\"cancelRasied()\">Cancel</button>\n <button class=\"btn btn-primary w-50\" (click)=\"submitRaised()\">\n Raise Ticket\n </button>\n </div>\n </div>\n</ng-template>\n\n\n<ng-template #imagePopup let-model>\n <div class=\"mx-4\">\n <div class=\"row\">\n <div class=\" p-2 mb-2 mt-5\">\n <div *ngIf=\"isModalOpen\" class=\"position-relative border-gray p-2 \">\n <!-- <button *ngIf=\"canNavigateLeft\" (click)=\"navigateImage('left')\"\n class=\"btn btn-light position-absolute start-0 top-50 z-index-10\">\n \u25C0\n </button> -->\n\n <!-- Main Image -->\n <!-- <img class=\" cursor-pointer w-100 h-525px\" \n [src]=\"imageUrl + (tempModalImage?.filePath || selectImageArray?.filePath)\"\n appMagnifier alt=\"\"> -->\n <img class=\" cursor-pointer w-100 h-525px\"\n [src]=\"imageUrl + (tempModalImage?.filePath || selectImageArray?.filePath)\" alt=\"\">\n <!-- <button *ngIf=\"canNavigateRight\" (click)=\"navigateImage('right')\"\n class=\"btn btn-light position-absolute end-0 top-50 z-index-10\">\n \u25B6\n </button> -->\n\n <!-- Right arrow button -->\n <div class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{(tempModalImage || selectImageArray)?.templd ||\n (tempModalImage || selectImageArray)?.tempId}}\n <span *ngIf=\"(tempModalImage || selectImageArray)?.status ==='approved'\"\n class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg></span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.status ==='rejected'\"\n class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{(tempModalImage || selectImageArray)?.entryTme ||\n (tempModalImage || selectImageArray)?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='non-tagging'\"\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\" viewBox=\"0 0 19 18\"\n fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='duplicate'\">\n <svg *ngIf=\"(tempModalImage || selectImageArray)?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!(tempModalImage || selectImageArray)?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='houseKeeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\" viewBox=\"0 0 21 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType === 'junk'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- <div class=\"modal-footer py-2 px-0\"> -->\n\n <div class=\"w-100 py-2 mb-2 px-0 d-flex justify-content-end\">\n\n <button class=\"btn btn-outline\" (click)=\"closeImage()\">Close</button>\n\n </div>\n <!-- </div> -->\n </div>\n</ng-template>\n\n<!-- Footfall Trends Template -->\n<ng-template #footfallTrendsTemplate>\n <div class=\"row w-100 mb-1 g-1\">\n <!-- Total Footfall Card -->\n <div class=\"col-md-3\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <div class=\"d-flex align-items-center gap-2\">\n <span class=\"metric-title\">Total Footfall</span>\n <svg placement=\"top\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M4 18H9.5V19.25C9.5 19.9793 9.21027 20.6788 8.69454 21.1945C8.17882 21.7103 7.47935 22 6.75 22C6.02065 22 5.32118 21.7103 4.80546 21.1945C4.28973 20.6788 4 19.9793 4 19.25V18ZM8 6.11999C10 6.11999 11 8.99999 11 11C11 12 10.5 13 10 14.5L9.5 16H4C4 15 3.5 13.5 3.5 11C3.5 8.49999 5.498 6.11999 8 6.11999ZM20.054 14.098L19.837 15.329C19.7023 16.0396 19.2931 16.6686 18.698 17.0796C18.1029 17.4907 17.3698 17.6508 16.6576 17.5252C15.9453 17.3996 15.3111 16.9984 14.8925 16.4086C14.4739 15.8188 14.3045 15.0878 14.421 14.374L14.637 13.144L20.054 14.098ZM18.178 1.70499C20.642 2.13899 22.196 4.82999 21.762 7.29199C21.328 9.75399 20.575 11.144 20.402 12.129L14.985 11.174L14.753 9.60999C14.521 8.04599 14.203 6.97399 14.376 5.98999C14.723 4.01999 16.208 1.35799 18.178 1.70499Z\"\n fill=\"#00A3FF\" />\n </svg>\n </div>\n </div>\n <div class=\"metric-value\">{{ getCurrentFootfall() || 0 }}</div>\n <!-- [ngClass]=\"getFootfallPercentageChange() >= 0 ? 'up' : 'down'\" -->\n <div class=\"metric-trend\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M15.3327 3.99998L8.99935 10.3333L5.66602 6.99998L0.666016 12M15.3327 3.99998H11.3327M15.3327 3.99998V7.99998\"\n stroke=\"#039855\" stroke-width=\"1.18681\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n <span style=\"color: #10B981\">{{getFootfallPercentageChange() }}% </span><span>vs Yesterday</span>\n </div>\n </div>\n </div>\n <!-- Total Downtime Card -->\n <div class=\"col-md-3\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <div class=\"d-flex align-items-center gap-2\">\n <span class=\"metric-title\">Total Downtime</span>\n <div class=\"downtime-icons\">\n <svg width=\"40\" height=\"41\" viewBox=\"0 0 40 41\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <rect y=\"0.5\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\n <path\n d=\"M21.9004 12.1675C22.9958 12.1675 24.0423 12.3918 24.9977 12.7987C25.9889 13.2207 26.8809 13.8402 27.6279 14.6087C28.3734 15.3756 28.9756 16.2931 29.3857 17.3162C29.7813 18.299 29.9993 19.3756 29.9993 20.5008C29.9993 21.6277 29.7813 22.7043 29.3857 23.6871C28.9756 24.7068 28.3734 25.6244 27.6263 26.3929C26.8809 27.1598 25.9889 27.7793 24.9945 28.2012C24.0391 28.6081 22.9925 28.8325 21.8988 28.8325C20.8034 28.8325 19.7568 28.6081 18.8014 28.2012C17.8102 27.7793 16.9183 27.1598 16.1729 26.3929L16.1712 26.3912C15.4242 25.6227 14.8236 24.7052 14.4134 23.6871C14.2865 23.3707 14.1774 23.0459 14.0879 22.7127C14.2572 22.7294 14.4297 22.7378 14.6038 22.7378C14.9342 22.7378 15.2565 22.7076 15.5706 22.649C15.6227 22.8098 15.6797 22.9688 15.7415 23.1246C16.0785 23.9617 16.5732 24.7152 17.1885 25.3481C17.8037 25.981 18.5378 26.49 19.3499 26.8366C20.1328 27.1698 20.9938 27.3557 21.8988 27.3557C22.8037 27.3557 23.6631 27.1715 24.4476 26.8366C25.2614 26.49 25.9938 25.981 26.6091 25.3481C27.2243 24.7152 27.7191 23.9601 28.056 23.1246C28.3799 22.3192 28.5605 21.4334 28.5605 20.5025C28.5605 19.5715 28.3815 18.6875 28.056 17.8804C27.7191 17.0432 27.2243 16.2898 26.6091 15.6569C25.9938 15.024 25.2598 14.5149 24.4476 14.1684C23.6647 13.8352 22.8037 13.6493 21.8988 13.6493C20.9938 13.6493 20.1344 13.8335 19.3499 14.1684C19.2799 14.1985 19.21 14.2303 19.1416 14.2621C18.8747 13.8301 18.5524 13.4383 18.1829 13.0984C18.3848 12.9913 18.5915 12.8925 18.8014 12.8021C19.7601 12.3918 20.805 12.1675 21.9004 12.1675ZM20.971 16.5393C20.971 16.335 21.0524 16.1508 21.181 16.0169C21.3112 15.8829 21.4902 15.8009 21.6888 15.8009C21.8874 15.8009 22.0664 15.8829 22.1966 16.0169C22.3268 16.1508 22.4066 16.335 22.4066 16.5393V20.4271L25.2305 22.1501C25.3997 22.2539 25.5137 22.4196 25.5592 22.6021C25.6048 22.7847 25.5837 22.9856 25.4827 23.1597V23.1614C25.3818 23.3355 25.2207 23.4527 25.0433 23.4996C24.8659 23.5465 24.6706 23.5247 24.5013 23.4209H24.4997L21.3405 21.4937C21.2314 21.4318 21.1419 21.3413 21.0768 21.2342C21.0101 21.122 20.971 20.9897 20.971 20.8491V16.5393Z\"\n fill=\"#667085\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M14.3913 12.6095C16.8164 12.6095 18.7826 14.6321 18.7826 17.1269C18.7826 19.6218 16.8164 21.6444 14.3913 21.6444C11.9661 21.6444 10 19.6218 10 17.1269C10 14.6321 11.9661 12.6095 14.3913 12.6095ZM14.3913 19.7172L16.748 16.7201H15.2848V15.1261H13.4977V16.7201H12.0345L14.3913 19.7172Z\"\n fill=\"#F04438\" />\n </svg>\n </div>\n </div>\n </div>\n <div class=\"metric-value\">{{ getFormattedDowntime() || '-' }}</div>\n <div class=\"metric-trend metric-trend-placeholder\"></div>\n <!-- <div class=\"metric-tag success\" *ngIf=\"hasDowntime()\"> -->\n <!-- <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M11.6667 3.5L5.25 9.91667L2.33334 7\" stroke=\"#10B981\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg> -->\n <!-- <span>Issue submitted</span>\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4.5 2.5L7.5 5.5L10.5 2.5\" stroke=\"#10B981\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg> -->\n <!-- </div> -->\n </div>\n </div>\n\n <!-- Ticket Status Card -->\n <div class=\"col-md-3\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <span class=\"metric-title\">Ticket status</span>\n </div>\n <div class=\"metric-value\" \n [ngClass]=\"{\n 'ticket-status-raised': getTicketStatus()?.toLowerCase() === 'raised',\n 'ticket-status-closed': getTicketStatus()?.toLowerCase() === 'closed'\n }\">\n {{ getTicketStatus() === '-' ? '-' : (getTicketStatus() | titlecase) }}\n </div>\n <div class=\"metric-trend metric-trend-placeholder\"></div>\n </div>\n </div>\n <span class=\"divider\"></span>\n </div>\n</ng-template>\n\n<ng-template #resetRequestPopup let-model>\n <div class=\"p-4\">\n <div class=\"modal-header border-0 p-0 w-100\">\n <h5 class=\"modal-title mb-3 fw-bold\">\n Reset request.\n </h5>\n </div>\n <div class=\"modal-body p-0\">\n <p class=\"text-muted mb-3\">\n You're requesting to re-enable footfall tickets, disabled after three instances of exceeding 95%\n accuracy.\n </p>\n <p class=\"text-muted mb-0\">\n Please ensure future accuracy stays on or within 95%.\n </p>\n </div>\n <div class=\"modal-footer border-0 p-0 mt-4 d-flex justify-content-end gap-2\">\n <button type=\"button\" class=\"btn btn-outline\" (click)=\"cancelResetRequest()\">\n Cancel\n </button>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"submitResetRequest()\">\n Send Request\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #ticketStatusTemplate let-model>\n <!-- Ticket Review Card (shown when ticket status is raised) -->\n <div class=\"col-12 mb-3\" *ngIf=\"isTicketRaised() && getTaggingData('tagging')\">\n <div class=\"ticket-review-card\">\n <!-- Actual Footfall Header -->\n <div class=\"actual-footfall-header\">\n <span class=\"actual-footfall-number\">{{ getTaggingData('tagging')?.footfall || 0 }}</span>\n <span class=\"actual-footfall-label\">Actual Footfall</span>\n </div>\n <!-- Ticket Created By Section -->\n <div class=\"ticket-creator-section\"\n *ngIf=\"getTaggingData('tagging')?.createdByEmail || getTaggingData('tagging')?.createdAt\">\n <div class=\"d-flex align-items-center gap-2\">\n <!-- <div class=\"creator-avatar\" *ngIf=\"getTaggingData()?.createdByEmail?.profilePicture\">\n <img [src]=\"getTaggingData()?.createdByEmail?.profilePicture\" alt=\"Profile\" />\n </div> -->\n <div class=\"creator-avatar-placeholder\"\n *ngIf=\"!getTaggingData('tagging')?.createdByEmail?.profilePicture\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\n <path\n d=\"M16 10C17.6569 10 19 11.3431 19 13C19 14.6569 17.6569 16 16 16C14.3431 16 13 14.6569 13 13C13 11.3431 14.3431 10 16 10Z\"\n fill=\"#00A3FF\" />\n <path d=\"M11 22C11 19.2386 13.2386 17 16 17C18.7614 17 21 19.2386 21 22V23H11V22Z\"\n fill=\"#00A3FF\" />\n </svg>\n </div>\n <div class=\"creator-info\">\n <div class=\"creator-label\">Ticket created by</div>\n <div class=\"creator-details\">\n <span class=\"creator-email\">{{ getTaggingData('tagging')?.createdByEmail ||\n getTaggingData('tagging')?.createdByEmail || 'N/A' }}</span>\n <span class=\"creator-separator\" *ngIf=\"getTaggingData('tagging')?.createdAt\">\u2022</span>\n <span class=\"creator-time\" *ngIf=\"getTaggingData('tagging')?.createdAt\">{{\n getTaggingData('tagging')?.createdAt | date:'h:mm:ss a - d MMM yyyy' }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Ticket Revised Footfall and Metrics -->\n <div class=\"revised-footfall-section\">\n <div class=\"metrics-row\">\n <div class=\"metric-item\">\n <div class=\"metric-number blue-text\">\n {{ getTaggingData('tagging')?.revicedFootfall || 0 }}\n <span class=\"metric-percentage\">\n ({{ getTaggingData('tagging')?.revicedPerc || 0 }}%)\n </span>\n <span class=\"metric-arrow\">\u2193</span>\n </div>\n <div class=\"metric-label\">Revised footfall</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">({{ getRevisionCalculation('tagging')}}%)</div>\n <div class=\"metric-label\">Ticket%</div>\n </div>\n <div class=\"metric-divider\"></div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'duplicate') }}</div>\n <div class=\"metric-label\">Duplicates</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'employee') }}</div>\n <div class=\"metric-label\">Employee/Staff</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'junk') }}</div>\n <div class=\"metric-label\">Junk</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'houseKeeping') }}</div>\n <div class=\"metric-label\">House Keeping</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Ticket Final revision Card (shown when ticket status is closed) -->\n <div class=\"col-12 mb-3\" *ngIf=\"isTicketClosed() && getTaggingData('finalRevision')\">\n <div class=\"ticket-review-card\">\n <!-- Ticket card section in revision start -->\n\n <!-- Actual Footfall Header -->\n <div class=\"actual-footfall-header\">\n <span class=\"actual-footfall-number\">{{ getTaggingData('tagging')?.footfall || 0 }}</span>\n <span class=\"actual-footfall-label\">Actual Footfall</span>\n </div>\n <!-- Ticket Created By Section -->\n <div class=\"ticket-creator-section\"\n *ngIf=\"getTaggingData('tagging')?.createdByEmail || getTaggingData('tagging')?.createdAt\">\n <div class=\"d-flex align-items-center gap-2\">\n <!-- <div class=\"creator-avatar\" *ngIf=\"getTaggingData()?.createdByEmail?.profilePicture\">\n <img [src]=\"getTaggingData()?.createdByEmail?.profilePicture\" alt=\"Profile\" />\n </div> -->\n <div class=\"creator-avatar-placeholder\"\n *ngIf=\"!getTaggingData('tagging')?.createdByEmail?.profilePicture\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\n <path\n d=\"M16 10C17.6569 10 19 11.3431 19 13C19 14.6569 17.6569 16 16 16C14.3431 16 13 14.6569 13 13C13 11.3431 14.3431 10 16 10Z\"\n fill=\"#00A3FF\" />\n <path d=\"M11 22C11 19.2386 13.2386 17 16 17C18.7614 17 21 19.2386 21 22V23H11V22Z\"\n fill=\"#00A3FF\" />\n </svg>\n </div>\n <div class=\"creator-info\">\n <div class=\"creator-label\">Ticket created by</div>\n <div class=\"creator-details\">\n <span class=\"creator-email\">{{ getTaggingData('tagging')?.createdByEmail ||\n getTaggingData('tagging')?.createdByEmail || 'N/A' }}</span>\n <span class=\"creator-separator\" *ngIf=\"getTaggingData('tagging')?.createdAt\">\u2022</span>\n <span class=\"creator-time\" *ngIf=\"getTaggingData('tagging')?.createdAt\">{{\n getTaggingData('tagging')?.createdAt | date:'h:mm:ss a - d MMM yyyy' }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Ticket Revised Footfall and Metrics -->\n <div class=\"revised-footfall-section\">\n <div class=\"metrics-row\">\n <div class=\"metric-item\">\n <div class=\"metric-number blue-text\">\n {{ getTaggingData('tagging')?.revicedFootfall || 0 }}\n <span class=\"metric-percentage\">\n ({{ getTaggingData('tagging')?.revicedPerc || 0 }}%)\n </span>\n <span class=\"metric-arrow\">\u2193</span>\n </div>\n <div class=\"metric-label\">Revised footfall</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">({{ getRevisionCalculation('tagging')}}%)</div>\n <div class=\"metric-label\">Ticket%</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'duplicate') }}</div>\n <div class=\"metric-label\">Duplicates</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'employee') }}</div>\n <div class=\"metric-label\">Employee/Staff</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'junk') }}</div>\n <div class=\"metric-label\">Junk</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'houseKeeping') }}</div>\n <div class=\"metric-label\">House Keeping</div>\n </div>\n </div>\n </div>\n <!-- Ticket card section in revision end -->\n\n <!-- Final Revision Section -->\n <div class=\"revision-section\">\n <div class=\"revision-title\">Final revision</div>\n <div class=\"final-revision-note\">\n Please reach <a [href]=\"'mailto:' + revisionMailTo\" class=\"email-link\">{{ revisionMailTo }}</a> for any further\n discrepancies\n </div>\n <div class=\"revised-footfall-section\">\n <div class=\"metrics-row\">\n <div class=\"metric-item\">\n <div class=\"metric-number blue-text\">\n {{ getTaggingData('finalRevision')?.revicedFootfall || 0 }}\n <span class=\"metric-percentage\">\n ({{ getTaggingData('finalRevision')?.revicedPerc || 0}}%)\n </span>\n <span class=\"metric-arrow\">\u2191</span>\n </div>\n <div class=\"metric-label\">Revised footfall</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">({{ getRevisionCalculation('finalRevision')}}%)</div>\n <div class=\"metric-label\">Ticket%</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalRevision'), 'duplicate') }}\n </div>\n <div class=\"metric-label\">Duplicates</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalRevision'), 'employee') }}\n </div>\n <div class=\"metric-label\">Employee/Staff</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalRevision'), 'junk') }}</div>\n <div class=\"metric-label\">Junk</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalRevision'), 'houseKeeping')\n }}</div>\n <div class=\"metric-label\">House Keeping</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-template>", styles: ["@charset \"UTF-8\";.switch-form-card{padding:8px 16px;border-radius:4px;border-left:2px solid var(--Primary-600, #00A3FF);background:var(--Primary-25, #F6FCFF);display:flex;align-items:center;justify-content:space-between}.switch-form-card .txt-one{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:140%}.nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.badge-num-primary{border-radius:16px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;text-align:center;font-size:14px!important;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.badge-num-muted{border-radius:16px!important;background:var(--Primary-50, #F2F4F7)!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:14px;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.img-src{width:100%;height:195px;border-radius:.625rem}.img-traffic .col-md-3{width:calc(20% - 16px)!important;flex:0 0 calc(20% - 16px)!important;max-width:calc(20% - 16px)!important}.border-gray{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.img-doc-directory{color:var(--Gray-900, #101828)!important;font-size:14px!important;font-weight:600;line-height:20px;text-decoration-line:underline}.img-doc-time{color:var(--Gray-800, #1D2939);font-size:14px;font-weight:500;line-height:20px}.img-doc-value{color:var(--Gray-600, #667085);font-size:14px;font-weight:500;line-height:20px}.overflow-x{overflow-x:auto}.no-preview{border:1px solid #F04438;background:#fee4e2;border-radius:8px;stroke-width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:41px 16px}.no-preview .header{color:#f04438;font-size:20px;font-weight:700;line-height:20px}.no-preview .description{color:#f04438;font-size:12px;font-weight:500;line-height:18px}.img-nodata{width:25%;height:15%}.img-nodata1{width:15%;height:15%}.nodata-title{font-size:14px!important;font-weight:600}.img-direc{color:var(--Gray-900, #101828)!important;font-size:18px!important;font-weight:500;line-height:28px;display:flex;align-items:center;white-space:nowrap}.custom-accordion{border-radius:5px}.custom-accordion-item{margin-bottom:10px}.custom-accordion-header{background-color:#fff;border:none;cursor:pointer;padding:10px;text-align:left;width:100%;display:flex;justify-content:space-between;align-items:center}.custom-accordion{width:100%}.mainheading{width:100%;display:flex;justify-content:space-between;align-items:center;padding:19px;border:none;background:none;cursor:pointer}.mainheading-1{width:77%;display:flex;justify-content:space-between;align-items:center;padding:19px;border:none;background:none;cursor:pointer}.header-row{display:flex;align-items:center;width:100%;justify-content:space-between;gap:12px}.header-left-section{display:flex;align-items:center;gap:12px;flex-shrink:0}.header-right-section{display:flex;align-items:center;flex:1;min-width:0}.accordion-toggle-btn{background:none;border:none;cursor:pointer;padding:0;display:flex;align-items:center;flex-shrink:0}.img-dire{font-size:16px;font-weight:700}.divider{flex-grow:1;height:1px;background-color:#ddd;margin:0 10px;align-self:center}.accordion-arrow{display:flex;align-items:center}.scroll-container{max-height:400px;overflow-y:auto;overflow-x:hidden}.view-toggle .btn{border-radius:6px}.view-toggle .btn.active{background:var(--Primary-50, #EAF8FF);border-color:var(--Primary-200, #99DAFF)}.date-list-container{padding:4px 23px;width:100%}.date-list-scroll{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;max-height:300px;overflow-y:auto;overflow-x:hidden;padding-bottom:8px}.date-card{min-width:0;max-width:none;padding:16px;background:#fff;border:1px solid #D0D5DD;border-radius:8px;cursor:pointer;transition:all .2s ease;display:flex;flex-direction:column;gap:8px}.date-card:hover{box-shadow:0 2px 8px #0000001a;border-color:#00a3ff}.date-card .date-card-header{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.date-card .date-card-header .calendar-icon{flex-shrink:0}.date-card .date-card-header .date-text{color:var(--Gray-900, #101828);font-size:14px;font-weight:500;line-height:20px;flex:1}.date-card .footfall-count{color:var(--Gray-900, #101828);font-size:32px;font-weight:400;line-height:40px;margin-top:4px}.date-card .footfall-label{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px}.date-card-active{background:var(--Primary-50, #EAF8FF);border-color:var(--Primary-600, #00A3FF);border-width:2px}.date-card-active .date-text{color:var(--Primary-700, #009BF3);font-weight:600}.date-card-active .footfall-count{color:var(--Primary-700, #009BF3)}.list-view-wrapper{padding:0 8px 16px;max-height:480px;overflow-y:auto}.list-group{border:1px solid var(--Gray-200, #EAECF0);border-radius:12px;background:#fff;padding:16px 20px}.list-group-header{border-bottom:1px solid var(--Gray-200, #EAECF0);padding-bottom:12px;margin-bottom:16px!important}.list-group-header .group-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.list-group-header .group-count{background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;font-weight:600;padding:4px 10px!important;border-radius:12px!important;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.list-group-header .group-count svg{flex-shrink:0;display:block}.high-400px{min-height:auto!important;max-height:800px!important}.scroll-y{overflow-y:auto}.absolute{top:5px;right:5px;z-index:2}.slider{position:relative}.slider .previous{position:absolute;top:30%;left:2%;width:32px;height:32px;background-color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.slider .next{position:absolute;top:30%;right:2%;width:32px;height:32px;background-color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.img-src1{border-radius:10px;border:0px solid var(--Gray-400, #98A2B3);background:var(--Gray-50, #F9FAFB);width:100%;height:375px;object-fit:contain}.zoom-icon-button{position:absolute;top:10px;right:10px;z-index:10;cursor:pointer;background:#fffffff2;border-radius:50%;padding:8px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #00000026;transition:all .2s ease}.zoom-icon-button:hover{background:#fff;box-shadow:0 4px 12px #0003;transform:scale(1.05)}.zoom-icon-button svg{width:20px;height:20px}.border-gray{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);padding:0 4px}.border-gray-active{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #EAF8FF);padding:0 4px}.zone-header{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:20px}.last-visit{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.toggle-label{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.nav-dev{border-radius:8px!important;border:1px solid var(--Primary-200, #99DAFF)!important;background:var(--Primary-25, #F6FCFF)!important}.tab-active{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3)!important;font-size:14px;font-weight:500;line-height:20px}.tab-text-default{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px}.border-gray-active1{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #ffffff);padding:12px!important}.nav-item1 .nav-link1.active{border:none;border-radius:0;background:var(--Primary-50, #EAF8FF);border-bottom:2px solid #009BF3!important;padding:12px;color:var(--Primary-700, #009BF3);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.active-normal{padding:12px;color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.nav-item1 .nav-link1:hover{border:none}.tag-class{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:20px}.spent-title{color:var(--Gray-600, #475467);font-size:14px;font-weight:600;line-height:20px}.spent-value{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.spent-value1{color:var(--Primary-500, #33B5FF);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font}.w-33{width:30%}.w-45{width:45%}.view-tetory{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:600;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;text-transform:capitalize}.border-gray-tagged{border-radius:4px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #ffffff);padding:8px!important}.desc-id{color:var(--Gray-900, #101828);font-size:12px;font-style:normal;font-weight:400;line-height:20px}.active-tab{border-bottom:2px solid #0d6efd;font-weight:600;color:#0d6efd}.badge-selected{background-color:#e0f3ff;color:#0d6efd;border:1px solid #0d6efd;border-radius:20px;padding:6px 12px}.badge-unselected{background-color:#f0f0f0;color:#333;border-radius:20px;padding:6px 12px}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;appearance:textfield}.cursor-not-allowed{cursor:not-allowed!important}.title-type{color:var(--Gray-800, #1D2939);font-size:16px;font-weight:600;line-height:24px}.top-50{top:35%!important}.activePlanBtn{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #344054)!important;font-size:14px;font-weight:500!important;line-height:20px}.badge-active{border-radius:16px;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);text-align:center;font-size:12px;font-style:normal;font-weight:500;line-height:20px;mix-blend-mode:multiply}input[type=checkbox]{width:18px!important;height:18px!important;margin:-2px 5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #D0D5DD)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}::ng-deep .modal-backdrop{pointer-events:none}.meta-change.up{color:#10b981}.meta-change.down{color:#ef4444}.meta-change.neutral{color:#64748b}.split-screen-container{display:flex;height:calc(100vh - 200px);min-height:700px;gap:16px;margin-top:16px}.split-screen-container .left-panel{flex:0 0 40%;max-width:40%;overflow-y:auto;overflow-x:hidden;padding-right:8px;border-right:1px solid var(--Gray-200, #EAECF0)}.split-screen-container .right-panel{flex:1;overflow-y:auto}.thumbnail-list-section{margin-bottom:24px}.thumbnail-list-section .time-range-header{display:flex;align-items:center;gap:8px;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--Gray-200, #EAECF0)}.thumbnail-list-section .time-range-header .time-range-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.thumbnail-list-section .time-range-header .time-range-count{color:var(--Gray-600, #667085);font-size:14px;font-weight:500;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);padding:2px 10px;border-radius:16px}.thumbnail-list-section .thumbnail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.thumbnail-list-section .thumbnail-item{cursor:pointer;border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);padding:8px;transition:all .2s ease}.thumbnail-list-section .thumbnail-item:hover{border-color:var(--Primary-600, #00A3FF);box-shadow:0 2px 8px #00a3ff1a}.thumbnail-list-section .thumbnail-item.selected{border-color:var(--Primary-600, #00A3FF);border-width:2px;background:var(--Primary-50, #EAF8FF)}.thumbnail-list-section .thumbnail-item .thumbnail-image{width:100%;height:120px;object-fit:cover;border-radius:4px;margin-bottom:8px}.thumbnail-list-section .thumbnail-item .thumbnail-info{display:grid;grid-template-columns:1fr auto;align-items:flex-start;gap:8px}.thumbnail-list-section .thumbnail-item .thumbnail-info .tango-id{color:var(--Gray-900, #101828);font-size:12px;font-weight:600;line-height:16px;margin-bottom:4px;grid-column:1}.thumbnail-list-section .thumbnail-item .thumbnail-info .entry-time{color:var(--Gray-600, #667085);font-size:11px;font-weight:400;line-height:16px;grid-column:1}.thumbnail-list-section .thumbnail-item .thumbnail-info .col-md-5{grid-column:2;grid-row:1/-1;display:flex;align-items:center;justify-content:flex-end;padding:0!important;margin:0!important}.thumbnail-list-section .thumbnail-item .thumbnail-info .col-md-5 svg{display:block}.metric-card{background:var(--White, #FFF);border-radius:8px;padding:2px 2px 4px 1px;height:100%;min-height:104px;display:flex;flex-direction:column;gap:4px;flex:1}.metric-card .metric-header{display:flex;justify-content:space-between;align-items:center;flex-shrink:0;margin-bottom:0;margin-top:-4px}.metric-card .metric-header .metric-title{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.metric-card .metric-header .metric-icon,.metric-card .metric-header .footfall-icon-header{flex-shrink:0}.metric-card .metric-header .downtime-icons{position:relative;display:inline-flex;align-items:center;width:31px;height:24px}.metric-card .metric-header .downtime-icons .clock-icon{position:absolute;left:0;top:2px;z-index:1}.metric-card .metric-header .downtime-icons .alert-icon{position:absolute;right:-2px;top:-2px;z-index:2}.metric-card .metric-value{color:var(--Gray-900, #101828);font-size:32px;font-weight:400;line-height:40px;margin-top:0;margin-bottom:0}.metric-card .metric-value.ticket-status-raised{display:inline-block;width:fit-content;padding:6px 14px;border-radius:16px;background:#fef3c7;color:#92400e;font-weight:600;font-size:21px;line-height:20px}.metric-card .metric-value.ticket-status-closed{display:inline-block;width:fit-content;padding:6px 14px;border-radius:16px;background:#d1fae5;color:#10b981;font-weight:600;font-size:21px;line-height:20px}.metric-card .metric-trend{display:flex;align-items:center;gap:4px;font-size:14px;font-weight:500;line-height:20px;margin-top:0;margin-bottom:0;min-height:20px}.metric-card .metric-trend.up{color:#10b981}.metric-card .metric-trend.down{color:#f04438}.metric-card .metric-trend.metric-trend-placeholder{visibility:hidden;height:20px}.metric-card .metric-trend svg{flex-shrink:0}.metric-card .metric-tag{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:500;line-height:16px;width:fit-content}.metric-card .metric-tag.success{background:#d1fadf;color:#10b981}.metric-card .metric-tag svg{flex-shrink:0}.ticket-review-card{background:var(--White, #FFF);border-radius:12px;border:1px solid var(--Gray-200, #EAECF0);padding:20px;box-shadow:0 1px 3px #0000001a}.ticket-review-card .actual-footfall-header{background:var(--Primary-50, #EAF8FF);border-radius:8px;padding:12px 15px;margin-bottom:10px;display:flex;align-items:center;gap:4px}.ticket-review-card .actual-footfall-header .actual-footfall-number{color:var(--Gray-900, #101828);font-size:25px;font-weight:600;line-height:25px}.ticket-review-card .actual-footfall-header .actual-footfall-label{color:var(--Gray-700, #344054);font-size:16px;font-weight:500;line-height:24px}.ticket-review-card .ticket-creator-section{padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid var(--Gray-200, #EAECF0)}.ticket-review-card .ticket-creator-section .creator-avatar{width:40px;height:40px;border-radius:50%;overflow:hidden;flex-shrink:0}.ticket-review-card .ticket-creator-section .creator-avatar img{width:100%;height:100%;object-fit:cover}.ticket-review-card .ticket-creator-section .creator-avatar-placeholder{width:40px;height:40px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.ticket-review-card .ticket-creator-section .creator-info{flex:1}.ticket-review-card .ticket-creator-section .creator-info .creator-label{color:var(--Gray-600, #667085);font-size:12px;font-weight:400;line-height:18px;margin-bottom:4px}.ticket-review-card .ticket-creator-section .creator-info .creator-details{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ticket-review-card .ticket-creator-section .creator-info .creator-details .creator-email{color:var(--Gray-900, #101828);font-size:14px;font-weight:500;line-height:20px}.ticket-review-card .ticket-creator-section .creator-info .creator-details .creator-separator{color:var(--Gray-400, #98A2B3);font-size:14px}.ticket-review-card .ticket-creator-section .creator-info .creator-details .creator-time{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px}.ticket-review-card .revised-footfall-section .metrics-row{display:flex;flex-wrap:wrap;gap:24px;align-items:flex-start}.ticket-review-card .revised-footfall-section .metrics-row .metric-divider{width:1px;background-color:var(--Gray-200, #EAECF0);align-self:stretch;min-height:60px;flex-shrink:0}.ticket-review-card .revised-footfall-section .metrics-row .metric-item{flex:1;min-width:120px;display:flex;flex-direction:column;gap:4px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number{color:var(--Gray-900, #101828);font-size:24px;font-weight:600;line-height:32px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number.blue-text{color:var(--Primary-700, #009BF3)}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number.blue-text .metric-percentage{font-size:16px;font-weight:500;margin-left:4px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number.blue-text .metric-arrow{color:var(--Primary-700, #009BF3);font-size:16px;margin-left:4px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-label{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px}.ticket-review-card .revision-section{margin-top:24px;padding-top:24px;border-top:1px solid var(--Gray-200, #EAECF0)}.ticket-review-card .revision-section .revision-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px;margin-bottom:16px}.ticket-review-card .revision-section .final-revision-note{font-size:14px;font-weight:400;line-height:20px;margin-bottom:16px}.email-link{text-decoration:underline;color:#008edf}.ticket-block-alert{border-radius:8px;border:2px dashed #F04438;background:#fee4e2;padding:16px;margin-bottom:16px}.ticket-block-alert .ticket-block-alert-content{display:flex;align-items:flex-start;gap:12px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-icon{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-icon svg{width:24px;height:24px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text{flex:1;display:flex;flex-direction:column;gap:8px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-title{color:#f04438;font-size:16px;font-weight:700;line-height:24px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-description,.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-action{color:#f04438;font-size:14px;font-weight:400;line-height:20px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-action .ticket-block-alert-link{color:#f04438;text-decoration:underline;cursor:pointer;font-weight:500}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-action .ticket-block-alert-link:hover{color:#d92d20;text-decoration:underline}.ticket-request-alert{border-radius:8px;border:2px dashed #10B981;background:#d1fae5;padding:16px;margin-bottom:16px}.ticket-request-alert .ticket-request-alert-content{display:flex;align-items:flex-start;gap:12px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-icon{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-icon svg{width:24px;height:24px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-text{flex:1;display:flex;flex-direction:column;gap:8px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-text .ticket-request-alert-title{color:#10b981;font-size:16px;font-weight:700;line-height:24px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-text .ticket-request-alert-description{color:#10b981;font-size:14px;font-weight:400;line-height:20px}\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: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { 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: "directive", type: i3.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "pipe", type: i6.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i6.DatePipe, name: "date" }] });
1346
1351
  }
1347
1352
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImgRvpsComponent, decorators: [{
1348
1353
  type: Component,
1349
- args: [{ selector: "lib-img-rvps", template: "<div class=\"card mt-3\">\n <div class=\"card-header mt-3 px-0 border-bottom-0\">\n <div class=\"custom-accordion\">\n <div class=\"custom-accordion-item\">\n <!-- for new navigation changes -->\n <!-- old view while folder view -->\n <button *ngIf=\"folderView\" class=\"mainheading pb-0 custom-accordion-header\" (click)=\"toggleAccordion()\">\n <div class=\"header-row\">\n <span class=\"img-direc\" style=\"padding-left: 40px;\">Image Directory</span>\n\n <span class=\"divider\"></span>\n <span class=\"accordion-arrow\">\n <!-- Down arrow for collapsed state, up arrow for expanded state -->\n <svg *ngIf=\"!isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 1L5 5L9 1\" stroke=\"#071437\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <svg *ngIf=\"isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 5L5 1L9 5\" stroke=\"#1b84ff\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </button>\n <!-- new view while not in folder view view -->\n <div *ngIf=\"!folderView\" class=\"header-row\">\n <div class=\"header-left-section\">\n <span *ngIf=\"backnav && !imageFlow\" class=\"cursor-pointer\" (click)=\"backToFootfall()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_2585_7036)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_2585_7036\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </span>\n <!-- back from image flow -->\n <span *ngIf=\"imageFlow\" class=\"cursor-pointer\" (click)=\"backToFootfall1()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_2585_7036)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_2585_7036\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </span>\n <span class=\"img-direc\">Image Directory | {{folderDate | date:'dd MMM, yyyy'}}</span>\n </div>\n <div class=\"header-right-section\">\n <span class=\"divider\"></span>\n <button *ngIf=\"!folderView\" class=\"accordion-toggle-btn\" (click)=\"toggleAccordion()\">\n <span class=\"accordion-arrow\">\n <!-- Down arrow for collapsed state, up arrow for expanded state -->\n <svg *ngIf=\"!isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 1L5 5L9 1\" stroke=\"#071437\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <svg *ngIf=\"isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 5L5 1L9 5\" stroke=\"#1b84ff\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <section *ngIf=\"isAccordionExpanded\">\n\n <div *ngIf=\"folderView\" class=\"card-body px-0\">\n <div class=\"date-list-container\">\n <div class=\"date-list-scroll\">\n <div class=\"date-card\" *ngFor=\"let obj of dateArray; let i = index\"\n [ngClass]=\"{'date-card-active': i === selectIndex}\" (click)=\"getimages(i, obj)\">\n <div class=\"date-card-header\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\" class=\"calendar-icon\">\n <path\n d=\"M12.6667 2.66667H12V2C12 1.63181 11.7015 1.33333 11.3333 1.33333C10.9651 1.33333 10.6667 1.63181 10.6667 2V2.66667H5.33333V2C5.33333 1.63181 5.03486 1.33333 4.66667 1.33333C4.29848 1.33333 4 1.63181 4 2V2.66667H3.33333C2.59695 2.66667 2 3.26362 2 4V13.3333C2 14.0697 2.59695 14.6667 3.33333 14.6667H12.6667C13.403 14.6667 14 14.0697 14 13.3333V4C14 3.26362 13.403 2.66667 12.6667 2.66667ZM12.6667 13.3333H3.33333V6H12.6667V13.3333Z\"\n fill=\"#667085\" />\n </svg>\n <span class=\"date-text\">{{obj | date:'dd MMM'}}</span>\n <span *ngIf=\"cardDataMap[obj]?.ticketStatusLower as status\" class=\"badge ms-2\" [ngClass]=\"{\n 'badge-light-success': status === 'closed',\n 'badge-light-warning': status === 'raised',\n 'badge-light-default': status !== 'closed' && status !== 'raised'\n }\">\n {{ status === 'closed' ? 'Ticket closed' : (status === 'raised' ? 'Ticket raised' :\n (cardDataMap[obj]?.ticketStatus || '')) }}\n </span>\n </div>\n <div class=\"footfall-count\">{{ cardDataMap[obj]?.footfallCount || 0 }}</div>\n <div class=\"footfall-label\">Total footfall</div>\n </div>\n </div>\n </div>\n </div>\n\n\n\n <div *ngIf=\"!folderView\" class=\"card-body\">\n <section *ngIf=\"!imageFlow\">\n <div class=\"row\">\n <!-- Ticket Block Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'block'\" class=\"col-12 mb-3\">\n <div class=\"ticket-block-alert\">\n <div class=\"ticket-block-alert-content\">\n <div class=\"ticket-block-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"12\" fill=\"#F04438\" />\n <path d=\"M12 8V13\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n </div>\n <div class=\"ticket-block-alert-text\">\n <div class=\"ticket-block-alert-title\">\n You cannot raise ticket for next {{ getSelectedDateCardData()?.noOfBlockedDays\n || '0' }} days\n </div>\n <div class=\"ticket-block-alert-description\">\n It looks like you have achieved 95% accuracy for the three tickets raised this\n month. This limits you from raising more tickets to avoid redundancy.\n </div>\n <div class=\"ticket-block-alert-action\">\n If you still want to raise tickets, <span class=\"ticket-block-alert-link\"\n (click)=\"requestReset()\">send request</span> to reset.\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Ticket Request Success Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'request'\" class=\"col-12 mb-3\">\n <div class=\"ticket-request-alert\">\n <div class=\"ticket-request-alert-content\">\n <div class=\"ticket-request-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 21L23 12L2 3V10L17 12L2 14V21Z\" fill=\"#10B981\" />\n </svg>\n </div>\n <div class=\"ticket-request-alert-text\">\n <div class=\"ticket-request-alert-title\">\n Reset Request Sent\n </div>\n <div class=\"ticket-request-alert-description\">\n Your request to enable ticket raising has been submitted. You'll be notified\n once it's approved. Please ensure future ticket accuracy remains within the 95%\n threshold.\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- footfall trends feature -->\n <ng-container *ngTemplateOutlet=\"footfallTrendsTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"ticketStatusTemplate\"></ng-container>\n <span class=\"divider\"></span>\n <!-- footfall trends feature end -->\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\n <!-- <span *ngIf=\"backnav\" class=\"cursor-pointer\" (click)=\"backToFootfall()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_2585_7036)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_2585_7036\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </span> -->\n <!-- <span class=\"img-direc ms-2 mt-1\">{{folderDate | date:'dd MMM, yyyy'}}\n <span class=\"badge badge-light-warning mx-2\"\n *ngIf=\"!getTicketStatuses().includes('closed') && getTicketStatuses().includes('open')\">\n Ticket Raised\n </span>\n <span class=\"badge badge-light-success mx-2\"\n *ngIf=\"getTicketStatuses().includes('closed')\">Ticket Closed</span>\n\n </span> -->\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"ms-auto text-end\">\n <button [disabled]=\"!canEnableButton()\" class=\"btn btn-primary\" type=\"button\"\n (click)=\"Raised()\">\n Raise ticket\n </button>\n </div>\n </div>\n <div *ngIf=\"!folderView\" class=\"d-flex flex-wrap align-items-center justify-content-between w-100 my-2 gap-3\">\n <div class=\"nav-group bg-white border-1 btn-group w-auto\">\n <ng-container *ngIf=\"!(countData?.length > 0)\">\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('footfall')\">\n Total Footfall\n <span\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.footfallCount || 0 }}\n </span>\n </button>\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('non-tagging')\">\n Non-tags\n <span\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.nonTags || 0 }}\n </span>\n </button>\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('duplicate')\">\n Duplicated\n <span\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.duplicate || 0 }}\n </span>\n </button>\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'employee' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('employee')\">\n Employee/Staff\n <span\n [ngClass]=\"type === 'employee' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.employee || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\" [ngClass]=\"type === 'junk' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('junk')\">\n Junk\n <span\n [ngClass]=\"type === 'junk' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.junk || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'house-keeping' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('house-keeping')\">\n House Keeping\n <span\n [ngClass]=\"type === 'house-keeping' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.housekeeping || 0 }}\n </span>\n </button>\n \n \n </ng-container>\n \n </div>\n \n <div class=\"btn-group view-toggle ms-auto\" role=\"group\" aria-label=\"Toggle view\">\n <button type=\"button\" class=\"btn btn-outline px-3 py-2\" [ngClass]=\"{'active': viewMode === 'grid'}\"\n (click)=\"setViewMode('grid')\" aria-label=\"Grid view\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"3\" y=\"3\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"11\" y=\"3\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"3\" y=\"11\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"11\" y=\"11\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n </svg>\n </button>\n <button type=\"button\" class=\"btn btn-outline px-3 py-2\" [ngClass]=\"{'active': viewMode === 'list'}\"\n (click)=\"setViewMode('list')\" aria-label=\"List view\">\n <svg width=\"20\" height=\"18\" viewBox=\"0 0 20 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"2\" y=\"3\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'list' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"8\" y=\"4.5\" width=\"10\" height=\"1.5\" rx=\"0.75\" fill=\"#475467\"></rect>\n <rect x=\"8\" y=\"12.5\" width=\"10\" height=\"1.5\" rx=\"0.75\" fill=\"#475467\"></rect>\n <rect x=\"2\" y=\"11\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'list' ? '#EAF8FF' : 'none'\"></rect>\n </svg>\n </button>\n </div>\n </div>\n <ng-container *ngIf=\"!imageFlow\">\n <div *ngIf=\"type === 'footfall' && viewMode === 'grid'\" class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\n <div class=\"col text-nowrap\" *ngFor=\"let obj of objectsArray\">\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\n <li class=\"nav-item cursor-pointer\">\n <a (click)=\"selectedTimes(obj.timeRange)\"\n [ngClass]=\"selectedTime === obj?.timeRange ? 'active' : ''\"\n class=\"nav-link cursor-pointer no-border mx-3 mb-2\">\n {{obj?.timeRange}}<span class=\"mx-2\"\n [ngClass]=\"selectedTime === obj?.timeRange ? 'badge-num-primary' :'badge-num-muted'\">\n {{ obj?.count ? obj?.count : 0 }}\n </span>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </ng-container>\n\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n </div>\n <div *ngIf=\"noData\" class=\"row\">\n\n <div class=\"col-lg-12 mb-3\">\n\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column \" style=\"margin: 64px;border-radius: 8px;\nbackground: var(--Gray-50, #F9FAFB);\">\n <svg width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\" />\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\"\n stroke-width=\"13.3333\" />\n <path\n d=\"M35.332 51.9999H33.6654C32.7813 51.9999 31.9335 51.6487 31.3083 51.0236C30.6832 50.3985 30.332 49.5506 30.332 48.6666V33.6666C30.332 32.7825 30.6832 31.9347 31.3083 31.3096C31.9335 30.6844 32.7813 30.3333 33.6654 30.3333H48.6654C49.5494 30.3333 50.3973 30.6844 51.0224 31.3096C51.6475 31.9347 51.9987 32.7825 51.9987 33.6666V35.3333M45.332 41.9999H60.332C62.173 41.9999 63.6654 43.4923 63.6654 45.3333V60.3333C63.6654 62.1742 62.173 63.6666 60.332 63.6666H45.332C43.4911 63.6666 41.9987 62.1742 41.9987 60.3333V45.3333C41.9987 43.4923 43.4911 41.9999 45.332 41.9999Z\"\n stroke=\"#00A3FF\" stroke-width=\"4\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <div class=\"nodata-title my-3\">\n {{ noDataMessages[type?.toLowerCase()] || 'No data found' }}\n </div>\n\n </div>\n </div>\n\n </div>\n\n\n <!-- Split-screen layout (only shown after clicking an image) -->\n <div class=\"split-screen-container\" *ngIf=\"splitScreenEnabled && !noData && !loading\">\n <!-- Left Panel: Thumbnail List + Related Images -->\n <div class=\"left-panel\">\n <!-- Main Images List (hidden when duplicate is selected) -->\n <ng-container *ngIf=\"selectedRadioType !== 'duplicate'\">\n <div class=\"thumbnail-list-section\" *ngFor=\"let group of listViewGroups\">\n <div class=\"time-range-header\">\n <span class=\"time-range-title\">{{ group?.timeRange }}</span>\n <span class=\"time-range-count\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_2149_23440)\">\n <path\n d=\"M2 9.00077H4.75V9.62577C4.75 9.99045 4.60513 10.3402 4.34727 10.598C4.08941 10.8559 3.73967 11.0008 3.375 11.0008C3.01033 11.0008 2.66059 10.8559 2.40273 10.598C2.14487 10.3402 2 9.99045 2 9.62577V9.00077ZM4 3.06077C5 3.06077 5.5 4.50077 5.5 5.50077C5.5 6.00077 5.25 6.50077 5 7.25077L4.75 8.00077H2C2 7.50077 1.75 6.75077 1.75 5.50077C1.75 4.25077 2.749 3.06077 4 3.06077ZM10.027 7.04977L9.9185 7.66527C9.85117 8.02058 9.64656 8.33507 9.34901 8.5406C9.05146 8.74613 8.68492 8.82616 8.32878 8.76337C7.97263 8.70057 7.65557 8.49999 7.44626 8.20509C7.23695 7.91018 7.15225 7.54469 7.2105 7.18777L7.3185 6.57277L10.027 7.04977ZM9.089 0.853272C10.321 1.07027 11.098 2.41577 10.881 3.64677C10.664 4.87777 10.2875 5.57277 10.201 6.06527L7.4925 5.58777L7.3765 4.80577C7.2605 4.02377 7.1015 3.48777 7.188 2.99577C7.3615 2.01077 8.104 0.679772 9.089 0.853272Z\"\n fill=\"#00A3FF\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2149_23440\">\n <rect width=\"12\" height=\"12\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>{{ group?.data?.length || 0 }}\n </span>\n </div>\n <div class=\"thumbnail-grid\">\n <div class=\"thumbnail-item\" *ngFor=\"let obj of group?.data\"\n [ngClass]=\"{'selected': selectImageArray?.templd === obj?.templd}\"\n (click)=\"selectImageForSplitView(obj)\">\n <img class=\"thumbnail-image\" [src]=\"imageUrl + obj?.filePath\"\n (error)=\"obj.filePath = null\" alt=\"\" *ngIf=\"obj?.filePath\" />\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\"\n style=\"height: 120px; padding: 20px;\">\n <span style=\"color: #667085; font-size: 11px;\">No preview</span>\n </div>\n <div class=\"thumbnail-info\">\n <div class=\"tango-id\">Tango ID: {{ obj?.templd }}</div>\n <div class=\"entry-time\">Entry Time: {{ obj?.entryTme || obj?.entryTime}}</div>\n <!-- left panel image logo -->\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- left panel Images Section (ONLY shown when duplicate is selected) -->\n <div class=\"thumbnail-list-section\"\n *ngIf=\"selectedRadioType === 'duplicate' && remainingImagesGroups && remainingImagesGroups.length > 0\">\n <div class=\"thumbnail-list-section\" *ngFor=\"let group of remainingImagesGroups\">\n <div class=\"time-range-header\" style=\"margin-top: 16px;\">\n <span class=\"time-range-title\">{{ group?.timeRange }}</span>\n <span class=\"time-range-count\"><svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_2149_23440)\">\n <path\n d=\"M2 9.00077H4.75V9.62577C4.75 9.99045 4.60513 10.3402 4.34727 10.598C4.08941 10.8559 3.73967 11.0008 3.375 11.0008C3.01033 11.0008 2.66059 10.8559 2.40273 10.598C2.14487 10.3402 2 9.99045 2 9.62577V9.00077ZM4 3.06077C5 3.06077 5.5 4.50077 5.5 5.50077C5.5 6.00077 5.25 6.50077 5 7.25077L4.75 8.00077H2C2 7.50077 1.75 6.75077 1.75 5.50077C1.75 4.25077 2.749 3.06077 4 3.06077ZM10.027 7.04977L9.9185 7.66527C9.85117 8.02058 9.64656 8.33507 9.34901 8.5406C9.05146 8.74613 8.68492 8.82616 8.32878 8.76337C7.97263 8.70057 7.65557 8.49999 7.44626 8.20509C7.23695 7.91018 7.15225 7.54469 7.2105 7.18777L7.3185 6.57277L10.027 7.04977ZM9.089 0.853272C10.321 1.07027 11.098 2.41577 10.881 3.64677C10.664 4.87777 10.2875 5.57277 10.201 6.06527L7.4925 5.58777L7.3765 4.80577C7.2605 4.02377 7.1015 3.48777 7.188 2.99577C7.3615 2.01077 8.104 0.679772 9.089 0.853272Z\"\n fill=\"#00A3FF\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2149_23440\">\n <rect width=\"12\" height=\"12\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>{{ group?.data?.length || 0 }}</span>\n </div>\n <div class=\"thumbnail-grid\">\n <div class=\"thumbnail-item\" *ngFor=\"let obj of group?.data\" [ngClass]=\"{'selected': obj.selected}\">\n <div class=\"position-relative\">\n <input *ngIf=\"!revopsTypeValue && selectedRadioType === 'duplicate'\" type=\"checkbox\"\n [checked]=\"obj.selected\" class=\"position-absolute absolute form-check-input cursor-pointer\"\n style=\"top: 5px; right: 5px; z-index: 2;\" (change)=\"onImageCheckboxChange($event, obj, 'duplicate')\"\n (click)=\"$event.stopPropagation()\" [disabled]=\"obj.duplicateImagePath?.length > 0\" />\n <img class=\"thumbnail-image cursor-pointer\" [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\"\n alt=\"\" *ngIf=\"obj?.filePath\" (click)=\"handleImageClick($event, obj)\" />\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview cursor-pointer\" style=\"height: 120px; padding: 20px;\"\n (click)=\"handleImageClick($event, obj)\">\n <span style=\"color: #667085; font-size: 11px;\">No preview</span>\n </div>\n <div class=\"thumbnail-info\">\n <div class=\"tango-id\">Tango ID: {{ obj?.templd || obj?.tempId }}\n </div>\n <div class=\"entry-time\">Entry Time: {{ obj?.entryTme ||\n obj?.entryTime }}</div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Right Panel: Selected Image Details -->\n <div class=\"right-panel\" *ngIf=\"selectImageArray\">\n <ng-container\n *ngTemplateOutlet=\"imageDetailView; context: { $implicit: selectImageArray }\"></ng-container>\n </div>\n <div class=\"right-panel\" *ngIf=\"!selectImageArray\"\n style=\"display: flex; align-items: center; justify-content: center; color: var(--Gray-500, #667085);\">\n <div style=\"text-align: center;\">\n <p style=\"font-size: 16px; font-weight: 500;\">Select an image to view details</p>\n </div>\n </div>\n </div>\n\n <!-- Image Detail View Template for Split-Screen Right Panel -->\n <ng-template #imageDetailView let-obj>\n <div class=\"border-gray p-3 mb-3\">\n <div class=\"position-relative\">\n <img class=\"img-src1\" [src]=\"imageUrl + obj?.filePath\" alt=\"\" *ngIf=\"obj?.filePath\" />\n <!-- Zoom Icon -->\n <div class=\"zoom-icon-button\" (click)=\"openImageZoomModal(imageUrl, obj)\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M18.3333 18.3333L15 15M16.6667 9.16667C16.6667 13.3067 13.3067 16.6667 9.16667 16.6667C5.02667 16.6667 1.66667 13.3067 1.66667 9.16667C1.66667 5.02667 5.02667 1.66667 9.16667 1.66667C13.3067 1.66667 16.6667 5.02667 16.6667 9.16667Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M9.16667 6.66667V11.6667M6.66667 9.16667H11.6667\" stroke=\"#475467\" stroke-width=\"2\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </div>\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\" style=\"height: 375px;\">\n <span class=\"mb-5\">\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Group\">\n <path id=\"Vector\" d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path id=\"Vector_2\"\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n </svg>\n </span>\n <span class=\"header mb-5 text-center\">Preview not available</span>\n <span class=\"description mb-5 text-center\">The selected camera is not available at\n the moment.</span>\n </div>\n </div>\n <div class=\"row px-2 mb-2 mt-3\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd}}\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\">\n <svg style=\"width: 20px; height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\"\n height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\">\n <svg style=\"width: 20px; height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\"\n height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme || obj?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\" viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n <div class=\"border-gray p-3\">\n <div class=\"row mb-3\">\n <div class=\"col-md-6 title-type\">Select non-shopper type</div>\n <!-- <div class=\"col-md-6 text-end\" \n *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\"> -->\n <div class=\"col-md-6 text-end\">\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"mb-3 text-end d-inline-flex align-items-center gap-2\">\n <!-- Clear Tag Button (visible when Edit button OR Save/Cancel buttons are visible) -->\n <button *ngIf=\"!revopsTypeValue || (revopsTypeValue && editBtnShow)\"\n [disabled]=\"(selectedRadioType === undefined || selectedRadioType === '') || (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\"\n class=\"btn btn-clear-tag d-inline-flex align-items-center justify-content-center\" type=\"button\"\n (click)=\"clearValue()\">\n <svg width=\"49\" height=\"49\" viewBox=\"0 0 49 49\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_516_96841)\">\n <rect x=\"2.16797\" y=\"1.08447\" width=\"44.0342\" height=\"44.0284\" rx=\"8.67445\"\n fill=\"#FEF3F2\" />\n <rect x=\"2.71012\" y=\"1.62663\" width=\"42.9499\" height=\"42.9441\" rx=\"8.13229\"\n stroke=\"#FEF3F2\" stroke-width=\"1.08431\" />\n <path\n d=\"M33.4893 21.3613L33.4912 21.3643C34.0533 21.9297 34.369 22.6949 34.3691 23.4922C34.3691 24.2895 34.0533 25.0546 33.4912 25.6201L26.7256 32.3857C26.4454 32.6661 26.1122 32.8882 25.7461 33.04C25.3798 33.1919 24.9873 33.2705 24.5908 33.2705C24.1942 33.2705 23.801 33.1919 23.4346 33.04C23.0686 32.8883 22.7361 32.6659 22.4561 32.3857L20.7676 30.6992L22.3682 29.0986L24.0557 30.7842L24.0566 30.7852C24.1267 30.8553 24.2102 30.9112 24.3018 30.9492C24.3933 30.9872 24.4917 31.0068 24.5908 31.0068C24.6899 31.0068 24.7883 30.9872 24.8799 30.9492C24.9713 30.9113 25.0541 30.8552 25.124 30.7852H25.125L31.8877 24.0215C32.0267 23.8804 32.1055 23.6903 32.1055 23.4922C32.1054 23.2941 32.0267 23.1039 31.8877 22.9629L30.1963 21.2715L31.7979 19.6699L33.4893 21.3613ZM24.6982 12.9336C24.9571 12.9594 25.2011 13.0733 25.3867 13.2588L30.1973 18.0693L28.5957 19.6709L24.1162 15.1914H16.2852V23.0225L20.7666 27.499L19.166 29.0996L14.3535 24.293C14.1411 24.0807 14.0215 23.7925 14.0215 23.4922V14.0596C14.0217 13.4346 14.5283 12.9277 15.1533 12.9277H24.5859L24.6982 12.9336ZM19.8789 17.6436C20.5038 17.6436 21.0103 18.1506 21.0107 18.7754C21.0107 19.4005 20.504 19.9082 19.8789 19.9082H19.8691C19.2442 19.908 18.7373 19.4004 18.7373 18.7754C18.7378 18.1508 19.2445 17.6438 19.8691 17.6436H19.8789Z\"\n fill=\"#B42318\" />\n <path d=\"M33.1699 14.0845L15.1699 32.0845\" stroke=\"#B42318\" stroke-width=\"2\"\n stroke-linecap=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_516_96841\" x=\"-0.000643253\" y=\"0.000166655\" width=\"48.3724\"\n height=\"48.3655\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1.08431\" />\n <feGaussianBlur stdDeviation=\"1.08431\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_516_96841\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_516_96841\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </button>\n <!-- Cancel and Save Buttons (when !revopsTypeValue) -->\n <div *ngIf=\"!revopsTypeValue\">\n <button class=\"btn btn-outline me-2\" (click)=\"cancel()\">Cancel</button>\n <button class=\"btn btn-primary\" id=\"alert-toast\" (click)=\"save(selectedType)\"\n [disabled]=\"(selectedRadioType === undefined || selectedRadioType === '') || (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\">Save</button>\n </div>\n <!-- Edit Button (when revopsTypeValue && editBtnShow) -->\n <div *ngIf=\"revopsTypeValue && editBtnShow\">\n <button class=\"btn btn-outline me-2\" (click)=\"editValue()\">\n <span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\n viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M14.6554 1.71047C14.8927 1.47315 15.1745 1.2849 15.4845 1.15646C15.7946 1.02802 16.1269 0.961914 16.4626 0.961914C16.7982 0.961914 17.1305 1.02802 17.4406 1.15646C17.7507 1.2849 18.0324 1.47315 18.2697 1.71047C18.5071 1.94779 18.6953 2.22953 18.8238 2.53961C18.9522 2.84969 19.0183 3.18202 19.0183 3.51765C19.0183 3.85327 18.9522 4.18561 18.8238 4.49568C18.6953 4.80576 18.5071 5.0875 18.2697 5.32482L6.0713 17.5233L1.10156 18.8786L2.45695 13.9089L14.6554 1.71047Z\"\n stroke=\"#344054\" stroke-width=\"1.81079\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg></span>Edit\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate\" id=\"duplicate-split\"\n [(ngModel)]=\"selectedType\" [value]=\"'duplicate'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"duplicate-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">Duplicate</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"employee\" id=\"employee-split\"\n [(ngModel)]=\"selectedType\" [value]=\"'employee'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"employee-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">Employee/Staff</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"house-keeping\" id=\"house-keeping-split\"\n [(ngModel)]=\"selectedType\" [value]=\"'house-keeping'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"house-keeping-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\" viewBox=\"0 0 21 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">House Keeping</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"junk\" id=\"junk-split\"\n [(ngModel)]=\"selectedType\" [value]=\"'junk'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"junk-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\n fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg></span>\n <span class=\"ms-5 tag-class\">Junk</span>\n </label>\n </div>\n <div class=\"mt-3\">\n <label class=\"form-label\">Remarks (Optional)</label>\n <textarea class=\"form-control\" rows=\"3\" placeholder=\"Comment here\" [(ngModel)]=\"userComment\"></textarea>\n </div>\n </div>\n </ng-template>\n\n <!-- Grid/List View (shown when split-screen is not enabled) -->\n <div class=\"row px-0 img-traffic contain high-400px scroll-y\"\n *ngIf=\"viewMode === 'grid' && !noData && !loading && !splitScreenEnabled\">\n <ng-container *ngFor=\"let obj of imagesArrayData\">\n <ng-container *ngTemplateOutlet=\"imageCard; context: { $implicit: obj }\"></ng-container>\n </ng-container>\n </div>\n\n <div class=\"list-view-wrapper\"\n *ngIf=\"viewMode === 'list' && !noData && !loading && !splitScreenEnabled\">\n <div class=\"list-group mb-5\" *ngFor=\"let group of listViewGroups\">\n <div class=\"list-group-header d-flex align-items-center mb-3\">\n <div class=\"group-title\">{{ group?.timeRange }}</div>\n <span class=\"group-count badge badge-light-default ms-2\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_2149_23440)\">\n <path\n d=\"M2 9.00077H4.75V9.62577C4.75 9.99045 4.60513 10.3402 4.34727 10.598C4.08941 10.8559 3.73967 11.0008 3.375 11.0008C3.01033 11.0008 2.66059 10.8559 2.40273 10.598C2.14487 10.3402 2 9.99045 2 9.62577V9.00077ZM4 3.06077C5 3.06077 5.5 4.50077 5.5 5.50077C5.5 6.00077 5.25 6.50077 5 7.25077L4.75 8.00077H2C2 7.50077 1.75 6.75077 1.75 5.50077C1.75 4.25077 2.749 3.06077 4 3.06077ZM10.027 7.04977L9.9185 7.66527C9.85117 8.02058 9.64656 8.33507 9.34901 8.5406C9.05146 8.74613 8.68492 8.82616 8.32878 8.76337C7.97263 8.70057 7.65557 8.49999 7.44626 8.20509C7.23695 7.91018 7.15225 7.54469 7.2105 7.18777L7.3185 6.57277L10.027 7.04977ZM9.089 0.853272C10.321 1.07027 11.098 2.41577 10.881 3.64677C10.664 4.87777 10.2875 5.57277 10.201 6.06527L7.4925 5.58777L7.3765 4.80577C7.2605 4.02377 7.1015 3.48777 7.188 2.99577C7.3615 2.01077 8.104 0.679772 9.089 0.853272Z\"\n fill=\"#00A3FF\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2149_23440\">\n <rect width=\"12\" height=\"12\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>{{ group?.data?.length || 0 }}\n </span>\n </div>\n <div class=\"row gx-4 list-group-row\">\n <ng-container *ngFor=\"let obj of group?.data\">\n <ng-container\n *ngTemplateOutlet=\"imageCard; context: { $implicit: obj }\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n\n <ng-template #imageCard let-obj>\n <!-- main image card selection section-->\n <div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\n class=\"col-md-3 border-gray mx-2 p-2 mt-5\">\n <!-- Condition: Only show if not duplicate OR duplicate with non-empty duplicateImagePath -->\n <ng-container>\n <img class=\"img-src cursor-pointer\" [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\" alt=\"\"\n (click)=\"selectImageForSplitView(obj)\" />\n </ng-container>\n \n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\n <span class=\"mb-5\">\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Group\">\n <path id=\"Vector\" d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path id=\"Vector_2\"\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n </svg>\n \n </span>\n <span class=\"header mb-5 text-center\">Preview not available</span>\n <span class=\"description mb-5 text-center\">The selected camera is not available at\n the\n moment.</span>\n </div>\n <div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\n class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd}} <span\n *ngIf=\"(type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\n class=\"mx-2 badge badge-light-primary\">{{obj.duplicateImagePath?.length}}\n </span>\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\">\n <svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\"\n height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\">\n <svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\"\n height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n \n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </ng-template>\n\n </div>\n </section>\n\n <!-- full image View -->\n <section *ngIf=\"imageFlow\">\n <div class=\"row\">\n <!-- Ticket Block Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'block'\" class=\"col-12 mb-3\">\n <div class=\"ticket-block-alert\">\n <div class=\"ticket-block-alert-content\">\n <div class=\"ticket-block-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"12\" fill=\"#F04438\" />\n <path d=\"M12 8V13\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n </div>\n <div class=\"ticket-block-alert-text\">\n <div class=\"ticket-block-alert-title\">\n You cannot raise ticket for next {{ getSelectedDateCardData()?.noOfBlockedDays\n || '0' }} days\n </div>\n <div class=\"ticket-block-alert-description\">\n It looks like you have achieved 95% accuracy for the three tickets raised this\n month. This limits you from raising more tickets to avoid redundancy.\n </div>\n <div class=\"ticket-block-alert-action\">\n If you still want to raise tickets, <span class=\"ticket-block-alert-link\"\n (click)=\"requestReset()\">send request</span> to reset.\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Ticket Request Success Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'request'\" class=\"col-12 mb-3\">\n <div class=\"ticket-request-alert\">\n <div class=\"ticket-request-alert-content\">\n <div class=\"ticket-request-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 21L23 12L2 3V10L17 12L2 14V21Z\" fill=\"#10B981\" />\n </svg>\n </div>\n <div class=\"ticket-request-alert-text\">\n <div class=\"ticket-request-alert-title\">\n Reset Request Sent\n </div>\n <div class=\"ticket-request-alert-description\">\n Your request to enable ticket raising has been submitted. You'll be notified\n once it's approved. Please ensure future ticket accuracy remains within the 95%\n threshold.\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\n <ng-container *ngTemplateOutlet=\"footfallTrendsTemplate\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"ticketStatusTemplate\"></ng-container>\n <span class=\"divider\"></span>\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"ms-auto text-end\">\n {{getTicketStatus()}}\n <button [disabled]=\"!canEnableButton()\" class=\"btn btn-primary\" type=\"button\"\n (click)=\"Raised()\">\n Raise ticket\n </button>\n </div>\n </div>\n <div class=\"nav-group bg-white border-1 btn-group w-auto\">\n <ng-container *ngIf=\"!(countData?.length > 0)\">\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('footfall')\">\n Total Footfall\n <span\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.footfallCount || 0 }}\n </span>\n </button>\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('non-tagging')\">\n Non-tags\n <span\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.nonTags || 0 }}\n </span>\n </button>\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('duplicate')\">\n Duplicated\n <span\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.duplicate || 0 }}\n </span>\n </button>\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'employee' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('employee')\">\n Employee/Staff\n <span\n [ngClass]=\"type === 'employee' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.employee || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'junk' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('junk')\">\n Junk\n <span\n [ngClass]=\"type === 'junk' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.junk || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'house-keeping' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('house-keeping')\">\n House Keeping\n <span\n [ngClass]=\"type === 'house-keeping' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.housekeeping || 0 }}\n </span>\n </button>\n\n </ng-container>\n\n </div>\n\n <div class=\"row mx-0 border-gray img-traffic\" *ngIf=\"!noData && !loading\">\n <div class=\"col-md-6 p-2 mb-2 mt-5\">\n <div class=\"position-relative border-gray p-2 \">\n <!-- Main Image -->\n <!-- <img class=\"img-src cursor-pointer h-450px\"\n (click)=\"selectedImageArray(imageUrl, selectImageArray)\"\n [src]=\"imageUrl + selectImageArray?.filePath\" appMagnifier alt=\"\"> -->\n <img class=\"img-src cursor-pointer h-450px\" (click)=\"selectedImageArray(imageUrl, selectImageArray)\"\n [src]=\"imageUrl + selectImageArray?.filePath\" alt=\"\">\n \n <!-- Right arrow button -->\n <div class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{selectImageArray?.templd}}\n <span *ngIf=\"selectImageArray?.status ==='approved'\" class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg></span>\n <span *ngIf=\"selectImageArray?.status ==='rejected'\" class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg></span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{(tempModalImage ||\n selectImageArray)?.entryTme || (tempModalImage ||\n selectImageArray)?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='non-tagging'\"\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\" viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='duplicate'\">\n <svg *ngIf=\"selectImageArray?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!selectImageArray?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\n height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"col-md-6 p-2 mb-2 mt-5\">\n <div class=\"mx-2 \">\n <div class=\"row\">\n <div class=\"col-md-6 title-type\">\n Select non-shopper type\n </div>\n \n \n <!-- <section class=\"col-md-6 text-end\"\n *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\"> -->\n <section class=\"col-md-6 text-end\">\n \n <div *ngIf=\"!revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\">\n \n <button [disabled]=\"\n (selectedRadioType === undefined || selectedRadioType === '') ||\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\n \" class=\"btn btn-default\" type=\"button\" (click)=\"clearValue()\">Clear</button>\n <button class=\"btn btn-outline me-2\" (click)=\"cancel()\">Cancel</button>\n <button class=\"btn btn-primary\" id=\"alert-toast\" (click)=\"save(selectedType)\" [disabled]=\"\n (selectedRadioType === undefined || selectedRadioType === '') ||\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\n \">\n Save\n </button>\n </div>\n </div>\n \n <!-- <div *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\"> -->\n <div *ngIf=\"selectedRadioType ==='junk'\">\n <ng-container *ngIf=\"editBtnShow\">\n <div *ngIf=\"revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\n <button\n *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"btn btn-outline me-2\" (click)=\"editValue()\"><span class=\"me-2\"><svg\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\n viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M14.6554 1.71047C14.8927 1.47315 15.1745 1.2849 15.4845 1.15646C15.7946 1.02802 16.1269 0.961914 16.4626 0.961914C16.7982 0.961914 17.1305 1.02802 17.4406 1.15646C17.7507 1.2849 18.0324 1.47315 18.2697 1.71047C18.5071 1.94779 18.6953 2.22953 18.8238 2.53961C18.9522 2.84969 19.0183 3.18202 19.0183 3.51765C19.0183 3.85327 18.9522 4.18561 18.8238 4.49568C18.6953 4.80576 18.5071 5.0875 18.2697 5.32482L6.0713 17.5233L1.10156 18.8786L2.45695 13.9089L14.6554 1.71047Z\"\n stroke=\"#344054\" stroke-width=\"1.81079\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg></span>Edit</button>\n \n </div>\n </ng-container>\n </div>\n </section>\n \n </div>\n \n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate\" id=\"duplicate\"\n [(ngModel)]=\"selectedType\" [value]=\"'duplicate'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"duplicate\">\n <span class=\"ms-5\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span class=\"ms-5 tag-class\">Duplicate</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"employee\" id=\"employee\"\n [(ngModel)]=\"selectedType\" [value]=\"'employee'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"employee\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">Employee/Staff</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"house-keeping\" id=\"house-keeping\"\n [(ngModel)]=\"selectedType\" [value]=\"'house-keeping'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"house-keeping\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\"> House Keeping</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"junk\" id=\"junk\"\n [(ngModel)]=\"selectedType\" [value]=\"'junk'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"users?.role ==='user' && this.users?.userType ==='client' || revopsTypeValue\">\n <label class=\"form-check-label\" for=\"junk\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg></span>\n <span class=\"ms-5 tag-class\"> Junk</span>\n </label>\n </div>\n </div>\n \n \n </div>\n </div>\n\n\n <div class=\"row px-0 img-traffic mt-3 high-400px scroll-y\">\n <div class=\"col-md-3 border-gray mx-2 p-2 mt-5\" *ngFor=\"let obj of remainingImageArray\">\n <div class=\"position-relative\">\n <input *ngIf=\"!revopsTypeValue && selectedRadioType === 'duplicate'\" type=\"checkbox\"\n [checked]=\"obj.selected\"\n class=\"position-absolute absolute form-check-input cursor-pointer\"\n (change)=\"onImageCheckboxChange($event, obj, 'duplicate')\"\n [disabled]=\"obj.duplicateImagePath?.length > 0\" />\n\n <img class=\"img-src\"\n [ngClass]=\"selectedRadioType !== 'duplicate' ? 'cursor-pointer' : 'cursor-pointer'\"\n [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\" alt=\"\"\n (click)=\"handleImageClick($event, obj)\" />\n\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\n <span class=\"mb-5\">\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Group\">\n <path id=\"Vector\"\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path id=\"Vector_2\"\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n </svg>\n\n </span>\n <span class=\"header mb-5 text-center\">Preview not available</span>\n <span class=\"description mb-5 text-center\">The selected camera is not available at\n the\n moment.</span>\n </div>\n <div class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd ? obj?.templd :\n obj?.tempId}}\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg></span>\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg></span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme ? obj?.entryTme\n :obj?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\"\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\n viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n </section>\n </div>\n </section>\n</div>\n\n\n<ng-template #zoomPopup let-model>\n <div class=\"p-4 m-4\">\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\n <span *ngIf=\"popupType === 'non-tagging'\" class=\"my-3\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\n <g clip-path=\"url(#clip0_2088_98337)\">\n <path\n d=\"M29.1693 13.3333V18.3333M29.1693 18.3333H24.1693M29.1693 18.3333L25.3026 14.7C24.407 13.8039 23.299 13.1493 22.0819 12.7973C20.8649 12.4453 19.5785 12.4073 18.3428 12.6869C17.1072 12.9665 15.9624 13.5545 15.0155 14.3962C14.0685 15.2378 13.3502 16.3056 12.9276 17.5M10.8359 26.6666V21.6666M10.8359 21.6666H15.8359M10.8359 21.6666L14.7026 25.3C15.5982 26.1961 16.7062 26.8506 17.9233 27.2027C19.1403 27.5547 20.4267 27.5927 21.6624 27.3131C22.898 27.0335 24.0428 26.4455 24.9897 25.6038C25.9367 24.7621 26.655 23.6943 27.0776 22.5\"\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2088_98337\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(10 10)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <!-- Heading -->\n <h5 class=\"modal-title mb-2\">\n <span *ngIf=\"popupType === 'employee'\">Tagging as employee/staff </span>\n <span *ngIf=\"popupType === 'duplicate'\">Tagging as duplicates </span>\n <span *ngIf=\"popupType === 'house-keeping'\">Tagging as house keeping </span>\n <span *ngIf=\"popupType === 'non-tagging'\">Clear duplicates</span>\n <span *ngIf=\"popupType ==='junk'\">Tagging as junk</span>\n\n </h5>\n <p class=\"mb-3\">\n <span *ngIf=\"popupType === 'employee'\">Are you sure you want to tag this as employee/staff?</span>\n <span *ngIf=\"popupType === 'duplicate'\">Are you sure you want to tag this as duplicates? </span>\n <span *ngIf=\"popupType === 'house-keeping'\">Are you sure you want to tag this as house keeping? </span>\n <span *ngIf=\"popupType === 'non-tagging'\">This will remove tagged duplicates and move them to\n 'Non-tag'.</span>\n <span *ngIf=\"popupType ==='junk'\">Are you sure you want to tag this as junk?</span>\n\n </p>\n </div>\n\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\n <button class=\"btn btn-outline me-2\" (click)=\"cancelSubmit()\">Cancel</button>\n <button *ngIf=\"popupType !== 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\n Yes, Tag\n </button>\n <button *ngIf=\"popupType === 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\n Yes, clear\n </button>\n </div>\n </div>\n</ng-template>\n\n\n<ng-template #raisedPopup let-model>\n <div class=\"p-4 m-4\">\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\n <span class=\"my-3\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\n <path\n d=\"M21.251 11.0806C21.7405 11.0699 22.2153 11.2487 22.5762 11.5796L23.4922 12.4204C23.8089 12.7097 23.893 13.1017 23.8652 13.4263V13.4272C23.836 13.7478 23.6954 14.0592 23.4785 14.2944C23.3699 14.413 23.2865 14.5525 23.2314 14.7036C23.1764 14.8548 23.1512 15.0155 23.1582 15.1763C23.1652 15.337 23.2035 15.4953 23.2715 15.6411C23.3394 15.7869 23.4362 15.9172 23.5547 16.0259C23.6733 16.1346 23.8117 16.2198 23.9629 16.2749C24.1141 16.33 24.2748 16.3541 24.4355 16.3472C24.5961 16.3402 24.7537 16.3017 24.8994 16.2339C25.0089 16.1829 25.1106 16.116 25.2002 16.0356L25.3701 15.8657C25.5759 15.6748 25.8385 15.5408 26.1152 15.4907C26.2972 15.4546 26.485 15.4617 26.6641 15.5103C26.8439 15.5591 27.0103 15.649 27.1494 15.7729L27.1514 15.7749L28.2598 16.7905C28.445 16.9605 28.5948 17.1658 28.7002 17.394C28.8056 17.6223 28.8648 17.8694 28.874 18.1206C28.8832 18.372 28.8423 18.6234 28.7539 18.8589C28.6655 19.0941 28.5316 19.3096 28.3594 19.4927L20.1113 28.2583C19.937 28.4434 19.7268 28.5912 19.4941 28.6938C19.2614 28.7965 19.0102 28.8522 18.7559 28.856C18.5016 28.8597 18.2493 28.8119 18.0137 28.7163C17.7779 28.6206 17.5636 28.4784 17.3838 28.2983L16.2539 27.1685C15.7511 26.6656 15.8832 25.9552 16.1514 25.5542L16.2061 25.4644C16.3241 25.2486 16.3742 25.0008 16.3496 24.7544C16.3214 24.4731 16.197 24.2102 15.9971 24.0103C15.7971 23.8103 15.5343 23.6859 15.2529 23.6577C14.9715 23.6297 14.6887 23.6995 14.4531 23.856H14.4521C14.0494 24.1222 13.3407 24.2552 12.8379 23.7515L11.6797 22.5933C11.5034 22.4169 11.364 22.2074 11.2686 21.9771C11.1731 21.7467 11.1231 21.4999 11.123 21.2505C11.123 21.001 11.1731 20.7535 11.2686 20.5229C11.364 20.2926 11.5034 20.0831 11.6797 19.9067L19.9492 11.6362C20.2954 11.2902 20.7616 11.0912 21.251 11.0806ZM21.2783 12.3804C21.1237 12.3838 20.9765 12.4468 20.8672 12.5562L12.5967 20.8257C12.5409 20.8814 12.497 20.9482 12.4668 21.021C12.4367 21.0938 12.4209 21.1717 12.4209 21.2505C12.4209 21.3292 12.4367 21.4073 12.4668 21.48C12.497 21.5528 12.541 21.6196 12.5967 21.6753L13.7061 22.7837L13.7314 22.772C14.2169 22.4485 14.7993 22.3035 15.3799 22.3608C15.9608 22.4183 16.5042 22.6747 16.917 23.0874C17.3298 23.5002 17.587 24.0436 17.6445 24.6245C17.702 25.2055 17.5565 25.7892 17.2324 26.2749L17.2305 26.2759C17.2261 26.2822 17.2226 26.2893 17.2197 26.2964L18.3018 27.3804C18.3585 27.4372 18.4266 27.482 18.501 27.5122C18.5755 27.5425 18.6559 27.5574 18.7363 27.5562C18.8166 27.5549 18.8963 27.5378 18.9697 27.5054C19.043 27.4729 19.1091 27.4261 19.1641 27.3677L27.4131 18.6021C27.4673 18.5442 27.5093 18.4761 27.5371 18.4019C27.5649 18.3276 27.5781 18.2487 27.5752 18.1694C27.5722 18.0902 27.5538 18.0119 27.5205 17.9399C27.4872 17.8679 27.4394 17.8032 27.3809 17.7495L26.3223 16.7778C26.2925 16.7885 26.2648 16.8053 26.2432 16.8286C26.0217 17.0788 25.7529 17.2827 25.4521 17.4282C25.15 17.5743 24.8214 17.6585 24.4863 17.6763C24.1511 17.694 23.815 17.6452 23.499 17.5317C23.1832 17.4183 22.8928 17.2429 22.6455 17.0161C22.3982 16.7893 22.1988 16.5153 22.0586 16.2104C21.9183 15.9055 21.8404 15.5752 21.8291 15.2397C21.8178 14.9043 21.8737 14.57 21.9932 14.2563C22.1121 13.9442 22.2915 13.6587 22.5215 13.4165L22.5547 13.3657C22.5594 13.3552 22.5607 13.3437 22.5635 13.3325L21.6973 12.5386V12.5376C21.5833 12.4331 21.4329 12.377 21.2783 12.3804Z\"\n fill=\"#00A3FF\" stroke=\"#00A3FF\" stroke-width=\"0.3\" />\n </svg>\n </span>\n <!-- Heading -->\n <h5 class=\"modal-title mb-2\">\n <span>Raise tickets for the following</span>\n\n </h5>\n <p class=\"mb-3\">\n <span>Raising a ticket for footfall count issues. Make sure all records are identified for\n validation.</span>\n\n\n </p>\n </div>\n <div class=\"row\">\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.duplicateCount ? tempRaisedPayload?.duplicateCount :'0'}}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n Duplicates\n </div>\n </div>\n </div>\n\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.employeeCount ? tempRaisedPayload?.employeeCount:'0' }}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n Employee\n </div>\n </div>\n </div>\n\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.houseKeepingCount ? tempRaisedPayload?.houseKeepingCount :'0'}}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n House Keeping\n </div>\n </div>\n </div>\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.junkCount ? tempRaisedPayload?.junkCount :'0'}}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n Junk\n </div>\n </div>\n\n </div>\n </div>\n\n <!-- Label and Textarea -->\n <div class=\"my-3\">\n <label class=\"form-label\">Description (Optional)</label>\n <textarea rows=\"3\" [(ngModel)]=\"commentText\" class=\"form-control\"\n placeholder=\"Enter description\"></textarea>\n </div>\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\n\n <button class=\"btn btn-outline w-50 me-2\" (click)=\"cancelRasied()\">Cancel</button>\n <button class=\"btn btn-primary w-50\" (click)=\"submitRaised()\">\n Raise Ticket\n </button>\n </div>\n </div>\n</ng-template>\n\n\n<ng-template #imagePopup let-model>\n <div class=\"mx-4\">\n <div class=\"row\">\n <div class=\" p-2 mb-2 mt-5\">\n <div *ngIf=\"isModalOpen\" class=\"position-relative border-gray p-2 \">\n <!-- <button *ngIf=\"canNavigateLeft\" (click)=\"navigateImage('left')\"\n class=\"btn btn-light position-absolute start-0 top-50 z-index-10\">\n \u25C0\n </button> -->\n\n <!-- Main Image -->\n <!-- <img class=\" cursor-pointer w-100 h-525px\" \n [src]=\"imageUrl + (tempModalImage?.filePath || selectImageArray?.filePath)\"\n appMagnifier alt=\"\"> -->\n <img class=\" cursor-pointer w-100 h-525px\"\n [src]=\"imageUrl + (tempModalImage?.filePath || selectImageArray?.filePath)\" alt=\"\">\n <!-- <button *ngIf=\"canNavigateRight\" (click)=\"navigateImage('right')\"\n class=\"btn btn-light position-absolute end-0 top-50 z-index-10\">\n \u25B6\n </button> -->\n\n <!-- Right arrow button -->\n <div class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{(tempModalImage || selectImageArray)?.templd ||\n (tempModalImage || selectImageArray)?.tempId}}\n <span *ngIf=\"(tempModalImage || selectImageArray)?.status ==='approved'\"\n class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg></span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.status ==='rejected'\"\n class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{(tempModalImage || selectImageArray)?.entryTme ||\n (tempModalImage || selectImageArray)?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n {{(tempModalImage || selectImageArray)?.revopsType}}\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='non-tagging'\"\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\" viewBox=\"0 0 19 18\"\n fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='duplicate'\">\n <svg *ngIf=\"(tempModalImage || selectImageArray)?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!(tempModalImage || selectImageArray)?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='house-keeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\" viewBox=\"0 0 21 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- <div class=\"modal-footer py-2 px-0\"> -->\n\n <div class=\"w-100 py-2 mb-2 px-0 d-flex justify-content-end\">\n\n <button class=\"btn btn-outline\" (click)=\"closeImage()\">Close</button>\n\n </div>\n <!-- </div> -->\n </div>\n</ng-template>\n\n<!-- Footfall Trends Template -->\n<ng-template #footfallTrendsTemplate>\n <div class=\"row w-100 mb-1 g-1\">\n <!-- Total Footfall Card -->\n <div class=\"col-md-3\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <div class=\"d-flex align-items-center gap-2\">\n <span class=\"metric-title\">Total Footfall</span>\n <svg placement=\"top\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M4 18H9.5V19.25C9.5 19.9793 9.21027 20.6788 8.69454 21.1945C8.17882 21.7103 7.47935 22 6.75 22C6.02065 22 5.32118 21.7103 4.80546 21.1945C4.28973 20.6788 4 19.9793 4 19.25V18ZM8 6.11999C10 6.11999 11 8.99999 11 11C11 12 10.5 13 10 14.5L9.5 16H4C4 15 3.5 13.5 3.5 11C3.5 8.49999 5.498 6.11999 8 6.11999ZM20.054 14.098L19.837 15.329C19.7023 16.0396 19.2931 16.6686 18.698 17.0796C18.1029 17.4907 17.3698 17.6508 16.6576 17.5252C15.9453 17.3996 15.3111 16.9984 14.8925 16.4086C14.4739 15.8188 14.3045 15.0878 14.421 14.374L14.637 13.144L20.054 14.098ZM18.178 1.70499C20.642 2.13899 22.196 4.82999 21.762 7.29199C21.328 9.75399 20.575 11.144 20.402 12.129L14.985 11.174L14.753 9.60999C14.521 8.04599 14.203 6.97399 14.376 5.98999C14.723 4.01999 16.208 1.35799 18.178 1.70499Z\"\n fill=\"#00A3FF\" />\n </svg>\n </div>\n </div>\n <div class=\"metric-value\">{{ getCurrentFootfall() || 0 }}</div>\n <!-- [ngClass]=\"getFootfallPercentageChange() >= 0 ? 'up' : 'down'\" -->\n <div class=\"metric-trend\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M15.3327 3.99998L8.99935 10.3333L5.66602 6.99998L0.666016 12M15.3327 3.99998H11.3327M15.3327 3.99998V7.99998\"\n stroke=\"#039855\" stroke-width=\"1.18681\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n <span style=\"color: #10B981\">{{getFootfallPercentageChange() }}% </span><span>vs Yesterday</span>\n </div>\n </div>\n </div>\n <!-- Total Downtime Card -->\n <div class=\"col-md-3\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <div class=\"d-flex align-items-center gap-2\">\n <span class=\"metric-title\">Total Downtime</span>\n <div class=\"downtime-icons\">\n <svg width=\"40\" height=\"41\" viewBox=\"0 0 40 41\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <rect y=\"0.5\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\n <path\n d=\"M21.9004 12.1675C22.9958 12.1675 24.0423 12.3918 24.9977 12.7987C25.9889 13.2207 26.8809 13.8402 27.6279 14.6087C28.3734 15.3756 28.9756 16.2931 29.3857 17.3162C29.7813 18.299 29.9993 19.3756 29.9993 20.5008C29.9993 21.6277 29.7813 22.7043 29.3857 23.6871C28.9756 24.7068 28.3734 25.6244 27.6263 26.3929C26.8809 27.1598 25.9889 27.7793 24.9945 28.2012C24.0391 28.6081 22.9925 28.8325 21.8988 28.8325C20.8034 28.8325 19.7568 28.6081 18.8014 28.2012C17.8102 27.7793 16.9183 27.1598 16.1729 26.3929L16.1712 26.3912C15.4242 25.6227 14.8236 24.7052 14.4134 23.6871C14.2865 23.3707 14.1774 23.0459 14.0879 22.7127C14.2572 22.7294 14.4297 22.7378 14.6038 22.7378C14.9342 22.7378 15.2565 22.7076 15.5706 22.649C15.6227 22.8098 15.6797 22.9688 15.7415 23.1246C16.0785 23.9617 16.5732 24.7152 17.1885 25.3481C17.8037 25.981 18.5378 26.49 19.3499 26.8366C20.1328 27.1698 20.9938 27.3557 21.8988 27.3557C22.8037 27.3557 23.6631 27.1715 24.4476 26.8366C25.2614 26.49 25.9938 25.981 26.6091 25.3481C27.2243 24.7152 27.7191 23.9601 28.056 23.1246C28.3799 22.3192 28.5605 21.4334 28.5605 20.5025C28.5605 19.5715 28.3815 18.6875 28.056 17.8804C27.7191 17.0432 27.2243 16.2898 26.6091 15.6569C25.9938 15.024 25.2598 14.5149 24.4476 14.1684C23.6647 13.8352 22.8037 13.6493 21.8988 13.6493C20.9938 13.6493 20.1344 13.8335 19.3499 14.1684C19.2799 14.1985 19.21 14.2303 19.1416 14.2621C18.8747 13.8301 18.5524 13.4383 18.1829 13.0984C18.3848 12.9913 18.5915 12.8925 18.8014 12.8021C19.7601 12.3918 20.805 12.1675 21.9004 12.1675ZM20.971 16.5393C20.971 16.335 21.0524 16.1508 21.181 16.0169C21.3112 15.8829 21.4902 15.8009 21.6888 15.8009C21.8874 15.8009 22.0664 15.8829 22.1966 16.0169C22.3268 16.1508 22.4066 16.335 22.4066 16.5393V20.4271L25.2305 22.1501C25.3997 22.2539 25.5137 22.4196 25.5592 22.6021C25.6048 22.7847 25.5837 22.9856 25.4827 23.1597V23.1614C25.3818 23.3355 25.2207 23.4527 25.0433 23.4996C24.8659 23.5465 24.6706 23.5247 24.5013 23.4209H24.4997L21.3405 21.4937C21.2314 21.4318 21.1419 21.3413 21.0768 21.2342C21.0101 21.122 20.971 20.9897 20.971 20.8491V16.5393Z\"\n fill=\"#667085\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M14.3913 12.6095C16.8164 12.6095 18.7826 14.6321 18.7826 17.1269C18.7826 19.6218 16.8164 21.6444 14.3913 21.6444C11.9661 21.6444 10 19.6218 10 17.1269C10 14.6321 11.9661 12.6095 14.3913 12.6095ZM14.3913 19.7172L16.748 16.7201H15.2848V15.1261H13.4977V16.7201H12.0345L14.3913 19.7172Z\"\n fill=\"#F04438\" />\n </svg>\n </div>\n </div>\n </div>\n <div class=\"metric-value\">{{ getFormattedDowntime() || '-' }}</div>\n <div class=\"metric-trend metric-trend-placeholder\"></div>\n <!-- <div class=\"metric-tag success\" *ngIf=\"hasDowntime()\"> -->\n <!-- <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M11.6667 3.5L5.25 9.91667L2.33334 7\" stroke=\"#10B981\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg> -->\n <!-- <span>Issue submitted</span>\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4.5 2.5L7.5 5.5L10.5 2.5\" stroke=\"#10B981\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg> -->\n <!-- </div> -->\n </div>\n </div>\n\n <!-- Ticket Status Card -->\n <div class=\"col-md-3\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <span class=\"metric-title\">Ticket status</span>\n </div>\n <div class=\"metric-value\" \n [ngClass]=\"{\n 'ticket-status-raised': getTicketStatus()?.toLowerCase() === 'raised',\n 'ticket-status-closed': getTicketStatus()?.toLowerCase() === 'closed'\n }\">\n {{ getTicketStatus() === '-' ? '-' : (getTicketStatus() | titlecase) }}\n </div>\n <div class=\"metric-trend metric-trend-placeholder\"></div>\n </div>\n </div>\n <span class=\"divider\"></span>\n </div>\n</ng-template>\n\n<ng-template #resetRequestPopup let-model>\n <div class=\"p-4\">\n <div class=\"modal-header border-0 p-0 w-100\">\n <h5 class=\"modal-title mb-3 fw-bold\">\n Reset request.\n </h5>\n </div>\n <div class=\"modal-body p-0\">\n <p class=\"text-muted mb-3\">\n You're requesting to re-enable footfall tickets, disabled after three instances of exceeding 95%\n accuracy.\n </p>\n <p class=\"text-muted mb-0\">\n Please ensure future accuracy stays on or within 95%.\n </p>\n </div>\n <div class=\"modal-footer border-0 p-0 mt-4 d-flex justify-content-end gap-2\">\n <button type=\"button\" class=\"btn btn-outline\" (click)=\"cancelResetRequest()\">\n Cancel\n </button>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"submitResetRequest()\">\n Send Request\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #ticketStatusTemplate let-model>\n <!-- Ticket Review Card (shown when ticket status is raised) -->\n <div class=\"col-12 mb-3\" *ngIf=\"isTicketRaised() && getTaggingData('tagging')\">\n <div class=\"ticket-review-card\">\n <!-- Actual Footfall Header -->\n <div class=\"actual-footfall-header\">\n <span class=\"actual-footfall-number\">{{ getTaggingData('tagging')?.footfall || 0 }}</span>\n <span class=\"actual-footfall-label\">Actual Footfall</span>\n </div>\n <!-- Ticket Created By Section -->\n <div class=\"ticket-creator-section\"\n *ngIf=\"getTaggingData('tagging')?.createdByEmail || getTaggingData('tagging')?.createdAt\">\n <div class=\"d-flex align-items-center gap-2\">\n <!-- <div class=\"creator-avatar\" *ngIf=\"getTaggingData()?.createdByEmail?.profilePicture\">\n <img [src]=\"getTaggingData()?.createdByEmail?.profilePicture\" alt=\"Profile\" />\n </div> -->\n <div class=\"creator-avatar-placeholder\"\n *ngIf=\"!getTaggingData('tagging')?.createdByEmail?.profilePicture\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\n <path\n d=\"M16 10C17.6569 10 19 11.3431 19 13C19 14.6569 17.6569 16 16 16C14.3431 16 13 14.6569 13 13C13 11.3431 14.3431 10 16 10Z\"\n fill=\"#00A3FF\" />\n <path d=\"M11 22C11 19.2386 13.2386 17 16 17C18.7614 17 21 19.2386 21 22V23H11V22Z\"\n fill=\"#00A3FF\" />\n </svg>\n </div>\n <div class=\"creator-info\">\n <div class=\"creator-label\">Ticket created by</div>\n <div class=\"creator-details\">\n <span class=\"creator-email\">{{ getTaggingData('tagging')?.createdByEmail ||\n getTaggingData('tagging')?.createdByEmail || 'N/A' }}</span>\n <span class=\"creator-separator\" *ngIf=\"getTaggingData('tagging')?.createdAt\">\u2022</span>\n <span class=\"creator-time\" *ngIf=\"getTaggingData('tagging')?.createdAt\">{{\n getTaggingData('tagging')?.createdAt | date:'h:mm:ss a - d MMM yyyy' }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Ticket Revised Footfall and Metrics -->\n <div class=\"revised-footfall-section\">\n <div class=\"metrics-row\">\n <div class=\"metric-item\">\n <div class=\"metric-number blue-text\">\n {{ getTaggingData('tagging')?.revicedFootfall || 0 }}\n <span class=\"metric-percentage\">\n ({{ getTaggingData('tagging')?.revicedPerc || 0 }}%)\n </span>\n <span class=\"metric-arrow\">\u2193</span>\n </div>\n <div class=\"metric-label\">Revised footfall</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">({{ getRevisionCalculation('tagging')}}%)</div>\n <div class=\"metric-label\">Ticket%</div>\n </div>\n <div class=\"metric-divider\"></div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'duplicate') }}</div>\n <div class=\"metric-label\">Duplicates</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'employee') }}</div>\n <div class=\"metric-label\">Employee/Staff</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'junk') }}</div>\n <div class=\"metric-label\">Junk</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'houseKeeping') }}</div>\n <div class=\"metric-label\">House Keeping</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Ticket Final revision Card (shown when ticket status is closed) -->\n <div class=\"col-12 mb-3\" *ngIf=\"isTicketClosed() && getTaggingData('finalRevision')\">\n <div class=\"ticket-review-card\">\n <!-- Ticket card section in revision start -->\n\n <!-- Actual Footfall Header -->\n <div class=\"actual-footfall-header\">\n <span class=\"actual-footfall-number\">{{ getTaggingData('tagging')?.footfall || 0 }}</span>\n <span class=\"actual-footfall-label\">Actual Footfall</span>\n </div>\n <!-- Ticket Created By Section -->\n <div class=\"ticket-creator-section\"\n *ngIf=\"getTaggingData('tagging')?.createdByEmail || getTaggingData('tagging')?.createdAt\">\n <div class=\"d-flex align-items-center gap-2\">\n <!-- <div class=\"creator-avatar\" *ngIf=\"getTaggingData()?.createdByEmail?.profilePicture\">\n <img [src]=\"getTaggingData()?.createdByEmail?.profilePicture\" alt=\"Profile\" />\n </div> -->\n <div class=\"creator-avatar-placeholder\"\n *ngIf=\"!getTaggingData('tagging')?.createdByEmail?.profilePicture\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\n <path\n d=\"M16 10C17.6569 10 19 11.3431 19 13C19 14.6569 17.6569 16 16 16C14.3431 16 13 14.6569 13 13C13 11.3431 14.3431 10 16 10Z\"\n fill=\"#00A3FF\" />\n <path d=\"M11 22C11 19.2386 13.2386 17 16 17C18.7614 17 21 19.2386 21 22V23H11V22Z\"\n fill=\"#00A3FF\" />\n </svg>\n </div>\n <div class=\"creator-info\">\n <div class=\"creator-label\">Ticket created by</div>\n <div class=\"creator-details\">\n <span class=\"creator-email\">{{ getTaggingData('tagging')?.createdByEmail ||\n getTaggingData('tagging')?.createdByEmail || 'N/A' }}</span>\n <span class=\"creator-separator\" *ngIf=\"getTaggingData('tagging')?.createdAt\">\u2022</span>\n <span class=\"creator-time\" *ngIf=\"getTaggingData('tagging')?.createdAt\">{{\n getTaggingData('tagging')?.createdAt | date:'h:mm:ss a - d MMM yyyy' }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Ticket Revised Footfall and Metrics -->\n <div class=\"revised-footfall-section\">\n <div class=\"metrics-row\">\n <div class=\"metric-item\">\n <div class=\"metric-number blue-text\">\n {{ getTaggingData('tagging')?.revicedFootfall || 0 }}\n <span class=\"metric-percentage\">\n ({{ getTaggingData('tagging')?.revicedPerc || 0 }}%)\n </span>\n <span class=\"metric-arrow\">\u2193</span>\n </div>\n <div class=\"metric-label\">Revised footfall</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">({{ getRevisionCalculation('tagging')}}%)</div>\n <div class=\"metric-label\">Ticket%</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'duplicate') }}</div>\n <div class=\"metric-label\">Duplicates</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'employee') }}</div>\n <div class=\"metric-label\">Employee/Staff</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'junk') }}</div>\n <div class=\"metric-label\">Junk</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'houseKeeping') }}</div>\n <div class=\"metric-label\">House Keeping</div>\n </div>\n </div>\n </div>\n <!-- Ticket card section in revision end -->\n\n <!-- Final Revision Section -->\n <div class=\"revision-section\">\n <div class=\"revision-title\">Final revision</div>\n <div class=\"final-revision-note\">\n Please reach <a [href]=\"'mailto:' + revisionMailTo\" class=\"email-link\">{{ revisionMailTo }}</a> for any further\n discrepancies\n </div>\n <div class=\"revised-footfall-section\">\n <div class=\"metrics-row\">\n <div class=\"metric-item\">\n <div class=\"metric-number blue-text\">\n {{ getTaggingData('finalRevision')?.revicedFootfall || 0 }}\n <span class=\"metric-percentage\">\n ({{ getTaggingData('finalRevision')?.revicedPerc || 0}}%)\n </span>\n <span class=\"metric-arrow\">\u2191</span>\n </div>\n <div class=\"metric-label\">Revised footfall</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">({{ getRevisionCalculation('finalRevision')}}%)</div>\n <div class=\"metric-label\">Ticket%</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalRevision'), 'duplicate') }}\n </div>\n <div class=\"metric-label\">Duplicates</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalRevision'), 'employee') }}\n </div>\n <div class=\"metric-label\">Employee/Staff</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalRevision'), 'junk') }}</div>\n <div class=\"metric-label\">Junk</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalRevision'), 'houseKeeping')\n }}</div>\n <div class=\"metric-label\">House Keeping</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-template>", styles: ["@charset \"UTF-8\";.switch-form-card{padding:8px 16px;border-radius:4px;border-left:2px solid var(--Primary-600, #00A3FF);background:var(--Primary-25, #F6FCFF);display:flex;align-items:center;justify-content:space-between}.switch-form-card .txt-one{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:140%}.nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.badge-num-primary{border-radius:16px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;text-align:center;font-size:14px!important;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.badge-num-muted{border-radius:16px!important;background:var(--Primary-50, #F2F4F7)!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:14px;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.img-src{width:100%;height:195px;border-radius:.625rem}.img-traffic .col-md-3{width:calc(20% - 16px)!important;flex:0 0 calc(20% - 16px)!important;max-width:calc(20% - 16px)!important}.border-gray{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.img-doc-directory{color:var(--Gray-900, #101828)!important;font-size:14px!important;font-weight:600;line-height:20px;text-decoration-line:underline}.img-doc-time{color:var(--Gray-800, #1D2939);font-size:14px;font-weight:500;line-height:20px}.img-doc-value{color:var(--Gray-600, #667085);font-size:14px;font-weight:500;line-height:20px}.overflow-x{overflow-x:auto}.no-preview{border:1px solid #F04438;background:#fee4e2;border-radius:8px;stroke-width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:41px 16px}.no-preview .header{color:#f04438;font-size:20px;font-weight:700;line-height:20px}.no-preview .description{color:#f04438;font-size:12px;font-weight:500;line-height:18px}.img-nodata{width:25%;height:15%}.img-nodata1{width:15%;height:15%}.nodata-title{font-size:14px!important;font-weight:600}.img-direc{color:var(--Gray-900, #101828)!important;font-size:18px!important;font-weight:500;line-height:28px;display:flex;align-items:center;white-space:nowrap}.custom-accordion{border-radius:5px}.custom-accordion-item{margin-bottom:10px}.custom-accordion-header{background-color:#fff;border:none;cursor:pointer;padding:10px;text-align:left;width:100%;display:flex;justify-content:space-between;align-items:center}.custom-accordion{width:100%}.mainheading{width:100%;display:flex;justify-content:space-between;align-items:center;padding:19px;border:none;background:none;cursor:pointer}.mainheading-1{width:77%;display:flex;justify-content:space-between;align-items:center;padding:19px;border:none;background:none;cursor:pointer}.header-row{display:flex;align-items:center;width:100%;justify-content:space-between;gap:12px}.header-left-section{display:flex;align-items:center;gap:12px;flex-shrink:0}.header-right-section{display:flex;align-items:center;flex:1;min-width:0}.accordion-toggle-btn{background:none;border:none;cursor:pointer;padding:0;display:flex;align-items:center;flex-shrink:0}.img-dire{font-size:16px;font-weight:700}.divider{flex-grow:1;height:1px;background-color:#ddd;margin:0 10px;align-self:center}.accordion-arrow{display:flex;align-items:center}.scroll-container{max-height:400px;overflow-y:auto;overflow-x:hidden}.view-toggle .btn{border-radius:6px}.view-toggle .btn.active{background:var(--Primary-50, #EAF8FF);border-color:var(--Primary-200, #99DAFF)}.date-list-container{padding:4px 23px;width:100%}.date-list-scroll{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:16px;max-height:287px;overflow-y:auto;overflow-x:hidden;padding-bottom:8px}.date-card{min-width:0;max-width:none;padding:16px;background:#fff;border:1px solid #D0D5DD;border-radius:8px;cursor:pointer;transition:all .2s ease;display:flex;flex-direction:column;gap:8px}.date-card:hover{box-shadow:0 2px 8px #0000001a;border-color:#00a3ff}.date-card .date-card-header{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.date-card .date-card-header .calendar-icon{flex-shrink:0}.date-card .date-card-header .date-text{color:var(--Gray-900, #101828);font-size:14px;font-weight:500;line-height:20px;flex:1}.date-card .footfall-count{color:var(--Gray-900, #101828);font-size:32px;font-weight:400;line-height:40px;margin-top:4px}.date-card .footfall-label{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px}.date-card-active{background:var(--Primary-50, #EAF8FF);border-color:var(--Primary-600, #00A3FF);border-width:2px}.date-card-active .date-text{color:var(--Primary-700, #009BF3);font-weight:600}.date-card-active .footfall-count{color:var(--Primary-700, #009BF3)}.list-view-wrapper{padding:0 8px 16px;max-height:480px;overflow-y:auto}.list-group{border:1px solid var(--Gray-200, #EAECF0);border-radius:12px;background:#fff;padding:16px 20px}.list-group-header{border-bottom:1px solid var(--Gray-200, #EAECF0);padding-bottom:12px;margin-bottom:16px!important}.list-group-header .group-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.list-group-header .group-count{background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;font-weight:600;padding:4px 10px!important;border-radius:12px!important;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.list-group-header .group-count svg{flex-shrink:0;display:block}.high-400px{min-height:auto!important;max-height:800px!important}.scroll-y{overflow-y:auto}.absolute{top:5px;right:5px;z-index:2}.slider{position:relative}.slider .previous{position:absolute;top:30%;left:2%;width:32px;height:32px;background-color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.slider .next{position:absolute;top:30%;right:2%;width:32px;height:32px;background-color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.img-src1{border-radius:12px;border:1px solid var(--Gray-400, #98A2B3);background:var(--Gray-50, #F9FAFB);width:100%;height:375px;object-fit:contain}.zoom-icon-button{position:absolute;top:10px;right:10px;z-index:10;cursor:pointer;background:#fffffff2;border-radius:50%;padding:8px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #00000026;transition:all .2s ease}.zoom-icon-button:hover{background:#fff;box-shadow:0 4px 12px #0003;transform:scale(1.05)}.zoom-icon-button svg{width:20px;height:20px}.border-gray{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);padding:0 4px}.border-gray-active{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #EAF8FF);padding:0 4px}.zone-header{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:20px}.last-visit{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.toggle-label{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.nav-dev{border-radius:8px!important;border:1px solid var(--Primary-200, #99DAFF)!important;background:var(--Primary-25, #F6FCFF)!important}.tab-active{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3)!important;font-size:14px;font-weight:500;line-height:20px}.tab-text-default{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px}.border-gray-active1{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #ffffff);padding:12px!important}.nav-item1 .nav-link1.active{border:none;border-radius:0;background:var(--Primary-50, #EAF8FF);border-bottom:2px solid #009BF3!important;padding:12px;color:var(--Primary-700, #009BF3);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.active-normal{padding:12px;color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.nav-item1 .nav-link1:hover{border:none}.tag-class{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:20px}.spent-title{color:var(--Gray-600, #475467);font-size:14px;font-weight:600;line-height:20px}.spent-value{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.spent-value1{color:var(--Primary-500, #33B5FF);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font}.w-33{width:30%}.w-45{width:45%}.view-tetory{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:600;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;text-transform:capitalize}.border-gray-tagged{border-radius:4px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #ffffff);padding:8px!important}.desc-id{color:var(--Gray-900, #101828);font-size:12px;font-style:normal;font-weight:400;line-height:20px}.active-tab{border-bottom:2px solid #0d6efd;font-weight:600;color:#0d6efd}.badge-selected{background-color:#e0f3ff;color:#0d6efd;border:1px solid #0d6efd;border-radius:20px;padding:6px 12px}.badge-unselected{background-color:#f0f0f0;color:#333;border-radius:20px;padding:6px 12px}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;appearance:textfield}.cursor-not-allowed{cursor:not-allowed!important}.title-type{color:var(--Gray-800, #1D2939);font-size:16px;font-weight:600;line-height:24px}.top-50{top:35%!important}.activePlanBtn{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #344054)!important;font-size:14px;font-weight:500!important;line-height:20px}.badge-active{border-radius:16px;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);text-align:center;font-size:12px;font-style:normal;font-weight:500;line-height:20px;mix-blend-mode:multiply}input[type=checkbox]{width:18px!important;height:18px!important;margin:-2px 5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #D0D5DD)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}::ng-deep .modal-backdrop{pointer-events:none}.meta-change.up{color:#10b981}.meta-change.down{color:#ef4444}.meta-change.neutral{color:#64748b}.split-screen-container{display:flex;height:calc(100vh - 200px);min-height:700px;gap:16px;margin-top:16px}.split-screen-container .left-panel{flex:0 0 40%;max-width:40%;overflow-y:auto;overflow-x:hidden;padding-right:8px;border-right:1px solid var(--Gray-200, #EAECF0)}.split-screen-container .right-panel{flex:1;overflow-y:auto}.thumbnail-list-section{margin-bottom:24px}.thumbnail-list-section .time-range-header{display:flex;align-items:center;gap:8px;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--Gray-200, #EAECF0)}.thumbnail-list-section .time-range-header .time-range-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.thumbnail-list-section .time-range-header .time-range-count{color:var(--Gray-600, #667085);font-size:14px;font-weight:500;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);padding:2px 10px;border-radius:16px}.thumbnail-list-section .thumbnail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.thumbnail-list-section .thumbnail-item{cursor:pointer;border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);padding:8px;transition:all .2s ease}.thumbnail-list-section .thumbnail-item:hover{border-color:var(--Primary-600, #00A3FF);box-shadow:0 2px 8px #00a3ff1a}.thumbnail-list-section .thumbnail-item.selected{border-color:var(--Primary-600, #00A3FF);border-width:2px;background:var(--Primary-50, #EAF8FF)}.thumbnail-list-section .thumbnail-item .thumbnail-image{width:100%;height:120px;object-fit:cover;border-radius:4px;margin-bottom:8px}.thumbnail-list-section .thumbnail-item .thumbnail-info{display:grid;grid-template-columns:1fr auto;align-items:flex-start;gap:8px}.thumbnail-list-section .thumbnail-item .thumbnail-info .tango-id{color:var(--Gray-900, #101828);font-size:12px;font-weight:600;line-height:16px;margin-bottom:4px;grid-column:1}.thumbnail-list-section .thumbnail-item .thumbnail-info .entry-time{color:var(--Gray-600, #667085);font-size:11px;font-weight:400;line-height:16px;grid-column:1}.thumbnail-list-section .thumbnail-item .thumbnail-info .col-md-5{grid-column:2;grid-row:1/-1;display:flex;align-items:center;justify-content:flex-end;padding:0!important;margin:0!important}.thumbnail-list-section .thumbnail-item .thumbnail-info .col-md-5 svg{display:block}.metric-card{background:var(--White, #FFF);border-radius:8px;padding:2px 2px 4px 1px;height:100%;min-height:104px;display:flex;flex-direction:column;gap:4px;flex:1}.metric-card .metric-header{display:flex;justify-content:space-between;align-items:center;flex-shrink:0;margin-bottom:0;margin-top:-4px}.metric-card .metric-header .metric-title{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.metric-card .metric-header .metric-icon,.metric-card .metric-header .footfall-icon-header{flex-shrink:0}.metric-card .metric-header .downtime-icons{position:relative;display:inline-flex;align-items:center;width:31px;height:24px}.metric-card .metric-header .downtime-icons .clock-icon{position:absolute;left:0;top:2px;z-index:1}.metric-card .metric-header .downtime-icons .alert-icon{position:absolute;right:-2px;top:-2px;z-index:2}.metric-card .metric-value{color:var(--Gray-900, #101828);font-size:32px;font-weight:400;line-height:40px;margin-top:0;margin-bottom:0}.metric-card .metric-value.ticket-status-raised{display:inline-block;width:fit-content;padding:6px 14px;border-radius:16px;background:#fef3c7;color:#92400e;font-weight:600;font-size:21px;line-height:20px}.metric-card .metric-value.ticket-status-closed{display:inline-block;width:fit-content;padding:6px 14px;border-radius:16px;background:#d1fae5;color:#10b981;font-weight:600;font-size:21px;line-height:20px}.metric-card .metric-trend{display:flex;align-items:center;gap:4px;font-size:14px;font-weight:500;line-height:20px;margin-top:0;margin-bottom:0;min-height:20px}.metric-card .metric-trend.up{color:#10b981}.metric-card .metric-trend.down{color:#f04438}.metric-card .metric-trend.metric-trend-placeholder{visibility:hidden;height:20px}.metric-card .metric-trend svg{flex-shrink:0}.metric-card .metric-tag{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:500;line-height:16px;width:fit-content}.metric-card .metric-tag.success{background:#d1fadf;color:#10b981}.metric-card .metric-tag svg{flex-shrink:0}.ticket-review-card{background:var(--White, #FFF);border-radius:12px;border:1px solid var(--Gray-200, #EAECF0);padding:20px;box-shadow:0 1px 3px #0000001a}.ticket-review-card .actual-footfall-header{background:var(--Primary-50, #EAF8FF);border-radius:8px;padding:12px 15px;margin-bottom:10px;display:flex;align-items:center;gap:4px}.ticket-review-card .actual-footfall-header .actual-footfall-number{color:var(--Gray-900, #101828);font-size:25px;font-weight:600;line-height:25px}.ticket-review-card .actual-footfall-header .actual-footfall-label{color:var(--Gray-700, #344054);font-size:16px;font-weight:500;line-height:24px}.ticket-review-card .ticket-creator-section{padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid var(--Gray-200, #EAECF0)}.ticket-review-card .ticket-creator-section .creator-avatar{width:40px;height:40px;border-radius:50%;overflow:hidden;flex-shrink:0}.ticket-review-card .ticket-creator-section .creator-avatar img{width:100%;height:100%;object-fit:cover}.ticket-review-card .ticket-creator-section .creator-avatar-placeholder{width:40px;height:40px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.ticket-review-card .ticket-creator-section .creator-info{flex:1}.ticket-review-card .ticket-creator-section .creator-info .creator-label{color:var(--Gray-600, #667085);font-size:12px;font-weight:400;line-height:18px;margin-bottom:4px}.ticket-review-card .ticket-creator-section .creator-info .creator-details{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ticket-review-card .ticket-creator-section .creator-info .creator-details .creator-email{color:var(--Gray-900, #101828);font-size:14px;font-weight:500;line-height:20px}.ticket-review-card .ticket-creator-section .creator-info .creator-details .creator-separator{color:var(--Gray-400, #98A2B3);font-size:14px}.ticket-review-card .ticket-creator-section .creator-info .creator-details .creator-time{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px}.ticket-review-card .revised-footfall-section .metrics-row{display:flex;flex-wrap:wrap;gap:24px;align-items:flex-start}.ticket-review-card .revised-footfall-section .metrics-row .metric-divider{width:1px;background-color:var(--Gray-200, #EAECF0);align-self:stretch;min-height:60px;flex-shrink:0}.ticket-review-card .revised-footfall-section .metrics-row .metric-item{flex:1;min-width:120px;display:flex;flex-direction:column;gap:4px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number{color:var(--Gray-900, #101828);font-size:24px;font-weight:600;line-height:32px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number.blue-text{color:var(--Primary-700, #009BF3)}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number.blue-text .metric-percentage{font-size:16px;font-weight:500;margin-left:4px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number.blue-text .metric-arrow{color:var(--Primary-700, #009BF3);font-size:16px;margin-left:4px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-label{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px}.ticket-review-card .revision-section{margin-top:24px;padding-top:24px;border-top:1px solid var(--Gray-200, #EAECF0)}.ticket-review-card .revision-section .revision-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px;margin-bottom:16px}.ticket-review-card .revision-section .final-revision-note{font-size:14px;font-weight:400;line-height:20px;margin-bottom:16px}.email-link{text-decoration:underline;color:#008edf}.ticket-block-alert{border-radius:8px;border:2px dashed #F04438;background:#fee4e2;padding:16px;margin-bottom:16px}.ticket-block-alert .ticket-block-alert-content{display:flex;align-items:flex-start;gap:12px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-icon{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-icon svg{width:24px;height:24px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text{flex:1;display:flex;flex-direction:column;gap:8px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-title{color:#f04438;font-size:16px;font-weight:700;line-height:24px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-description,.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-action{color:#f04438;font-size:14px;font-weight:400;line-height:20px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-action .ticket-block-alert-link{color:#f04438;text-decoration:underline;cursor:pointer;font-weight:500}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-action .ticket-block-alert-link:hover{color:#d92d20;text-decoration:underline}.ticket-request-alert{border-radius:8px;border:2px dashed #10B981;background:#d1fae5;padding:16px;margin-bottom:16px}.ticket-request-alert .ticket-request-alert-content{display:flex;align-items:flex-start;gap:12px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-icon{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-icon svg{width:24px;height:24px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-text{flex:1;display:flex;flex-direction:column;gap:8px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-text .ticket-request-alert-title{color:#10b981;font-size:16px;font-weight:700;line-height:24px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-text .ticket-request-alert-description{color:#10b981;font-size:14px;font-weight:400;line-height:20px}\n"] }]
1354
+ args: [{ selector: "lib-img-rvps", template: "<div class=\"card mt-3\">\n <div class=\"card-header mt-3 px-0 border-bottom-0\">\n <div class=\"custom-accordion\">\n <div class=\"custom-accordion-item\">\n <!-- for new navigation changes -->\n <!-- old view while folder view -->\n <button *ngIf=\"folderView\" class=\"mainheading pb-0 custom-accordion-header\" (click)=\"toggleAccordion()\">\n <div class=\"header-row\">\n <span class=\"img-direc\" style=\"padding-left: 40px;\">Image Directory</span>\n\n <span class=\"divider\"></span>\n <span class=\"accordion-arrow\">\n <!-- Down arrow for collapsed state, up arrow for expanded state -->\n <svg *ngIf=\"!isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 1L5 5L9 1\" stroke=\"#071437\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <svg *ngIf=\"isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 5L5 1L9 5\" stroke=\"#1b84ff\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </button>\n <!-- new view while not in folder view view -->\n <div *ngIf=\"!folderView\" class=\"header-row\">\n <div class=\"header-left-section\">\n <span *ngIf=\"backnav && !imageFlow\" class=\"cursor-pointer\" (click)=\"backToFootfall()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_2585_7036)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_2585_7036\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </span>\n <!-- back from image flow -->\n <span *ngIf=\"imageFlow\" class=\"cursor-pointer\" (click)=\"backToFootfall1()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_2585_7036)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_2585_7036\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </span>\n <span class=\"img-direc\">Image Directory | {{folderDate | date:'dd MMM, yyyy'}}</span>\n </div>\n <div class=\"header-right-section\">\n <span class=\"divider\"></span>\n <button *ngIf=\"!folderView\" class=\"accordion-toggle-btn\" (click)=\"toggleAccordion()\">\n <span class=\"accordion-arrow\">\n <!-- Down arrow for collapsed state, up arrow for expanded state -->\n <svg *ngIf=\"!isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 1L5 5L9 1\" stroke=\"#071437\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <svg *ngIf=\"isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\n viewBox=\"0 0 16 6\" fill=\"none\">\n <path d=\"M1 5L5 1L9 5\" stroke=\"#1b84ff\" stroke-width=\"1\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <section *ngIf=\"isAccordionExpanded\">\n\n <div *ngIf=\"folderView\" class=\"card-body px-0\">\n <div class=\"date-list-container\">\n <div class=\"date-list-scroll\">\n <div class=\"date-card\" *ngFor=\"let obj of dateArray; let i = index\"\n [ngClass]=\"{'date-card-active': i === selectIndex}\" (click)=\"getimages(i, obj)\">\n <div class=\"date-card-header\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\" class=\"calendar-icon\">\n <path\n d=\"M12.6667 2.66667H12V2C12 1.63181 11.7015 1.33333 11.3333 1.33333C10.9651 1.33333 10.6667 1.63181 10.6667 2V2.66667H5.33333V2C5.33333 1.63181 5.03486 1.33333 4.66667 1.33333C4.29848 1.33333 4 1.63181 4 2V2.66667H3.33333C2.59695 2.66667 2 3.26362 2 4V13.3333C2 14.0697 2.59695 14.6667 3.33333 14.6667H12.6667C13.403 14.6667 14 14.0697 14 13.3333V4C14 3.26362 13.403 2.66667 12.6667 2.66667ZM12.6667 13.3333H3.33333V6H12.6667V13.3333Z\"\n fill=\"#667085\" />\n </svg>\n <span class=\"date-text\">{{obj | date:'dd MMM'}}</span>\n <span *ngIf=\"cardDataMap[obj]?.ticketStatusLower as status\" class=\"badge ms-2\" [ngClass]=\"{\n 'badge-light-success': status === 'closed',\n 'badge-light-warning': status === 'raised',\n 'badge-light-default': status !== 'closed' && status !== 'raised'\n }\">\n {{ status === 'closed' ? 'Ticket closed' : (status === 'raised' ? 'Ticket raised' :\n (cardDataMap[obj]?.ticketStatus || '')) }}\n </span>\n </div>\n <div class=\"footfall-count\">{{ cardDataMap[obj]?.footfallCount || 0 }}</div>\n <div class=\"footfall-label\">Total footfall</div>\n </div>\n </div>\n </div>\n </div>\n\n\n\n <div *ngIf=\"!folderView\" class=\"card-body\">\n <section *ngIf=\"!imageFlow\">\n <div class=\"row\">\n <!-- Ticket Block Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'block'\" class=\"col-12 mb-3\">\n <div class=\"ticket-block-alert\">\n <div class=\"ticket-block-alert-content\">\n <div class=\"ticket-block-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"12\" fill=\"#F04438\" />\n <path d=\"M12 8V13\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n </div>\n <div class=\"ticket-block-alert-text\">\n <div class=\"ticket-block-alert-title\">\n You cannot raise ticket for next {{ getSelectedDateCardData()?.noOfBlockedDays\n || '0' }} days\n </div>\n <div class=\"ticket-block-alert-description\">\n It looks like you have achieved 95% accuracy for the three tickets raised this\n month. This limits you from raising more tickets to avoid redundancy.\n </div>\n <div class=\"ticket-block-alert-action\">\n If you still want to raise tickets, <span class=\"ticket-block-alert-link\"\n (click)=\"requestReset()\">send request</span> to reset.\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Ticket Request Success Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'request'\" class=\"col-12 mb-3\">\n <div class=\"ticket-request-alert\">\n <div class=\"ticket-request-alert-content\">\n <div class=\"ticket-request-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 21L23 12L2 3V10L17 12L2 14V21Z\" fill=\"#10B981\" />\n </svg>\n </div>\n <div class=\"ticket-request-alert-text\">\n <div class=\"ticket-request-alert-title\">\n Reset Request Sent\n </div>\n <div class=\"ticket-request-alert-description\">\n Your request to enable ticket raising has been submitted. You'll be notified\n once it's approved. Please ensure future ticket accuracy remains within the 95%\n threshold.\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- footfall trends feature -->\n <ng-container *ngTemplateOutlet=\"footfallTrendsTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"ticketStatusTemplate\"></ng-container>\n <span class=\"divider\"></span>\n <!-- footfall trends feature end -->\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\n <!-- <span *ngIf=\"backnav\" class=\"cursor-pointer\" (click)=\"backToFootfall()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_2585_7036)\">\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_2585_7036\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </span> -->\n <!-- <span class=\"img-direc ms-2 mt-1\">{{folderDate | date:'dd MMM, yyyy'}}\n <span class=\"badge badge-light-warning mx-2\"\n *ngIf=\"!getTicketStatuses().includes('closed') && getTicketStatuses().includes('open')\">\n Ticket Raised\n </span>\n <span class=\"badge badge-light-success mx-2\"\n *ngIf=\"getTicketStatuses().includes('closed')\">Ticket Closed</span>\n\n </span> -->\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"ms-auto text-end\">\n <button [disabled]=\"!canEnableButton()\" class=\"btn btn-primary\" type=\"button\"\n (click)=\"Raised()\">\n Raise ticket\n </button>\n </div>\n </div>\n <div *ngIf=\"!folderView\" class=\"d-flex flex-wrap align-items-center justify-content-between w-100 my-2 gap-3\">\n <div class=\"nav-group bg-white border-1 btn-group w-auto\">\n <ng-container *ngIf=\"!(countData?.length > 0)\">\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('footfall')\">\n Total Footfall\n <span\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.footfallCount || 0 }}\n </span>\n </button>\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('non-tagging')\">\n Non-tags\n <span\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.nonTags || 0 }}\n </span>\n </button>\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('duplicate')\">\n Duplicated\n <span\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.duplicate || 0 }}\n </span>\n </button>\n \n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'employee' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('employee')\">\n Employee/Staff\n <span\n [ngClass]=\"type === 'employee' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.employee || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\" [ngClass]=\"type === 'junk' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('junk')\">\n Junk\n <span\n [ngClass]=\"type === 'junk' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.junk || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'houseKeeping' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('houseKeeping')\">\n House Keeping\n <span\n [ngClass]=\"type === 'houseKeeping' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.houseKeeping || 0 }}\n </span>\n </button>\n \n \n </ng-container>\n \n </div>\n \n <div class=\"btn-group view-toggle ms-auto\" role=\"group\" aria-label=\"Toggle view\">\n <button type=\"button\" class=\"btn btn-outline px-3 py-2\" [ngClass]=\"{'active': viewMode === 'grid'}\"\n (click)=\"setViewMode('grid')\" aria-label=\"Grid view\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"3\" y=\"3\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"11\" y=\"3\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"3\" y=\"11\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"11\" y=\"11\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'grid' ? '#EAF8FF' : 'none'\"></rect>\n </svg>\n </button>\n <button type=\"button\" class=\"btn btn-outline px-3 py-2\" [ngClass]=\"{'active': viewMode === 'list'}\"\n (click)=\"setViewMode('list')\" aria-label=\"List view\">\n <svg width=\"20\" height=\"18\" viewBox=\"0 0 20 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"2\" y=\"3\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'list' ? '#EAF8FF' : 'none'\"></rect>\n <rect x=\"8\" y=\"4.5\" width=\"10\" height=\"1.5\" rx=\"0.75\" fill=\"#475467\"></rect>\n <rect x=\"8\" y=\"12.5\" width=\"10\" height=\"1.5\" rx=\"0.75\" fill=\"#475467\"></rect>\n <rect x=\"2\" y=\"11\" width=\"4\" height=\"4\" rx=\"1\" stroke=\"#475467\"\n [attr.fill]=\"viewMode === 'list' ? '#EAF8FF' : 'none'\"></rect>\n </svg>\n </button>\n </div>\n </div>\n <ng-container *ngIf=\"!imageFlow\">\n <div *ngIf=\"type === 'footfall' && viewMode === 'grid'\" class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\n <div class=\"col text-nowrap\" *ngFor=\"let obj of objectsArray\">\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\n <li class=\"nav-item cursor-pointer\">\n <a (click)=\"selectedTimes(obj.timeRange)\"\n [ngClass]=\"selectedTime === obj?.timeRange ? 'active' : ''\"\n class=\"nav-link cursor-pointer no-border mx-3 mb-2\">\n {{obj?.timeRange}}<span class=\"mx-2\"\n [ngClass]=\"selectedTime === obj?.timeRange ? 'badge-num-primary' :'badge-num-muted'\">\n {{ obj?.count ? obj?.count : 0 }}\n </span>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </ng-container>\n\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n <div class=\"shimmer\">\n <div class=\"wrapper\">\n <div class=\"stroke animate title\"></div>\n <div class=\"stroke animate link\"></div>\n <div class=\"stroke animate description\"></div>\n </div>\n </div>\n </div>\n <div *ngIf=\"noData\" class=\"row\">\n\n <div class=\"col-lg-12 mb-3\">\n\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column \" style=\"margin: 64px;border-radius: 8px;\nbackground: var(--Gray-50, #F9FAFB);\">\n <svg width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\" />\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\"\n stroke-width=\"13.3333\" />\n <path\n d=\"M35.332 51.9999H33.6654C32.7813 51.9999 31.9335 51.6487 31.3083 51.0236C30.6832 50.3985 30.332 49.5506 30.332 48.6666V33.6666C30.332 32.7825 30.6832 31.9347 31.3083 31.3096C31.9335 30.6844 32.7813 30.3333 33.6654 30.3333H48.6654C49.5494 30.3333 50.3973 30.6844 51.0224 31.3096C51.6475 31.9347 51.9987 32.7825 51.9987 33.6666V35.3333M45.332 41.9999H60.332C62.173 41.9999 63.6654 43.4923 63.6654 45.3333V60.3333C63.6654 62.1742 62.173 63.6666 60.332 63.6666H45.332C43.4911 63.6666 41.9987 62.1742 41.9987 60.3333V45.3333C41.9987 43.4923 43.4911 41.9999 45.332 41.9999Z\"\n stroke=\"#00A3FF\" stroke-width=\"4\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <div class=\"nodata-title my-3\">\n {{ noDataMessages[type?.toLowerCase()] || 'No data found' }}\n </div>\n\n </div>\n </div>\n\n </div>\n\n\n <!-- Split-screen layout (only shown after clicking an image) -->\n <div class=\"split-screen-container\" *ngIf=\"splitScreenEnabled && !noData && !loading\">\n <!-- Left Panel: Thumbnail List + Related Images -->\n <div class=\"left-panel\">\n <!-- Main Images List (hidden when duplicate is selected) -->\n <ng-container *ngIf=\"selectedRadioType !== 'duplicate'\">\n <div class=\"thumbnail-list-section\" *ngFor=\"let group of listViewGroups\">\n <div class=\"time-range-header\">\n <span class=\"time-range-title\">{{ group?.timeRange }}</span>\n <span class=\"time-range-count\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_2149_23440)\">\n <path\n d=\"M2 9.00077H4.75V9.62577C4.75 9.99045 4.60513 10.3402 4.34727 10.598C4.08941 10.8559 3.73967 11.0008 3.375 11.0008C3.01033 11.0008 2.66059 10.8559 2.40273 10.598C2.14487 10.3402 2 9.99045 2 9.62577V9.00077ZM4 3.06077C5 3.06077 5.5 4.50077 5.5 5.50077C5.5 6.00077 5.25 6.50077 5 7.25077L4.75 8.00077H2C2 7.50077 1.75 6.75077 1.75 5.50077C1.75 4.25077 2.749 3.06077 4 3.06077ZM10.027 7.04977L9.9185 7.66527C9.85117 8.02058 9.64656 8.33507 9.34901 8.5406C9.05146 8.74613 8.68492 8.82616 8.32878 8.76337C7.97263 8.70057 7.65557 8.49999 7.44626 8.20509C7.23695 7.91018 7.15225 7.54469 7.2105 7.18777L7.3185 6.57277L10.027 7.04977ZM9.089 0.853272C10.321 1.07027 11.098 2.41577 10.881 3.64677C10.664 4.87777 10.2875 5.57277 10.201 6.06527L7.4925 5.58777L7.3765 4.80577C7.2605 4.02377 7.1015 3.48777 7.188 2.99577C7.3615 2.01077 8.104 0.679772 9.089 0.853272Z\"\n fill=\"#00A3FF\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2149_23440\">\n <rect width=\"12\" height=\"12\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>{{ group?.data?.length || 0 }}\n </span>\n </div>\n <div class=\"thumbnail-grid\">\n <div class=\"thumbnail-item\" *ngFor=\"let obj of group?.data\"\n [ngClass]=\"{'selected': selectImageArray?.templd === obj?.templd}\"\n (click)=\"selectImageForSplitView(obj)\">\n <img class=\"thumbnail-image\" [src]=\"imageUrl + obj?.filePath\"\n (error)=\"obj.filePath = null\" alt=\"\" *ngIf=\"obj?.filePath\" />\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\"\n style=\"height: 120px; padding: 20px;\">\n <span style=\"color: #667085; font-size: 11px;\">No preview</span>\n </div>\n <div class=\"thumbnail-info\">\n <div class=\"tango-id\">Tango ID: {{ obj?.templd }}</div>\n <div class=\"entry-time\">Entry Time: {{ obj?.entryTme || obj?.entryTime}}</div>\n <!-- left panel image logo -->\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='houseKeeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- left panel Images Section (ONLY shown when duplicate is selected) -->\n <div class=\"thumbnail-list-section\"\n *ngIf=\"selectedRadioType === 'duplicate' && remainingImagesGroups && remainingImagesGroups.length > 0\">\n <div class=\"thumbnail-list-section\" *ngFor=\"let group of remainingImagesGroups\">\n <div class=\"time-range-header\" style=\"margin-top: 16px;\">\n <span class=\"time-range-title\">{{ group?.timeRange }}</span>\n <span class=\"time-range-count\"><svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_2149_23440)\">\n <path\n d=\"M2 9.00077H4.75V9.62577C4.75 9.99045 4.60513 10.3402 4.34727 10.598C4.08941 10.8559 3.73967 11.0008 3.375 11.0008C3.01033 11.0008 2.66059 10.8559 2.40273 10.598C2.14487 10.3402 2 9.99045 2 9.62577V9.00077ZM4 3.06077C5 3.06077 5.5 4.50077 5.5 5.50077C5.5 6.00077 5.25 6.50077 5 7.25077L4.75 8.00077H2C2 7.50077 1.75 6.75077 1.75 5.50077C1.75 4.25077 2.749 3.06077 4 3.06077ZM10.027 7.04977L9.9185 7.66527C9.85117 8.02058 9.64656 8.33507 9.34901 8.5406C9.05146 8.74613 8.68492 8.82616 8.32878 8.76337C7.97263 8.70057 7.65557 8.49999 7.44626 8.20509C7.23695 7.91018 7.15225 7.54469 7.2105 7.18777L7.3185 6.57277L10.027 7.04977ZM9.089 0.853272C10.321 1.07027 11.098 2.41577 10.881 3.64677C10.664 4.87777 10.2875 5.57277 10.201 6.06527L7.4925 5.58777L7.3765 4.80577C7.2605 4.02377 7.1015 3.48777 7.188 2.99577C7.3615 2.01077 8.104 0.679772 9.089 0.853272Z\"\n fill=\"#00A3FF\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2149_23440\">\n <rect width=\"12\" height=\"12\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>{{ group?.data?.length || 0 }}</span>\n </div>\n <div class=\"thumbnail-grid\">\n <div class=\"thumbnail-item\" *ngFor=\"let obj of group?.data\" [ngClass]=\"{'selected': obj.selected}\">\n <div class=\"position-relative\">\n <input *ngIf=\"!revopsTypeValue && selectedRadioType === 'duplicate'\" type=\"checkbox\"\n [checked]=\"obj.selected\" class=\"position-absolute absolute form-check-input cursor-pointer\"\n style=\"top: 5px; right: 5px; z-index: 2;\" (change)=\"onImageCheckboxChange($event, obj, 'duplicate')\"\n (click)=\"$event.stopPropagation()\" [disabled]=\"obj.duplicateImagePath?.length > 0\" />\n <img class=\"thumbnail-image cursor-pointer\" [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\"\n alt=\"\" *ngIf=\"obj?.filePath\" (click)=\"handleImageClick($event, obj)\" />\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview cursor-pointer\" style=\"height: 120px; padding: 20px;\"\n (click)=\"handleImageClick($event, obj)\">\n <span style=\"color: #667085; font-size: 11px;\">No preview</span>\n </div>\n <div class=\"thumbnail-info\">\n <div class=\"tango-id\">Tango ID: {{ obj?.templd || obj?.tempId }}\n </div>\n <div class=\"entry-time\">Entry Time: {{ obj?.entryTme ||\n obj?.entryTime }}</div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='houseKeeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Right Panel: Selected Image Details -->\n <div class=\"right-panel\" *ngIf=\"selectImageArray\">\n <ng-container\n *ngTemplateOutlet=\"imageDetailView; context: { $implicit: selectImageArray }\"></ng-container>\n </div>\n <div class=\"right-panel\" *ngIf=\"!selectImageArray\"\n style=\"display: flex; align-items: center; justify-content: center; color: var(--Gray-500, #667085);\">\n <div style=\"text-align: center;\">\n <p style=\"font-size: 16px; font-weight: 500;\">Select an image to view details</p>\n </div>\n </div>\n </div>\n\n <!-- Image Detail View Template for Split-Screen Right Panel -->\n <ng-template #imageDetailView let-obj>\n <div class=\"border-gray p-3 mb-3\">\n <div class=\"position-relative\">\n <img class=\"img-src1\" [src]=\"imageUrl + obj?.filePath\" alt=\"\" *ngIf=\"obj?.filePath\" />\n <!-- Zoom Icon -->\n <div class=\"zoom-icon-button\" (click)=\"openImageZoomModal(imageUrl, obj)\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M18.3333 18.3333L15 15M16.6667 9.16667C16.6667 13.3067 13.3067 16.6667 9.16667 16.6667C5.02667 16.6667 1.66667 13.3067 1.66667 9.16667C1.66667 5.02667 5.02667 1.66667 9.16667 1.66667C13.3067 1.66667 16.6667 5.02667 16.6667 9.16667Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M9.16667 6.66667V11.6667M6.66667 9.16667H11.6667\" stroke=\"#475467\" stroke-width=\"2\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </div>\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\" style=\"height: 375px;\">\n <span class=\"mb-5\">\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Group\">\n <path id=\"Vector\" d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path id=\"Vector_2\"\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n </svg>\n </span>\n <span class=\"header mb-5 text-center\">Preview not available</span>\n <span class=\"description mb-5 text-center\">The selected camera is not available at\n the moment.</span>\n </div>\n </div>\n <div class=\"row px-2 mb-2 mt-3\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd}}\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\">\n <svg style=\"width: 20px; height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\"\n height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\">\n <svg style=\"width: 20px; height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\"\n height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme || obj?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\" viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='houseKeeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n <div class=\"border-gray p-3\">\n <div class=\"row mb-3\">\n <div class=\"col-md-6 title-type\">Select non-shopper type</div>\n <!-- <div class=\"col-md-6 text-end\" \n *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\"> -->\n <div class=\"col-md-6 text-end\">\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"mb-3 d-flex justify-content-end align-items-center gap-2\">\n <!-- Clear Tag Button (visible when Edit button OR Save/Cancel buttons are visible) -->\n <button *ngIf=\"!revopsTypeValue || (revopsTypeValue && editBtnShow)\"\n [disabled]=\"(selectedRadioType === undefined || selectedRadioType === '') || (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\"\n class=\"btn btn-clear-tag d-inline-flex align-items-center justify-content-center\" type=\"button\"\n (click)=\"clearValue()\">\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 49 49\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_516_96841)\">\n <rect x=\"2.16797\" y=\"1.08447\" width=\"44.0342\" height=\"44.0284\" rx=\"8.67445\"\n fill=\"#FEF3F2\" />\n <rect x=\"2.71012\" y=\"1.62663\" width=\"42.9499\" height=\"42.9441\" rx=\"8.13229\"\n stroke=\"#FEF3F2\" stroke-width=\"1.08431\" />\n <path\n d=\"M33.4893 21.3613L33.4912 21.3643C34.0533 21.9297 34.369 22.6949 34.3691 23.4922C34.3691 24.2895 34.0533 25.0546 33.4912 25.6201L26.7256 32.3857C26.4454 32.6661 26.1122 32.8882 25.7461 33.04C25.3798 33.1919 24.9873 33.2705 24.5908 33.2705C24.1942 33.2705 23.801 33.1919 23.4346 33.04C23.0686 32.8883 22.7361 32.6659 22.4561 32.3857L20.7676 30.6992L22.3682 29.0986L24.0557 30.7842L24.0566 30.7852C24.1267 30.8553 24.2102 30.9112 24.3018 30.9492C24.3933 30.9872 24.4917 31.0068 24.5908 31.0068C24.6899 31.0068 24.7883 30.9872 24.8799 30.9492C24.9713 30.9113 25.0541 30.8552 25.124 30.7852H25.125L31.8877 24.0215C32.0267 23.8804 32.1055 23.6903 32.1055 23.4922C32.1054 23.2941 32.0267 23.1039 31.8877 22.9629L30.1963 21.2715L31.7979 19.6699L33.4893 21.3613ZM24.6982 12.9336C24.9571 12.9594 25.2011 13.0733 25.3867 13.2588L30.1973 18.0693L28.5957 19.6709L24.1162 15.1914H16.2852V23.0225L20.7666 27.499L19.166 29.0996L14.3535 24.293C14.1411 24.0807 14.0215 23.7925 14.0215 23.4922V14.0596C14.0217 13.4346 14.5283 12.9277 15.1533 12.9277H24.5859L24.6982 12.9336ZM19.8789 17.6436C20.5038 17.6436 21.0103 18.1506 21.0107 18.7754C21.0107 19.4005 20.504 19.9082 19.8789 19.9082H19.8691C19.2442 19.908 18.7373 19.4004 18.7373 18.7754C18.7378 18.1508 19.2445 17.6438 19.8691 17.6436H19.8789Z\"\n fill=\"#B42318\" />\n <path d=\"M33.1699 14.0845L15.1699 32.0845\" stroke=\"#B42318\" stroke-width=\"2\"\n stroke-linecap=\"round\" />\n </g>\n <defs>\n <filter id=\"filter0_d_516_96841\" x=\"-0.000643253\" y=\"0.000166655\" width=\"48.3724\"\n height=\"48.3655\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"1.08431\" />\n <feGaussianBlur stdDeviation=\"1.08431\" />\n <feColorMatrix type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_516_96841\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_516_96841\"\n result=\"shape\" />\n </filter>\n </defs>\n </svg>\n </button>\n <!-- Cancel and Save Buttons (when !revopsTypeValue) -->\n <div *ngIf=\"!revopsTypeValue\" class=\"d-flex align-items-center gap-2\">\n <button class=\"btn btn-outline\" (click)=\"cancel()\">Cancel</button>\n <button class=\"btn btn-primary\" id=\"alert-toast\" (click)=\"save(selectedType)\"\n [disabled]=\"(selectedRadioType === undefined || selectedRadioType === '') || (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\">Save & close</button>\n </div>\n <!-- Edit Button (when revopsTypeValue && editBtnShow) -->\n <div *ngIf=\"revopsTypeValue && editBtnShow\">\n <button class=\"btn btn-outline\" (click)=\"editValue()\">\n <span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\n viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M14.6554 1.71047C14.8927 1.47315 15.1745 1.2849 15.4845 1.15646C15.7946 1.02802 16.1269 0.961914 16.4626 0.961914C16.7982 0.961914 17.1305 1.02802 17.4406 1.15646C17.7507 1.2849 18.0324 1.47315 18.2697 1.71047C18.5071 1.94779 18.6953 2.22953 18.8238 2.53961C18.9522 2.84969 19.0183 3.18202 19.0183 3.51765C19.0183 3.85327 18.9522 4.18561 18.8238 4.49568C18.6953 4.80576 18.5071 5.0875 18.2697 5.32482L6.0713 17.5233L1.10156 18.8786L2.45695 13.9089L14.6554 1.71047Z\"\n stroke=\"#344054\" stroke-width=\"1.81079\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg></span>Edit\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate\" id=\"duplicate-split\"\n [(ngModel)]=\"selectedType\" [value]=\"'duplicate'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"duplicate-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">Duplicate</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"employee\" id=\"employee-split\"\n [(ngModel)]=\"selectedType\" [value]=\"'employee'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"employee-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">Employee/Staff</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"houseKeeping\" id=\"house-keeping-split\"\n [(ngModel)]=\"selectedType\" [value]=\"'houseKeeping'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"house-keeping-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\" viewBox=\"0 0 21 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">House Keeping</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"junk\" id=\"junk-split\"\n [(ngModel)]=\"selectedType\" [value]=\"'junk'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"junk-split\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\n fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg></span>\n <span class=\"ms-5 tag-class\">Junk</span>\n </label>\n </div>\n <div class=\"mt-3\">\n <label class=\"form-label\">Remarks (Optional)</label>\n <textarea class=\"form-control\" rows=\"3\" placeholder=\"Comment here\" [(ngModel)]=\"userComment\"></textarea>\n </div>\n </div>\n </ng-template>\n\n <!-- Grid/List View (shown when split-screen is not enabled) -->\n <div class=\"row px-0 img-traffic contain high-400px scroll-y\"\n *ngIf=\"viewMode === 'grid' && !noData && !loading && !splitScreenEnabled\">\n <ng-container *ngFor=\"let obj of imagesArrayData\">\n <ng-container *ngTemplateOutlet=\"imageCard; context: { $implicit: obj }\"></ng-container>\n </ng-container>\n </div>\n\n <div class=\"list-view-wrapper\"\n *ngIf=\"viewMode === 'list' && !noData && !loading && !splitScreenEnabled\">\n <div class=\"list-group mb-5\" *ngFor=\"let group of listViewGroups\">\n <div class=\"list-group-header d-flex align-items-center mb-3\">\n <div class=\"group-title\">{{ group?.timeRange }}</div>\n <span class=\"group-count badge badge-light-default ms-2\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_2149_23440)\">\n <path\n d=\"M2 9.00077H4.75V9.62577C4.75 9.99045 4.60513 10.3402 4.34727 10.598C4.08941 10.8559 3.73967 11.0008 3.375 11.0008C3.01033 11.0008 2.66059 10.8559 2.40273 10.598C2.14487 10.3402 2 9.99045 2 9.62577V9.00077ZM4 3.06077C5 3.06077 5.5 4.50077 5.5 5.50077C5.5 6.00077 5.25 6.50077 5 7.25077L4.75 8.00077H2C2 7.50077 1.75 6.75077 1.75 5.50077C1.75 4.25077 2.749 3.06077 4 3.06077ZM10.027 7.04977L9.9185 7.66527C9.85117 8.02058 9.64656 8.33507 9.34901 8.5406C9.05146 8.74613 8.68492 8.82616 8.32878 8.76337C7.97263 8.70057 7.65557 8.49999 7.44626 8.20509C7.23695 7.91018 7.15225 7.54469 7.2105 7.18777L7.3185 6.57277L10.027 7.04977ZM9.089 0.853272C10.321 1.07027 11.098 2.41577 10.881 3.64677C10.664 4.87777 10.2875 5.57277 10.201 6.06527L7.4925 5.58777L7.3765 4.80577C7.2605 4.02377 7.1015 3.48777 7.188 2.99577C7.3615 2.01077 8.104 0.679772 9.089 0.853272Z\"\n fill=\"#00A3FF\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2149_23440\">\n <rect width=\"12\" height=\"12\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>{{ group?.data?.length || 0 }}\n </span>\n </div>\n <div class=\"row gx-4 list-group-row\">\n <ng-container *ngFor=\"let obj of group?.data\">\n <ng-container\n *ngTemplateOutlet=\"imageCard; context: { $implicit: obj }\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n\n <ng-template #imageCard let-obj>\n <!-- main image card selection section-->\n <div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\n class=\"col-md-3 border-gray mx-2 p-2 mt-5\">\n <!-- Condition: Only show if not duplicate OR duplicate with non-empty duplicateImagePath -->\n <ng-container>\n <img class=\"img-src cursor-pointer\" [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\" alt=\"\"\n (click)=\"selectImageForSplitView(obj)\" />\n </ng-container>\n \n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\n <span class=\"mb-5\">\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Group\">\n <path id=\"Vector\" d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path id=\"Vector_2\"\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n </svg>\n \n </span>\n <span class=\"header mb-5 text-center\">Preview not available</span>\n <span class=\"description mb-5 text-center\">The selected camera is not available at\n the\n moment.</span>\n </div>\n <div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\n class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd}} <span\n *ngIf=\"(type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\n class=\"mx-2 badge badge-light-primary\">{{obj.duplicateImagePath?.length}}\n </span>\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\">\n <svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\"\n height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\">\n <svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\"\n height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='houseKeeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n \n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </ng-template>\n\n </div>\n </section>\n\n <!-- full image View -->\n <section *ngIf=\"imageFlow\">\n <div class=\"row\">\n <!-- Ticket Block Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'block'\" class=\"col-12 mb-3\">\n <div class=\"ticket-block-alert\">\n <div class=\"ticket-block-alert-content\">\n <div class=\"ticket-block-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"12\" fill=\"#F04438\" />\n <path d=\"M12 8V13\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n </div>\n <div class=\"ticket-block-alert-text\">\n <div class=\"ticket-block-alert-title\">\n You cannot raise ticket for next {{ getSelectedDateCardData()?.noOfBlockedDays\n || '0' }} days\n </div>\n <div class=\"ticket-block-alert-description\">\n It looks like you have achieved 95% accuracy for the three tickets raised this\n month. This limits you from raising more tickets to avoid redundancy.\n </div>\n <div class=\"ticket-block-alert-action\">\n If you still want to raise tickets, <span class=\"ticket-block-alert-link\"\n (click)=\"requestReset()\">send request</span> to reset.\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Ticket Request Success Alert -->\n <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'request'\" class=\"col-12 mb-3\">\n <div class=\"ticket-request-alert\">\n <div class=\"ticket-request-alert-content\">\n <div class=\"ticket-request-alert-icon\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 21L23 12L2 3V10L17 12L2 14V21Z\" fill=\"#10B981\" />\n </svg>\n </div>\n <div class=\"ticket-request-alert-text\">\n <div class=\"ticket-request-alert-title\">\n Reset Request Sent\n </div>\n <div class=\"ticket-request-alert-description\">\n Your request to enable ticket raising has been submitted. You'll be notified\n once it's approved. Please ensure future ticket accuracy remains within the 95%\n threshold.\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\n <ng-container *ngTemplateOutlet=\"footfallTrendsTemplate\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"ticketStatusTemplate\"></ng-container>\n <span class=\"divider\"></span>\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"ms-auto text-end\">\n {{getTicketStatus()}}\n <button [disabled]=\"!canEnableButton()\" class=\"btn btn-primary\" type=\"button\"\n (click)=\"Raised()\">\n Raise ticket\n </button>\n </div>\n </div>\n <div class=\"nav-group bg-white border-1 btn-group w-auto\">\n <ng-container *ngIf=\"!(countData?.length > 0)\">\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('footfall')\">\n Total Footfall\n <span\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.footfallCount || 0 }}\n </span>\n </button>\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('non-tagging')\">\n Non-tags\n <span\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.nonTags || 0 }}\n </span>\n </button>\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('duplicate')\">\n Duplicated\n <span\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.duplicate || 0 }}\n </span>\n </button>\n\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'employee' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('employee')\">\n Employee/Staff\n <span\n [ngClass]=\"type === 'employee' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\n {{ countData?.employee || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'junk' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('junk')\">\n Junk\n <span\n [ngClass]=\"type === 'junk' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.junk || 0 }}\n </span>\n </button>\n <button class=\"btn btn-outline px-6 py-3\"\n [ngClass]=\"type === 'houseKeeping' ? 'activePlanBtn' : 'inactivePlanBtn'\"\n (click)=\"selectPlanTrends('houseKeeping')\">\n House Keeping\n <span\n [ngClass]=\"type === 'houseKeeping' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\n {{ countData?.houseKeeping || 0 }}\n </span>\n </button>\n\n </ng-container>\n\n </div>\n\n <div class=\"row mx-0 border-gray img-traffic\" *ngIf=\"!noData && !loading\">\n <div class=\"col-md-6 p-2 mb-2 mt-5\">\n <div class=\"position-relative border-gray p-2 \">\n <!-- Main Image -->\n <!-- <img class=\"img-src cursor-pointer h-450px\"\n (click)=\"selectedImageArray(imageUrl, selectImageArray)\"\n [src]=\"imageUrl + selectImageArray?.filePath\" appMagnifier alt=\"\"> -->\n <img class=\"img-src cursor-pointer h-450px\" (click)=\"selectedImageArray(imageUrl, selectImageArray)\"\n [src]=\"imageUrl + selectImageArray?.filePath\" alt=\"\">\n \n <!-- Right arrow button -->\n <div class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{selectImageArray?.templd}}\n <span *ngIf=\"selectImageArray?.status ==='approved'\" class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg></span>\n <span *ngIf=\"selectImageArray?.status ==='rejected'\" class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg></span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{(tempModalImage ||\n selectImageArray)?.entryTme || (tempModalImage ||\n selectImageArray)?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='non-tagging'\"\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\" viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='duplicate'\">\n <svg *ngIf=\"selectImageArray?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!selectImageArray?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\n height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType ==='houseKeeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"selectImageArray?.revopsType === 'junk'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"col-md-6 p-2 mb-2 mt-5\">\n <div class=\"mx-2 \">\n <div class=\"row\">\n <div class=\"col-md-6 title-type\">\n Select non-shopper type\n </div>\n \n \n <!-- <section class=\"col-md-6 text-end\"\n *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\"> -->\n <section class=\"col-md-6 text-end\">\n \n <div *ngIf=\"!revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\">\n \n <button [disabled]=\"\n (selectedRadioType === undefined || selectedRadioType === '') ||\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\n \" class=\"btn btn-default\" type=\"button\" (click)=\"clearValue()\">Clear</button>\n <button class=\"btn btn-outline me-2\" (click)=\"cancel()\">Cancel</button>\n <button class=\"btn btn-primary\" id=\"alert-toast\" (click)=\"save(selectedType)\" [disabled]=\"\n (selectedRadioType === undefined || selectedRadioType === '') ||\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\n \">\n Save\n </button>\n </div>\n </div>\n \n <!-- <div *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\"> -->\n <div *ngIf=\"selectedRadioType ==='junk'\">\n <ng-container *ngIf=\"editBtnShow\">\n <div *ngIf=\"revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\n <button\n *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\n class=\"btn btn-outline me-2\" (click)=\"editValue()\"><span class=\"me-2\"><svg\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\n viewBox=\"0 0 20 20\" fill=\"none\">\n <path\n d=\"M14.6554 1.71047C14.8927 1.47315 15.1745 1.2849 15.4845 1.15646C15.7946 1.02802 16.1269 0.961914 16.4626 0.961914C16.7982 0.961914 17.1305 1.02802 17.4406 1.15646C17.7507 1.2849 18.0324 1.47315 18.2697 1.71047C18.5071 1.94779 18.6953 2.22953 18.8238 2.53961C18.9522 2.84969 19.0183 3.18202 19.0183 3.51765C19.0183 3.85327 18.9522 4.18561 18.8238 4.49568C18.6953 4.80576 18.5071 5.0875 18.2697 5.32482L6.0713 17.5233L1.10156 18.8786L2.45695 13.9089L14.6554 1.71047Z\"\n stroke=\"#344054\" stroke-width=\"1.81079\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg></span>Edit</button>\n \n </div>\n </ng-container>\n </div>\n </section>\n \n </div>\n \n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate\" id=\"duplicate\"\n [(ngModel)]=\"selectedType\" [value]=\"'duplicate'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"duplicate\">\n <span class=\"ms-5\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span class=\"ms-5 tag-class\">Duplicate</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"employee\" id=\"employee\"\n [(ngModel)]=\"selectedType\" [value]=\"'employee'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"employee\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\">Employee/Staff</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"house-keeping\" id=\"house-keeping\"\n [(ngModel)]=\"selectedType\" [value]=\"'houseKeeping'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"revopsTypeValue\">\n <label class=\"form-check-label\" for=\"house-keeping\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg></span>\n <span class=\"ms-5 tag-class\"> House Keeping</span>\n </label>\n </div>\n <div class=\"form-check my-15\">\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"junk\" id=\"junk\"\n [(ngModel)]=\"selectedType\" [value]=\"'junk'\" (change)=\"onRadioChange(selectedType)\"\n [disabled]=\"users?.role ==='user' && this.users?.userType ==='client' || revopsTypeValue\">\n <label class=\"form-check-label\" for=\"junk\">\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg></span>\n <span class=\"ms-5 tag-class\"> Junk</span>\n </label>\n </div>\n </div>\n \n \n </div>\n </div>\n\n\n <div class=\"row px-0 img-traffic mt-3 high-400px scroll-y\">\n <div class=\"col-md-3 border-gray mx-2 p-2 mt-5\" *ngFor=\"let obj of remainingImageArray\">\n <div class=\"position-relative\">\n <input *ngIf=\"!revopsTypeValue && selectedRadioType === 'duplicate'\" type=\"checkbox\"\n [checked]=\"obj.selected\"\n class=\"position-absolute absolute form-check-input cursor-pointer\"\n (change)=\"onImageCheckboxChange($event, obj, 'duplicate')\"\n [disabled]=\"obj.duplicateImagePath?.length > 0\" />\n\n <img class=\"img-src\"\n [ngClass]=\"selectedRadioType !== 'duplicate' ? 'cursor-pointer' : 'cursor-pointer'\"\n [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\" alt=\"\"\n (click)=\"handleImageClick($event, obj)\" />\n\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\n <span class=\"mb-5\">\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Group\">\n <path id=\"Vector\"\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path id=\"Vector_2\"\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n </svg>\n\n </span>\n <span class=\"header mb-5 text-center\">Preview not available</span>\n <span class=\"description mb-5 text-center\">The selected camera is not available at\n the\n moment.</span>\n </div>\n <div class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd ? obj?.templd :\n obj?.tempId}}\n <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg></span>\n <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg></span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme ? obj?.entryTme\n :obj?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\"\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\n viewBox=\"0 0 19 18\" fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\n <svg *ngIf=\"obj?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\n viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='houseKeeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\n viewBox=\"0 0 21 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"obj?.revopsType ==='junk'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n </section>\n </div>\n </section>\n</div>\n\n\n<ng-template #zoomPopup let-model>\n <div class=\"p-4 m-4\">\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\n <span *ngIf=\"popupType === 'non-tagging'\" class=\"my-3\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\n <g clip-path=\"url(#clip0_2088_98337)\">\n <path\n d=\"M29.1693 13.3333V18.3333M29.1693 18.3333H24.1693M29.1693 18.3333L25.3026 14.7C24.407 13.8039 23.299 13.1493 22.0819 12.7973C20.8649 12.4453 19.5785 12.4073 18.3428 12.6869C17.1072 12.9665 15.9624 13.5545 15.0155 14.3962C14.0685 15.2378 13.3502 16.3056 12.9276 17.5M10.8359 26.6666V21.6666M10.8359 21.6666H15.8359M10.8359 21.6666L14.7026 25.3C15.5982 26.1961 16.7062 26.8506 17.9233 27.2027C19.1403 27.5547 20.4267 27.5927 21.6624 27.3131C22.898 27.0335 24.0428 26.4455 24.9897 25.6038C25.9367 24.7621 26.655 23.6943 27.0776 22.5\"\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2088_98337\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(10 10)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <!-- Heading -->\n <h5 class=\"modal-title mb-2\">\n <span *ngIf=\"popupType === 'employee'\">Tagging as employee/staff </span>\n <span *ngIf=\"popupType === 'duplicate'\">Tagging as duplicates </span>\n <span *ngIf=\"popupType === 'houseKeeping'\">Tagging as house keeping </span>\n <span *ngIf=\"popupType === 'non-tagging'\">Clear duplicates</span>\n <span *ngIf=\"popupType ==='junk'\">Tagging as junk</span>\n\n </h5>\n <p class=\"mb-3\">\n <span *ngIf=\"popupType === 'employee'\">Are you sure you want to tag this as employee/staff?</span>\n <span *ngIf=\"popupType === 'duplicate'\">Are you sure you want to tag this as duplicates? </span>\n <span *ngIf=\"popupType === 'houseKeeping'\">Are you sure you want to tag this as house keeping? </span>\n <span *ngIf=\"popupType === 'non-tagging'\">This will remove tagged duplicates and move them to\n 'Non-tag'.</span>\n <span *ngIf=\"popupType ==='junk'\">Are you sure you want to tag this as junk?</span>\n\n </p>\n </div>\n\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\n <button class=\"btn btn-outline me-2\" (click)=\"cancelSubmit()\">Cancel</button>\n <button *ngIf=\"popupType !== 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\n Yes, Tag\n </button>\n <button *ngIf=\"popupType === 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\n Yes, clear\n </button>\n </div>\n </div>\n</ng-template>\n\n\n<ng-template #raisedPopup let-model>\n <div class=\"p-4 m-4\">\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\n <span class=\"my-3\">\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\n <path\n d=\"M21.251 11.0806C21.7405 11.0699 22.2153 11.2487 22.5762 11.5796L23.4922 12.4204C23.8089 12.7097 23.893 13.1017 23.8652 13.4263V13.4272C23.836 13.7478 23.6954 14.0592 23.4785 14.2944C23.3699 14.413 23.2865 14.5525 23.2314 14.7036C23.1764 14.8548 23.1512 15.0155 23.1582 15.1763C23.1652 15.337 23.2035 15.4953 23.2715 15.6411C23.3394 15.7869 23.4362 15.9172 23.5547 16.0259C23.6733 16.1346 23.8117 16.2198 23.9629 16.2749C24.1141 16.33 24.2748 16.3541 24.4355 16.3472C24.5961 16.3402 24.7537 16.3017 24.8994 16.2339C25.0089 16.1829 25.1106 16.116 25.2002 16.0356L25.3701 15.8657C25.5759 15.6748 25.8385 15.5408 26.1152 15.4907C26.2972 15.4546 26.485 15.4617 26.6641 15.5103C26.8439 15.5591 27.0103 15.649 27.1494 15.7729L27.1514 15.7749L28.2598 16.7905C28.445 16.9605 28.5948 17.1658 28.7002 17.394C28.8056 17.6223 28.8648 17.8694 28.874 18.1206C28.8832 18.372 28.8423 18.6234 28.7539 18.8589C28.6655 19.0941 28.5316 19.3096 28.3594 19.4927L20.1113 28.2583C19.937 28.4434 19.7268 28.5912 19.4941 28.6938C19.2614 28.7965 19.0102 28.8522 18.7559 28.856C18.5016 28.8597 18.2493 28.8119 18.0137 28.7163C17.7779 28.6206 17.5636 28.4784 17.3838 28.2983L16.2539 27.1685C15.7511 26.6656 15.8832 25.9552 16.1514 25.5542L16.2061 25.4644C16.3241 25.2486 16.3742 25.0008 16.3496 24.7544C16.3214 24.4731 16.197 24.2102 15.9971 24.0103C15.7971 23.8103 15.5343 23.6859 15.2529 23.6577C14.9715 23.6297 14.6887 23.6995 14.4531 23.856H14.4521C14.0494 24.1222 13.3407 24.2552 12.8379 23.7515L11.6797 22.5933C11.5034 22.4169 11.364 22.2074 11.2686 21.9771C11.1731 21.7467 11.1231 21.4999 11.123 21.2505C11.123 21.001 11.1731 20.7535 11.2686 20.5229C11.364 20.2926 11.5034 20.0831 11.6797 19.9067L19.9492 11.6362C20.2954 11.2902 20.7616 11.0912 21.251 11.0806ZM21.2783 12.3804C21.1237 12.3838 20.9765 12.4468 20.8672 12.5562L12.5967 20.8257C12.5409 20.8814 12.497 20.9482 12.4668 21.021C12.4367 21.0938 12.4209 21.1717 12.4209 21.2505C12.4209 21.3292 12.4367 21.4073 12.4668 21.48C12.497 21.5528 12.541 21.6196 12.5967 21.6753L13.7061 22.7837L13.7314 22.772C14.2169 22.4485 14.7993 22.3035 15.3799 22.3608C15.9608 22.4183 16.5042 22.6747 16.917 23.0874C17.3298 23.5002 17.587 24.0436 17.6445 24.6245C17.702 25.2055 17.5565 25.7892 17.2324 26.2749L17.2305 26.2759C17.2261 26.2822 17.2226 26.2893 17.2197 26.2964L18.3018 27.3804C18.3585 27.4372 18.4266 27.482 18.501 27.5122C18.5755 27.5425 18.6559 27.5574 18.7363 27.5562C18.8166 27.5549 18.8963 27.5378 18.9697 27.5054C19.043 27.4729 19.1091 27.4261 19.1641 27.3677L27.4131 18.6021C27.4673 18.5442 27.5093 18.4761 27.5371 18.4019C27.5649 18.3276 27.5781 18.2487 27.5752 18.1694C27.5722 18.0902 27.5538 18.0119 27.5205 17.9399C27.4872 17.8679 27.4394 17.8032 27.3809 17.7495L26.3223 16.7778C26.2925 16.7885 26.2648 16.8053 26.2432 16.8286C26.0217 17.0788 25.7529 17.2827 25.4521 17.4282C25.15 17.5743 24.8214 17.6585 24.4863 17.6763C24.1511 17.694 23.815 17.6452 23.499 17.5317C23.1832 17.4183 22.8928 17.2429 22.6455 17.0161C22.3982 16.7893 22.1988 16.5153 22.0586 16.2104C21.9183 15.9055 21.8404 15.5752 21.8291 15.2397C21.8178 14.9043 21.8737 14.57 21.9932 14.2563C22.1121 13.9442 22.2915 13.6587 22.5215 13.4165L22.5547 13.3657C22.5594 13.3552 22.5607 13.3437 22.5635 13.3325L21.6973 12.5386V12.5376C21.5833 12.4331 21.4329 12.377 21.2783 12.3804Z\"\n fill=\"#00A3FF\" stroke=\"#00A3FF\" stroke-width=\"0.3\" />\n </svg>\n </span>\n <!-- Heading -->\n <h5 class=\"modal-title mb-2\">\n <span>Raise tickets for the following</span>\n\n </h5>\n <p class=\"mb-3\">\n <span>Raising a ticket for footfall count issues. Make sure all records are identified for\n validation.</span>\n\n\n </p>\n </div>\n <div class=\"row\">\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.duplicateCount ? tempRaisedPayload?.duplicateCount :'0'}}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n Duplicates\n </div>\n </div>\n </div>\n\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.employeeCount ? tempRaisedPayload?.employeeCount:'0' }}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n Employee\n </div>\n </div>\n </div>\n\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.houseKeepingCount ? tempRaisedPayload?.houseKeepingCount :'0'}}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n House Keeping\n </div>\n </div>\n </div>\n <div class=\"col-md-3 my-4\">\n <div class=\"border border-1 rounded p-3 h-100\">\n <div class=\"fw-semibold fs-5 mb-2\">\n {{tempRaisedPayload?.junkCount ? tempRaisedPayload?.junkCount :'0'}}\n </div>\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\n Junk\n </div>\n </div>\n\n </div>\n </div>\n\n <!-- Label and Textarea -->\n <div class=\"my-3\">\n <label class=\"form-label\">Description (Optional)</label>\n <textarea rows=\"3\" [(ngModel)]=\"commentText\" class=\"form-control\"\n placeholder=\"Enter description\"></textarea>\n </div>\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\n\n <button class=\"btn btn-outline w-50 me-2\" (click)=\"cancelRasied()\">Cancel</button>\n <button class=\"btn btn-primary w-50\" (click)=\"submitRaised()\">\n Raise Ticket\n </button>\n </div>\n </div>\n</ng-template>\n\n\n<ng-template #imagePopup let-model>\n <div class=\"mx-4\">\n <div class=\"row\">\n <div class=\" p-2 mb-2 mt-5\">\n <div *ngIf=\"isModalOpen\" class=\"position-relative border-gray p-2 \">\n <!-- <button *ngIf=\"canNavigateLeft\" (click)=\"navigateImage('left')\"\n class=\"btn btn-light position-absolute start-0 top-50 z-index-10\">\n \u25C0\n </button> -->\n\n <!-- Main Image -->\n <!-- <img class=\" cursor-pointer w-100 h-525px\" \n [src]=\"imageUrl + (tempModalImage?.filePath || selectImageArray?.filePath)\"\n appMagnifier alt=\"\"> -->\n <img class=\" cursor-pointer w-100 h-525px\"\n [src]=\"imageUrl + (tempModalImage?.filePath || selectImageArray?.filePath)\" alt=\"\">\n <!-- <button *ngIf=\"canNavigateRight\" (click)=\"navigateImage('right')\"\n class=\"btn btn-light position-absolute end-0 top-50 z-index-10\">\n \u25B6\n </button> -->\n\n <!-- Right arrow button -->\n <div class=\"row px-2 mb-2\">\n <div class=\"col-md-7\">\n <div class=\"py-2 img-doc-time\">Tango ID : {{(tempModalImage || selectImageArray)?.templd ||\n (tempModalImage || selectImageArray)?.tempId}}\n <span *ngIf=\"(tempModalImage || selectImageArray)?.status ==='approved'\"\n class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\n <rect y=\"0.5\" width=\"10\" height=\"10\" rx=\"5\" fill=\"#D1FADF\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\n fill=\"#12B76A\" />\n </svg></span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.status ==='rejected'\"\n class=\"ms-2\"><svg style=\"width: 20px;\n height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\n <g clip-path=\"url(#clip0_1428_59484)\">\n <path\n d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n fill=\"#FEE4E2\" />\n <path\n d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\n stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1428_59484\">\n <rect width=\"12\" height=\"12\" fill=\"white\"\n transform=\"translate(0.599609 0.5)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n </div>\n <div class=\"img-doc-value\">Entry Time : {{(tempModalImage || selectImageArray)?.entryTme ||\n (tempModalImage || selectImageArray)?.entryTime}}</div>\n </div>\n <div class=\"col-md-5 text-end py-3\">\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='non-tagging'\"\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\" viewBox=\"0 0 19 18\"\n fill=\"none\">\n <path\n d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='duplicate'\">\n <svg *ngIf=\"(tempModalImage || selectImageArray)?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_568_103657)\">\n <path\n d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\n stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\n <defs>\n <clipPath id=\"clip0_568_103657\">\n <rect width=\"10\" height=\"10\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n <svg *ngIf=\"!(tempModalImage || selectImageArray)?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94635)\">\n <path\n d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94635\">\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='employee'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94639)\">\n <path\n d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94639\">\n <rect width=\"20\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='houseKeeping'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\" viewBox=\"0 0 21 21\"\n fill=\"none\">\n <g clip-path=\"url(#clip0_2012_94643)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\n fill=\"#475467\" />\n </g>\n <defs>\n <clipPath id=\"clip0_2012_94643\">\n <rect width=\"21\" height=\"20\" fill=\"white\"\n transform=\"translate(0 0.686035)\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType === 'junk'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- <div class=\"modal-footer py-2 px-0\"> -->\n\n <div class=\"w-100 py-2 mb-2 px-0 d-flex justify-content-end\">\n\n <button class=\"btn btn-outline\" (click)=\"closeImage()\">Close</button>\n\n </div>\n <!-- </div> -->\n </div>\n</ng-template>\n\n<!-- Footfall Trends Template -->\n<ng-template #footfallTrendsTemplate>\n <div class=\"row w-100 mb-1 g-1\">\n <!-- Total Footfall Card -->\n <div class=\"col-md-3\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <div class=\"d-flex align-items-center gap-2\">\n <span class=\"metric-title\">Total Footfall</span>\n <svg placement=\"top\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M4 18H9.5V19.25C9.5 19.9793 9.21027 20.6788 8.69454 21.1945C8.17882 21.7103 7.47935 22 6.75 22C6.02065 22 5.32118 21.7103 4.80546 21.1945C4.28973 20.6788 4 19.9793 4 19.25V18ZM8 6.11999C10 6.11999 11 8.99999 11 11C11 12 10.5 13 10 14.5L9.5 16H4C4 15 3.5 13.5 3.5 11C3.5 8.49999 5.498 6.11999 8 6.11999ZM20.054 14.098L19.837 15.329C19.7023 16.0396 19.2931 16.6686 18.698 17.0796C18.1029 17.4907 17.3698 17.6508 16.6576 17.5252C15.9453 17.3996 15.3111 16.9984 14.8925 16.4086C14.4739 15.8188 14.3045 15.0878 14.421 14.374L14.637 13.144L20.054 14.098ZM18.178 1.70499C20.642 2.13899 22.196 4.82999 21.762 7.29199C21.328 9.75399 20.575 11.144 20.402 12.129L14.985 11.174L14.753 9.60999C14.521 8.04599 14.203 6.97399 14.376 5.98999C14.723 4.01999 16.208 1.35799 18.178 1.70499Z\"\n fill=\"#00A3FF\" />\n </svg>\n </div>\n </div>\n <div class=\"metric-value\">{{ getCurrentFootfall() || 0 }}</div>\n <!-- [ngClass]=\"getFootfallPercentageChange() >= 0 ? 'up' : 'down'\" -->\n <div class=\"metric-trend\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M15.3327 3.99998L8.99935 10.3333L5.66602 6.99998L0.666016 12M15.3327 3.99998H11.3327M15.3327 3.99998V7.99998\"\n stroke=\"#039855\" stroke-width=\"1.18681\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n <span style=\"color: #10B981\">{{getFootfallPercentageChange() }}% </span><span>vs Yesterday</span>\n </div>\n </div>\n </div>\n <!-- Total Downtime Card -->\n <div class=\"col-md-3\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <div class=\"d-flex align-items-center gap-2\">\n <span class=\"metric-title\">Total Downtime</span>\n <div class=\"downtime-icons\">\n <svg width=\"40\" height=\"41\" viewBox=\"0 0 40 41\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <rect y=\"0.5\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\n <path\n d=\"M21.9004 12.1675C22.9958 12.1675 24.0423 12.3918 24.9977 12.7987C25.9889 13.2207 26.8809 13.8402 27.6279 14.6087C28.3734 15.3756 28.9756 16.2931 29.3857 17.3162C29.7813 18.299 29.9993 19.3756 29.9993 20.5008C29.9993 21.6277 29.7813 22.7043 29.3857 23.6871C28.9756 24.7068 28.3734 25.6244 27.6263 26.3929C26.8809 27.1598 25.9889 27.7793 24.9945 28.2012C24.0391 28.6081 22.9925 28.8325 21.8988 28.8325C20.8034 28.8325 19.7568 28.6081 18.8014 28.2012C17.8102 27.7793 16.9183 27.1598 16.1729 26.3929L16.1712 26.3912C15.4242 25.6227 14.8236 24.7052 14.4134 23.6871C14.2865 23.3707 14.1774 23.0459 14.0879 22.7127C14.2572 22.7294 14.4297 22.7378 14.6038 22.7378C14.9342 22.7378 15.2565 22.7076 15.5706 22.649C15.6227 22.8098 15.6797 22.9688 15.7415 23.1246C16.0785 23.9617 16.5732 24.7152 17.1885 25.3481C17.8037 25.981 18.5378 26.49 19.3499 26.8366C20.1328 27.1698 20.9938 27.3557 21.8988 27.3557C22.8037 27.3557 23.6631 27.1715 24.4476 26.8366C25.2614 26.49 25.9938 25.981 26.6091 25.3481C27.2243 24.7152 27.7191 23.9601 28.056 23.1246C28.3799 22.3192 28.5605 21.4334 28.5605 20.5025C28.5605 19.5715 28.3815 18.6875 28.056 17.8804C27.7191 17.0432 27.2243 16.2898 26.6091 15.6569C25.9938 15.024 25.2598 14.5149 24.4476 14.1684C23.6647 13.8352 22.8037 13.6493 21.8988 13.6493C20.9938 13.6493 20.1344 13.8335 19.3499 14.1684C19.2799 14.1985 19.21 14.2303 19.1416 14.2621C18.8747 13.8301 18.5524 13.4383 18.1829 13.0984C18.3848 12.9913 18.5915 12.8925 18.8014 12.8021C19.7601 12.3918 20.805 12.1675 21.9004 12.1675ZM20.971 16.5393C20.971 16.335 21.0524 16.1508 21.181 16.0169C21.3112 15.8829 21.4902 15.8009 21.6888 15.8009C21.8874 15.8009 22.0664 15.8829 22.1966 16.0169C22.3268 16.1508 22.4066 16.335 22.4066 16.5393V20.4271L25.2305 22.1501C25.3997 22.2539 25.5137 22.4196 25.5592 22.6021C25.6048 22.7847 25.5837 22.9856 25.4827 23.1597V23.1614C25.3818 23.3355 25.2207 23.4527 25.0433 23.4996C24.8659 23.5465 24.6706 23.5247 24.5013 23.4209H24.4997L21.3405 21.4937C21.2314 21.4318 21.1419 21.3413 21.0768 21.2342C21.0101 21.122 20.971 20.9897 20.971 20.8491V16.5393Z\"\n fill=\"#667085\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M14.3913 12.6095C16.8164 12.6095 18.7826 14.6321 18.7826 17.1269C18.7826 19.6218 16.8164 21.6444 14.3913 21.6444C11.9661 21.6444 10 19.6218 10 17.1269C10 14.6321 11.9661 12.6095 14.3913 12.6095ZM14.3913 19.7172L16.748 16.7201H15.2848V15.1261H13.4977V16.7201H12.0345L14.3913 19.7172Z\"\n fill=\"#F04438\" />\n </svg>\n </div>\n </div>\n </div>\n <div class=\"metric-value\">{{ getFormattedDowntime() || '-' }}</div>\n <div class=\"metric-trend metric-trend-placeholder\"></div>\n <!-- <div class=\"metric-tag success\" *ngIf=\"hasDowntime()\"> -->\n <!-- <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M11.6667 3.5L5.25 9.91667L2.33334 7\" stroke=\"#10B981\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg> -->\n <!-- <span>Issue submitted</span>\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4.5 2.5L7.5 5.5L10.5 2.5\" stroke=\"#10B981\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg> -->\n <!-- </div> -->\n </div>\n </div>\n\n <!-- Ticket Status Card -->\n <div class=\"col-md-3\">\n <div class=\"metric-card\">\n <div class=\"metric-header\">\n <span class=\"metric-title\">Ticket status</span>\n </div>\n <div class=\"metric-value\" \n [ngClass]=\"{\n 'ticket-status-raised': getTicketStatus()?.toLowerCase() === 'raised',\n 'ticket-status-closed': getTicketStatus()?.toLowerCase() === 'closed'\n }\">\n {{ getTicketStatus() === '-' ? '-' : (getTicketStatus() | titlecase) }}\n </div>\n <div class=\"metric-trend metric-trend-placeholder\"></div>\n </div>\n </div>\n <span class=\"divider\"></span>\n </div>\n</ng-template>\n\n<ng-template #resetRequestPopup let-model>\n <div class=\"p-4\">\n <div class=\"modal-header border-0 p-0 w-100\">\n <h5 class=\"modal-title mb-3 fw-bold\">\n Reset request.\n </h5>\n </div>\n <div class=\"modal-body p-0\">\n <p class=\"text-muted mb-3\">\n You're requesting to re-enable footfall tickets, disabled after three instances of exceeding 95%\n accuracy.\n </p>\n <p class=\"text-muted mb-0\">\n Please ensure future accuracy stays on or within 95%.\n </p>\n </div>\n <div class=\"modal-footer border-0 p-0 mt-4 d-flex justify-content-end gap-2\">\n <button type=\"button\" class=\"btn btn-outline\" (click)=\"cancelResetRequest()\">\n Cancel\n </button>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"submitResetRequest()\">\n Send Request\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #ticketStatusTemplate let-model>\n <!-- Ticket Review Card (shown when ticket status is raised) -->\n <div class=\"col-12 mb-3\" *ngIf=\"isTicketRaised() && getTaggingData('tagging')\">\n <div class=\"ticket-review-card\">\n <!-- Actual Footfall Header -->\n <div class=\"actual-footfall-header\">\n <span class=\"actual-footfall-number\">{{ getTaggingData('tagging')?.footfall || 0 }}</span>\n <span class=\"actual-footfall-label\">Actual Footfall</span>\n </div>\n <!-- Ticket Created By Section -->\n <div class=\"ticket-creator-section\"\n *ngIf=\"getTaggingData('tagging')?.createdByEmail || getTaggingData('tagging')?.createdAt\">\n <div class=\"d-flex align-items-center gap-2\">\n <!-- <div class=\"creator-avatar\" *ngIf=\"getTaggingData()?.createdByEmail?.profilePicture\">\n <img [src]=\"getTaggingData()?.createdByEmail?.profilePicture\" alt=\"Profile\" />\n </div> -->\n <div class=\"creator-avatar-placeholder\"\n *ngIf=\"!getTaggingData('tagging')?.createdByEmail?.profilePicture\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\n <path\n d=\"M16 10C17.6569 10 19 11.3431 19 13C19 14.6569 17.6569 16 16 16C14.3431 16 13 14.6569 13 13C13 11.3431 14.3431 10 16 10Z\"\n fill=\"#00A3FF\" />\n <path d=\"M11 22C11 19.2386 13.2386 17 16 17C18.7614 17 21 19.2386 21 22V23H11V22Z\"\n fill=\"#00A3FF\" />\n </svg>\n </div>\n <div class=\"creator-info\">\n <div class=\"creator-label\">Ticket created by</div>\n <div class=\"creator-details\">\n <span class=\"creator-email\">{{ getTaggingData('tagging')?.createdByEmail ||\n getTaggingData('tagging')?.createdByEmail || 'N/A' }}</span>\n <span class=\"creator-separator\" *ngIf=\"getTaggingData('tagging')?.createdAt\">\u2022</span>\n <span class=\"creator-time\" *ngIf=\"getTaggingData('tagging')?.createdAt\">{{\n getTaggingData('tagging')?.createdAt | date:'h:mm:ss a - d MMM yyyy' }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Ticket Revised Footfall and Metrics -->\n <div class=\"revised-footfall-section\">\n <div class=\"metrics-row\">\n <div class=\"metric-item\">\n <div class=\"metric-number blue-text\">\n {{ getTaggingData('tagging')?.revicedFootfall || 0 }}\n <span class=\"metric-percentage\">\n ({{ getTaggingData('tagging')?.revicedPerc || 0 }}%)\n </span>\n <span class=\"metric-arrow\">\u2193</span>\n </div>\n <div class=\"metric-label\">Revised footfall</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">({{ getRevisionCalculation('tagging')}}%)</div>\n <div class=\"metric-label\">Ticket%</div>\n </div>\n <div class=\"metric-divider\"></div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'duplicate') }}</div>\n <div class=\"metric-label\">Duplicates</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'employee') }}</div>\n <div class=\"metric-label\">Employee/Staff</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'junk') }}</div>\n <div class=\"metric-label\">Junk</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'houseKeeping') }}</div>\n <div class=\"metric-label\">House Keeping</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Ticket Final revision Card (shown when ticket status is closed) -->\n <div class=\"col-12 mb-3\" *ngIf=\"isTicketClosed() && getTaggingData('finalRevision')\">\n <div class=\"ticket-review-card\">\n <!-- Ticket card section in revision start -->\n\n <!-- Actual Footfall Header -->\n <div class=\"actual-footfall-header\">\n <span class=\"actual-footfall-number\">{{ getTaggingData('tagging')?.footfall || 0 }}</span>\n <span class=\"actual-footfall-label\">Actual Footfall</span>\n </div>\n <!-- Ticket Created By Section -->\n <div class=\"ticket-creator-section\"\n *ngIf=\"getTaggingData('tagging')?.createdByEmail || getTaggingData('tagging')?.createdAt\">\n <div class=\"d-flex align-items-center gap-2\">\n <!-- <div class=\"creator-avatar\" *ngIf=\"getTaggingData()?.createdByEmail?.profilePicture\">\n <img [src]=\"getTaggingData()?.createdByEmail?.profilePicture\" alt=\"Profile\" />\n </div> -->\n <div class=\"creator-avatar-placeholder\"\n *ngIf=\"!getTaggingData('tagging')?.createdByEmail?.profilePicture\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\n <path\n d=\"M16 10C17.6569 10 19 11.3431 19 13C19 14.6569 17.6569 16 16 16C14.3431 16 13 14.6569 13 13C13 11.3431 14.3431 10 16 10Z\"\n fill=\"#00A3FF\" />\n <path d=\"M11 22C11 19.2386 13.2386 17 16 17C18.7614 17 21 19.2386 21 22V23H11V22Z\"\n fill=\"#00A3FF\" />\n </svg>\n </div>\n <div class=\"creator-info\">\n <div class=\"creator-label\">Ticket created by</div>\n <div class=\"creator-details\">\n <span class=\"creator-email\">{{ getTaggingData('tagging')?.createdByEmail ||\n getTaggingData('tagging')?.createdByEmail || 'N/A' }}</span>\n <span class=\"creator-separator\" *ngIf=\"getTaggingData('tagging')?.createdAt\">\u2022</span>\n <span class=\"creator-time\" *ngIf=\"getTaggingData('tagging')?.createdAt\">{{\n getTaggingData('tagging')?.createdAt | date:'h:mm:ss a - d MMM yyyy' }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Ticket Revised Footfall and Metrics -->\n <div class=\"revised-footfall-section\">\n <div class=\"metrics-row\">\n <div class=\"metric-item\">\n <div class=\"metric-number blue-text\">\n {{ getTaggingData('tagging')?.revicedFootfall || 0 }}\n <span class=\"metric-percentage\">\n ({{ getTaggingData('tagging')?.revicedPerc || 0 }}%)\n </span>\n <span class=\"metric-arrow\">\u2193</span>\n </div>\n <div class=\"metric-label\">Revised footfall</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">({{ getRevisionCalculation('tagging')}}%)</div>\n <div class=\"metric-label\">Ticket%</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'duplicate') }}</div>\n <div class=\"metric-label\">Duplicates</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'employee') }}</div>\n <div class=\"metric-label\">Employee/Staff</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'junk') }}</div>\n <div class=\"metric-label\">Junk</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'houseKeeping') }}</div>\n <div class=\"metric-label\">House Keeping</div>\n </div>\n </div>\n </div>\n <!-- Ticket card section in revision end -->\n\n <!-- Final Revision Section -->\n <div class=\"revision-section\">\n <div class=\"revision-title\">Final revision</div>\n <div class=\"final-revision-note\">\n Please reach <a [href]=\"'mailto:' + revisionMailTo\" class=\"email-link\">{{ revisionMailTo }}</a> for any further\n discrepancies\n </div>\n <div class=\"revised-footfall-section\">\n <div class=\"metrics-row\">\n <div class=\"metric-item\">\n <div class=\"metric-number blue-text\">\n {{ getTaggingData('finalRevision')?.revicedFootfall || 0 }}\n <span class=\"metric-percentage\">\n ({{ getTaggingData('finalRevision')?.revicedPerc || 0}}%)\n </span>\n <span class=\"metric-arrow\">\u2191</span>\n </div>\n <div class=\"metric-label\">Revised footfall</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">({{ getRevisionCalculation('finalRevision')}}%)</div>\n <div class=\"metric-label\">Ticket%</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalRevision'), 'duplicate') }}\n </div>\n <div class=\"metric-label\">Duplicates</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalRevision'), 'employee') }}\n </div>\n <div class=\"metric-label\">Employee/Staff</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalRevision'), 'junk') }}</div>\n <div class=\"metric-label\">Junk</div>\n </div>\n <div class=\"metric-item\">\n <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalRevision'), 'houseKeeping')\n }}</div>\n <div class=\"metric-label\">House Keeping</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-template>", styles: ["@charset \"UTF-8\";.switch-form-card{padding:8px 16px;border-radius:4px;border-left:2px solid var(--Primary-600, #00A3FF);background:var(--Primary-25, #F6FCFF);display:flex;align-items:center;justify-content:space-between}.switch-form-card .txt-one{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:140%}.nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.badge-num-primary{border-radius:16px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;text-align:center;font-size:14px!important;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.badge-num-muted{border-radius:16px!important;background:var(--Primary-50, #F2F4F7)!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:14px;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.img-src{width:100%;height:195px;border-radius:.625rem}.img-traffic .col-md-3{width:calc(20% - 16px)!important;flex:0 0 calc(20% - 16px)!important;max-width:calc(20% - 16px)!important}.border-gray{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.img-doc-directory{color:var(--Gray-900, #101828)!important;font-size:14px!important;font-weight:600;line-height:20px;text-decoration-line:underline}.img-doc-time{color:var(--Gray-800, #1D2939);font-size:14px;font-weight:500;line-height:20px}.img-doc-value{color:var(--Gray-600, #667085);font-size:14px;font-weight:500;line-height:20px}.overflow-x{overflow-x:auto}.no-preview{border:1px solid #F04438;background:#fee4e2;border-radius:8px;stroke-width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:41px 16px}.no-preview .header{color:#f04438;font-size:20px;font-weight:700;line-height:20px}.no-preview .description{color:#f04438;font-size:12px;font-weight:500;line-height:18px}.img-nodata{width:25%;height:15%}.img-nodata1{width:15%;height:15%}.nodata-title{font-size:14px!important;font-weight:600}.img-direc{color:var(--Gray-900, #101828)!important;font-size:18px!important;font-weight:500;line-height:28px;display:flex;align-items:center;white-space:nowrap}.custom-accordion{border-radius:5px}.custom-accordion-item{margin-bottom:10px}.custom-accordion-header{background-color:#fff;border:none;cursor:pointer;padding:10px;text-align:left;width:100%;display:flex;justify-content:space-between;align-items:center}.custom-accordion{width:100%}.mainheading{width:100%;display:flex;justify-content:space-between;align-items:center;padding:19px;border:none;background:none;cursor:pointer}.mainheading-1{width:77%;display:flex;justify-content:space-between;align-items:center;padding:19px;border:none;background:none;cursor:pointer}.header-row{display:flex;align-items:center;width:100%;justify-content:space-between;gap:12px}.header-left-section{display:flex;align-items:center;gap:12px;flex-shrink:0}.header-right-section{display:flex;align-items:center;flex:1;min-width:0}.accordion-toggle-btn{background:none;border:none;cursor:pointer;padding:0;display:flex;align-items:center;flex-shrink:0}.img-dire{font-size:16px;font-weight:700}.divider{flex-grow:1;height:1px;background-color:#ddd;margin:0 10px;align-self:center}.accordion-arrow{display:flex;align-items:center}.scroll-container{max-height:400px;overflow-y:auto;overflow-x:hidden}.view-toggle .btn{border-radius:6px}.view-toggle .btn.active{background:var(--Primary-50, #EAF8FF);border-color:var(--Primary-200, #99DAFF)}.date-list-container{padding:4px 23px;width:100%}.date-list-scroll{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;max-height:300px;overflow-y:auto;overflow-x:hidden;padding-bottom:8px}.date-card{min-width:0;max-width:none;padding:16px;background:#fff;border:1px solid #D0D5DD;border-radius:8px;cursor:pointer;transition:all .2s ease;display:flex;flex-direction:column;gap:8px}.date-card:hover{box-shadow:0 2px 8px #0000001a;border-color:#00a3ff}.date-card .date-card-header{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.date-card .date-card-header .calendar-icon{flex-shrink:0}.date-card .date-card-header .date-text{color:var(--Gray-900, #101828);font-size:14px;font-weight:500;line-height:20px;flex:1}.date-card .footfall-count{color:var(--Gray-900, #101828);font-size:32px;font-weight:400;line-height:40px;margin-top:4px}.date-card .footfall-label{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px}.date-card-active{background:var(--Primary-50, #EAF8FF);border-color:var(--Primary-600, #00A3FF);border-width:2px}.date-card-active .date-text{color:var(--Primary-700, #009BF3);font-weight:600}.date-card-active .footfall-count{color:var(--Primary-700, #009BF3)}.list-view-wrapper{padding:0 8px 16px;max-height:480px;overflow-y:auto}.list-group{border:1px solid var(--Gray-200, #EAECF0);border-radius:12px;background:#fff;padding:16px 20px}.list-group-header{border-bottom:1px solid var(--Gray-200, #EAECF0);padding-bottom:12px;margin-bottom:16px!important}.list-group-header .group-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.list-group-header .group-count{background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;font-weight:600;padding:4px 10px!important;border-radius:12px!important;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.list-group-header .group-count svg{flex-shrink:0;display:block}.high-400px{min-height:auto!important;max-height:800px!important}.scroll-y{overflow-y:auto}.absolute{top:5px;right:5px;z-index:2}.slider{position:relative}.slider .previous{position:absolute;top:30%;left:2%;width:32px;height:32px;background-color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.slider .next{position:absolute;top:30%;right:2%;width:32px;height:32px;background-color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}.img-src1{border-radius:10px;border:0px solid var(--Gray-400, #98A2B3);background:var(--Gray-50, #F9FAFB);width:100%;height:375px;object-fit:contain}.zoom-icon-button{position:absolute;top:10px;right:10px;z-index:10;cursor:pointer;background:#fffffff2;border-radius:50%;padding:8px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #00000026;transition:all .2s ease}.zoom-icon-button:hover{background:#fff;box-shadow:0 4px 12px #0003;transform:scale(1.05)}.zoom-icon-button svg{width:20px;height:20px}.border-gray{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);padding:0 4px}.border-gray-active{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #EAF8FF);padding:0 4px}.zone-header{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:20px}.last-visit{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.toggle-label{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.nav-dev{border-radius:8px!important;border:1px solid var(--Primary-200, #99DAFF)!important;background:var(--Primary-25, #F6FCFF)!important}.tab-active{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3)!important;font-size:14px;font-weight:500;line-height:20px}.tab-text-default{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px}.border-gray-active1{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #ffffff);padding:12px!important}.nav-item1 .nav-link1.active{border:none;border-radius:0;background:var(--Primary-50, #EAF8FF);border-bottom:2px solid #009BF3!important;padding:12px;color:var(--Primary-700, #009BF3);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.active-normal{padding:12px;color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.nav-item1 .nav-link1:hover{border:none}.tag-class{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:20px}.spent-title{color:var(--Gray-600, #475467);font-size:14px;font-weight:600;line-height:20px}.spent-value{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.spent-value1{color:var(--Primary-500, #33B5FF);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font}.w-33{width:30%}.w-45{width:45%}.view-tetory{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:600;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;text-transform:capitalize}.border-gray-tagged{border-radius:4px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Primary-50, #ffffff);padding:8px!important}.desc-id{color:var(--Gray-900, #101828);font-size:12px;font-style:normal;font-weight:400;line-height:20px}.active-tab{border-bottom:2px solid #0d6efd;font-weight:600;color:#0d6efd}.badge-selected{background-color:#e0f3ff;color:#0d6efd;border:1px solid #0d6efd;border-radius:20px;padding:6px 12px}.badge-unselected{background-color:#f0f0f0;color:#333;border-radius:20px;padding:6px 12px}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;appearance:textfield}.cursor-not-allowed{cursor:not-allowed!important}.title-type{color:var(--Gray-800, #1D2939);font-size:16px;font-weight:600;line-height:24px}.top-50{top:35%!important}.activePlanBtn{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #344054)!important;font-size:14px;font-weight:500!important;line-height:20px}.badge-active{border-radius:16px;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);text-align:center;font-size:12px;font-style:normal;font-weight:500;line-height:20px;mix-blend-mode:multiply}input[type=checkbox]{width:18px!important;height:18px!important;margin:-2px 5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #D0D5DD)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}::ng-deep .modal-backdrop{pointer-events:none}.meta-change.up{color:#10b981}.meta-change.down{color:#ef4444}.meta-change.neutral{color:#64748b}.split-screen-container{display:flex;height:calc(100vh - 200px);min-height:700px;gap:16px;margin-top:16px}.split-screen-container .left-panel{flex:0 0 40%;max-width:40%;overflow-y:auto;overflow-x:hidden;padding-right:8px;border-right:1px solid var(--Gray-200, #EAECF0)}.split-screen-container .right-panel{flex:1;overflow-y:auto}.thumbnail-list-section{margin-bottom:24px}.thumbnail-list-section .time-range-header{display:flex;align-items:center;gap:8px;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--Gray-200, #EAECF0)}.thumbnail-list-section .time-range-header .time-range-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px}.thumbnail-list-section .time-range-header .time-range-count{color:var(--Gray-600, #667085);font-size:14px;font-weight:500;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);padding:2px 10px;border-radius:16px}.thumbnail-list-section .thumbnail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.thumbnail-list-section .thumbnail-item{cursor:pointer;border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);padding:8px;transition:all .2s ease}.thumbnail-list-section .thumbnail-item:hover{border-color:var(--Primary-600, #00A3FF);box-shadow:0 2px 8px #00a3ff1a}.thumbnail-list-section .thumbnail-item.selected{border-color:var(--Primary-600, #00A3FF);border-width:2px;background:var(--Primary-50, #EAF8FF)}.thumbnail-list-section .thumbnail-item .thumbnail-image{width:100%;height:120px;object-fit:cover;border-radius:4px;margin-bottom:8px}.thumbnail-list-section .thumbnail-item .thumbnail-info{display:grid;grid-template-columns:1fr auto;align-items:flex-start;gap:8px}.thumbnail-list-section .thumbnail-item .thumbnail-info .tango-id{color:var(--Gray-900, #101828);font-size:12px;font-weight:600;line-height:16px;margin-bottom:4px;grid-column:1}.thumbnail-list-section .thumbnail-item .thumbnail-info .entry-time{color:var(--Gray-600, #667085);font-size:11px;font-weight:400;line-height:16px;grid-column:1}.thumbnail-list-section .thumbnail-item .thumbnail-info .col-md-5{grid-column:2;grid-row:1/-1;display:flex;align-items:center;justify-content:flex-end;padding:0!important;margin:0!important}.thumbnail-list-section .thumbnail-item .thumbnail-info .col-md-5 svg{display:block}.metric-card{background:var(--White, #FFF);border-radius:8px;padding:2px 2px 4px 1px;height:100%;min-height:104px;display:flex;flex-direction:column;gap:4px;flex:1}.metric-card .metric-header{display:flex;justify-content:space-between;align-items:center;flex-shrink:0;margin-bottom:0;margin-top:-4px}.metric-card .metric-header .metric-title{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.metric-card .metric-header .metric-icon,.metric-card .metric-header .footfall-icon-header{flex-shrink:0}.metric-card .metric-header .downtime-icons{position:relative;display:inline-flex;align-items:center;width:31px;height:24px}.metric-card .metric-header .downtime-icons .clock-icon{position:absolute;left:0;top:2px;z-index:1}.metric-card .metric-header .downtime-icons .alert-icon{position:absolute;right:-2px;top:-2px;z-index:2}.metric-card .metric-value{color:var(--Gray-900, #101828);font-size:32px;font-weight:400;line-height:40px;margin-top:0;margin-bottom:0}.metric-card .metric-value.ticket-status-raised{display:inline-block;width:fit-content;padding:6px 14px;border-radius:16px;background:#fef3c7;color:#92400e;font-weight:600;font-size:21px;line-height:20px}.metric-card .metric-value.ticket-status-closed{display:inline-block;width:fit-content;padding:6px 14px;border-radius:16px;background:#d1fae5;color:#10b981;font-weight:600;font-size:21px;line-height:20px}.metric-card .metric-trend{display:flex;align-items:center;gap:4px;font-size:14px;font-weight:500;line-height:20px;margin-top:0;margin-bottom:0;min-height:20px}.metric-card .metric-trend.up{color:#10b981}.metric-card .metric-trend.down{color:#f04438}.metric-card .metric-trend.metric-trend-placeholder{visibility:hidden;height:20px}.metric-card .metric-trend svg{flex-shrink:0}.metric-card .metric-tag{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:500;line-height:16px;width:fit-content}.metric-card .metric-tag.success{background:#d1fadf;color:#10b981}.metric-card .metric-tag svg{flex-shrink:0}.ticket-review-card{background:var(--White, #FFF);border-radius:12px;border:1px solid var(--Gray-200, #EAECF0);padding:20px;box-shadow:0 1px 3px #0000001a}.ticket-review-card .actual-footfall-header{background:var(--Primary-50, #EAF8FF);border-radius:8px;padding:12px 15px;margin-bottom:10px;display:flex;align-items:center;gap:4px}.ticket-review-card .actual-footfall-header .actual-footfall-number{color:var(--Gray-900, #101828);font-size:25px;font-weight:600;line-height:25px}.ticket-review-card .actual-footfall-header .actual-footfall-label{color:var(--Gray-700, #344054);font-size:16px;font-weight:500;line-height:24px}.ticket-review-card .ticket-creator-section{padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid var(--Gray-200, #EAECF0)}.ticket-review-card .ticket-creator-section .creator-avatar{width:40px;height:40px;border-radius:50%;overflow:hidden;flex-shrink:0}.ticket-review-card .ticket-creator-section .creator-avatar img{width:100%;height:100%;object-fit:cover}.ticket-review-card .ticket-creator-section .creator-avatar-placeholder{width:40px;height:40px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.ticket-review-card .ticket-creator-section .creator-info{flex:1}.ticket-review-card .ticket-creator-section .creator-info .creator-label{color:var(--Gray-600, #667085);font-size:12px;font-weight:400;line-height:18px;margin-bottom:4px}.ticket-review-card .ticket-creator-section .creator-info .creator-details{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ticket-review-card .ticket-creator-section .creator-info .creator-details .creator-email{color:var(--Gray-900, #101828);font-size:14px;font-weight:500;line-height:20px}.ticket-review-card .ticket-creator-section .creator-info .creator-details .creator-separator{color:var(--Gray-400, #98A2B3);font-size:14px}.ticket-review-card .ticket-creator-section .creator-info .creator-details .creator-time{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px}.ticket-review-card .revised-footfall-section .metrics-row{display:flex;flex-wrap:wrap;gap:24px;align-items:flex-start}.ticket-review-card .revised-footfall-section .metrics-row .metric-divider{width:1px;background-color:var(--Gray-200, #EAECF0);align-self:stretch;min-height:60px;flex-shrink:0}.ticket-review-card .revised-footfall-section .metrics-row .metric-item{flex:1;min-width:120px;display:flex;flex-direction:column;gap:4px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number{color:var(--Gray-900, #101828);font-size:24px;font-weight:600;line-height:32px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number.blue-text{color:var(--Primary-700, #009BF3)}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number.blue-text .metric-percentage{font-size:16px;font-weight:500;margin-left:4px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-number.blue-text .metric-arrow{color:var(--Primary-700, #009BF3);font-size:16px;margin-left:4px}.ticket-review-card .revised-footfall-section .metrics-row .metric-item .metric-label{color:var(--Gray-600, #667085);font-size:14px;font-weight:400;line-height:20px}.ticket-review-card .revision-section{margin-top:24px;padding-top:24px;border-top:1px solid var(--Gray-200, #EAECF0)}.ticket-review-card .revision-section .revision-title{color:var(--Gray-900, #101828);font-size:16px;font-weight:600;line-height:24px;margin-bottom:16px}.ticket-review-card .revision-section .final-revision-note{font-size:14px;font-weight:400;line-height:20px;margin-bottom:16px}.email-link{text-decoration:underline;color:#008edf}.ticket-block-alert{border-radius:8px;border:2px dashed #F04438;background:#fee4e2;padding:16px;margin-bottom:16px}.ticket-block-alert .ticket-block-alert-content{display:flex;align-items:flex-start;gap:12px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-icon{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-icon svg{width:24px;height:24px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text{flex:1;display:flex;flex-direction:column;gap:8px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-title{color:#f04438;font-size:16px;font-weight:700;line-height:24px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-description,.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-action{color:#f04438;font-size:14px;font-weight:400;line-height:20px}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-action .ticket-block-alert-link{color:#f04438;text-decoration:underline;cursor:pointer;font-weight:500}.ticket-block-alert .ticket-block-alert-content .ticket-block-alert-text .ticket-block-alert-action .ticket-block-alert-link:hover{color:#d92d20;text-decoration:underline}.ticket-request-alert{border-radius:8px;border:2px dashed #10B981;background:#d1fae5;padding:16px;margin-bottom:16px}.ticket-request-alert .ticket-request-alert-content{display:flex;align-items:flex-start;gap:12px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-icon{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-icon svg{width:24px;height:24px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-text{flex:1;display:flex;flex-direction:column;gap:8px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-text .ticket-request-alert-title{color:#10b981;font-size:16px;font-weight:700;line-height:24px}.ticket-request-alert .ticket-request-alert-content .ticket-request-alert-text .ticket-request-alert-description{color:#10b981;font-size:14px;font-weight:400;line-height:20px}\n"] }]
1350
1355
  }], ctorParameters: () => [{ type: i1.TrafficService }, { type: i2.GlobalStateService }, { type: i0.ChangeDetectorRef }, { type: i3.NgbModal }, { type: i4.ToastService }, { type: i5.TrafficRvpsService }], propDecorators: { zoomPopup: [{
1351
1356
  type: ViewChild,
1352
1357
  args: ["zoomPopup"]
@@ -1360,4 +1365,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1360
1365
  type: ViewChild,
1361
1366
  args: ["imagePopup"]
1362
1367
  }] } });
1363
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1nLXJ2cHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmFmZmljL3NyYy9saWIvY29tcG9uZW50cy9pbWctcnZwcy9pbWctcnZwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYWZmaWMvc3JjL2xpYi9jb21wb25lbnRzL2ltZy1ydnBzL2ltZy1ydnBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBR1MsU0FBUyxFQUM1QixNQUFNLGVBQWUsQ0FBQztBQUt2QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQU85QyxNQUFNLE9BQU8sZ0JBQWdCO0lBWWpCO0lBQ0Q7SUFDQztJQUNBO0lBQ0E7SUFDQTtJQWhCVixVQUFVLENBQU07SUFDaEIsWUFBWSxDQUFNO0lBQ2xCLE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDeEIsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUNmLFNBQVMsQ0FBTTtJQUNmLGVBQWUsR0FBUSxFQUFFLENBQUM7SUFDMUIsV0FBVyxHQUE0QixFQUFFLENBQUM7SUFDMUMsa0JBQWtCLEdBQVEsRUFBRSxDQUFDO0lBQzdCLFdBQVcsQ0FBTTtJQUNqQixjQUFjLEdBQVcsK0JBQStCLENBQUE7SUFDeEQsWUFDVSxPQUF1QixFQUN4QixFQUFzQixFQUNyQixFQUFxQixFQUNyQixZQUFzQixFQUN0QixLQUFtQixFQUNuQixXQUErQjtRQUwvQixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN4QixPQUFFLEdBQUYsRUFBRSxDQUFvQjtRQUNyQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixpQkFBWSxHQUFaLFlBQVksQ0FBVTtRQUN0QixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtJQUN0QyxDQUFDO0lBQ2EsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFDMUMsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUNELG1CQUFtQixHQUFHLElBQUksQ0FBQztJQUMzQixlQUFlO1FBQ2IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ3ZELENBQUM7SUFDRCxLQUFLLENBQUs7SUFDVixRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sUUFBUSxHQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztJQUN4QixDQUFDO0lBQ0QsU0FBUztRQUNQLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYzthQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDakQsU0FBUyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDdkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDNUIsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxNQUFNLEtBQUssSUFBSSxFQUFFO2dCQUMxQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU07cUJBQ3hDLE1BQU0sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztxQkFDckMsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDcEIsSUFDRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxTQUFTLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUNuRTtvQkFDQSxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztvQkFDckIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7b0JBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUNqRDtxQkFBTTtvQkFDTCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztvQkFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7aUJBQ3JCO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFDRCxVQUFVLENBQVU7SUFDcEIsT0FBTyxDQUFVO0lBQ2pCLFNBQVMsQ0FBTTtJQUNmLGdCQUFnQjtRQUNkLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FDbEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQzdCLENBQUM7UUFDRixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsUUFBZ0IsRUFBRSxNQUFjO1FBQ2hELE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsZ0NBQWdDO1FBQ2xFLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZ0NBQWdDO1FBQzlELE1BQU0sU0FBUyxHQUFhLEVBQUUsQ0FBQztRQUUvQiwrQkFBK0I7UUFDL0IsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFO1lBQ2xELE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBRUQsbUNBQW1DO1FBQ25DLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN4QixPQUFPLFdBQVcsSUFBSSxHQUFHLEVBQUU7WUFDekIsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0I7WUFDN0UsV0FBVyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyw4QkFBOEI7U0FDL0U7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsaUJBQWlCO0lBQ2pCLFlBQVk7UUFDVixNQUFNLE9BQU8sR0FDYixJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2hGLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRTtZQUN0QyxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztZQUN0QixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsV0FBVzthQUNiLHlCQUF5QixDQUN4QixPQUFPLEVBQ1AsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQzdCO2FBQ0EsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDL0IsRUFBRSxTQUFTLENBQUM7WUFDVixJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLEVBQUU7b0JBQzNCLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ3ZDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FDcEQsQ0FBQyxHQUEyQixFQUFFLElBQVMsRUFBRSxFQUFFO3dCQUN6QyxNQUFNLGNBQWMsR0FBRyxJQUFJLEVBQUUsSUFBSTs0QkFDL0IsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUNqRCxDQUFDLENBQUMsSUFBSSxDQUFDO3dCQUNULElBQUksY0FBYyxFQUFFOzRCQUNsQixHQUFHLENBQUMsY0FBYyxDQUFDLEdBQUc7Z0NBQ3BCLEdBQUcsSUFBSTtnQ0FDUCxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsWUFBWTtvQ0FDbkMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsV0FBVyxFQUFFO29DQUN6QyxDQUFDLENBQUMsRUFBRTs2QkFDUCxDQUFDO3lCQUNIO3dCQUNELE9BQU8sR0FBRyxDQUFDO29CQUNiLENBQUMsRUFDRCxFQUFFLENBQ0gsQ0FBQztpQkFDSDtxQkFBTTtvQkFDTCxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztvQkFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7aUJBQ3ZCO1lBQ0gsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsOEJBQThCLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztZQUN4QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUdELFlBQVksQ0FBTTtJQUNsQixVQUFVLENBQU07SUFDaEIsYUFBYSxDQUFDLEdBQVE7UUFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7UUFDdEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBQ0QsVUFBVSxDQUFNO0lBQ2hCLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDbEIsa0JBQWtCLEdBQUcsS0FBSyxDQUFDLENBQUMsbUNBQW1DO0lBQy9ELGlCQUFpQjtJQUNqQixXQUFXLENBQU07SUFDakIsZ0JBQWdCLENBQU07SUFDdEIsWUFBWSxDQUFNO0lBQ2xCLGVBQWUsQ0FBTTtJQUNyQixjQUFjLEdBQThDLEVBQUUsQ0FBQztJQUMvRCxXQUFXLEdBQVEsQ0FBQyxDQUFDO0lBQ3JCLFlBQVksQ0FBTTtJQUNsQixXQUFXLENBQVU7SUFDckIsUUFBUSxHQUFvQixNQUFNLENBQUM7SUFDbkMsU0FBUyxDQUFDLEtBQVUsRUFBRSxHQUFRO1FBQzVCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO1FBQ3RCLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLE9BQU8sRUFBRSxpQkFBaUI7WUFDN0IsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkQsRUFBRSxTQUFTLENBQUMsQ0FBQyxTQUFjLEVBQUUsRUFBRTtZQUM3QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztZQUMzQixJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNkLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNqQixtQkFBbUI7YUFDcEI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO2FBQ3hCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsU0FBUyxHQUFRLEVBQUUsQ0FBQztJQUNwQixRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsTUFBTSxPQUFPLEdBQ1gsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQy9DLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ1gsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLFdBQVc7YUFDYixXQUFXLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQzthQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvQixFQUFFLFNBQVMsQ0FBQztZQUNWLElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsRUFBRTtvQkFFM0IsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU07d0JBQUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO2lCQUN6RDtxQkFBTTtvQkFDTCxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztpQkFDckI7WUFDSCxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRSxDQUFDO1NBQ25CLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxRQUFRLENBQU07SUFDZCxlQUFlLENBQU07SUFDckIsb0JBQW9CLEdBQVEsRUFBRSxDQUFDO0lBQy9CLGdCQUFnQixHQUFRLEVBQUUsQ0FBQztJQUMzQixlQUFlLEdBQVEsRUFBRSxDQUFDO0lBQzFCLGlCQUFpQjtRQUNmLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDO1FBQ2xELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUM3QixPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyx5QkFBeUI7U0FDbEc7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFDRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIseUJBQXlCO1FBQ3pCLDZCQUE2QjtRQUM3Qix3QkFBd0I7UUFDeEIsNEJBQTRCO1FBQzVCLDJCQUEyQjtRQUMzQixNQUFNLE9BQU8sR0FDWCxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDL0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDWCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQztRQUN6QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUM7UUFDMUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDN0QsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBRS9CLElBQUksQ0FBQyxXQUFXO2FBQ2IsY0FBYyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxXQUFXLENBQUM7YUFDbEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUIsU0FBUyxDQUFDO1lBQ1QsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFO29CQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsRUFBRSxJQUFJLENBQUM7b0JBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUM7b0JBQzlDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQztvQkFDMUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDO29CQUNsRCxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDbEQscURBQXFEO29CQUNyRCxJQUFJLENBQUMsZUFBZSxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFlBQVksSUFBSSxFQUFFLENBQUM7b0JBRTdELGtDQUFrQztvQkFDbEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQ3pDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUM5QixDQUFDO29CQUNGLElBQUksQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDdEQsU0FBUzt3QkFDVCxLQUFLLEVBQ0gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDOzRCQUM5RCxFQUFFLElBQUksRUFBRSxNQUFNLElBQUksQ0FBQztxQkFDeEIsQ0FBQyxDQUFDLENBQUM7b0JBQ0osOERBQThEO29CQUM5RCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUU7d0JBQzNDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztxQkFDcEQ7b0JBRUQsc0NBQXNDO29CQUN0QyxJQUFJLENBQUMsb0JBQW9CO3dCQUN2QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FDdkIsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FDcEQsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO29CQUVoQixvQkFBb0I7b0JBQ3BCLE1BQU0sZUFBZSxHQUE4Qjt3QkFDakQsYUFBYSxFQUFFLENBQUM7d0JBQ2hCLFNBQVMsRUFBRSxDQUFDO3dCQUNaLFFBQVEsRUFBRSxDQUFDO3dCQUNYLGVBQWUsRUFBRSxDQUFDO3dCQUNsQixJQUFJLEVBQUUsQ0FBQztxQkFDUixDQUFDO29CQUVGLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztvQkFDbkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztvQkFFM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTt3QkFDekMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTs0QkFDaEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzs0QkFDbEMsVUFBVSxFQUFFLENBQUM7NEJBRWIsTUFBTSxJQUFJLEdBQ1IsS0FBSyxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxTQUFTLENBQUM7NEJBRXRELElBQUksSUFBSSxLQUFLLGFBQWEsRUFBRTtnQ0FDMUIsZUFBZSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7NkJBQ2xDO2lDQUFNLElBQUksSUFBSSxLQUFLLFVBQVUsRUFBRTtnQ0FDOUIsZUFBZSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7NkJBQy9CO2lDQUFNLElBQUksSUFBSSxLQUFLLGVBQWUsRUFBRTtnQ0FDbkMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7NkJBQ3BDO2lDQUFNLElBQUcsSUFBSSxLQUFLLE1BQU0sRUFBRTtnQ0FDekIsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7NkJBQzNCOzRCQUVELGtEQUFrRDs0QkFDbEQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO2dDQUMzQyxlQUFlLENBQUMsV0FBVyxDQUFDO29DQUMxQixLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDOzZCQUNuQzt3QkFDSCxDQUFDLENBQUMsQ0FBQztvQkFDTCxDQUFDLENBQUMsQ0FBQztvQkFFSCxJQUFJLENBQUMsU0FBUyxHQUFHO3dCQUNmLGFBQWEsRUFBRSxVQUFVO3dCQUN6QixPQUFPLEVBQUUsZUFBZSxDQUFDLGFBQWEsQ0FBQzt3QkFDdkMsU0FBUyxFQUFFLGVBQWUsQ0FBQyxXQUFXLENBQUM7d0JBQ3ZDLFFBQVEsRUFBRSxlQUFlLENBQUMsVUFBVSxDQUFDO3dCQUNyQyxZQUFZLEVBQUUsZUFBZSxDQUFDLGVBQWUsQ0FBQzt3QkFDOUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxNQUFNLENBQUM7cUJBQzlCLENBQUM7b0JBRUYsaURBQWlEO29CQUNqRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBRXBCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO29CQUNyQix1QkFBdUI7aUJBQ3hCO3FCQUFNO29CQUNMLHFCQUFxQjtvQkFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7b0JBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7b0JBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO29CQUN2QixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztvQkFDMUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztvQkFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO29CQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztpQkFDcEI7WUFDSCxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2IsTUFBTSxHQUFHLEdBQ1AsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLO29CQUNmLEdBQUcsQ0FBQyxLQUFLO29CQUNULEdBQUcsRUFBRSxLQUFLLEVBQUUsT0FBTztvQkFDbkIsR0FBRyxDQUFDLE9BQU87b0JBQ1gsZUFBZSxDQUFDO2dCQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztZQUN0QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELDJCQUEyQixDQUFNO0lBQ2pDLFNBQVM7UUFDUCxNQUFNLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckQsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFFN0IsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQzVDLE1BQU0sY0FBYyxHQUFHLGFBQWEsRUFBRSxNQUFNLENBQUM7UUFFN0MsSUFDRSxJQUFJLEtBQUssV0FBVztZQUNwQixLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxFQUMvQztZQUNBLDhFQUE4RTtZQUM5RSxNQUFNLGlCQUFpQixHQUFHLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQzVELENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNmLEdBQUcsS0FBSztnQkFDUixNQUFNLEVBQUUsY0FBYztnQkFDdEIsUUFBUSxFQUFFLElBQUk7YUFDZixDQUFDLENBQ0gsQ0FBQztZQUVGLHFEQUFxRDtZQUNyRCxNQUFNLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FDN0MsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQzdCLENBQUM7WUFFRiw2RUFBNkU7WUFDN0UsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pFLE1BQU0sWUFBWSxHQUNoQixDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssYUFBYSxDQUFDO2dCQUN6RCxNQUFNLGFBQWEsR0FDakIsR0FBRyxDQUFDLE1BQU0sS0FBSyxjQUFjO29CQUM3QixDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzFDLE9BQU8sWUFBWSxJQUFJLGFBQWEsQ0FBQztZQUN2QyxDQUFDLENBQUMsQ0FBQztZQUVILHlEQUF5RDtZQUN6RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxHQUFHLGlCQUFpQixFQUFFLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQztZQUV2RSxxRUFBcUU7WUFDckUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUM1QyxNQUFNLFdBQVcsR0FDZixDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssV0FBVyxDQUFDO2dCQUN2RCxHQUFHLENBQUMsUUFBUSxHQUFHLFdBQVcsSUFBSSxHQUFHLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQztZQUN2RCxDQUFDLENBQUMsQ0FBQztZQUVILCtEQUErRDtZQUMvRCxJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQjtpQkFDeEQsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQztpQkFDNUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFakMscUVBQXFFO1lBQ3JFLElBQUksQ0FBQywyQkFBMkIsR0FBRyxJQUFJLENBQUMsbUJBQW1CO2lCQUN4RCxNQUFNLENBQ0wsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUNYLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxXQUFXO2dCQUNwRCxHQUFHLENBQUMsU0FBUyxLQUFLLElBQUksQ0FDekI7aUJBQ0EsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNsQixHQUFHLEdBQUc7Z0JBQ04sTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLElBQUksY0FBYztnQkFDcEMsU0FBUyxFQUFFLElBQUk7YUFDaEIsQ0FBQyxDQUFDLENBQUM7U0FDUDthQUFNO1lBQ0wsc0ZBQXNGO1lBQ3RGLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ25FLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDckQsT0FBTyxPQUFPLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssY0FBYyxDQUFDO1lBQzNELENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUM7UUFDbkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxDQUFDLHVDQUF1QztRQUN4RSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFDRCxnQkFBZ0IsQ0FBTTtJQUN0QixtQkFBbUIsQ0FBTTtJQUN6QixlQUFlLEdBQUcsS0FBSyxDQUFDO0lBRXhCLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDcEIsd0NBQXdDO0lBQ3hDLHVCQUF1QixDQUFDLEdBQVE7UUFDOUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxDQUFDLDRDQUE0QztRQUM1RSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxDQUFDO1FBQzVCLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUE7UUFFcEQsbUVBQW1FO1FBQ25FLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxXQUFXLENBQUM7UUFFL0QsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUNwQixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztZQUM3QixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO1lBRW5DLG1GQUFtRjtZQUNuRixNQUFNLGNBQWMsR0FBRyxHQUFHLEVBQUUsTUFBTSxDQUFDO1lBQ25DLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ25FLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDckQsc0RBQXNEO2dCQUN0RCxPQUFPLE9BQU8sS0FBSyxXQUFXLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxjQUFjLENBQUM7WUFDbEUsQ0FBQyxDQUFDLENBQUM7WUFFSCx3QkFBd0I7WUFDeEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUM1QyxHQUFHLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDckIsR0FBRyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDeEIsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDLENBQUMsZUFBZTtTQUNqRDtRQUVELElBQUksY0FBYyxHQUFVLEVBQUUsQ0FBQztRQUMvQixNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBRW5ELDJGQUEyRjtRQUMzRixJQUFJLGVBQWUsRUFBRTtZQUNuQixtRUFBbUU7WUFDbkUsOENBQThDO1lBQzlDLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLENBQUMsMkJBQTJCO1lBQ3pELElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDLENBQUMsK0JBQStCO1lBQ3ZELDREQUE0RDtTQUM3RDthQUFNLElBQUksWUFBWSxLQUFLLFdBQVcsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1lBQ2hGLHFGQUFxRjtZQUNyRixNQUFNLGNBQWMsR0FBRyxHQUFHLEVBQUUsTUFBTSxDQUFDO1lBQ25DLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ25FLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDckQsT0FBTyxPQUFPLEtBQUssV0FBVyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssY0FBYyxDQUFDO1lBQ2xFLENBQUMsQ0FBQyxDQUFDO1lBRUgsd0JBQXdCO1lBQ3hCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDNUMsR0FBRyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7Z0JBQ3JCLEdBQUcsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxDQUFBO1lBQ3JDLDBFQUEwRTtZQUMxRSxNQUFNLGNBQWMsR0FBRyxHQUFHLEVBQUUsTUFBTSxDQUFDO1lBQ25DLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ25FLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDckQsT0FBTyxPQUFPLEtBQUssV0FBVyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssY0FBYyxDQUFDO1lBQ2xFLENBQUMsQ0FBQyxDQUFDO1lBRUgsd0JBQXdCO1lBQ3hCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDNUMsR0FBRyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7Z0JBQ3JCLEdBQUcsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFFRCx5REFBeUQ7UUFDekQsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUNwQixJQUNFLEdBQUcsRUFBRSxVQUFVLEtBQUssV0FBVztnQkFDL0IsR0FBRyxFQUFFLFVBQVUsS0FBSyxVQUFVO2dCQUM5QixHQUFHLEVBQUUsVUFBVSxLQUFLLGVBQWUsSUFBSSxHQUFHLEVBQUUsVUFBVSxLQUFJLE1BQU0sRUFDaEU7Z0JBQ0EsSUFDRSxHQUFHLEVBQUUsVUFBVSxLQUFLLFdBQVc7b0JBQy9CLEdBQUcsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUNuQztvQkFDQSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztpQkFDekI7cUJBQU0sSUFDTCxHQUFHLEVBQUUsVUFBVSxLQUFLLFVBQVU7b0JBQzlCLEdBQUcsRUFBRSxVQUFVLEtBQUssZUFBZSxJQUFJLEdBQUcsRUFBRSxVQUFVLEtBQUksTUFBTSxFQUNoRTtvQkFDQSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztpQkFDekI7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7aUJBQzFCO2dCQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO2dCQUM1QixJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsRUFBRSxVQUFVLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO2FBQ3JDO1NBQ0Y7YUFBTTtZQUNMLHNEQUFzRDtZQUN0RCxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztZQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztTQUMxQjtRQUVELDhDQUE4QztRQUM5QyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQVE7UUFDcEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO1FBQ25DLElBQUksY0FBYyxHQUFVLEVBQUUsQ0FBQztRQUMvQixNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBRW5ELElBQUksWUFBWSxLQUFLLFdBQVcsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1lBQ3pFLDRFQUE0RTtZQUM1RSxvREFBb0Q7WUFDcEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztTQUMvQjthQUFNO1lBQ0wsK0VBQStFO1lBQy9FLE1BQU0sY0FBYyxHQUFHLEdBQUcsRUFBRSxNQUFNLENBQUM7WUFDbkMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDbkUsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNyRCxPQUFPLE9BQU8sS0FBSyxXQUFXLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxjQUFjLENBQUM7WUFDbEUsQ0FBQyxDQUFDLENBQUM7WUFFSCx3QkFBd0I7WUFDeEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUM1QyxHQUFHLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDckIsR0FBRyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDeEIsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUdELHFDQUFxQztRQUNyQyxJQUNFLEdBQUcsRUFBRSxVQUFVLEtBQUssV0FBVztZQUMvQixHQUFHLEVBQUUsVUFBVSxLQUFLLFVBQVU7WUFDOUIsR0FBRyxFQUFFLFVBQVUsS0FBSyxlQUFlLElBQUksR0FBRyxFQUFFLFVBQVUsS0FBSSxNQUFNLEVBQ2hFO1lBQ0EsSUFDRSxHQUFHLEVBQUUsVUFBVSxLQUFLLFdBQVc7Z0JBQy9CLEdBQUcsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUNuQztnQkFDQSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQzthQUN6QjtpQkFBTSxJQUNMLEdBQUcsRUFBRSxVQUFVLEtBQUssVUFBVTtnQkFDOUIsR0FBRyxFQUFFLFVBQVUsS0FBSyxlQUFlLElBQUksR0FBRyxFQUFFLFVBQVUsS0FBSSxNQUFNLEVBQ2hFO2dCQUNBLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2FBQ3pCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO2FBQzFCO1lBRUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLEVBQUUsVUFBVSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQztJQUdDLE9BQU8sQ0FBQyxHQUFRO1FBQ2QsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekIsbURBQW1EO1lBQ25ELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQzlDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQ3hDLENBQUM7WUFFRiw2REFBNkQ7WUFDN0QsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ2hCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7YUFDekQ7aUJBQU07Z0JBQ0wsd0JBQXdCO2dCQUN4QixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2FBQ3REO1NBQ0Y7UUFFRCx3QkFBd0I7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztRQUU1QixzQ0FBc0M7UUFDdEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQ3hELENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQ3hDLENBQUM7UUFFRixrQ0FBa0M7UUFDbEMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFFbEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVELFlBQVksR0FBUSxFQUFFLENBQUMsQ0FBQyxtQkFBbUI7SUFDM0MsaUJBQWlCLENBQU07SUFDdkIsb0NBQW9DO0lBQ3BDLGFBQWEsQ0FBQyxHQUFRO1FBQ3RCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLENBQUM7UUFDN0IsSUFBSSxDQUFDLDJCQUEyQixHQUFHLEVBQUUsQ0FBQztRQUV0QyxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUV2QyxJQUFJLElBQUksS0FBSyxXQUFXLEVBQUU7WUFDeEIsNkdBQTZHO1lBQzdHLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUM7WUFFckQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDbkUsT0FBTyxHQUFHLENBQUMsTUFBTSxLQUFLLGNBQWMsQ0FBQztZQUN2QyxDQUFDLENBQUMsQ0FBQztZQUVILGtGQUFrRjtZQUNsRixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQzVDLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDckQsSUFBSSxPQUFPLEtBQUssV0FBVyxFQUFFO29CQUMzQix1Q0FBdUM7b0JBQ3ZDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO29CQUNwQixHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztpQkFDdEI7cUJBQU07b0JBQ0wsNkJBQTZCO29CQUM3QixHQUFHLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztvQkFDckIsR0FBRyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7aUJBQ3ZCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxrRUFBa0U7WUFDbEUsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQyxtQkFBbUI7aUJBQ3hELE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssV0FBVyxDQUFDO2lCQUMxRixHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ25CLEdBQUcsSUFBSTtnQkFDUCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsTUFBTTtnQkFDcEQsU0FBUyxFQUFFLElBQUk7YUFDaEIsQ0FBQyxDQUFDLENBQUM7WUFFTixpREFBaUQ7WUFDakQsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtTQUMvRDthQUFNO1lBQ0wsb0ZBQW9GO1lBQ3BGLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUM7WUFDckQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDbkUsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNyRCxPQUFPLE9BQU8sS0FBSyxXQUFXLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxjQUFjLENBQUM7WUFDbEUsQ0FBQyxDQUFDLENBQUM7WUFFSCx3QkFBd0I7WUFDeEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUM1QyxHQUFHLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDckIsR0FBRyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDeEIsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztJQUdDLElBQUksR0FBUSxVQUFVLENBQUM7SUFDdkIsZ0JBQWdCLENBQUMsSUFBUztRQUN4QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUVqQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDLENBQUMseUNBQXlDO1FBQzFFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFFN0IsbUNBQW1DO1FBQ25DLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFFOUMsSUFBSSxZQUFZLEtBQUssVUFBVSxFQUFFO1lBQy9CLDZEQUE2RDtZQUM3RCxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUN2RDthQUFNO1lBQ0wsZ0VBQWdFO1lBQ2hFLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FDakQsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssWUFBWSxDQUMvRCxDQUFDO1NBQ0g7UUFDRCxTQUFTO1FBQ1QscUVBQXFFO1FBQ3JFLDJFQUEyRTtRQUMzRSx1QkFBdUI7UUFDdkIsT0FBTztRQUNQLElBQUk7UUFFSiw2QkFBNkI7UUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsTUFBTSxDQUFDO1FBRTVDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUNELFdBQVcsQ0FBQyxJQUFxQjtRQUMvQixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUFFO1lBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQztJQUVELDhCQUE4QjtJQUM1QixjQUFjLENBQUMsWUFBb0I7UUFDakMsSUFBSSxDQUFDLFlBQVksSUFBSSxZQUFZLEtBQUssQ0FBQztZQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUN0RSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUMsQ0FBQztRQUM1QyxNQUFNLElBQUksR0FBRyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQy9CLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVILHFCQUFxQixHQUE4QyxFQUFFLENBQUM7SUFFOUQsMEJBQTBCO1FBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDdEUsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztZQUNoQyxPQUFPO1NBQ1I7UUFFRCxNQUFNLEtBQUssR0FBYSxFQUFFLENBQUM7UUFDM0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQWlCLENBQUM7UUFFckMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQzVDLE1BQU0sR0FBRyxHQUFHLEdBQUcsRUFBRSxTQUFTLElBQUksSUFBSSxDQUFDO1lBQ25DLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNqQixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDakIsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNqQjtZQUNELEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtRQUVoRSxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMvQyxTQUFTLEVBQUUsR0FBRztZQUNkLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUU7U0FDekIsQ0FBQyxDQUFDLENBQUM7UUFFSixPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0lBQ3JFLENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRTtZQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUM7aUJBQy9DLE1BQU0sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7aUJBQ3ZFLEdBQUcsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDcEIsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLElBQUksSUFBSTtnQkFDbkMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLElBQUksRUFBRTthQUN4QixDQUFDLENBQUMsQ0FBQztZQUNOLE9BQU87U0FDUjtRQUVELE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQztRQUMzQixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBaUIsQ0FBQztRQUVyQyxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDaEQsTUFBTSxHQUFHLEdBQUcsR0FBRyxFQUFFLFNBQVMsSUFBSSxJQUFJLENBQUM7WUFDbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2pCLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNqQixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2pCO1lBQ0QsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDeEMsU0FBUyxFQUFFLEdBQUc7WUFDZCxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFO1NBQ3pCLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUNELGdCQUFnQixDQUFDLEdBQVEsRUFBRSxHQUFRO1FBQ2pDLGdGQUFnRjtRQUNoRixJQUFJLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQ3JFLHNEQUFzRDtZQUN0RCx3REFBd0Q7WUFDeEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUMsT0FBTztTQUNSO1FBRUQsOEVBQThFO1FBQzlFLElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxXQUFXLEVBQUU7WUFDckUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ25DO2FBQU0sSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssV0FBVyxFQUFFO1lBQ2pELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyx3Q0FBd0M7U0FDNUQ7SUFDSCxDQUFDO0lBRUQsY0FBYyxHQUFRLElBQUksQ0FBQyxDQUFDLCtEQUErRDtJQUUzRixrQkFBa0IsQ0FBQyxRQUFhLEVBQUUsU0FBYztRQUM5QyxxREFBcUQ7UUFDckQsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7UUFDaEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUN2RCxRQUFRLEVBQUUsSUFBSTtZQUNkLElBQUksRUFBRSxJQUFJO1lBQ1YsUUFBUSxFQUFFLFFBQVE7WUFDbEIsUUFBUSxFQUFFLEtBQUs7U0FDaEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELDJCQUEyQixHQUFRLEVBQUUsQ0FBQztJQUV0Qyx3QkFBd0IsQ0FBQyxHQUFRO1FBQy9CLE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLEVBQUUsR0FBRyxDQUFDLENBQUE7UUFDL0MsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM5QyxPQUFPO1NBQ1I7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO1FBQ2pELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLElBQUksQ0FBQyxDQUFDO1FBQzFELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FDNUQsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQzdCLENBQUMsTUFBTSxDQUFDO1FBRVQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBRWpDLG1EQUFtRDtRQUNuRCxJQUNFLFVBQVU7WUFDVixzQkFBc0IsR0FBRyxrQkFBa0IsSUFBSSxhQUFhLEVBQzVEO1lBQ0EsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQ3hCLHVCQUF1QixhQUFhLFlBQ2xDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxTQUFTLElBQUksS0FDL0MscUJBQXFCLENBQ3RCLENBQUM7WUFDRixPQUFPO1NBQ1I7UUFFRCxrQ0FBa0M7UUFDbEMsR0FBRyxDQUFDLFFBQVEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDN0IsR0FBRyxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBRTdCLHFDQUFxQztRQUNyQyxJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQjthQUN4RCxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7YUFDcEMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ25CLEdBQUcsSUFBSTtZQUNQLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNO1lBQ3BELFNBQVMsRUFBRSxJQUFJO1NBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBRU4sc0ZBQXNGO1FBQ3RGLDBGQUEwRjtRQUMxRixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxHQUFRLEVBQUUsR0FBUSxFQUFFLElBQVk7UUFDcEQsSUFBSSxJQUFJLEtBQUssV0FBVyxFQUFFO1lBQ3hCLGdEQUFnRDtZQUNoRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkMsMkNBQTJDO1lBQzNDLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3JCLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUM7YUFDbkM7U0FDRjtJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN6QixrQ0FBa0M7SUFDcEMsQ0FBQztJQUNELE1BQU07UUFDSiwwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLDJCQUEyQixHQUFHLEVBQUUsQ0FBQztRQUV0QyxrRUFBa0U7UUFDbEUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDL0QsR0FBRyxHQUFHO1lBQ04sU0FBUyxFQUFFLEtBQUs7WUFDaEIsUUFBUSxFQUFFLEtBQUs7WUFDZixNQUFNLEVBQUUsSUFBSSxFQUFFLHVCQUF1QjtZQUNyQyxpQ0FBaUM7U0FDbEMsQ0FBQyxDQUFDLENBQUM7UUFFSix3Q0FBd0M7UUFDeEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFFdkIsMkNBQTJDO1FBQzNDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztRQUVoQyxvRUFBb0U7UUFDcEUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQztRQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBQ0QsU0FBUyxDQUFNO0lBQ1MsU0FBUyxDQUFhO0lBQzlDLElBQUksQ0FBQyxRQUFhO1FBQ2hCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDdEQsUUFBUSxFQUFFLElBQUk7WUFDZCxJQUFJLEVBQUUsSUFBSTtZQUNWLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFFBQVEsRUFBRSxLQUFLLEVBQUUsNkJBQTZCO1NBQy9DLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzVCLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUUvQixJQUFJLENBQUMsMkJBQTJCLEdBQUcsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFDRCxXQUFXLENBQUMsUUFBYTtRQUN2QixJQUFJLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFFekIsSUFBSSxRQUFRLEtBQUssV0FBVyxFQUFFO1lBQzVCLGVBQWUsR0FBRyxJQUFJLENBQUMsbUJBQW1CO2lCQUN2QyxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDO2lCQUMzQyxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2xCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksRUFBRTtnQkFDdEMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTLElBQUksRUFBRTtnQkFDOUIsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTLElBQUksR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFO2dCQUM5QyxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFO2dCQUM1QixRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVE7Z0JBQ3RCLFVBQVUsRUFBRSxXQUFXO2dCQUN2QixTQUFTLEVBQUUsSUFBSTthQUNoQixDQUFDLENBQUMsQ0FBQztTQUNQO1FBRUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBRWxDLE1BQU0sR0FBRyxHQUFHO1lBQ1YsT0FBTyxFQUNMLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQztnQkFDL0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO2dCQUN0QixDQUFDLENBQUMsSUFBSTtZQUNWLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxJQUFJLEVBQUU7WUFDakMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztZQUN4QixVQUFVLEVBQUUsUUFBUTtZQUNwQixTQUFTLEVBQUUsR0FBRyxFQUFFLFNBQVMsSUFBSSxFQUFFO1lBQy9CLFNBQVMsRUFBRSxJQUFJO1lBQ2YsY0FBYyxFQUFFLGVBQWU7WUFDL0IsV0FBVyxFQUFFLEdBQUcsRUFBRSxXQUFXLElBQUksVUFBVTtZQUMzQyxTQUFTLEVBQUUsR0FBRyxFQUFFLFNBQVMsSUFBSSxHQUFHLEVBQUUsUUFBUSxJQUFJLEVBQUU7WUFDaEQsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLElBQUksRUFBRTtZQUM3QixRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsSUFBSSxFQUFFO1lBQzdCLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxJQUFJLEVBQUU7WUFDaEMsSUFBSSxFQUFFLEtBQUs7U0FDWixDQUFDO1FBRUYsSUFBSSxDQUFDLFdBQVc7YUFDYixVQUFVLENBQUMsR0FBRyxDQUFDO2FBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUIsU0FBUyxDQUFDO1lBQ1QsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFO29CQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FDeEIsR0FBRyxFQUFFLE9BQU8sSUFBSSw2QkFBNkIsQ0FDOUMsQ0FBQztvQkFDRixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztvQkFDdkIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUNqQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDcEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQztvQkFDbkMsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7aUJBQ3hCO3FCQUFNO29CQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUM7aUJBQzlDO1lBQ0gsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNsQixNQUFNLEdBQUcsR0FDUCxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssSUFBSSxHQUFHLENBQUMsS0FBSyxJQUFJLEdBQUcsRUFBRSxPQUFPLElBQUksZUFBZSxDQUFDO2dCQUNuRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoQyxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGNBQWMsR0FBOEI7UUFDMUMsU0FBUyxFQUFFLHFCQUFxQjtRQUNoQyxRQUFRLEVBQUUseUJBQXlCO1FBQ25DLGVBQWUsRUFBRSx3QkFBd0I7UUFDekMsYUFBYSxFQUFFLHNCQUFzQjtRQUNyQyxJQUFJLEVBQUUsZUFBZTtLQUN0QixDQUFDO0lBRUYsaUJBQWlCLEdBQVEsSUFBSSxDQUFDLENBQUMsbUNBQW1DO0lBRWxFLG9CQUFvQixDQUFDLFFBQVEsR0FBRyxLQUFLLElBQVEsQ0FBQztJQUVwQixXQUFXLENBQWE7SUFDbEIsaUJBQWlCLENBQWE7SUFDOUQsTUFBTTtRQUNKLE1BQU0sT0FBTyxHQUFRO1lBQ25CLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQ3BFLFVBQVUsRUFBRSxvQkFBb0I7WUFDaEMsYUFBYSxFQUFFLENBQUM7WUFDaEIsY0FBYyxFQUFFLENBQUM7WUFDakIsYUFBYSxFQUFFLENBQUM7WUFDaEIsaUJBQWlCLEVBQUUsQ0FBQztZQUNwQixTQUFTLEVBQUMsQ0FBQztZQUNYLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxJQUFJLEVBQUU7WUFDaEMsZUFBZSxFQUFFLEVBQUU7WUFDbkIsWUFBWSxFQUFFLEVBQUU7WUFDaEIsUUFBUSxFQUFFLEVBQUU7WUFDWixJQUFJLEVBQUUsRUFBRTtTQUNULENBQUM7UUFFRixJQUFJLGlCQUFpQixHQUFHLENBQUMsQ0FBQztRQUUxQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDMUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUNwRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQztZQUUxQyxrRUFBa0U7WUFDbEUsOENBQThDO1lBRTlDLHFCQUFxQjtZQUNyQix5QkFBeUI7WUFDekIsSUFBSTtZQUVKLGlCQUFpQjtZQUNqQixJQUFJLElBQUksS0FBSyxXQUFXLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRTtnQkFDbEUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQjtxQkFDdkMsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDO3FCQUNuQyxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ2xCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksRUFBRTtvQkFDdEMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO29CQUN0QixTQUFTLEVBQUUsR0FBRyxFQUFFLFNBQVMsSUFBSSxHQUFHLEVBQUUsUUFBUSxJQUFJLEVBQUU7b0JBQ2hELFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUTtvQkFDdEIsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTO29CQUN4QixTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVM7aUJBQ3pCLENBQUMsQ0FBQyxDQUFDO2dCQUVOLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQ3pCLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO3dCQUMzQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07d0JBQ25CLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTt3QkFDdkIsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLElBQUksSUFBSSxFQUFFLFFBQVEsSUFBSSxFQUFFO3dCQUNsRCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7d0JBQ3ZCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUzt3QkFDekIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO3dCQUN6QixJQUFJLEVBQUUsVUFBVTtxQkFDakIsQ0FBQyxDQUFDO29CQUVILE9BQU8sQ0FBQyxjQUFjLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQztpQkFDN0M7YUFDRjtZQUVELFdBQVc7aUJBQ04sSUFBSSxJQUFJLEtBQUssVUFBVSxJQUFJLFNBQVMsRUFBRTtnQkFDekMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7b0JBQ3BCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtvQkFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO29CQUN2QixTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsSUFBSSxJQUFJLEVBQUUsUUFBUSxJQUFJLEVBQUU7b0JBQ2xELFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtvQkFDdkIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO29CQUN6QixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7aUJBQzFCLENBQUMsQ0FBQztnQkFFSCxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDekI7WUFFRCxlQUFlO2lCQUNWLElBQUksSUFBSSxLQUFLLGVBQWUsSUFBSSxTQUFTLEVBQUU7Z0JBQzlDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO29CQUN4QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JBQ25CLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtvQkFDdkIsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLElBQUksSUFBSSxFQUFFLFFBQVEsSUFBSSxFQUFFO29CQUNsRCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7b0JBQ3ZCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztvQkFDekIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO2lCQUMxQixDQUFDLENBQUM7Z0JBRUgsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUM7YUFDN0I7aUJBQ0ksSUFBSSxJQUFJLEtBQUssTUFBTSxJQUFJLFNBQVMsRUFBRTtnQkFDckMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7b0JBQ2hCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtvQkFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO29CQUN2QixTQUFTLEVBQUcsSUFBSSxFQUFFLFNBQVMsSUFBSSxJQUFJLEVBQUUsUUFBUSxJQUFJLEVBQUU7b0JBQ25ELFFBQVEsRUFBRyxJQUFJLENBQUMsUUFBUTtvQkFDeEIsU0FBUyxFQUFHLElBQUksQ0FBQyxTQUFTO29CQUMxQixTQUFTLEVBQUcsSUFBSSxDQUFDLFNBQVM7aUJBQzNCLENBQUMsQ0FBQztnQkFFSCxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7YUFDckI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUM7UUFFdEQsc0JBQXNCO1FBRXRCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUM7UUFDakMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN4QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3hELFFBQVEsRUFBRSxJQUFJO1lBQ2QsSUFBSSxFQUFFLElBQUk7WUFDVixRQUFRLEVBQUUsUUFBUTtZQUNsQixRQUFRLEVBQUUsS0FBSztTQUNoQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLDJCQUEyQixHQUFHLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsV0FBVyxDQUFNO0lBQ2pCLGFBQWEsQ0FBTTtJQUNuQixZQUFZO1FBQ1YsZ0VBQWdFO1FBQ2hFLE1BQU0sT0FBTyxHQUFHO1lBQ2QsVUFBVSxFQUFFLG9CQUFvQjtZQUNoQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU87WUFDdkMsVUFBVSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVO1lBQzdDLElBQUksRUFBRSxRQUFRO1lBQ2QsSUFBSSxFQUFFLEtBQUs7U0FDWixDQUFBO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUM7UUFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUN2QyxJQUFJLENBQUMsV0FBVzthQUNiLGtCQUFrQixDQUFDLE9BQU8sQ0FBQzthQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLEVBQUU7b0JBQzNCLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUN4QixHQUFHLEVBQUUsT0FBTyxJQUFJLDZCQUE2QixDQUM5QyxDQUFDO29CQUNGLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO29CQUN2QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ2pCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDcEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO29CQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztvQkFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7aUJBQ3JCO3FCQUFNO29CQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUM7b0JBQzdDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztpQkFDckI7WUFDSCxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2xCLE1BQU0sR0FBRyxHQUNQLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSztvQkFDaEIsR0FBRyxDQUFDLEtBQUs7b0JBQ1QsR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPO29CQUNuQixHQUFHLENBQUMsT0FBTztvQkFDWCxlQUFlLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM5QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxrREFBa0Q7SUFDbEQsZ0NBQWdDO0lBQ2hDLG1GQUFtRjtJQUNuRixzRUFBc0U7SUFDdEUsdUJBQXVCO0lBQ3ZCLGdIQUFnSDtJQUNoSCxnQkFBZ0I7SUFFaEIsbUZBQW1GO0lBRW5GLG1FQUFtRTtJQUNuRSxrREFBa0Q7SUFDbEQsU0FBUztJQUVULDBCQUEwQjtJQUMxQiw0Q0FBNEM7SUFDNUMscUVBQXFFO0lBQ3JFLG9DQUFvQztJQUNwQyxtR0FBbUc7SUFDbkcsYUFBYTtJQUViLGdDQUFnQztJQUNoQyxvR0FBb0c7SUFDcEcsOEJBQThCO0lBQzlCLDJEQUEyRDtJQUMzRCxZQUFZO0lBRVosNkJBQTZCO0lBQzdCLGtDQUFrQztJQUNsQyxjQUFjO0lBRWQsa0JBQWtCO0lBQ2xCLFVBQVU7SUFFVix3Q0FBd0M7SUFDeEMsOEJBQThCO0lBQzlCLGtEQUFrRDtJQUNsRCxvQkFBb0I7SUFDcEIsNkJBQTZCO0lBQzdCLHVDQUF1QztJQUN2QyxjQUFjO0lBQ2QsVUFBVTtJQUNWLGVBQWU7SUFDZiwwQkFBMEI7SUFDMUIsb0ZBQW9GO0lBQ3BGLG9EQUFvRDtJQUNwRCxXQUFXO0lBQ1gsUUFBUTtJQUNSLE1BQU07SUFFTixrREFBa0Q7SUFDbEQscUNBQXFDO0lBQ3JDLElBQUk7SUFFSixnQ0FBZ0M7SUFFaEMsK0JBQStCO0lBQy9CLGdDQUFnQztJQUNoQyw2RkFBNkY7SUFDN0YsSUFBSTtJQUVKLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDSyxVQUFVLENBQWE7SUFDaEQsa0JBQWtCLENBQUMsR0FBUSxFQUFFLElBQVM7UUFDcEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUN2RCxRQUFRLEVBQUUsSUFBSTtZQUNkLElBQUksRUFBRSxJQUFJO1lBQ1YsUUFBUSxFQUFFLFFBQVE7WUFDbEIsUUFBUSxFQUFFLEtBQUs7U0FDaEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxDQUFDLDJDQUEyQztRQUN2RSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3ZDLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxNQUFNLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUVuRSx3QkFBd0I7UUFDeEIsTUFBTSxRQUFRLEdBQUcsU0FBUyxHQUFHLENBQUMsSUFBSSxZQUFZLEdBQUcsQ0FBQyxJQUFJLFFBQVEsR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztRQUUvRSw2QkFBNkI7UUFDN0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFFekIsMkRBQTJEO1FBQzNELE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUzQiwrQkFBK0I7UUFDL0IsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN0RCxNQUFNLFVBQVUsR0FBRyxVQUFVLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBRW5ELDRDQUE0QztRQUM1QyxNQUFNLGFBQWEsR0FBRyxVQUFVLElBQUksQ0FBQyxJQUFJLFVBQVUsSUFBSSxDQUFDLENBQUM7UUFFekQsT0FBTyxRQUFRLElBQUksYUFBYSxDQUFDO0lBQ25DLENBQUM7SUFFRCxpQkFBaUIsR0FBVyxDQUFDLENBQUM7SUFDOUIsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxhQUFhLENBQUMsU0FBMkI7UUFDdkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7UUFFM0MsSUFBSSxTQUFTLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDaEQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDMUI7YUFBTSxJQUFJLFNBQVMsS0FBSyxPQUFPLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQzFCO1FBRUQsd0JBQXdCO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRXJFLDBCQUEwQjtRQUMxQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQ3BELENBQUMsQ0FBTSxFQUFFLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxpQkFBaUIsQ0FDakQsQ0FBQztJQUNKLENBQUM7SUFFRCwrQ0FBK0M7SUFDL0Msa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQy9CLE1BQU0sY0FBYyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0UsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxFQUFFLGFBQWEsSUFBSSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELGdEQUFnRDtJQUNoRCwyQkFBMkI7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFDL0IsTUFBTSxjQUFjLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3RSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsa0JBQWtCLElBQUksQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxpREFBaUQ7SUFDakQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU8sR0FBRyxDQUFDO1FBQ2pDLE1BQU0sY0FBYyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0UsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsRUFBRSxRQUFRLElBQUksQ0FBQyxDQUFDO1FBRXhFLElBQUksQ0FBQyxlQUFlLElBQUksZUFBZSxLQUFLLENBQUM7WUFBRSxPQUFPLEdBQUcsQ0FBQztRQUUxRCxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDN0QsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUU7WUFDekIsT0FBTyxHQUFHLEtBQUssTUFBTSxJQUFJLE9BQU8sQ0FBQztTQUNsQzthQUFNLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtZQUNwQixPQUFPLEdBQUcsS0FBSyxJQUFJLENBQUM7U0FDckI7YUFBTSxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUU7WUFDbkIsT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDO1NBQ3ZCO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsb0JBQW9CO0lBQ3BCLGVBQWU7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPLEdBQUcsQ0FBQztRQUNqQyxNQUFNLGNBQWMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsWUFBWSxDQUFDO1FBQzlELE9BQU8sTUFBTSxJQUFJLEdBQUcsQ0FBQztJQUN2QixDQUFDO0lBRUQsNEJBQTRCO0lBQzVCLFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUNuQyxNQUFNLGNBQWMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsUUFBUSxJQUFJLENBQUMsQ0FBQztRQUNqRSxPQUFPLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELHdFQUF3RTtJQUN4RSxjQUFjLENBQUMsSUFBWTtRQUN6QixnRUFBZ0U7UUFDaEUsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDaEYsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLFVBQVUsS0FBSyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDeEYsQ0FBQztJQUVELG1DQUFtQztJQUNuQyxjQUFjO1FBQ1osTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3RDLE9BQU8sTUFBTSxLQUFLLEdBQUcsSUFBSSxNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssUUFBUSxDQUFDO0lBQzlELENBQUM7SUFFRCxtQ0FBbUM7SUFDbkMsY0FBYztRQUNaLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN0QyxPQUFPLE1BQU0sS0FBSyxHQUFHLElBQUksTUFBTSxFQUFFLFdBQVcsRUFBRSxLQUFLLFFBQVEsQ0FBQztJQUM5RCxDQUFDO0lBRUQsK0RBQStEO0lBQy9ELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1lBQ3ZFLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFDRCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxVQUFVLEtBQUssU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzdGLENBQUM7SUFFRCxpREFBaUQ7SUFDakQsc0JBQXNCO1FBQ3BCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzVDLE9BQU8sVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3RELENBQUM7SUFFRCxtRUFBbUU7SUFDbkUsb0JBQW9CO1FBQ2xCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzVDLE9BQU8sVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BILENBQUM7SUFFRCw0REFBNEQ7SUFDNUQsY0FBYyxDQUFDLElBQVMsRUFBRSxTQUFpQjtRQUN6QyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUN4QixPQUFPLENBQUMsQ0FBQztTQUNWO1FBRUQsMENBQTBDO1FBQzFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDN0IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUM7WUFDM0UsT0FBTyxTQUFTLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQztTQUM5QjtRQUVELG1DQUFtQztRQUNuQyxNQUFNLE1BQU0sR0FBOEI7WUFDeEMsV0FBVyxFQUFFLGdCQUFnQjtZQUM3QixVQUFVLEVBQUUsZUFBZTtZQUMzQixNQUFNLEVBQUUsV0FBVztZQUNuQixjQUFjLEVBQUUsbUJBQW1CO1NBQ3BDLENBQUM7UUFFRixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUIsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxnRkFBZ0Y7SUFDaEYsaUNBQWlDO0lBQ2pDLHNCQUFzQixDQUFDLElBQVk7UUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsSUFBSSxDQUFFLEVBQUU7WUFDakYsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUVELG1DQUFtQztRQUNuQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQzlGLElBQUksWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDN0IsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUVELElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLEtBQUssQ0FBQyxFQUFFO1lBQ2pHLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFFRCxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUMxQyxpRUFBaUU7UUFDakUsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBRW5CLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN4QiwrREFBK0Q7WUFDL0QsTUFBTSxVQUFVLEdBQUcsQ0FBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNyRSxVQUFVLEdBQUcsS0FBSztpQkFDZixNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2lCQUN0RCxNQUFNLENBQUMsQ0FBQyxHQUFXLEVBQUUsSUFBUyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3BFO1FBQ0QsU0FBUztRQUNULGdEQUFnRDtRQUNoRCxnREFBZ0Q7UUFDaEQsK0NBQStDO1FBQy9DLDJDQUEyQztRQUMzQyxpREFBaUQ7UUFDakQsSUFBSTtRQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELFlBQVk7UUFDVixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDOUQsUUFBUSxFQUFFLElBQUk7WUFDZCxJQUFJLEVBQUUsSUFBSTtZQUNWLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFFBQVEsRUFBRSxLQUFLO1NBQ2hCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksT0FBTyxHQUFHO1lBQ1osT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQ3hGLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxJQUFJLEVBQUU7U0FDbEMsQ0FBQztRQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDcEQsK0JBQStCO1FBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU87YUFDVCxtQkFBbUIsQ0FBQyxPQUFPLENBQUM7YUFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDL0IsRUFBRSxTQUFTLENBQUM7WUFDVixJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLEVBQUU7b0JBQzNCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsNEJBQTRCLENBQUMsQ0FBQztpQkFDMUQ7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMseUJBQXlCLENBQUMsQ0FBQztpQkFDckQ7WUFDSCxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2IsTUFBTSxHQUFHLEdBQ1AsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLO29CQUNoQixHQUFHLENBQUMsS0FBSztvQkFDVCxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU87b0JBQ25CLEdBQUcsQ0FBQyxPQUFPO29CQUNYLGVBQWUsQ0FBQztnQkFDbEIsT0FBTyxDQUFDLEtBQUssQ0FBQywrQkFBK0IsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDcEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLHdCQUF3QixDQUFDLENBQUM7WUFDNUQsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUVQLENBQUM7SUFFRCw2Q0FBNkM7SUFDN0MsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDbEMsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxnQ0FBZ0M7SUFDaEMsdUJBQXVCO1FBQ3JCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ2hELE9BQU8sY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDbEUsQ0FBQzt3R0FwZ0RVLGdCQUFnQjs0RkFBaEIsZ0JBQWdCLDZiQ3BCN0Isc2hqTkE2dEVjOzs0RkR6c0VELGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxjQUFjO3VPQTg2QkEsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQTZGSSxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ1EsaUJBQWlCO3NCQUFoRCxTQUFTO3VCQUFDLG1CQUFtQjtnQkFvT0wsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LEVsZW1lbnRSZWYsVmlld0NoaWxkXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBUcmFmZmljUnZwc1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvdHJhZmZpYy1ydnBzLnNlcnZpY2VcIjtcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktZ2xvYmFsXCI7XG5pbXBvcnQgeyBUcmFmZmljU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy90cmFmZmljLnNlcnZpY2VcIjtcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktc2hhcmVkXCI7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibGliLWltZy1ydnBzXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vaW1nLXJ2cHMuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmw6IFwiLi9pbWctcnZwcy5jb21wb25lbnQuc2Nzc1wiLFxufSlcbmV4cG9ydCBjbGFzcyBJbWdSdnBzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBoZWFkZXJEYXRhOiBhbnk7XG4gIHN0b3JlSWRhcnJheTogYW55O1xuICBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcbiAgbm9EYXRhID0gZmFsc2U7XG4gIG5vcm1hbGl6ZTogYW55O1xuICBvdmVyYWxsQ2FyZERhdGE6IGFueSA9IFtdO1xuICBjYXJkRGF0YU1hcDogeyBbZGF0ZTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgdGlja2V0UmV2aWV3U3RhdHVzOiBhbnkgPSBbXTtcbiAgdXNlckNvbW1lbnQ6IGFueTtcbiAgcmV2aXNpb25NYWlsVG86IHN0cmluZyA9ICdjZW50cmFsb3BlcmF0aW9uc0BsZW5za2FydC5pbidcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBUcmFmZmljU2VydmljZSxcbiAgICBwdWJsaWMgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXG4gICAgcHJpdmF0ZSB0b2FzdDogVG9hc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgcnZwc1NlcnZpY2U6IFRyYWZmaWNSdnBzU2VydmljZVxuICApIHt9XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG4gIGlzQWNjb3JkaW9uRXhwYW5kZWQgPSB0cnVlO1xuICB0b2dnbGVBY2NvcmRpb24oKSB7XG4gICAgdGhpcy5pc0FjY29yZGlvbkV4cGFuZGVkID0gIXRoaXMuaXNBY2NvcmRpb25FeHBhbmRlZDtcbiAgfVxuICB1c2Vyczphbnk7XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0SW5pdGFsKCk7XG4gICAgY29uc3QgdXNlckRhdGE6IGFueSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ1c2VyLWluZm9cIikgfHwgXCJ7fVwiKTtcbiAgICB0aGlzLnVzZXJzID0gdXNlckRhdGE7XG4gIH1cbiAgZ2V0SW5pdGFsKCkge1xuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWVcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSwgZGVib3VuY2VUaW1lKDEwMCkpXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ2RhdGEgOicsIGRhdGEpO1xuICAgICAgICBpZiAoZGF0YSAhPT0gbnVsbCB8fCBkYXRhPy5jbGllbnQgIT09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLmhlYWRlckRhdGEgPSBkYXRhO1xuICAgICAgICAgIHRoaXMuc3RvcmVJZGFycmF5ID0gdGhpcy5oZWFkZXJEYXRhPy5zdG9yZXNcbiAgICAgICAgICAgIC5maWx0ZXIoKHN0b3JlOiBhbnkpID0+IHN0b3JlLmNoZWNrZWQpXG4gICAgICAgICAgICAubWFwKChzdG9yZTogYW55KSA9PiBzdG9yZS5zdG9yZUlkKTtcbiAgICAgICAgICB0aGlzLmJhY2tUb0Zvb3RmYWxsKCk7XG4gICAgICAgICAgdGhpcy5kaXNwbGF5RGF0ZVJhbmdlKCk7XG4gICAgICAgICAgdGhpcy5sb2FkQ2FyZERhdGEoKTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmhlYWRlckRhdGE/LmRhdGU/LnN0YXJ0RGF0ZSA9PT0gdGhpcy5oZWFkZXJEYXRhPy5kYXRlPy5lbmREYXRlXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmJhY2tuYXYgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheURhdGVSYW5nZSgpO1xuICAgICAgICAgICAgdGhpcy5nZXRpbWFnZXMoMCwgdGhpcy5oZWFkZXJEYXRhLmRhdGUuZW5kRGF0ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZm9sZGVyVmlldyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmJhY2tuYXYgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBiYWNrVG9Gb290ZmFsbCgpIHtcbiAgICB0aGlzLmZvbGRlclZpZXcgPSB0cnVlO1xuICAgIHRoaXMuZ2V0UnZwc0xpc3QgPSBbXTtcbiAgICB0aGlzLmdldFJ2cHNJbWFnZUxpc3QgPSBbXTtcbiAgICB0aGlzLm9iamVjdHNBcnJheSA9IFtdO1xuICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XG4gICAgdGhpcy50eXBlID0gXCJmb290ZmFsbFwiO1xuICAgIHRoaXMuc2VsZWN0ZWRUaW1lID0gXCJcIjtcbiAgICB0aGlzLnNwbGl0U2NyZWVuRW5hYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuc2VsZWN0SW1hZ2VBcnJheSA9IG51bGw7XG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gW107XG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZXNHcm91cHMgPSBbXTtcbiAgfVxuICBmb2xkZXJWaWV3OiBib29sZWFuO1xuICBiYWNrbmF2OiBib29sZWFuO1xuICBkYXRlQXJyYXk6IGFueTtcbiAgZGlzcGxheURhdGVSYW5nZSgpIHtcbiAgICBjb25zdCBkYXRlcyA9IHRoaXMuZ2V0RGF0ZVJhbmdlQXJyYXkoXG4gICAgICB0aGlzLmhlYWRlckRhdGEuZGF0ZS5zdGFydERhdGUsXG4gICAgICB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlXG4gICAgKTtcbiAgICB0aGlzLmRhdGVBcnJheSA9IGRhdGVzO1xuICB9XG5cbiAgZ2V0RGF0ZVJhbmdlQXJyYXkoZnJvbURhdGU6IHN0cmluZywgdG9EYXRlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZShmcm9tRGF0ZSk7IC8vIENvbnZlcnQgc3RyaW5nIHRvIERhdGUgb2JqZWN0XG4gICAgY29uc3QgZW5kID0gbmV3IERhdGUodG9EYXRlKTsgLy8gQ29udmVydCBzdHJpbmcgdG8gRGF0ZSBvYmplY3RcbiAgICBjb25zdCBkYXRlQXJyYXk6IHN0cmluZ1tdID0gW107XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgZGF0ZXMgYXJlIHZhbGlkXG4gICAgaWYgKGlzTmFOKHN0YXJ0LmdldFRpbWUoKSkgfHwgaXNOYU4oZW5kLmdldFRpbWUoKSkpIHtcbiAgICAgIHJldHVybiBkYXRlQXJyYXk7XG4gICAgfVxuXG4gICAgLy8gTG9vcCBmcm9tIHN0YXJ0IGRhdGUgdG8gZW5kIGRhdGVcbiAgICBsZXQgY3VycmVudERhdGUgPSBzdGFydDtcbiAgICB3aGlsZSAoY3VycmVudERhdGUgPD0gZW5kKSB7XG4gICAgICBkYXRlQXJyYXkucHVzaChjdXJyZW50RGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXSk7IC8vIEZvcm1hdCBZWVlZLU1NLUREXG4gICAgICBjdXJyZW50RGF0ZS5zZXREYXRlKGN1cnJlbnREYXRlLmdldERhdGUoKSArIDEpOyAvLyBJbmNyZW1lbnQgdGhlIGRhdGUgYnkgMSBkYXlcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0ZUFycmF5O1xuICB9XG5cbiAgLy8gTG9hZCBjYXJkIGRhdGFcbiAgbG9hZENhcmREYXRhKCkge1xuICAgIGNvbnN0IHN0b3JlSWQgPVxuICAgIHRoaXMuc3RvcmVJZGFycmF5ICYmIHRoaXMuc3RvcmVJZGFycmF5Lmxlbmd0aCA+IDAgPyB0aGlzLnN0b3JlSWRhcnJheVswXSA6IG51bGw7XG4gICAgaWYgKCFzdG9yZUlkIHx8ICF0aGlzLmhlYWRlckRhdGE/LmRhdGUpIHtcbiAgICAgIHRoaXMub3ZlcmFsbENhcmREYXRhID0gW107XG4gICAgICB0aGlzLmNhcmREYXRhTWFwID0ge307XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5ydnBzU2VydmljZVxuICAgICAgLmdldEltYWdlRGlyZWN0b3J5Q2FyZERhdGEoXG4gICAgICAgIHN0b3JlSWQsXG4gICAgICAgIHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSxcbiAgICAgICAgdGhpcy5oZWFkZXJEYXRhLmRhdGUuZW5kRGF0ZVxuICAgICAgKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgPy5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmFsbENhcmREYXRhID0gcmVzPy5kYXRhIHx8IFtdO1xuICAgICAgICAgICAgdGhpcy5jYXJkRGF0YU1hcCA9ICh0aGlzLm92ZXJhbGxDYXJkRGF0YSB8fCBbXSkucmVkdWNlKFxuICAgICAgICAgICAgICAoYWNjOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkRGF0ZSA9IGl0ZW0/LmRhdGVcbiAgICAgICAgICAgICAgICAgID8gbmV3IERhdGUoaXRlbS5kYXRlKS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXVxuICAgICAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChub3JtYWxpemVkRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgYWNjW25vcm1hbGl6ZWREYXRlXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgdGlja2V0U3RhdHVzTG93ZXI6IGl0ZW0/LnRpY2tldFN0YXR1c1xuICAgICAgICAgICAgICAgICAgICAgID8gU3RyaW5nKGl0ZW0udGlja2V0U3RhdHVzKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge31cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmFsbENhcmREYXRhID0gW107XG4gICAgICAgICAgICB0aGlzLmNhcmREYXRhTWFwID0ge307XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBmZXRjaGluZyBsb2FkQ2FyZERhdGE6XCIsIGVycik7XG4gICAgICAgICAgdGhpcy5vdmVyYWxsQ2FyZERhdGEgPSBbXTtcbiAgICAgICAgICB0aGlzLmNhcmREYXRhTWFwID0ge307XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgfVxuXG5cbiAgc2VsZWN0ZWRUaW1lOiBhbnk7XG4gIGZvbGRlck5hbWU6IGFueTtcbiAgc2VsZWN0ZWRUaW1lcyh2YWw6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRUaW1lID0gdmFsO1xuICAgIHRoaXMuZm9sZGVyTmFtZSA9IHZhbDtcbiAgICB0aGlzLmZvbGRlclZpZXcgPSBmYWxzZTtcbiAgICB0aGlzLnR5cGUgPSB0aGlzLnR5cGU7XG4gICAgdGhpcy5nZXRSZXZvcHMoKTtcbiAgfVxuICBmb2xkZXJEYXRlOiBhbnk7XG4gIGltYWdlRmxvdyA9IGZhbHNlO1xuICBzcGxpdFNjcmVlbkVuYWJsZWQgPSBmYWxzZTsgLy8gRmxhZyB0byBlbmFibGUgc3BsaXQtc2NyZWVuIHZpZXdcbiAgLy8gZ2V0IFJldm9wcyBBcGlcbiAgZ2V0UnZwc0xpc3Q6IGFueTtcbiAgZ2V0UnZwc0ltYWdlTGlzdDogYW55O1xuICBvYmplY3RzQXJyYXk6IGFueTtcbiAgaW1hZ2VzQXJyYXlEYXRhOiBhbnk7XG4gIGxpc3RWaWV3R3JvdXBzOiBBcnJheTx7IHRpbWVSYW5nZTogc3RyaW5nOyBkYXRhOiBhbnlbXSB9PiA9IFtdO1xuICBzZWxlY3RJbmRleDogYW55ID0gMDtcbiAgZm9vdGZhbGxEYXRlOiBhbnk7XG4gIGxlbmd0aFZhbHVlOiBib29sZWFuO1xuICB2aWV3TW9kZTogXCJncmlkXCIgfCBcImxpc3RcIiA9IFwiZ3JpZFwiO1xuICBnZXRpbWFnZXMoaW5kZXg6IGFueSwgb2JqOiBhbnkpIHtcbiAgICB0aGlzLm9iamVjdHNBcnJheSA9IFtdO1xuICAgIHRoaXMuc2VsZWN0SW5kZXggPSBpbmRleDtcbiAgICB0aGlzLmZvbGRlckRhdGUgPSBvYmo7XG4gICAgKHRoaXMuZm9vdGZhbGxEYXRlID0gb2JqKSwgKHRoaXMuZm9sZGVyVmlldyA9IGZhbHNlKTtcbiAgICB0aGlzLnNlcnZpY2U/Lmlzbm9ybWFsaXplU291cmNlXG4gICAgICA/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLCBkZWJvdW5jZVRpbWUoMzAwKSlcbiAgICAgID8uc3Vic2NyaWJlKChub3JtYWxpemU6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLm5vcm1hbGl6ZSA9IG5vcm1hbGl6ZTtcbiAgICAgICAgaWYgKCFub3JtYWxpemUpIHtcbiAgICAgICAgICB0aGlzLmdldFJ2cHNMaXN0ID0gW107XG4gICAgICAgICAgdGhpcy5nZXRSdnBzSW1hZ2VMaXN0ID0gW107XG4gICAgICAgICAgdGhpcy5vYmplY3RzQXJyYXkgPSBbXTtcbiAgICAgICAgICB0aGlzLmdldFJldm9wcygpO1xuICAgICAgICAgIC8vIHRoaXMuZ2V0VG90YWwoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxlbmd0aFZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5vYmplY3RzQXJyYXkgPSBbXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cbiAgY291bnREYXRhOiBhbnkgPSBbXTtcbiAgZ2V0VG90YWwoKSB7XG4gICAgdGhpcy5jb3VudERhdGEgPSBbXTtcbiAgICBjb25zdCBzdG9yZUlkID1cbiAgICAgIHRoaXMuc3RvcmVJZGFycmF5ICYmIHRoaXMuc3RvcmVJZGFycmF5Lmxlbmd0aCA+IDBcbiAgICAgICAgPyB0aGlzLnN0b3JlSWRhcnJheVswXVxuICAgICAgICA6IG51bGw7XG4gICAgY29uc3QgZGF0ZVN0cmluZyA9IHRoaXMuZm9sZGVyRGF0ZSB8fCBcIlwiO1xuICAgIHRoaXMucnZwc1NlcnZpY2VcbiAgICAgIC5nZXRUb3RhbFZhbChzdG9yZUlkLCBkYXRlU3RyaW5nKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgPy5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZ2V0UnZwc0xpc3Q/Lmxlbmd0aCkgdGhpcy5jb3VudERhdGEgPSByZXMuZGF0YTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb3VudERhdGEgPSBbXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7fSxcbiAgICAgIH0pO1xuICB9XG4gIGltYWdlVXJsOiBhbnk7XG4gIHJldm9wc1R5cGVDb3VudDogYW55O1xuICBjdXJyZW50VGltZVJhbmdlRGF0YTogYW55ID0gW107XG4gIG92ZXJhbGxBcnJheURhdGE6IGFueSA9IFtdO1xuICBhbGxGb290ZmFsbERhdGE6IGFueSA9IFtdO1xuICBnZXRUaWNrZXRTdGF0dXNlcygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3Qgc3RhdHVzTGlzdCA9IHRoaXMuZ2V0UnZwc0xpc3Q/LnRpY2tldFN0YXR1cztcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzdGF0dXNMaXN0KSkge1xuICAgICAgcmV0dXJuIHN0YXR1c0xpc3QubWFwKChzKSA9PiBzPy5zdGF0dXM/LnRvTG93ZXJDYXNlKCkpLmZpbHRlcihCb29sZWFuKTsgLy8gUmVtb3ZlcyBudWxsL3VuZGVmaW5lZFxuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH1cbiAgZ2V0UmV2b3BzKCkge1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcbiAgICAvLyB0aGlzLm9iamVjdHNBcnJheSA9W107XG4gICAgLy8gdGhpcy5vdmVyYWxsQXJyYXlEYXRhID1bXTtcbiAgICAvLyB0aGlzLmdldFJ2cHNMaXN0ID1bXTtcbiAgICAvLyB0aGlzLmdldFJ2cHNJbWFnZUxpc3Q9W107XG4gICAgLy8gdGhpcy5hbGxGb290ZmFsbERhdGEgPVtdXG4gICAgY29uc3Qgc3RvcmVJZCA9XG4gICAgICB0aGlzLnN0b3JlSWRhcnJheSAmJiB0aGlzLnN0b3JlSWRhcnJheS5sZW5ndGggPiAwXG4gICAgICAgID8gdGhpcy5zdG9yZUlkYXJyYXlbMF1cbiAgICAgICAgOiBudWxsO1xuICAgIGNvbnN0IGRhdGVTdHJpbmcgPSB0aGlzLmZvbGRlckRhdGUgfHwgXCJcIjtcbiAgICBjb25zdCBncm91cEJ5S2V5ID0gXCJ0aW1lXCI7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMudHlwZSA9PT0gXCJmb290ZmFsbFwiID8gXCJcIiA6IHRoaXMudHlwZSB8fCBcIlwiO1xuICAgIGNvbnN0IHByb2Nlc3NUeXBlID0gXCJmb290ZmFsbFwiO1xuXG4gICAgdGhpcy5ydnBzU2VydmljZVxuICAgICAgLmdldFJ2cHNMaXN0QXBpKHN0b3JlSWQsIGRhdGVTdHJpbmcsIGdyb3VwQnlLZXksIHR5cGUsIHByb2Nlc3NUeXBlKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xuICAgICAgICAgICAgdGhpcy5nZXRSdnBzTGlzdCA9IHJlcz8uZGF0YTtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VVcmwgPSB0aGlzLnJ2cHNTZXJ2aWNlPy5mb290ZmFsbENETjtcbiAgICAgICAgICAgIHRoaXMuZ2V0UnZwc0ltYWdlTGlzdCA9IHJlcz8uZGF0YT8ucmVzdWx0O1xuICAgICAgICAgICAgdGhpcy50aWNrZXRSZXZpZXdTdGF0dXMgPSByZXM/LmRhdGE/LnRpY2tldFN0YXR1cztcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdyZXZvcHMgZ2V0UnZwc0xpc3RBcGkgOicsIHJlcz8uZGF0YSk7XG4gICAgICAgICAgICAvLyBTYXZlIHRoZSBmdWxsIGZvb3RmYWxsIGRhdGEgKGdyb3VwZWQgYnkgdGltZVJhbmdlKVxuICAgICAgICAgICAgdGhpcy5hbGxGb290ZmFsbERhdGEgPSByZXM/LmRhdGE/LnJlc3VsdD8uZm9vdGZhbGxEYXRhIHx8IFtdO1xuXG4gICAgICAgICAgICAvLyBDcmVhdGUgdGltZVJhbmdlICsgY291bnQgb2JqZWN0XG4gICAgICAgICAgICBjb25zdCB0aW1lUmFuZ2VzID0gdGhpcy5hbGxGb290ZmFsbERhdGEubWFwKFxuICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnRpbWVSYW5nZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMub2JqZWN0c0FycmF5ID0gdGltZVJhbmdlcy5tYXAoKHRpbWVSYW5nZTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICB0aW1lUmFuZ2UsXG4gICAgICAgICAgICAgIGNvdW50OlxuICAgICAgICAgICAgICAgIHRoaXMuYWxsRm9vdGZhbGxEYXRhLmZpbmQoKGQ6IGFueSkgPT4gZC50aW1lUmFuZ2UgPT09IHRpbWVSYW5nZSlcbiAgICAgICAgICAgICAgICAgID8uZGF0YT8ubGVuZ3RoIHx8IDAsXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAvLyBPbmx5IHJlc2V0IGlmIHByZXZpb3VzIHNlbGVjdGVkIHRpbWUgaXMgTk9UIGluIHRoZSBuZXcgbGlzdFxuICAgICAgICAgICAgaWYgKCF0aW1lUmFuZ2VzLmluY2x1ZGVzKHRoaXMuc2VsZWN0ZWRUaW1lKSkge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVGltZXModGhpcy5vYmplY3RzQXJyYXlbMF0udGltZVJhbmdlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gR2V0IGRhdGEgZm9yIHRoZSBzZWxlY3RlZCB0aW1lUmFuZ2VcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRpbWVSYW5nZURhdGEgPVxuICAgICAgICAgICAgICB0aGlzLmFsbEZvb3RmYWxsRGF0YS5maW5kKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0udGltZVJhbmdlID09PSB0aGlzLnNlbGVjdGVkVGltZVxuICAgICAgICAgICAgICApPy5kYXRhIHx8IFtdO1xuXG4gICAgICAgICAgICAvLyBDb3VudCByZXZvcHNUeXBlc1xuICAgICAgICAgICAgY29uc3QgcmV2b3BzVHlwZUNvdW50OiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge1xuICAgICAgICAgICAgICBcIm5vbi10YWdnaW5nXCI6IDAsXG4gICAgICAgICAgICAgIGR1cGxpY2F0ZTogMCxcbiAgICAgICAgICAgICAgZW1wbG95ZWU6IDAsXG4gICAgICAgICAgICAgIFwiaG91c2Uta2VlcGluZ1wiOiAwLFxuICAgICAgICAgICAgICBqdW5rOiAwLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgbGV0IHRvdGFsQ291bnQgPSAwO1xuICAgICAgICAgICAgdGhpcy5vdmVyYWxsQXJyYXlEYXRhID0gW107XG5cbiAgICAgICAgICAgIHRoaXMuYWxsRm9vdGZhbGxEYXRhLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICBpdGVtLmRhdGE/LmZvckVhY2goKGltYWdlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJhbGxBcnJheURhdGEucHVzaChpbWFnZSk7XG4gICAgICAgICAgICAgICAgdG90YWxDb3VudCsrO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdHlwZSA9XG4gICAgICAgICAgICAgICAgICBpbWFnZS5yZXZvcHNUeXBlPy50cmltKCkudG9Mb3dlckNhc2UoKSB8fCBcInVua25vd25cIjtcblxuICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSBcIm5vbi10YWdnaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgIHJldm9wc1R5cGVDb3VudFtcIm5vbi10YWdnaW5nXCJdKys7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBcImVtcGxveWVlXCIpIHtcbiAgICAgICAgICAgICAgICAgIHJldm9wc1R5cGVDb3VudFtcImVtcGxveWVlXCJdKys7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBcImhvdXNlLWtlZXBpbmdcIikge1xuICAgICAgICAgICAgICAgICAgcmV2b3BzVHlwZUNvdW50W1wiaG91c2Uta2VlcGluZ1wiXSsrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZih0eXBlID09PSBcImp1bmtcIikge1xuICAgICAgICAgICAgICAgICAgcmV2b3BzVHlwZUNvdW50W1wianVua1wiXSsrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIOKchSBDb3VudCBkdXBsaWNhdGVzIG9ubHkgZnJvbSBkdXBsaWNhdGVJbWFnZVBhdGhcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpbWFnZS5kdXBsaWNhdGVJbWFnZVBhdGgpKSB7XG4gICAgICAgICAgICAgICAgICByZXZvcHNUeXBlQ291bnRbXCJkdXBsaWNhdGVcIl0gKz1cbiAgICAgICAgICAgICAgICAgICAgaW1hZ2UuZHVwbGljYXRlSW1hZ2VQYXRoLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuY291bnREYXRhID0ge1xuICAgICAgICAgICAgICBmb290ZmFsbENvdW50OiB0b3RhbENvdW50LFxuICAgICAgICAgICAgICBub25UYWdzOiByZXZvcHNUeXBlQ291bnRbXCJub24tdGFnZ2luZ1wiXSxcbiAgICAgICAgICAgICAgZHVwbGljYXRlOiByZXZvcHNUeXBlQ291bnRbXCJkdXBsaWNhdGVcIl0sXG4gICAgICAgICAgICAgIGVtcGxveWVlOiByZXZvcHNUeXBlQ291bnRbXCJlbXBsb3llZVwiXSxcbiAgICAgICAgICAgICAgaG91c2VrZWVwaW5nOiByZXZvcHNUeXBlQ291bnRbXCJob3VzZS1rZWVwaW5nXCJdLFxuICAgICAgICAgICAgICBqdW5rOiByZXZvcHNUeXBlQ291bnRbXCJqdW5rXCJdXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvLyBBcHBseSB0eXBlIGZpbHRlciBhZnRlciBsb2FkaW5nIHRpbWVSYW5nZSBkYXRhXG4gICAgICAgICAgICB0aGlzLmFwcGx5RmlsdGVycygpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgLy8gdGhpcy5ub0RhdGEgPSBmYWxzZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gSW4gY2FzZSBvZiBmYWlsdXJlXG4gICAgICAgICAgICB0aGlzLmdldFJ2cHNMaXN0ID0gW107XG4gICAgICAgICAgICB0aGlzLmdldFJ2cHNJbWFnZUxpc3QgPSBbXTtcbiAgICAgICAgICAgIHRoaXMub2JqZWN0c0FycmF5ID0gW107XG4gICAgICAgICAgICB0aGlzLmltYWdlc0FycmF5RGF0YSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5vdmVyYWxsQXJyYXlEYXRhID0gW107XG4gICAgICAgICAgICB0aGlzLmNvdW50RGF0YSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICAgIGNvbnN0IG1zZyA9XG4gICAgICAgICAgICBlcnIuZXJyb3IuZXJyb3IgfHxcbiAgICAgICAgICAgIGVyci5lcnJvciB8fFxuICAgICAgICAgICAgZXJyPy5lcnJvcj8ubWVzc2FnZSB8fFxuICAgICAgICAgICAgZXJyLm1lc3NhZ2UgfHxcbiAgICAgICAgICAgIFwiVW5rbm93biBlcnJvclwiO1xuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChtc2cpO1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmdldFJ2cHNMaXN0ID0gW107XG4gICAgICAgICAgdGhpcy5nZXRSdnBzSW1hZ2VMaXN0ID0gW107XG4gICAgICAgICAgdGhpcy5vYmplY3RzQXJyYXkgPSBbXTtcbiAgICAgICAgICB0aGlzLmltYWdlc0FycmF5RGF0YSA9IFtdO1xuICAgICAgICAgIHRoaXMub3ZlcmFsbEFycmF5RGF0YSA9IFtdO1xuICAgICAgICAgIHRoaXMuY291bnREYXRhID0gW107XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgfVxuXG4gIG9yaWdpbmFsQ2hlY2tlZER1cGxpY2F0ZUlkczogYW55O1xuICBlZGl0VmFsdWUoKSB7XG4gICAgY29uc3QgdHlwZSA9ICh0aGlzLnNlbGVjdGVkVHlwZSB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMucmV2b3BzVHlwZVZhbHVlID0gZmFsc2U7XG5cbiAgICBjb25zdCBzZWxlY3RlZEltYWdlID0gdGhpcy5zZWxlY3RJbWFnZUFycmF5O1xuICAgIGNvbnN0IHNlbGVjdGVkVGVtcGxkID0gc2VsZWN0ZWRJbWFnZT8udGVtcGxkO1xuXG4gICAgaWYgKFxuICAgICAgdHlwZSA9PT0gXCJkdXBsaWNhdGVcIiAmJlxuICAgICAgQXJyYXkuaXNBcnJheShzZWxlY3RlZEltYWdlLmR1cGxpY2F0ZUltYWdlUGF0aClcbiAgICApIHtcbiAgICAgIC8vIDEuIENvbnZlcnQgZHVwbGljYXRlIGNoaWxkcmVuIGludG8gY29uc2lzdGVudCBvYmplY3RzIHdpdGggcGFyZW50IHJlZmVyZW5jZVxuICAgICAgY29uc3QgZHVwbGljYXRlQ2hpbGRyZW4gPSBzZWxlY3RlZEltYWdlLmR1cGxpY2F0ZUltYWdlUGF0aC5tYXAoXG4gICAgICAgIChjaGlsZDogYW55KSA9PiAoe1xuICAgICAgICAgIC4uLmNoaWxkLFxuICAgICAgICAgIHBhcmVudDogc2VsZWN0ZWRUZW1wbGQsXG4gICAgICAgICAgc2VsZWN0ZWQ6IHRydWUsXG4gICAgICAgIH0pXG4gICAgICApO1xuXG4gICAgICAvLyAyLiBDb2xsZWN0IHRoZSB0ZW1wbGQgdmFsdWVzIG9mIGR1cGxpY2F0ZSBjaGlsZHJlblxuICAgICAgY29uc3QgZHVwbGljYXRlQ2hpbGRJZHMgPSBkdXBsaWNhdGVDaGlsZHJlbi5tYXAoXG4gICAgICAgIChjaGlsZDogYW55KSA9PiBjaGlsZC50ZW1wSWRcbiAgICAgICk7XG5cbiAgICAgIC8vIDMuIEZpbHRlciBvdXQgbm9uLXRhZ2dpbmcgaW1hZ2VzIGV4Y2VwdCB0aGUgc2VsZWN0ZWQgcGFyZW50ICYgaXRzIGNoaWxkcmVuXG4gICAgICBjb25zdCBub25UYWdnaW5nSW1hZ2VzID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbHRlcigoaW1nOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgaXNOb25UYWdnaW5nID1cbiAgICAgICAgICAoaW1nLnJldm9wc1R5cGUgfHwgXCJcIikudG9Mb3dlckNhc2UoKSA9PT0gXCJub24tdGFnZ2luZ1wiO1xuICAgICAgICBjb25zdCBpc05vdFNlbGVjdGVkID1cbiAgICAgICAgICBpbWcudGVtcGxkICE9PSBzZWxlY3RlZFRlbXBsZCAmJlxuICAgICAgICAgICFkdXBsaWNhdGVDaGlsZElkcy5pbmNsdWRlcyhpbWcudGVtcGxkKTtcbiAgICAgICAgcmV0dXJuIGlzTm9uVGFnZ2luZyAmJiBpc05vdFNlbGVjdGVkO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIDQuIE1lcmdlIGR1cGxpY2F0ZSBjaGlsZHJlbiArIG90aGVyIG5vbi10YWdnaW5nIGltYWdlc1xuICAgICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gWy4uLmR1cGxpY2F0ZUNoaWxkcmVuLCAuLi5ub25UYWdnaW5nSW1hZ2VzXTtcblxuICAgICAgLy8gNS4gTWFyayBzZWxlY3RlZDogb25seSBkdXBsaWNhdGUgaW1hZ2VzIHRoYXQgd2VyZSBtYXJrZWQgaXNDaGVja2VkXG4gICAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkuZm9yRWFjaCgoaW1nOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgaXNEdXBsaWNhdGUgPVxuICAgICAgICAgIChpbWcucmV2b3BzVHlwZSB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpID09PSBcImR1cGxpY2F0ZVwiO1xuICAgICAgICBpbWcuc2VsZWN0ZWQgPSBpc0R1cGxpY2F0ZSAmJiBpbWcuaXNDaGVja2VkID09PSB0cnVlO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIDYuIFN0b3JlIG9yaWdpbmFsIGNoZWNrZWQgSURzIHRvIGNvbXBhcmUgbGF0ZXIgZHVyaW5nIHN1Ym1pdFxuICAgICAgdGhpcy5vcmlnaW5hbENoZWNrZWREdXBsaWNhdGVJZHMgPSB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXlcbiAgICAgICAgLmZpbHRlcigoaW1nOiBhbnkpID0+IGltZy5pc0NoZWNrZWQgPT09IHRydWUpXG4gICAgICAgIC5tYXAoKGltZzogYW55KSA9PiBpbWcudGVtcGxkKTtcblxuICAgICAgLy8g4pyFIDcuIEZpbGwgc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0IHdpdGggcHJlLXNlbGVjdGVkIGR1cGxpY2F0ZXNcbiAgICAgIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0ID0gdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5XG4gICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgKGltZzogYW55KSA9PlxuICAgICAgICAgICAgKGltZy5yZXZvcHNUeXBlIHx8IFwiXCIpLnRvTG93ZXJDYXNlKCkgPT09IFwiZHVwbGljYXRlXCIgJiZcbiAgICAgICAgICAgIGltZy5pc0NoZWNrZWQgPT09IHRydWVcbiAgICAgICAgKVxuICAgICAgICAubWFwKChpbWc6IGFueSkgPT4gKHtcbiAgICAgICAgICAuLi5pbWcsXG4gICAgICAgICAgcGFyZW50OiBpbWcucGFyZW50IHx8IHNlbGVjdGVkVGVtcGxkLFxuICAgICAgICAgIGlzQ2hlY2tlZDogdHJ1ZSxcbiAgICAgICAgfSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBOb3QgZHVwbGljYXRlIHR5cGUg4oaSIHNob3cgb25seSBzZWxlY3RlZCB0eXBlIChleGNsdWRpbmcgdGhlIGN1cnJlbnQgc2VsZWN0ZWQgaW1hZ2UpXG4gICAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEuZmlsdGVyKChpbWc6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBpbWdUeXBlID0gKGltZy5yZXZvcHNUeXBlIHx8IFwiXCIpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHJldHVybiBpbWdUeXBlID09PSB0eXBlICYmIGltZy50ZW1wbGQgIT09IHNlbGVjdGVkVGVtcGxkO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYmFja1RvRm9vdGZhbGwxKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRSYWRpb1R5cGUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5pbWFnZUZsb3cgPSBmYWxzZTtcbiAgICB0aGlzLnNwbGl0U2NyZWVuRW5hYmxlZCA9IGZhbHNlOyAvLyBEaXNhYmxlIHNwbGl0LXNjcmVlbiB3aGVuIGdvaW5nIGJhY2tcbiAgICB0aGlzLnNlbGVjdEltYWdlQXJyYXkgPSBudWxsO1xuICB9XG4gIHNlbGVjdEltYWdlQXJyYXk6IGFueTtcbiAgcmVtYWluaW5nSW1hZ2VBcnJheTogYW55O1xuICByZXZvcHNUeXBlVmFsdWUgPSBmYWxzZTtcblxuICBlZGl0QnRuU2hvdyA9IGZhbHNlO1xuICAvLyB3aGVuIGltYWdlIHNlbGVjdGlvbiBmcm9tIGZvbGRlciB2aWV3XG4gIHNlbGVjdEltYWdlRm9yU3BsaXRWaWV3KG9iajogYW55KSB7XG4gICAgdGhpcy5zcGxpdFNjcmVlbkVuYWJsZWQgPSB0cnVlOyAvLyBFbmFibGUgc3BsaXQtc2NyZWVuIHdoZW4gaW1hZ2UgaXMgY2xpY2tlZFxuICAgIHRoaXMuc2VsZWN0SW1hZ2VBcnJheSA9IG9iajtcbiAgICBjb25zb2xlLmxvZygnaW1hZ2UgYXJyYXkgOjonLCB0aGlzLnNlbGVjdEltYWdlQXJyYXkpXG4gICAgXG4gICAgLy8gSWYgZHVwbGljYXRlIGlzIGFscmVhZHkgc2VsZWN0ZWQsIHByZXNlcnZlIHRoZSBkdXBsaWNhdGUgY29udGV4dFxuICAgIGNvbnN0IGlzRHVwbGljYXRlTW9kZSA9IHRoaXMuc2VsZWN0ZWRSYWRpb1R5cGUgPT09IFwiZHVwbGljYXRlXCI7XG4gICAgXG4gICAgaWYgKCFpc0R1cGxpY2F0ZU1vZGUpIHtcbiAgICAgIHRoaXMucmV2b3BzVHlwZVZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLnNlbGVjdGVkVHlwZSA9IFwiXCI7XG4gICAgICB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID0gdW5kZWZpbmVkO1xuICAgICAgXG4gICAgICAvLyBTaG93IGFsbCBpbWFnZXMgaW4gbGVmdCBwYW5lbCBleGNlcHQgZHVwbGljYXRlcyBhbmQgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBpbWFnZVxuICAgICAgY29uc3Qgc2VsZWN0ZWRUZW1wbGQgPSBvYmo/LnRlbXBsZDtcbiAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maWx0ZXIoKGltZzogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGltZ1R5cGUgPSAoaW1nLnJldm9wc1R5cGUgfHwgXCJcIikudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgLy8gRXhjbHVkZSBkdXBsaWNhdGVzIGFuZCB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGltYWdlXG4gICAgICAgIHJldHVybiBpbWdUeXBlICE9PSBcImR1cGxpY2F0ZVwiICYmIGltZy50ZW1wbGQgIT09IHNlbGVjdGVkVGVtcGxkO1xuICAgICAgfSk7XG4gICAgICBcbiAgICAgIC8vIFJlc2V0IGNoZWNrYm94IHN0YXRlc1xuICAgICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5LmZvckVhY2goKGltZzogYW55KSA9PiB7XG4gICAgICAgIGltZy5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICBpbWcuaXNDaGVja2VkID0gZmFsc2U7XG4gICAgICB9KTtcbiAgICAgIFxuICAgICAgdGhpcy5yZW1haW5pbmdJbWFnZXNHcm91cHMgPSBbXTsgLy8gUmVzZXQgZ3JvdXBzXG4gICAgfVxuICAgIFxuICAgIGxldCBmaWx0ZXJlZEJ5VHlwZTogYW55W10gPSBbXTtcbiAgICBjb25zdCBzZWxlY3RlZFR5cGUgPSBvYmoucmV2b3BzVHlwZT8udG9Mb3dlckNhc2UoKTtcblxuICAgIC8vIElmIHdlJ3JlIGluIGR1cGxpY2F0ZSBtb2RlIGFuZCBjbGlja2luZyBvbiBhIHJlbWFpbmluZyBpbWFnZSwga2VlcCB0aGUgZHVwbGljYXRlIGNvbnRleHRcbiAgICBpZiAoaXNEdXBsaWNhdGVNb2RlKSB7XG4gICAgICAvLyBLZWVwIHRoZSBleGlzdGluZyByZW1haW5pbmcgaW1hZ2VzIGJ1dCB1cGRhdGUgdGhlIHNlbGVjdGVkIGltYWdlXG4gICAgICAvLyBEb24ndCByZXNldCB0aGUgZHVwbGljYXRlIHNlbGVjdGlvbiBjb250ZXh0XG4gICAgICB0aGlzLnJldm9wc1R5cGVWYWx1ZSA9IGZhbHNlOyAvLyBBbGxvdyBlZGl0aW5nIHRoaXMgaW1hZ2VcbiAgICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gXCJcIjsgLy8gUmVzZXQgdG8gYWxsb3cgbmV3IHNlbGVjdGlvblxuICAgICAgLy8gS2VlcCBzZWxlY3RlZFJhZGlvVHlwZSBhcyAnZHVwbGljYXRlJyB0byBtYWludGFpbiBjb250ZXh0XG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZFR5cGUgPT09IFwiZHVwbGljYXRlXCIgJiYgQXJyYXkuaXNBcnJheShvYmouZHVwbGljYXRlSW1hZ2VQYXRoKSkge1xuICAgICAgLy8gV2hlbiBjbGlja2luZyBvbiBhIGR1cGxpY2F0ZSBwYXJlbnQsIHNob3cgYWxsIGltYWdlcyBleGNlcHQgZHVwbGljYXRlcyBhbmQgY3VycmVudFxuICAgICAgY29uc3Qgc2VsZWN0ZWRUZW1wbGQgPSBvYmo/LnRlbXBsZDtcbiAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maWx0ZXIoKGltZzogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGltZ1R5cGUgPSAoaW1nLnJldm9wc1R5cGUgfHwgXCJcIikudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcmV0dXJuIGltZ1R5cGUgIT09IFwiZHVwbGljYXRlXCIgJiYgaW1nLnRlbXBsZCAhPT0gc2VsZWN0ZWRUZW1wbGQ7XG4gICAgICB9KTtcbiAgICAgIFxuICAgICAgLy8gUmVzZXQgY2hlY2tib3ggc3RhdGVzXG4gICAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkuZm9yRWFjaCgoaW1nOiBhbnkpID0+IHtcbiAgICAgICAgaW1nLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIGltZy5pc0NoZWNrZWQgPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZygndHlwZSA6OjonLCBzZWxlY3RlZFR5cGUpXG4gICAgICAvLyBGb3Igbm9uLWR1cGxpY2F0ZSBpbWFnZXMsIHNob3cgYWxsIGltYWdlcyBleGNlcHQgZHVwbGljYXRlcyBhbmQgY3VycmVudFxuICAgICAgY29uc3Qgc2VsZWN0ZWRUZW1wbGQgPSBvYmo/LnRlbXBsZDtcbiAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maWx0ZXIoKGltZzogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGltZ1R5cGUgPSAoaW1nLnJldm9wc1R5cGUgfHwgXCJcIikudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcmV0dXJuIGltZ1R5cGUgIT09IFwiZHVwbGljYXRlXCIgJiYgaW1nLnRlbXBsZCAhPT0gc2VsZWN0ZWRUZW1wbGQ7XG4gICAgICB9KTtcbiAgICAgIFxuICAgICAgLy8gUmVzZXQgY2hlY2tib3ggc3RhdGVzXG4gICAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkuZm9yRWFjaCgoaW1nOiBhbnkpID0+IHtcbiAgICAgICAgaW1nLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIGltZy5pc0NoZWNrZWQgPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIE9ubHkgYXV0by1zZXQgcmV2b3BzVHlwZVZhbHVlIGlmIG5vdCBpbiBkdXBsaWNhdGUgbW9kZVxuICAgIGlmICghaXNEdXBsaWNhdGVNb2RlKSB7XG4gICAgICBpZiAoXG4gICAgICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gXCJkdXBsaWNhdGVcIiB8fFxuICAgICAgICBvYmo/LnJldm9wc1R5cGUgPT09IFwiZW1wbG95ZWVcIiB8fFxuICAgICAgICBvYmo/LnJldm9wc1R5cGUgPT09IFwiaG91c2Uta2VlcGluZ1wiIHx8IG9iaj8ucmV2b3BzVHlwZSA9PT1cImp1bmtcIlxuICAgICAgKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBvYmo/LnJldm9wc1R5cGUgPT09IFwiZHVwbGljYXRlXCIgJiZcbiAgICAgICAgICBvYmo/LmR1cGxpY2F0ZUltYWdlUGF0aD8ubGVuZ3RoID4gMFxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmVkaXRCdG5TaG93ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICBvYmo/LnJldm9wc1R5cGUgPT09IFwiZW1wbG95ZWVcIiB8fFxuICAgICAgICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gXCJob3VzZS1rZWVwaW5nXCIgfHwgb2JqPy5yZXZvcHNUeXBlID09PVwianVua1wiXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuZWRpdEJ0blNob3cgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZWRpdEJ0blNob3cgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJldm9wc1R5cGVWYWx1ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gb2JqPy5yZXZvcHNUeXBlO1xuICAgICAgICB0aGlzLm9uUmFkaW9DaGFuZ2Uob2JqPy5yZXZvcHNUeXBlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSW4gZHVwbGljYXRlIG1vZGUsIGFsbG93IGVkaXRpbmcgdGhlIHNlbGVjdGVkIGltYWdlXG4gICAgICB0aGlzLnJldm9wc1R5cGVWYWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5lZGl0QnRuU2hvdyA9IGZhbHNlO1xuICAgIH1cbiAgICBcbiAgICAvLyBCdWlsZCByZW1haW5pbmcgaW1hZ2VzIGdyb3VwcyBieSB0aW1lIHJhbmdlXG4gICAgdGhpcy5idWlsZFJlbWFpbmluZ0ltYWdlc0dyb3VwcygpO1xuICB9XG5cbiAgaW1nRnVsbFZpZXcob2JqOiBhbnkpIHtcbiAgdGhpcy5zZWxlY3RJbWFnZUFycmF5ID0gb2JqO1xuICB0aGlzLmltYWdlRmxvdyA9IHRydWU7XG4gIHRoaXMucmV2b3BzVHlwZVZhbHVlID0gZmFsc2U7XG4gIHRoaXMuc2VsZWN0ZWRUeXBlID0gXCJcIjtcbiAgdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSA9IHVuZGVmaW5lZDtcbiAgbGV0IGZpbHRlcmVkQnlUeXBlOiBhbnlbXSA9IFtdO1xuICBjb25zdCBzZWxlY3RlZFR5cGUgPSBvYmoucmV2b3BzVHlwZT8udG9Mb3dlckNhc2UoKTtcblxuICBpZiAoc2VsZWN0ZWRUeXBlID09PSBcImR1cGxpY2F0ZVwiICYmIEFycmF5LmlzQXJyYXkob2JqLmR1cGxpY2F0ZUltYWdlUGF0aCkpIHtcbiAgICAvLyDwn5S5IENhc2UgMTogRHVwbGljYXRlIHBhcmVudCDihpIgZG9uJ3Qgc2hvdyBjaGlsZHJlbiBpbiBsZWZ0IHBhbmVsIGluaXRpYWxseVxuICAgIC8vIFRoZXkgd2lsbCBhcHBlYXIgd2hlbiBkdXBsaWNhdGUgcmFkaW8gaXMgc2VsZWN0ZWRcbiAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSBbXTtcbiAgfSBlbHNlIHtcbiAgICAvLyDwn5S5IENhc2UgMjogTm9ybWFsIOKGkiBzaG93IGFsbCBpbWFnZXMgZXhjZXB0IGR1cGxpY2F0ZXMgYW5kIGN1cnJlbnRseSBzZWxlY3RlZFxuICAgIGNvbnN0IHNlbGVjdGVkVGVtcGxkID0gb2JqPy50ZW1wbGQ7XG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbHRlcigoaW1nOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGltZ1R5cGUgPSAoaW1nLnJldm9wc1R5cGUgfHwgXCJcIikudG9Mb3dlckNhc2UoKTtcbiAgICAgIHJldHVybiBpbWdUeXBlICE9PSBcImR1cGxpY2F0ZVwiICYmIGltZy50ZW1wbGQgIT09IHNlbGVjdGVkVGVtcGxkO1xuICAgIH0pO1xuICAgIFxuICAgIC8vIFJlc2V0IGNoZWNrYm94IHN0YXRlc1xuICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheS5mb3JFYWNoKChpbWc6IGFueSkgPT4ge1xuICAgICAgaW1nLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICBpbWcuaXNDaGVja2VkID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuXG4gIC8vIOKchSBIYW5kbGUgZWRpdCBidXR0b24gLyByYWRpbyBsb2dpY1xuICBpZiAoXG4gICAgb2JqPy5yZXZvcHNUeXBlID09PSBcImR1cGxpY2F0ZVwiIHx8XG4gICAgb2JqPy5yZXZvcHNUeXBlID09PSBcImVtcGxveWVlXCIgfHxcbiAgICBvYmo/LnJldm9wc1R5cGUgPT09IFwiaG91c2Uta2VlcGluZ1wiIHx8IG9iaj8ucmV2b3BzVHlwZSA9PT1cImp1bmtcIlxuICApIHtcbiAgICBpZiAoXG4gICAgICBvYmo/LnJldm9wc1R5cGUgPT09IFwiZHVwbGljYXRlXCIgJiZcbiAgICAgIG9iaj8uZHVwbGljYXRlSW1hZ2VQYXRoPy5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICB0aGlzLmVkaXRCdG5TaG93ID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgb2JqPy5yZXZvcHNUeXBlID09PSBcImVtcGxveWVlXCIgfHxcbiAgICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gXCJob3VzZS1rZWVwaW5nXCIgfHwgb2JqPy5yZXZvcHNUeXBlID09PVwianVua1wiXG4gICAgKSB7XG4gICAgICB0aGlzLmVkaXRCdG5TaG93ID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lZGl0QnRuU2hvdyA9IGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMucmV2b3BzVHlwZVZhbHVlID0gdHJ1ZTtcbiAgICB0aGlzLnNlbGVjdGVkVHlwZSA9IG9iaj8ucmV2b3BzVHlwZTtcbiAgICB0aGlzLm9uUmFkaW9DaGFuZ2Uob2JqPy5yZXZvcHNUeXBlKTtcbiAgfVxufVxuXG5cbiAgaW1nU3dhcChvYmo6IGFueSkge1xuICAgIGlmICh0aGlzLnNlbGVjdEltYWdlQXJyYXkpIHtcbiAgICAgIC8vIEZpbmQgd2hlcmUgdGhlIG5ldyBzZWxlY3RlZCBpbWFnZSBpcyBpbiB0aGUgbGlzdFxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkuZmluZEluZGV4KFxuICAgICAgICAoaW1nOiBhbnkpID0+IGltZy50ZW1wbGQgPT09IG9iai50ZW1wbGRcbiAgICAgICk7XG5cbiAgICAgIC8vIFJlcGxhY2Ugc2VsZWN0ZWRJbWFnZUFycmF5IGJhY2sgaW50byBpdHMgb3JpZ2luYWwgcG9zaXRpb25cbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5W2luZGV4XSA9IHRoaXMuc2VsZWN0SW1hZ2VBcnJheTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGZhbGxiYWNrIGlmIG5vdCBmb3VuZFxuICAgICAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkucHVzaCh0aGlzLnNlbGVjdEltYWdlQXJyYXkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFVwZGF0ZSBzZWxlY3RlZCBpbWFnZVxuICAgIHRoaXMuc2VsZWN0SW1hZ2VBcnJheSA9IG9iajtcblxuICAgIC8vIFJlbW92ZSBzZWxlY3RlZCBmcm9tIHJlbWFpbmluZyBsaXN0XG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5LmZpbHRlcihcbiAgICAgIChpbWc6IGFueSkgPT4gaW1nLnRlbXBsZCAhPT0gb2JqLnRlbXBsZFxuICAgICk7XG5cbiAgICAvLyBSZWJ1aWxkIHJlbWFpbmluZyBpbWFnZXMgZ3JvdXBzXG4gICAgdGhpcy5idWlsZFJlbWFpbmluZ0ltYWdlc0dyb3VwcygpO1xuICAgIFxuICAgIHRoaXMuaW1hZ2VGbG93ID0gdHJ1ZTtcbiAgfVxuXG4gIHNlbGVjdGVkVHlwZTogYW55ID0gXCJcIjsgLy8gZGVmYXVsdCBzZWxlY3RlZFxuICBzZWxlY3RlZFJhZGlvVHlwZTogYW55O1xuICAvLyAtLSBOb24tc2hvcHBlcnMgc2VsZWN0aW9uIHR5cGUgLS1cbiAgb25SYWRpb0NoYW5nZSh2YWw6IGFueSkge1xuICB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID0gdmFsO1xuICB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdCA9IFtdO1xuXG4gIGNvbnN0IHR5cGUgPSAodmFsIHx8IFwiXCIpLnRvTG93ZXJDYXNlKCk7XG5cbiAgaWYgKHR5cGUgPT09IFwiZHVwbGljYXRlXCIpIHtcbiAgICAvLyBXaGVuIGR1cGxpY2F0ZSByYWRpbyBpcyBzZWxlY3RlZCwgc2hvdyBBTEwgaW1hZ2VzIChpbmNsdWRpbmcgZHVwbGljYXRlcykgZXhjZXB0IHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgb25lXG4gICAgY29uc3Qgc2VsZWN0ZWRUZW1wbGQgPSB0aGlzLnNlbGVjdEltYWdlQXJyYXk/LnRlbXBsZDtcblxuICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maWx0ZXIoKGltZzogYW55KSA9PiB7XG4gICAgICByZXR1cm4gaW1nLnRlbXBsZCAhPT0gc2VsZWN0ZWRUZW1wbGQ7XG4gICAgfSk7XG5cbiAgICAvLyBBdXRvLWNoZWNrIGltYWdlcyB0aGF0IGFyZSBhbHJlYWR5IGR1cGxpY2F0ZWQgKGhhdmUgcmV2b3BzVHlwZSA9PT0gXCJkdXBsaWNhdGVcIilcbiAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkuZm9yRWFjaCgoaW1nOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGltZ1R5cGUgPSAoaW1nLnJldm9wc1R5cGUgfHwgXCJcIikudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChpbWdUeXBlID09PSBcImR1cGxpY2F0ZVwiKSB7XG4gICAgICAgIC8vIEF1dG8tY2hlY2sgYWxyZWFkeSBkdXBsaWNhdGVkIGltYWdlc1xuICAgICAgICBpbWcuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICBpbWcuaXNDaGVja2VkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFJlc2V0IG5vbi1kdXBsaWNhdGUgaW1hZ2VzXG4gICAgICAgIGltZy5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICBpbWcuaXNDaGVja2VkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBVcGRhdGUgc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0IHdpdGggYXV0by1jaGVja2VkIGR1cGxpY2F0ZXNcbiAgICB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdCA9IHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheVxuICAgICAgLmZpbHRlcigoaW1nOiBhbnkpID0+IGltZy5zZWxlY3RlZCAmJiAoaW1nLnJldm9wc1R5cGUgfHwgXCJcIikudG9Mb3dlckNhc2UoKSA9PT0gXCJkdXBsaWNhdGVcIilcbiAgICAgIC5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgcGFyZW50OiBpdGVtLnBhcmVudCB8fCB0aGlzLnNlbGVjdEltYWdlQXJyYXk/LnRlbXBsZCxcbiAgICAgICAgaXNDaGVja2VkOiB0cnVlLFxuICAgICAgfSkpO1xuXG4gICAgLy8gUmVidWlsZCByZW1haW5pbmcgaW1hZ2VzIGdyb3VwcyBhZnRlciB1cGRhdGluZ1xuICAgIHRoaXMuYnVpbGRSZW1haW5pbmdJbWFnZXNHcm91cHMoKTtcbiAgICBjb25zb2xlLmxvZygncmVtYWluIGltYWdlIGFycmF5IDo6JywgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5KVxuICB9IGVsc2Uge1xuICAgIC8vIEZvciBub24tZHVwbGljYXRlIHR5cGVzLCBzaG93IGFsbCBpbWFnZXMgZXhjZXB0IGR1cGxpY2F0ZXMgYW5kIGN1cnJlbnRseSBzZWxlY3RlZFxuICAgIGNvbnN0IHNlbGVjdGVkVGVtcGxkID0gdGhpcy5zZWxlY3RJbWFnZUFycmF5Py50ZW1wbGQ7XG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbHRlcigoaW1nOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGltZ1R5cGUgPSAoaW1nLnJldm9wc1R5cGUgfHwgXCJcIikudG9Mb3dlckNhc2UoKTtcbiAgICAgIHJldHVybiBpbWdUeXBlICE9PSBcImR1cGxpY2F0ZVwiICYmIGltZy50ZW1wbGQgIT09IHNlbGVjdGVkVGVtcGxkO1xuICAgIH0pO1xuICAgIFxuICAgIC8vIFJlc2V0IGNoZWNrYm94IHN0YXRlc1xuICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheS5mb3JFYWNoKChpbWc6IGFueSkgPT4ge1xuICAgICAgaW1nLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICBpbWcuaXNDaGVja2VkID0gZmFsc2U7XG4gICAgfSk7XG4gICAgXG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZXNHcm91cHMgPSBbXTtcbiAgICB0aGlzLmJ1aWxkUmVtYWluaW5nSW1hZ2VzR3JvdXBzKCk7XG4gIH1cbn1cblxuXG4gIHR5cGU6IGFueSA9IFwiZm9vdGZhbGxcIjtcbiAgc2VsZWN0UGxhblRyZW5kcyh0eXBlOiBhbnkpIHtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuXG4gICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgfVxuXG4gIGFwcGx5RmlsdGVycygpIHtcbiAgICB0aGlzLmltYWdlRmxvdyA9IGZhbHNlO1xuICAgIHRoaXMuc3BsaXRTY3JlZW5FbmFibGVkID0gZmFsc2U7IC8vIFJlc2V0IHNwbGl0LXNjcmVlbiB3aGVuIGZpbHRlcnMgY2hhbmdlXG4gICAgdGhpcy5zZWxlY3RJbWFnZUFycmF5ID0gbnVsbDtcblxuICAgIC8vIENvbnZlcnQgdHlwZSB0byBsb3dlcmNhc2Ugc2FmZWx5XG4gICAgY29uc3Qgc2VsZWN0ZWRUeXBlID0gdGhpcy50eXBlPy50b0xvd2VyQ2FzZSgpO1xuXG4gICAgaWYgKHNlbGVjdGVkVHlwZSA9PT0gXCJmb290ZmFsbFwiKSB7XG4gICAgICAvLyBGb290ZmFsbCBzaG93cyBhbGwgY3VycmVudFRpbWVSYW5nZURhdGEgKHRpbWUgcmFuZ2UgYmFzZWQpXG4gICAgICB0aGlzLmltYWdlc0FycmF5RGF0YSA9IFsuLi50aGlzLmN1cnJlbnRUaW1lUmFuZ2VEYXRhXTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRm9yIHRhZ2dlZCB0eXBlcyBsaWtlICdkdXBsaWNhdGUnLCAnZW1wbG95ZWUnLCAnaG91c2VrZWVwaW5nJ1xuICAgICAgdGhpcy5pbWFnZXNBcnJheURhdGEgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEuZmlsdGVyKFxuICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnJldm9wc1R5cGU/LnRvTG93ZXJDYXNlKCkgPT09IHNlbGVjdGVkVHlwZVxuICAgICAgKTtcbiAgICB9XG4gICAgLy8gZWxzZSB7XG4gICAgLy8gICAvLyBOb24tdGFnZ2luZyBtZWFucyBubyByZXZvcHNUeXBlIC0gc2hvdyBhbGwgdW5tYXRjaGVkIChubyB0YWcpXG4gICAgLy8gICB0aGlzLmltYWdlc0FycmF5RGF0YSA9IHRoaXMuY3VycmVudFRpbWVSYW5nZURhdGEuZmlsdGVyKChpdGVtOiBhbnkpID0+XG4gICAgLy8gICAgICFpdGVtLnJldm9wc1R5cGVcbiAgICAvLyAgICk7XG4gICAgLy8gfVxuXG4gICAgLy8gU2V0IG5vRGF0YSBiYXNlZCBvbiByZXN1bHRcbiAgICB0aGlzLm5vRGF0YSA9ICF0aGlzLmltYWdlc0FycmF5RGF0YT8ubGVuZ3RoO1xuXG4gICAgdGhpcy5idWlsZExpc3RWaWV3R3JvdXBzKCk7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbiAgc2V0Vmlld01vZGUobW9kZTogXCJncmlkXCIgfCBcImxpc3RcIikge1xuICAgIGlmICh0aGlzLnZpZXdNb2RlICE9PSBtb2RlKSB7XG4gICAgICB0aGlzLnZpZXdNb2RlID0gbW9kZTtcbiAgICB9XG4gIH1cblxuICAvLyBDb252ZXJ0IG1pbnV0ZXMg4oaSIGhyICsgbWluc1xuICAgIGNvbnZlcnRNaW51dGVzKHRvdGFsTWludXRlczogbnVtYmVyKSB7XG4gICAgICBpZiAoIXRvdGFsTWludXRlcyAmJiB0b3RhbE1pbnV0ZXMgIT09IDApIHJldHVybiB7IGhvdXJzOiAwLCBtaW5zOiAwIH07XG4gICAgICBjb25zdCBob3VycyA9IE1hdGguZmxvb3IodG90YWxNaW51dGVzIC8gNjApO1xuICAgICAgY29uc3QgbWlucyA9IHRvdGFsTWludXRlcyAlIDYwO1xuICAgICAgcmV0dXJuIHsgaG91cnMsIG1pbnMgfTtcbiAgICB9XG5cbiAgcmVtYWluaW5nSW1hZ2VzR3JvdXBzOiBBcnJheTx7IHRpbWVSYW5nZTogc3RyaW5nOyBkYXRhOiBhbnlbXSB9PiA9IFtdO1xuXG4gIHByaXZhdGUgYnVpbGRSZW1haW5pbmdJbWFnZXNHcm91cHMoKSB7XG4gICAgaWYgKCF0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgfHwgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5yZW1haW5pbmdJbWFnZXNHcm91cHMgPSBbXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvcmRlcjogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwPHN0cmluZywgYW55W10+KCk7XG5cbiAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkuZm9yRWFjaCgoaW1nOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGtleSA9IGltZz8udGltZVJhbmdlIHx8IFwiTkFcIjtcbiAgICAgIGlmICghbWFwLmhhcyhrZXkpKSB7XG4gICAgICAgIG1hcC5zZXQoa2V5LCBbXSk7XG4gICAgICAgIG9yZGVyLnB1c2goa2V5KTtcbiAgICAgIH1cbiAgICAgIG1hcC5nZXQoa2V5KT8ucHVzaChpbWcpO1xuICAgIH0pO1xuICAgIGNvbnNvbGUubG9nKCdyZW1haW5pbmdJbWFnZUFycmF5ID09PicsIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSlcblxuICAgIHRoaXMucmVtYWluaW5nSW1hZ2VzR3JvdXBzID0gb3JkZXIubWFwKChrZXkpID0+ICh7XG4gICAgICB0aW1lUmFuZ2U6IGtleSxcbiAgICAgIGRhdGE6IG1hcC5nZXQoa2V5KSB8fCBbXSxcbiAgICB9KSk7XG5cbiAgICBjb25zb2xlLmxvZygncmVtYWluaW5nSW1hZ2VzR3JvdXBzID0+JywgdGhpcy5yZW1haW5pbmdJbWFnZXNHcm91cHMpXG4gIH1cblxuICBwcml2YXRlIGJ1aWxkTGlzdFZpZXdHcm91cHMoKSB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gXCJmb290ZmFsbFwiKSB7XG4gICAgICB0aGlzLmxpc3RWaWV3R3JvdXBzID0gKHRoaXMuYWxsRm9vdGZhbGxEYXRhIHx8IFtdKVxuICAgICAgICAuZmlsdGVyKChncm91cDogYW55KSA9PiBBcnJheS5pc0FycmF5KGdyb3VwPy5kYXRhKSAmJiBncm91cC5kYXRhLmxlbmd0aClcbiAgICAgICAgLm1hcCgoZ3JvdXA6IGFueSkgPT4gKHtcbiAgICAgICAgICB0aW1lUmFuZ2U6IGdyb3VwPy50aW1lUmFuZ2UgfHwgXCJOQVwiLFxuICAgICAgICAgIGRhdGE6IGdyb3VwPy5kYXRhIHx8IFtdLFxuICAgICAgICB9KSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3JkZXI6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueVtdPigpO1xuXG4gICAgKHRoaXMuaW1hZ2VzQXJyYXlEYXRhIHx8IFtdKS5mb3JFYWNoKChpbWc6IGFueSkgPT4ge1xuICAgICAgY29uc3Qga2V5ID0gaW1nPy50aW1lUmFuZ2UgfHwgXCJOQVwiO1xuICAgICAgaWYgKCFtYXAuaGFzKGtleSkpIHtcbiAgICAgICAgbWFwLnNldChrZXksIFtdKTtcbiAgICAgICAgb3JkZXIucHVzaChrZXkpO1xuICAgICAgfVxuICAgICAgbWFwLmdldChrZXkpPy5wdXNoKGltZyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmxpc3RWaWV3R3JvdXBzID0gb3JkZXIubWFwKChrZXkpID0+ICh7XG4gICAgICB0aW1lUmFuZ2U6IGtleSxcbiAgICAgIGRhdGE6IG1hcC5nZXQoa2V5KSB8fCBbXSxcbiAgICB9KSk7XG4gIH1cbiAgaGFuZGxlSW1hZ2VDbGljayhldnQ6IGFueSwgb2JqOiBhbnkpIHtcbiAgICAvLyBXaGVuIGR1cGxpY2F0ZSBpcyBzZWxlY3RlZCwgY2xpY2tpbmcgb24gaW1hZ2VzIHNob3VsZCBvcGVuIHRoZW0gaW4gem9vbSBtb2RhbFxuICAgIGlmICh0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID09PSBcImR1cGxpY2F0ZVwiICYmIHRoaXMuc3BsaXRTY3JlZW5FbmFibGVkKSB7XG4gICAgICAvLyBPcGVuIGltYWdlIGluIHpvb20gbW9kYWwgd2hlbiBkdXBsaWNhdGUgaXMgc2VsZWN0ZWRcbiAgICAgIC8vIFN0b3JlIHRoZSBjbGlja2VkIGltYWdlIHRlbXBvcmFyaWx5IGZvciBtb2RhbCBkaXNwbGF5XG4gICAgICB0aGlzLm9wZW5JbWFnZVpvb21Nb2RhbCh0aGlzLmltYWdlVXJsLCBvYmopO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICAvLyBGb3Igc3BsaXQtc2NyZWVuIHZpZXcsIGNsaWNraW5nIG9uIHJlbGF0ZWQgaW1hZ2VzIHNob3VsZCBzd2FwIHRvIHRoYXQgaW1hZ2VcbiAgICBpZiAodGhpcy5zcGxpdFNjcmVlbkVuYWJsZWQgJiYgdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSAhPT0gXCJkdXBsaWNhdGVcIikge1xuICAgICAgdGhpcy5zZWxlY3RJbWFnZUZvclNwbGl0VmlldyhvYmopO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZFJhZGlvVHlwZSAhPT0gXCJkdXBsaWNhdGVcIikge1xuICAgICAgdGhpcy5pbWdTd2FwKG9iaik7IC8vIGV4aXN0aW5nIG5vbi1kdXBsaWNhdGUgY2xpY2sgYmVoYXZpb3JcbiAgICB9XG4gIH1cblxuICB0ZW1wTW9kYWxJbWFnZTogYW55ID0gbnVsbDsgLy8gVGVtcG9yYXJ5IHN0b3JhZ2UgZm9yIG1vZGFsIGltYWdlIHdoZW4gZHVwbGljYXRlIGlzIHNlbGVjdGVkXG5cbiAgb3BlbkltYWdlWm9vbU1vZGFsKGltYWdlVXJsOiBhbnksIGltYWdlRGF0YTogYW55KSB7XG4gICAgLy8gU3RvcmUgdGhlIGltYWdlIGRhdGEgdGVtcG9yYXJpbHkgZm9yIG1vZGFsIGRpc3BsYXlcbiAgICB0aGlzLnRlbXBNb2RhbEltYWdlID0gaW1hZ2VEYXRhO1xuICAgIHRoaXMuaXNNb2RhbE9wZW4gPSB0cnVlO1xuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLmltYWdlUG9wdXAsIHtcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxuICAgICAgc2l6ZTogXCJsZ1wiLFxuICAgICAgYmFja2Ryb3A6IFwic3RhdGljXCIsXG4gICAgICBrZXlib2FyZDogZmFsc2UsXG4gICAgfSk7XG4gIH1cbiAgc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0OiBhbnkgPSBbXTtcblxuICB0b2dnbGVEdXBsaWNhdGVTZWxlY3Rpb24oaW1nOiBhbnkpIHtcbiAgICBjb25zb2xlLmxvZygndG9nZ2xlRHVwbGljYXRlU2VsZWN0aW9uIDo6JywgaW1nKVxuICAgIGlmICghaW1nIHx8IGltZy5kdXBsaWNhdGVJbWFnZVBhdGg/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0b3RhbEltYWdlcyA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5sZW5ndGg7XG4gICAgY29uc3QgYWxyZWFkeVRhZ2dlZENvdW50ID0gdGhpcy5jb3VudERhdGE/LmR1cGxpY2F0ZSB8fCAwO1xuICAgIGNvbnN0IG1heFNlbGVjdGFibGUgPSBNYXRoLnJvdW5kKHRvdGFsSW1hZ2VzICogMC4yKTtcbiAgICBjb25zdCBjdXJyZW50bHlTZWxlY3RlZENvdW50ID0gdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5LmZpbHRlcihcbiAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0uc2VsZWN0ZWRcbiAgICApLmxlbmd0aDtcblxuICAgIGNvbnN0IHdpbGxTZWxlY3QgPSAhaW1nLnNlbGVjdGVkO1xuXG4gICAgLy8g4puUIEJsb2NrIHNlbGVjdGlvbiBpZiB0cnlpbmcgdG8gZ28gYmV5b25kIDIwJSBjYXBcbiAgICBpZiAoXG4gICAgICB3aWxsU2VsZWN0ICYmXG4gICAgICBjdXJyZW50bHlTZWxlY3RlZENvdW50ICsgYWxyZWFkeVRhZ2dlZENvdW50ID49IG1heFNlbGVjdGFibGVcbiAgICApIHtcbiAgICAgIHRoaXMudG9hc3QuZ2V0V2FybmluZ1RvYXN0KFxuICAgICAgICBgWW91IGNhbiBzZWxlY3Qgb25seSAke21heFNlbGVjdGFibGV9IGltYWdlcyAoJHtcbiAgICAgICAgICB0aGlzLmdldFJ2cHNMaXN0Py5kYXRhPy5jb25maWc/LmR1cGxpY2F0ZSA/PyBcIjIwJVwiXG4gICAgICAgIH0gb2YgdG90YWwgZm9vdGZhbGwpYFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyDinIUgUHJvY2VlZCB3aXRoIHNlbGVjdGlvbiB0b2dnbGVcbiAgICBpbWcuc2VsZWN0ZWQgPSAhaW1nLnNlbGVjdGVkO1xuICAgIGltZy5pc0NoZWNrZWQgPSBpbWcuc2VsZWN0ZWQ7XG5cbiAgICAvLyDinIUgQWx3YXlzIHJlYnVpbGQgdGhlIHNlbGVjdGVkIGxpc3RcbiAgICB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdCA9IHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheVxuICAgICAgLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLnNlbGVjdGVkKVxuICAgICAgLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAuLi5pdGVtLFxuICAgICAgICBwYXJlbnQ6IGl0ZW0ucGFyZW50IHx8IHRoaXMuc2VsZWN0SW1hZ2VBcnJheT8udGVtcGxkLFxuICAgICAgICBpc0NoZWNrZWQ6IHRydWUsXG4gICAgICB9KSk7XG5cbiAgICAvLyBOb3RlOiBidWlsZFJlbWFpbmluZ0ltYWdlc0dyb3VwcygpIG5vdCBuZWVkZWQgaGVyZSAtIGdyb3VwcyBhcmUgYmFzZWQgb24gdGltZVJhbmdlLFxuICAgIC8vIG5vdCBzZWxlY3RlZCBwcm9wZXJ0eSwgc28gcmVidWlsZGluZyB3b3VsZCBjYXVzZSB1bm5lY2Vzc2FyeSByZS1yZW5kZXIgYW5kIHNjcm9sbCByZXNldFxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgb25JbWFnZUNoZWNrYm94Q2hhbmdlKGV2dDogYW55LCBpbWc6IGFueSwgdHlwZTogc3RyaW5nKSB7XG4gICAgaWYgKHR5cGUgPT09IFwiZHVwbGljYXRlXCIpIHtcbiAgICAgIC8vIFVzZSB0aGUgdG9nZ2xlIG1ldGhvZCBmb3IgZHVwbGljYXRlIHNlbGVjdGlvblxuICAgICAgdGhpcy50b2dnbGVEdXBsaWNhdGVTZWxlY3Rpb24oaW1nKTtcbiAgICAgIC8vIFVwZGF0ZSBjaGVja2JveCBzdGF0ZSB0byBtYXRjaCBzZWxlY3Rpb25cbiAgICAgIGlmIChldnQgJiYgZXZ0LnRhcmdldCkge1xuICAgICAgICBldnQudGFyZ2V0LmNoZWNrZWQgPSBpbWcuc2VsZWN0ZWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2xlYXJWYWx1ZSgpIHtcbiAgICB0aGlzLnNhdmUoXCJub24tdGFnZ2luZ1wiKTtcbiAgICAvLyB0aGlzLnN1Ym1pdFZhbHVlKCdub24tdGFnZ2luZycpXG4gIH1cbiAgY2FuY2VsKCkge1xuICAgIC8vIDEuIENsZWFyIHNlbGVjdGVkIGR1cGxpY2F0ZSBpbWFnZXMgbGlzdFxuICAgIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0ID0gW107XG5cbiAgICAvLyAyLiBSZXNldCBhbGwgY2hlY2tib3hlcyBhbmQgcmFkaW8gYnV0dG9ucyBpbiBvdmVyYWxsIGltYWdlIGxpc3RcbiAgICB0aGlzLm92ZXJhbGxBcnJheURhdGEgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEubWFwKChpbWc6IGFueSkgPT4gKHtcbiAgICAgIC4uLmltZyxcbiAgICAgIGlzQ2hlY2tlZDogZmFsc2UsXG4gICAgICBzZWxlY3RlZDogZmFsc2UsIC8vIGFzc3VtaW5nICdzZWxlY3RlZCcgaXMgY2hlY2tib3ggYmluZFxuICAgICAgcGFyZW50OiBudWxsLCAvLyByZXNldCBwYXJlbnQgaWYgdXNlZFxuICAgICAgLy8gQWRkIG90aGVyIGZsYWdzIGhlcmUgaWYgbmVlZGVkXG4gICAgfSkpO1xuXG4gICAgLy8gMy4gQ2xvc2UgaW1hZ2UgZmxvdy9mdWxsLXZpZXcgaWYgb3BlblxuICAgIHRoaXMuaW1hZ2VGbG93ID0gZmFsc2U7XG5cbiAgICAvLyA0LiBSZXNldCBzcGxpdC1zY3JlZW4gYW5kIHNlbGVjdGVkIGltYWdlXG4gICAgdGhpcy5zcGxpdFNjcmVlbkVuYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnNlbGVjdEltYWdlQXJyYXkgPSBudWxsO1xuICAgIHRoaXMuY3VycmVudEltYWdlSW5kZXggPSAwO1xuICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSA9IFtdO1xuICAgIHRoaXMucmVtYWluaW5nSW1hZ2VzR3JvdXBzID0gW107XG5cbiAgICAvLyA1LiAoT3B0aW9uYWwpIFJlc2V0IHJhZGlvIGJ1dHRvbnMg4oCUIGlmIHlvdSBoYXZlIGFueSBzcGVjaWZpYyBmbGFnXG4gICAgdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNlbGVjdGVkVHlwZSA9IFwiXCI7XG4gICAgdGhpcy5yZXZvcHNUeXBlVmFsdWUgPSBmYWxzZTtcbiAgfVxuICBwb3B1cFR5cGU6IGFueTtcbiAgQFZpZXdDaGlsZChcInpvb21Qb3B1cFwiKSB6b29tUG9wdXA6IEVsZW1lbnRSZWY7XG4gIHNhdmUoY2F0ZWdvcnk6IGFueSkge1xuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLnpvb21Qb3B1cCwge1xuICAgICAgY2VudGVyZWQ6IHRydWUsXG4gICAgICBzaXplOiBcIm1kXCIsXG4gICAgICBiYWNrZHJvcDogXCJzdGF0aWNcIiwgLy8gUHJldmVudCBjbG9zaW5nIG9uIG91dHNpZGUgY2xpY2tcbiAgICAgIGtleWJvYXJkOiBmYWxzZSwgLy8gUHJldmVudCBjbG9zaW5nIG9uIEVTQyBrZXlcbiAgICB9KTtcbiAgICB0aGlzLnBvcHVwVHlwZSA9IGNhdGVnb3J5O1xuICB9XG5cbiAgY2FuY2VsU3VibWl0KCkge1xuICAgIHRoaXMubW9kYWxTZXJ2aWNlLmRpc21pc3NBbGwoKTtcblxuICAgIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0ID0gW107XG4gIH1cbiAgc3VibWl0VmFsdWUoY2F0ZWdvcnk6IGFueSkge1xuICAgIGxldCBkdXBsaWNhdGVJbWFnZXMgPSBbXTtcblxuICAgIGlmIChjYXRlZ29yeSA9PT0gXCJkdXBsaWNhdGVcIikge1xuICAgICAgZHVwbGljYXRlSW1hZ2VzID0gdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5XG4gICAgICAgIC5maWx0ZXIoKGltZzogYW55KSA9PiBpbWcuc2VsZWN0ZWQgPT09IHRydWUpXG4gICAgICAgIC5tYXAoKGltZzogYW55KSA9PiAoe1xuICAgICAgICAgIHRlbXBJZDogaW1nLnRlbXBsZCB8fCBpbWcudGVtcElkIHx8IFwiXCIsXG4gICAgICAgICAgdGltZVJhbmdlOiBpbWcudGltZVJhbmdlIHx8IFwiXCIsXG4gICAgICAgICAgZW50cnlUaW1lOiBpbWcuZW50cnlUaW1lIHx8IGltZy5lbnRyeVRtZSB8fCBcIlwiLFxuICAgICAgICAgIGV4aXRUaW1lOiBpbWcuZXhpdFRpbWUgfHwgXCJcIixcbiAgICAgICAgICBmaWxlUGF0aDogaW1nLmZpbGVQYXRoLFxuICAgICAgICAgIHJldm9wc1R5cGU6IFwiZHVwbGljYXRlXCIsXG4gICAgICAgICAgaXNDaGVja2VkOiB0cnVlLFxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgY29uc3QgaW1nID0gdGhpcy5zZWxlY3RJbWFnZUFycmF5O1xuXG4gICAgY29uc3Qgb2JqID0ge1xuICAgICAgc3RvcmVJZDpcbiAgICAgICAgdGhpcy5zdG9yZUlkYXJyYXkgJiYgdGhpcy5zdG9yZUlkYXJyYXkubGVuZ3RoID4gMFxuICAgICAgICAgID8gdGhpcy5zdG9yZUlkYXJyYXlbMF1cbiAgICAgICAgICA6IG51bGwsXG4gICAgICBkYXRlU3RyaW5nOiB0aGlzLmZvbGRlckRhdGUgfHwgXCJcIixcbiAgICAgIHRlbXBJZDogaW1nPy50ZW1wbGQgfHwgMCxcbiAgICAgIHJldm9wc1R5cGU6IGNhdGVnb3J5LFxuICAgICAgdGltZVJhbmdlOiBpbWc/LnRpbWVSYW5nZSB8fCBcIlwiLFxuICAgICAgaXNDaGVja2VkOiB0cnVlLFxuICAgICAgZHVwbGljYXRlSW1hZ2U6IGR1cGxpY2F0ZUltYWdlcyxcbiAgICAgIHByb2Nlc3NUeXBlOiBpbWc/LnByb2Nlc3NUeXBlIHx8IFwiZm9vdGZhbGxcIixcbiAgICAgIGVudHJ5VGltZTogaW1nPy5lbnRyeVRpbWUgfHwgaW1nPy5lbnRyeVRtZSB8fCBcIlwiLFxuICAgICAgZXhpdFRpbWU6IGltZz8uZXhpdFRpbWUgfHwgXCJcIixcbiAgICAgIGZpbGVQYXRoOiBpbWc/LmZpbGVQYXRoIHx8IFwiXCIsXG4gICAgICBjb21tZW50czogdGhpcy51c2VyQ29tbWVudCB8fCBcIlwiLFxuICAgICAgbW9kZTogJ3dlYidcbiAgICB9O1xuXG4gICAgdGhpcy5ydnBzU2VydmljZVxuICAgICAgLmdldFJ2cHNUYWcob2JqKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xuICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRTdWNjZXNzVG9hc3QoXG4gICAgICAgICAgICAgIHJlcz8ubWVzc2FnZSB8fCBcIlRpY2tldCB1cGRhdGVkIHN1Y2Nlc3NmdWxseVwiXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5pbWFnZUZsb3cgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZ2V0UmV2b3BzKCk7XG4gICAgICAgICAgICB0aGlzLmNhbmNlbFN1Ym1pdCgpO1xuICAgICAgICAgICAgdGhpcy5sb2FkQ2FyZERhdGEoKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSYWRpb1R5cGUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVHlwZSA9IFwiXCI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChcIkZhaWxlZCB0byB1cGRhdGVcIik7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgbXNnID1cbiAgICAgICAgICAgIGVyci5lcnJvcj8uZXJyb3IgfHwgZXJyLmVycm9yIHx8IGVycj8ubWVzc2FnZSB8fCBcIlVua25vd24gZXJyb3JcIjtcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QobXNnKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgbm9EYXRhTWVzc2FnZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgZHVwbGljYXRlOiBcIk5vIGR1cGxpY2F0ZXMgZm91bmRcIixcbiAgICBlbXBsb3llZTogXCJObyBlbXBsb3llZS9zdGFmZiBmb3VuZFwiLFxuICAgIFwiaG91c2Uta2VlcGluZ1wiOiBcIk5vIGhvdXNlIGtlZXBpbmcgZm91bmRcIixcbiAgICBcIm5vbi10YWdnaW5nXCI6IFwiTm8gbm9uLXRhZ2dpbmcgZm91bmRcIixcbiAgICBqdW5rOiBcIk5vIGp1bmsgZm91bmRcIlxuICB9O1xuXG4gIHRlbXBSYWlzZWRQYXlsb2FkOiBhbnkgPSBudWxsOyAvLyBjbGFzcy1sZXZlbCB2YXJpYWJsZSBmb3IgcHJldmlld1xuXG4gIHByZXBhcmVSYWlzZWRQYXlsb2FkKHNob3dPbmx5ID0gZmFsc2UpOiBhbnkge31cblxuICBAVmlld0NoaWxkKFwicmFpc2VkUG9wdXBcIikgcmFpc2VkUG9wdXA6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoXCJyZXNldFJlcXVlc3RQb3B1cFwiKSByZXNldFJlcXVlc3RQb3B1cDogRWxlbWVudFJlZjtcbiAgUmFpc2VkKCkge1xuICAgIGNvbnN0IHBheWxvYWQ6IGFueSA9IHtcbiAgICAgIGRhdGVTdHJpbmc6IHRoaXMuZm9sZGVyRGF0ZSxcbiAgICAgIHN0b3JlSWQ6IHRoaXMuc3RvcmVJZGFycmF5Py5sZW5ndGggPiAwID8gdGhpcy5zdG9yZUlkYXJyYXlbMF0gOiBudWxsLFxuICAgICAgdGlja2V0TmFtZTogXCJmb290ZmFsbC1kaXJlY3RvcnlcIixcbiAgICAgIGZvb3RmYWxsQ291bnQ6IDAsXG4gICAgICBkdXBsaWNhdGVDb3VudDogMCxcbiAgICAgIGVtcGxveWVlQ291bnQ6IDAsXG4gICAgICBob3VzZUtlZXBpbmdDb3VudDogMCxcbiAgICAgIGp1bmtDb3VudDowLFxuICAgICAgY29tbWVudHM6IHRoaXMuY29tbWVudFRleHQgfHwgXCJcIixcbiAgICAgIGR1cGxpY2F0ZUltYWdlczogW10sXG4gICAgICBob3VzZUtlZXBpbmc6IFtdLFxuICAgICAgZW1wbG95ZWU6IFtdLFxuICAgICAganVuazogW10sXG4gICAgfTtcblxuICAgIGxldCB0b3RhbENoZWNrZWRDb3VudCA9IDA7XG5cbiAgICB0aGlzLm92ZXJhbGxBcnJheURhdGEuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICBjb25zdCB0eXBlID0gaXRlbS5yZXZvcHNUeXBlPy50b0xvd2VyQ2FzZSgpPy50cmltKCk7XG4gICAgICBjb25zdCBpc0NoZWNrZWQgPSBpdGVtLmlzQ2hlY2tlZCA9PT0gdHJ1ZTtcblxuICAgICAgLy8g4pyFIENvdW50IG9ubHkgaWYgaXRlbSBpcyBjaGVja2VkIEFORCByZXZvcHNUeXBlIGlzICdub24tdGFnZ2luZydcbiAgICAgIC8vIGNvbnN0IGlzTm90VGFnZ2VkID0gdHlwZSA9PT0gJ25vbi10YWdnaW5nJztcblxuICAgICAgLy8gaWYgKGlzTm90VGFnZ2VkKSB7XG4gICAgICAvLyAgIHRvdGFsQ2hlY2tlZENvdW50Kys7XG4gICAgICAvLyB9XG5cbiAgICAgIC8vIERVUExJQ0FURSBUWVBFXG4gICAgICBpZiAodHlwZSA9PT0gXCJkdXBsaWNhdGVcIiAmJiBBcnJheS5pc0FycmF5KGl0ZW0uZHVwbGljYXRlSW1hZ2VQYXRoKSkge1xuICAgICAgICBjb25zdCBuZXN0ZWREYXRhID0gaXRlbS5kdXBsaWNhdGVJbWFnZVBhdGhcbiAgICAgICAgICAuZmlsdGVyKChkdXA6IGFueSkgPT4gZHVwLmlzQ2hlY2tlZClcbiAgICAgICAgICAubWFwKChkdXA6IGFueSkgPT4gKHtcbiAgICAgICAgICAgIHRlbXBJZDogZHVwLnRlbXBJZCB8fCBkdXAudGVtcGxkIHx8IFwiXCIsXG4gICAgICAgICAgICBmaWxlUGF0aDogZHVwLmZpbGVQYXRoLFxuICAgICAgICAgICAgZW50cnlUaW1lOiBkdXA/LmVudHJ5VGltZSB8fCBkdXA/LmVudHJ5VG1lIHx8IFwiXCIsXG4gICAgICAgICAgICBleGl0VGltZTogZHVwLmV4aXRUaW1lLFxuICAgICAgICAgICAgdGltZVJhbmdlOiBkdXAudGltZVJhbmdlLFxuICAgICAgICAgICAgaXNDaGVja2VkOiBkdXAuaXNDaGVja2VkLFxuICAgICAgICAgIH0pKTtcblxuICAgICAgICBpZiAobmVzdGVkRGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcGF5bG9hZC5kdXBsaWNhdGVJbWFnZXMucHVzaCh7XG4gICAgICAgICAgICB0ZW1wSWQ6IGl0ZW0udGVtcGxkLFxuICAgICAgICAgICAgZmlsZVBhdGg6IGl0ZW0uZmlsZVBhdGgsXG4gICAgICAgICAgICBlbnRyeVRpbWU6IGl0ZW0/LmVudHJ5VGltZSB8fCBpdGVtPy5lbnRyeVRtZSB8fCBcIlwiLFxuICAgICAgICAgICAgZXhpdFRpbWU6IGl0ZW0uZXhpdFRpbWUsXG4gICAgICAgICAgICB0aW1lUmFuZ2U6IGl0ZW0udGltZVJhbmdlLFxuICAgICAgICAgICAgaXNDaGVja2VkOiBpdGVtLmlzQ2hlY2tlZCxcbiAgICAgICAgICAgIGRhdGE6IG5lc3RlZERhdGEsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBwYXlsb2FkLmR1cGxpY2F0ZUNvdW50ICs9IG5lc3RlZERhdGEubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEVNUExPWUVFXG4gICAgICBlbHNlIGlmICh0eXBlID09PSBcImVtcGxveWVlXCIgJiYgaXNDaGVja2VkKSB7XG4gICAgICAgIHBheWxvYWQuZW1wbG95ZWUucHVzaCh7XG4gICAgICAgICAgdGVtcElkOiBpdGVtLnRlbXBsZCxcbiAgICAgICAgICBmaWxlUGF0aDogaXRlbS5maWxlUGF0aCxcbiAgICAgICAgICBlbnRyeVRpbWU6IGl0ZW0/LmVudHJ5VGltZSB8fCBpdGVtPy5lbnRyeVRtZSB8fCBcIlwiLFxuICAgICAgICAgIGV4aXRUaW1lOiBpdGVtLmV4aXRUaW1lLFxuICAgICAgICAgIHRpbWVSYW5nZTogaXRlbS50aW1lUmFuZ2UsXG4gICAgICAgICAgaXNDaGVja2VkOiBpdGVtLmlzQ2hlY2tlZCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcGF5bG9hZC5lbXBsb3llZUNvdW50Kys7XG4gICAgICB9XG5cbiAgICAgIC8vIEhPVVNFS0VFUElOR1xuICAgICAgZWxzZSBpZiAodHlwZSA9PT0gXCJob3VzZS1rZWVwaW5nXCIgJiYgaXNDaGVja2VkKSB7XG4gICAgICAgIHBheWxvYWQuaG91c2VLZWVwaW5nLnB1c2goe1xuICAgICAgICAgIHRlbXBJZDogaXRlbS50ZW1wbGQsXG4gICAgICAgICAgZmlsZVBhdGg6IGl0ZW0uZmlsZVBhdGgsXG4gICAgICAgICAgZW50cnlUaW1lOiBpdGVtPy5lbnRyeVRpbWUgfHwgaXRlbT8uZW50cnlUbWUgfHwgXCJcIixcbiAgICAgICAgICBleGl0VGltZTogaXRlbS5leGl0VGltZSxcbiAgICAgICAgICB0aW1lUmFuZ2U6IGl0ZW0udGltZVJhbmdlLFxuICAgICAgICAgIGlzQ2hlY2tlZDogaXRlbS5pc0NoZWNrZWQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHBheWxvYWQuaG91c2VLZWVwaW5nQ291bnQrKztcbiAgICAgIH0gXG4gICAgICBlbHNlIGlmICh0eXBlID09PSBcImp1bmtcIiAmJiBpc0NoZWNrZWQpIHtcbiAgICAgICAgcGF5bG9hZC5qdW5rLnB1c2goe1xuICAgICAgICAgIHRlbXBJZDogaXRlbS50ZW1wbGQsXG4gICAgICAgICAgZmlsZVBhdGg6IGl0ZW0uZmlsZVBhdGgsXG4gICAgICAgICAgZW50cnlUaW1lIDogaXRlbT8uZW50cnlUaW1lIHx8IGl0ZW0/LmVudHJ5VG1lIHx8IFwiXCIsXG4gICAgICAgICAgZXhpdFRpbWUgOiBpdGVtLmV4aXRUaW1lLFxuICAgICAgICAgIHRpbWVSYW5nZSA6IGl0ZW0udGltZVJhbmdlLFxuICAgICAgICAgIGlzQ2hlY2tlZCA6IGl0ZW0uaXNDaGVja2VkLFxuICAgICAgICB9KTtcblxuICAgICAgICBwYXlsb2FkLmp1bmtDb3VudCsrO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcGF5bG9hZC5mb290ZmFsbENvdW50ID0gdGhpcy5jb3VudERhdGE/LmZvb3RmYWxsQ291bnQ7XG5cbiAgICAvLyDwn5GHIFJldHVybiBvciBhc3NpZ25cblxuICAgIHRoaXMudGVtcFJhaXNlZFBheWxvYWQgPSBwYXlsb2FkO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLnJhaXNlZFBvcHVwLCB7XG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcbiAgICAgIHNpemU6IFwibWRcIixcbiAgICAgIGJhY2tkcm9wOiBcInN0YXRpY1wiLFxuICAgICAga2V5Ym9hcmQ6IGZhbHNlLFxuICAgIH0pO1xuICB9XG5cbiAgY2FuY2VsUmFzaWVkKCkge1xuICAgIHRoaXMubW9kYWxTZXJ2aWNlLmRpc21pc3NBbGwoKTtcbiAgICB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdCA9IFtdO1xuICB9XG5cbiAgY29tbWVudFRleHQ6IGFueTtcbiAgZ2V0UmFpc2VkRGF0YTogYW55O1xuICBzdWJtaXRSYWlzZWQoKSB7XG4gICAgLy8gY29uc3QgcGF5bG9hZCA9IHRoaXMudGVtcFJhaXNlZFBheWxvYWQ7IC8vIGZyZXNoIGRhdGEgZm9yIEFQSVxuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICB0aWNrZXROYW1lOiBcImZvb3RmYWxsLWRpcmVjdG9yeVwiLFxuICAgICAgc3RvcmVJZDogdGhpcy50ZW1wUmFpc2VkUGF5bG9hZC5zdG9yZUlkLFxuICAgICAgZGF0ZVN0cmluZzogdGhpcy50ZW1wUmFpc2VkUGF5bG9hZC5kYXRlU3RyaW5nLFxuICAgICAgdHlwZTogXCJjcmVhdGVcIixcbiAgICAgIG1vZGU6IFwid2ViXCJcbiAgICB9XG4gICAgdGhpcy5nZXRSYWlzZWREYXRhID0gcGF5bG9hZDtcbiAgICBjb25zb2xlLmxvZygnc3VibWl0IHJhaXNlZCA6JywgcGF5bG9hZClcbiAgICB0aGlzLnJ2cHNTZXJ2aWNlXG4gICAgICAuZ2V0Q3JlYXRlUmFpc2VkVGFnKHBheWxvYWQpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0LmdldFN1Y2Nlc3NUb2FzdChcbiAgICAgICAgICAgICAgcmVzPy5tZXNzYWdlIHx8IFwiVGlja2V0IHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5XCJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmltYWdlRmxvdyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5nZXRSZXZvcHMoKTtcbiAgICAgICAgICAgIHRoaXMubG9hZENhcmREYXRhKCk7XG4gICAgICAgICAgICB0aGlzLmNhbmNlbFJhc2llZCgpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gXCJcIjtcbiAgICAgICAgICAgIHRoaXMuY291bnREYXRhID0gW107XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChcIkZhaWxlZCB0byB1cGRhdGVcIik7XG4gICAgICAgICAgICB0aGlzLmNhbmNlbFJhc2llZCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG1zZyA9XG4gICAgICAgICAgICBlcnIuZXJyb3I/LmVycm9yIHx8XG4gICAgICAgICAgICBlcnIuZXJyb3IgfHxcbiAgICAgICAgICAgIGVycj8uZXJyb3I/Lm1lc3NhZ2UgfHxcbiAgICAgICAgICAgIGVyci5tZXNzYWdlIHx8XG4gICAgICAgICAgICBcIlVua25vd24gZXJyb3JcIjtcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QobXNnKTtcbiAgICAgICAgICB0aGlzLmNhbmNlbFJhc2llZCgpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gIH1cblxuICAvLyBvbkltYWdlQ2hlY2tib3hDaGFuZ2UoaW1nOiBhbnksIHR5cGU6IHN0cmluZykge1xuICAvLyAgIGlmICh0eXBlID09PSAnZHVwbGljYXRlJykge1xuICAvLyAgICAgLy8gQ291bnQgb25seSB2YWxpZCBkdXBsaWNhdGUgaW1hZ2VzIHdoZXJlIGBkdXBsaWNhdGVJbWFnZVBhdGgubGVuZ3RoID09PSAwYFxuICAvLyAgICAgY29uc3QgdG90YWxWYWxpZER1cGxpY2F0ZUltYWdlcyA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maWx0ZXIoXG4gIC8vICAgICAgIChpdGVtOiBhbnkpID0+XG4gIC8vICAgICAgICAgaXRlbS5yZXZvcHNUeXBlID09PSAnZHVwbGljYXRlJyAmJiAoIWl0ZW0uZHVwbGljYXRlSW1hZ2VQYXRoIHx8IGl0ZW0uZHVwbGljYXRlSW1hZ2VQYXRoLmxlbmd0aCA9PT0gMClcbiAgLy8gICAgICkubGVuZ3RoO1xuXG4gIC8vICAgICBjb25zdCBtYXhBbGxvd2VkID0gTWF0aC5mbG9vcih0b3RhbFZhbGlkRHVwbGljYXRlSW1hZ2VzICogMC4xKTsgLy8gMTAlIGxpbWl0XG5cbiAgLy8gICAgIGNvbnN0IGFscmVhZHlFeGlzdHMgPSB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdC5zb21lKFxuICAvLyAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnRlbXBsZCA9PT0gaW1nLnRlbXBsZFxuICAvLyAgICAgKTtcblxuICAvLyAgICAgaWYgKGltZy5zZWxlY3RlZCkge1xuICAvLyAgICAgICAvLyDinYwgUmVhY2hlZCBtYXggYWxsb3dlZCDigJQgYmxvY2sgaXRcbiAgLy8gICAgICAgaWYgKHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0Lmxlbmd0aCA+PSBtYXhBbGxvd2VkKSB7XG4gIC8vICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KFxuICAvLyAgICAgICAgICAgYE9ubHkgJHttYXhBbGxvd2VkfSBpbWFnZXMgY2FuIGJlIHNlbGVjdGVkIGFzIGR1cGxpY2F0ZSAoMTAlIG9mIHVudGFnZ2VkIGR1cGxpY2F0ZXMpLmBcbiAgLy8gICAgICAgICApO1xuXG4gIC8vICAgICAgICAgaW1nLnNlbGVjdGVkID0gZmFsc2U7XG4gIC8vICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLm92ZXJhbGxBcnJheURhdGEuZmluZEluZGV4KChpdGVtOiBhbnkpID0+IGl0ZW0udGVtcGxkID09PSBpbWcudGVtcGxkKTtcbiAgLy8gICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gIC8vICAgICAgICAgICB0aGlzLm92ZXJhbGxBcnJheURhdGFbaW5kZXhdLnNlbGVjdGVkID0gZmFsc2U7XG4gIC8vICAgICAgICAgfVxuXG4gIC8vICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gIC8vICAgICAgICAgICBpbWcuc2VsZWN0ZWQgPSBmYWxzZTtcbiAgLy8gICAgICAgICB9KTtcblxuICAvLyAgICAgICAgIHJldHVybjtcbiAgLy8gICAgICAgfVxuXG4gIC8vICAgICAgIC8vIOKchSBBZGQgaWYgbm90IGFscmVhZHkgaW4gbGlzdFxuICAvLyAgICAgICBpZiAoIWFscmVhZHlFeGlzdHMpIHtcbiAgLy8gICAgICAgICB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdC5wdXNoKHtcbiAgLy8gICAgICAgICAgIC4uLmltZyxcbiAgLy8gICAgICAgICAgIGlzQ2hlY2tlZDogdHJ1ZSxcbiAgLy8gICAgICAgICAgIHBhcmVudDogaW1nLnBhcmVudCB8fCBudWxsXG4gIC8vICAgICAgICAgfSk7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgIH0gZWxzZSB7XG4gIC8vICAgICAgIC8vIOKdjCBSZW1vdmFsIGNhc2VcbiAgLy8gICAgICAgdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QgPSB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdC5maWx0ZXIoXG4gIC8vICAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS50ZW1wbGQgIT09IGltZy50ZW1wbGRcbiAgLy8gICAgICAgKTtcbiAgLy8gICAgIH1cbiAgLy8gICB9XG5cbiAgLy8gICAvLyDimqDvuI8gQ2FsbCB0aGlzIHRvIHVwZGF0ZSBidXR0b24gZW5hYmxlIHN0YXRlXG4gIC8vICAgdGhpcy5jaGVja0R1cGxpY2F0ZVNhdmVFbmFibGUoKTtcbiAgLy8gfVxuXG4gIC8vIGR1cGxpY2F0ZVNhdmVFbmFibGVkID0gZmFsc2U7XG5cbiAgLy8gY2hlY2tEdXBsaWNhdGVTYXZlRW5hYmxlKCkge1xuICAvLyAgIHRoaXMuZHVwbGljYXRlU2F2ZUVuYWJsZWQgPVxuICAvLyAgICAgdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QubGVuZ3RoID4gMDtcbiAgLy8gfVxuXG4gIGlzTW9kYWxPcGVuID0gZmFsc2U7XG4gIEBWaWV3Q2hpbGQoXCJpbWFnZVBvcHVwXCIpIGltYWdlUG9wdXA6IEVsZW1lbnRSZWY7XG4gIHNlbGVjdGVkSW1hZ2VBcnJheSh1cmw6IGFueSwgZGF0YTogYW55KSB7XG4gICAgdGhpcy5pc01vZGFsT3BlbiA9IHRydWU7XG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMuaW1hZ2VQb3B1cCwge1xuICAgICAgY2VudGVyZWQ6IHRydWUsXG4gICAgICBzaXplOiBcImxnXCIsXG4gICAgICBiYWNrZHJvcDogXCJzdGF0aWNcIixcbiAgICAgIGtleWJvYXJkOiBmYWxzZSxcbiAgICB9KTtcbiAgfVxuXG4gIGNsb3NlSW1hZ2UoKSB7XG4gICAgdGhpcy5pc01vZGFsT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMudGVtcE1vZGFsSW1hZ2UgPSBudWxsOyAvLyBDbGVhciB0ZW1wb3JhcnkgaW1hZ2Ugd2hlbiBjbG9zaW5nIG1vZGFsXG4gICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xuICB9XG5cbiAgY2FuRW5hYmxlQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5jb3VudERhdGEgfHwgIXRoaXMuZm9sZGVyRGF0ZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCB7IGR1cGxpY2F0ZSwgaG91c2VrZWVwaW5nLCBlbXBsb3llZSwganVuayB9ID0gdGhpcy5jb3VudERhdGE7XG5cbiAgICAvLyBDaGVjayBjb3VudCBjb25kaXRpb25cbiAgICBjb25zdCBoYXNDb3VudCA9IGR1cGxpY2F0ZSA+IDAgfHwgaG91c2VrZWVwaW5nID4gMCB8fCBlbXBsb3llZSA+IDAgfHwganVuayA+IDA7XG5cbiAgICAvLyBDb252ZXJ0IGZvbGRlckRhdGUgdG8gRGF0ZVxuICAgIGNvbnN0IGZvbGRlciA9IG5ldyBEYXRlKHRoaXMuZm9sZGVyRGF0ZSk7XG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuXG4gICAgLy8gTm9ybWFsaXplIHRpbWVzIChyZW1vdmUgaG91cnMgZm9yIHByb3BlciBkYXkgY29tcGFyaXNvbilcbiAgICBmb2xkZXIuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgdG9kYXkuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG5cbiAgICAvLyBDYWxjdWxhdGUgZGlmZmVyZW5jZSBpbiBkYXlzXG4gICAgY29uc3QgZGlmZkluVGltZSA9IHRvZGF5LmdldFRpbWUoKSAtIGZvbGRlci5nZXRUaW1lKCk7XG4gICAgY29uc3QgZGlmZkluRGF5cyA9IGRpZmZJblRpbWUgLyAoMTAwMCAqIDM2MDAgKiAyNCk7XG5cbiAgICAvLyBXaXRoaW4gbGFzdCA3IGRheXMg4oaSIGRpZmYgYmV0d2VlbiAwIGFuZCA3XG4gICAgY29uc3QgaXNXaXRoaW5MYXN0NyA9IGRpZmZJbkRheXMgPj0gMCAmJiBkaWZmSW5EYXlzIDw9IDc7XG5cbiAgICByZXR1cm4gaGFzQ291bnQgJiYgaXNXaXRoaW5MYXN0NztcbiAgfVxuXG4gIGN1cnJlbnRJbWFnZUluZGV4OiBudW1iZXIgPSAwO1xuICBnZXQgY2FuTmF2aWdhdGVMZWZ0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRJbWFnZUluZGV4ID4gMDtcbiAgfVxuXG4gIGdldCBjYW5OYXZpZ2F0ZVJpZ2h0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRJbWFnZUluZGV4IDwgdGhpcy5pbWFnZXNBcnJheURhdGEubGVuZ3RoIC0gMTtcbiAgfVxuXG4gIG5hdmlnYXRlSW1hZ2UoZGlyZWN0aW9uOiBcImxlZnRcIiB8IFwicmlnaHRcIikge1xuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMuaW1hZ2VzQXJyYXlEYXRhLmxlbmd0aDtcblxuICAgIGlmIChkaXJlY3Rpb24gPT09IFwibGVmdFwiICYmIHRoaXMuY2FuTmF2aWdhdGVMZWZ0KSB7XG4gICAgICB0aGlzLmN1cnJlbnRJbWFnZUluZGV4LS07XG4gICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09IFwicmlnaHRcIiAmJiB0aGlzLmNhbk5hdmlnYXRlUmlnaHQpIHtcbiAgICAgIHRoaXMuY3VycmVudEltYWdlSW5kZXgrKztcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgc2VsZWN0ZWQgaW1hZ2VcbiAgICB0aGlzLnNlbGVjdEltYWdlQXJyYXkgPSB0aGlzLmltYWdlc0FycmF5RGF0YVt0aGlzLmN1cnJlbnRJbWFnZUluZGV4XTtcblxuICAgIC8vIFVwZGF0ZSByZW1haW5pbmcgaW1hZ2VzXG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gdGhpcy5pbWFnZXNBcnJheURhdGEuZmlsdGVyKFxuICAgICAgKF86IGFueSwgaTogYW55KSA9PiBpICE9PSB0aGlzLmN1cnJlbnRJbWFnZUluZGV4XG4gICAgKTtcbiAgfVxuXG4gIC8vIEdldCBjdXJyZW50IGZvb3RmYWxsIGNvdW50IGZvciBzZWxlY3RlZCBkYXRlXG4gIGdldEN1cnJlbnRGb290ZmFsbCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5mb2xkZXJEYXRlKSByZXR1cm4gMDtcbiAgICBjb25zdCBub3JtYWxpemVkRGF0ZSA9IG5ldyBEYXRlKHRoaXMuZm9sZGVyRGF0ZSkudG9JU09TdHJpbmcoKS5zcGxpdChcIlRcIilbMF07XG4gICAgcmV0dXJuIHRoaXMuY2FyZERhdGFNYXBbbm9ybWFsaXplZERhdGVdPy5mb290ZmFsbENvdW50IHx8IDA7XG4gIH1cblxuICAvLyBHZXQgcGVyY2VudGFnZSBjaGFuZ2UgZnJvbSBmb290ZmFsbENvdW50VHJlbmRcbiAgZ2V0Rm9vdGZhbGxQZXJjZW50YWdlQ2hhbmdlKCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLmZvbGRlckRhdGUpIHJldHVybiAwO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWREYXRlID0gbmV3IERhdGUodGhpcy5mb2xkZXJEYXRlKS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXTtcbiAgICByZXR1cm4gdGhpcy5jYXJkRGF0YU1hcFtub3JtYWxpemVkRGF0ZV0/LmZvb3RmYWxsQ291bnRUcmVuZCB8fCAwO1xuICB9XG5cbiAgLy8gRm9ybWF0IGRvd250aW1lIGZyb20gZG93bnRpbWUga2V5IChpbiBtaW51dGVzKVxuICBnZXRGb3JtYXR0ZWREb3dudGltZSgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5mb2xkZXJEYXRlKSByZXR1cm4gJy0nO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWREYXRlID0gbmV3IERhdGUodGhpcy5mb2xkZXJEYXRlKS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXTtcbiAgICBjb25zdCBkb3dudGltZU1pbnV0ZXMgPSB0aGlzLmNhcmREYXRhTWFwW25vcm1hbGl6ZWREYXRlXT8uZG93bnRpbWUgfHwgMDtcbiAgICBcbiAgICBpZiAoIWRvd250aW1lTWludXRlcyB8fCBkb3dudGltZU1pbnV0ZXMgPT09IDApIHJldHVybiAnLSc7XG4gICAgXG4gICAgY29uc3QgeyBob3VycywgbWlucyB9ID0gdGhpcy5jb252ZXJ0TWludXRlcyhkb3dudGltZU1pbnV0ZXMpO1xuICAgIGlmIChob3VycyA+IDAgJiYgbWlucyA+IDApIHtcbiAgICAgIHJldHVybiBgJHtob3Vyc31ociAke21pbnN9IG1pbnNgO1xuICAgIH0gZWxzZSBpZiAoaG91cnMgPiAwKSB7XG4gICAgICByZXR1cm4gYCR7aG91cnN9aHJgO1xuICAgIH0gZWxzZSBpZiAobWlucyA+IDApIHtcbiAgICAgIHJldHVybiBgJHttaW5zfSBtaW5zYDtcbiAgICB9XG4gICAgcmV0dXJuICctJztcbiAgfVxuXG4gIC8vIEdldCB0aWNrZXQgc3RhdHVzXG4gIGdldFRpY2tldFN0YXR1cygpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5mb2xkZXJEYXRlKSByZXR1cm4gJy0nO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWREYXRlID0gbmV3IERhdGUodGhpcy5mb2xkZXJEYXRlKS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXTtcbiAgICBjb25zdCBzdGF0dXMgPSB0aGlzLmNhcmREYXRhTWFwW25vcm1hbGl6ZWREYXRlXT8udGlja2V0U3RhdHVzO1xuICAgIHJldHVybiBzdGF0dXMgfHwgJy0nO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlcmUncyBkb3dudGltZVxuICBoYXNEb3dudGltZSgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuZm9sZGVyRGF0ZSkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWREYXRlID0gbmV3IERhdGUodGhpcy5mb2xkZXJEYXRlKS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXTtcbiAgICBjb25zdCBkb3dudGltZSA9IHRoaXMuY2FyZERhdGFNYXBbbm9ybWFsaXplZERhdGVdPy5kb3dudGltZSB8fCAwO1xuICAgIHJldHVybiBkb3dudGltZSA+IDA7XG4gIH1cblxuICAvLyBHZXQgdGFnZ2luZyBkYXRhIGZyb20gdGlja2V0UmV2aWV3U3RhdHVzIHdoZXJlIGFjdGlvblR5cGUgPSBcInRhZ2dpbmdcIlxuICBnZXRUYWdnaW5nRGF0YSh0eXBlOiBzdHJpbmcpOiBhbnkge1xuICAgIC8vIGNvbnNvbGUubG9nKCd0aWNrZXRSZXZpZXdTdGF0dXMgPj4nLCB0aGlzLnRpY2tldFJldmlld1N0YXR1cylcbiAgICBpZiAoIXRoaXMudGlja2V0UmV2aWV3U3RhdHVzIHx8ICFBcnJheS5pc0FycmF5KHRoaXMudGlja2V0UmV2aWV3U3RhdHVzKSB8fCAhdHlwZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnRpY2tldFJldmlld1N0YXR1cy5maW5kKChpdGVtOiBhbnkpID0+IGl0ZW0/LmFjdGlvblR5cGUgPT09IHR5cGUpIHx8IG51bGw7XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aWNrZXQgc3RhdHVzIGlzIHJhaXNlZFxuICBpc1RpY2tldFJhaXNlZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBzdGF0dXMgPSB0aGlzLmdldFRpY2tldFN0YXR1cygpO1xuICAgIHJldHVybiBzdGF0dXMgIT09ICctJyAmJiBzdGF0dXM/LnRvTG93ZXJDYXNlKCkgPT09IFwicmFpc2VkXCI7XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aWNrZXQgc3RhdHVzIGlzIGNsb3NlZFxuICBpc1RpY2tldENsb3NlZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBzdGF0dXMgPSB0aGlzLmdldFRpY2tldFN0YXR1cygpO1xuICAgIHJldHVybiBzdGF0dXMgIT09ICctJyAmJiBzdGF0dXM/LnRvTG93ZXJDYXNlKCkgPT09IFwiY2xvc2VkXCI7XG4gIH1cblxuICAvLyBHZXQgYWxsIHRhZ2dpbmcgZGF0YSBpdGVtcyAoZm9yIGluaXRpYWwgYW5kIGZpbmFsIHJldmlzaW9ucylcbiAgZ2V0QWxsVGFnZ2luZ0RhdGEoKTogYW55W10ge1xuICAgIGlmICghdGhpcy50aWNrZXRSZXZpZXdTdGF0dXMgfHwgIUFycmF5LmlzQXJyYXkodGhpcy50aWNrZXRSZXZpZXdTdGF0dXMpKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnRpY2tldFJldmlld1N0YXR1cy5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbT8uYWN0aW9uVHlwZSA9PT0gXCJ0YWdnaW5nXCIpIHx8IFtdO1xuICB9XG5cbiAgLy8gR2V0IGluaXRpYWwgcmV2aXNpb24gZGF0YSAoZmlyc3QgdGFnZ2luZyBpdGVtKVxuICBnZXRJbml0aWFsUmV2aXNpb25EYXRhKCk6IGFueSB7XG4gICAgY29uc3QgYWxsVGFnZ2luZyA9IHRoaXMuZ2V0QWxsVGFnZ2luZ0RhdGEoKTtcbiAgICByZXR1cm4gYWxsVGFnZ2luZy5sZW5ndGggPiAwID8gYWxsVGFnZ2luZ1swXSA6IG51bGw7XG4gIH1cblxuICAvLyBHZXQgZmluYWwgcmV2aXNpb24gZGF0YSAobGFzdCB0YWdnaW5nIGl0ZW0sIG9yIHNlY29uZCBpZiBleGlzdHMpXG4gIGdldEZpbmFsUmV2aXNpb25EYXRhKCk6IGFueSB7XG4gICAgY29uc3QgYWxsVGFnZ2luZyA9IHRoaXMuZ2V0QWxsVGFnZ2luZ0RhdGEoKTtcbiAgICByZXR1cm4gYWxsVGFnZ2luZy5sZW5ndGggPiAxID8gYWxsVGFnZ2luZ1thbGxUYWdnaW5nLmxlbmd0aCAtIDFdIDogKGFsbFRhZ2dpbmcubGVuZ3RoID4gMCA/IGFsbFRhZ2dpbmdbMF0gOiBudWxsKTtcbiAgfVxuXG4gIC8vIEhlbHBlciBtZXRob2QgdG8gZ2V0IGNvdW50IHZhbHVlIGJ5IHR5cGUgZnJvbSBjb3VudCBhcnJheVxuICBnZXRDb3VudEJ5VHlwZShkYXRhOiBhbnksIGNvdW50VHlwZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBpZiAoIWRhdGEgfHwgIWRhdGEuY291bnQpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBcbiAgICAvLyBDaGVjayBpZiBjb3VudCBpcyBhbiBhcnJheSAobmV3IGZvcm1hdClcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhLmNvdW50KSkge1xuICAgICAgY29uc3QgY291bnRJdGVtID0gZGF0YS5jb3VudC5maW5kKChpdGVtOiBhbnkpID0+IGl0ZW0/LnR5cGUgPT09IGNvdW50VHlwZSk7XG4gICAgICByZXR1cm4gY291bnRJdGVtPy52YWx1ZSB8fCAwO1xuICAgIH1cbiAgICBcbiAgICAvLyBGYWxsYmFjayBmb3Igb2xkIGZvcm1hdCAob2JqZWN0KVxuICAgIGNvbnN0IGtleU1hcDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICdkdXBsaWNhdGUnOiAnZHVwbGljYXRlQ291bnQnLFxuICAgICAgJ2VtcGxveWVlJzogJ2VtcGxveWVlQ291bnQnLFxuICAgICAgJ2p1bmsnOiAnanVua0NvdW50JyxcbiAgICAgICdob3VzZUtlZXBpbmcnOiAnaG91c2VLZWVwaW5nQ291bnQnXG4gICAgfTtcbiAgICBcbiAgICBjb25zdCBrZXkgPSBrZXlNYXBbY291bnRUeXBlXTtcbiAgICByZXR1cm4ga2V5ID8gKGRhdGEuY291bnRba2V5XSB8fCAwKSA6IDA7XG4gIH1cblxuICAvLyBDYWxjdWxhdGUgdG90YWwgcGVyY2VudGFnZTogKHN1bSBvZiBhbGwgY291bnQgdmFsdWVzIC8gcmV2aWNlZEZvb3RmYWxsKSAqIDEwMFxuICAvLyB0eXBlOiAncmFpc2VkJyB8ICdmaW5hbHJldmlldydcbiAgZ2V0UmV2aXNpb25DYWxjdWxhdGlvbih0eXBlOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy50aWNrZXRSZXZpZXdTdGF0dXMgfHwgIUFycmF5LmlzQXJyYXkodGhpcy50aWNrZXRSZXZpZXdTdGF0dXMgfHwgIXR5cGUgKSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgLy8gRmlsdGVyIGl0ZW1zIGJhc2VkIG9uIGFjdGlvblR5cGVcbiAgICBjb25zdCB0YWdnaW5nSXRlbXMgPSB0aGlzLnRpY2tldFJldmlld1N0YXR1cy5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbT8uYWN0aW9uVHlwZSA9PT0gdHlwZSk7XG4gICAgaWYgKHRhZ2dpbmdJdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGlmICghdGFnZ2luZ0l0ZW1zWzBdIHx8ICF0YWdnaW5nSXRlbXNbMF0ucmV2aWNlZEZvb3RmYWxsIHx8IHRhZ2dpbmdJdGVtc1swXS5yZXZpY2VkRm9vdGZhbGwgPT09IDApIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBjb3VudCA9IHRhZ2dpbmdJdGVtc1swXS5jb3VudCB8fCBbXTtcbiAgICAvLyBDaGVjayBpZiBjb3VudCBpcyBhbiBhcnJheSAobmV3IGZvcm1hdCkgb3Igb2JqZWN0IChvbGQgZm9ybWF0KVxuICAgIGxldCB0b3RhbENvdW50ID0gMDtcbiAgICBcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb3VudCkpIHtcbiAgICAgIC8vIE5ldyBmb3JtYXQ6IGNvdW50IGlzIGFuIGFycmF5IG9mIG9iamVjdHMgd2l0aCB0eXBlIGFuZCB2YWx1ZVxuICAgICAgY29uc3QgdHlwZXNUb1N1bSA9IFsnZHVwbGljYXRlJywgJ2VtcGxveWVlJywgJ2hvdXNlS2VlcGluZycsICdqdW5rJ107XG4gICAgICB0b3RhbENvdW50ID0gY291bnRcbiAgICAgICAgLmZpbHRlcigoaXRlbTogYW55KSA9PiB0eXBlc1RvU3VtLmluY2x1ZGVzKGl0ZW0/LnR5cGUpKVxuICAgICAgICAucmVkdWNlKChzdW06IG51bWJlciwgaXRlbTogYW55KSA9PiBzdW0gKyAoaXRlbT8udmFsdWUgfHwgMCksIDApO1xuICAgIH0gXG4gICAgLy8gZWxzZSB7XG4gICAgLy8gICAvLyBPbGQgZm9ybWF0OiBjb3VudCBpcyBhbiBvYmplY3Qgd2l0aCBrZXlzXG4gICAgLy8gICB0b3RhbENvdW50ID0gKGNvdW50LmR1cGxpY2F0ZUNvdW50IHx8IDApICsgXG4gICAgLy8gICAgICAgICAgICAgICAgKGNvdW50LmVtcGxveWVlQ291bnQgfHwgMCkgKyBcbiAgICAvLyAgICAgICAgICAgICAgICAoY291bnQuanVua0NvdW50IHx8IDApICsgXG4gICAgLy8gICAgICAgICAgICAgICAgKGNvdW50LmhvdXNlS2VlcGluZ0NvdW50IHx8IDApO1xuICAgIC8vIH1cbiAgICByZXR1cm4gTWF0aC5yb3VuZCgodG90YWxDb3VudCAvIHRhZ2dpbmdJdGVtc1swXS5yZXZpY2VkRm9vdGZhbGwpICogMTAwKTtcbiAgfVxuXG4gIHJlcXVlc3RSZXNldCgpOiB2b2lkIHtcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy5yZXNldFJlcXVlc3RQb3B1cCwge1xuICAgICAgY2VudGVyZWQ6IHRydWUsXG4gICAgICBzaXplOiBcIm1kXCIsXG4gICAgICBiYWNrZHJvcDogXCJzdGF0aWNcIixcbiAgICAgIGtleWJvYXJkOiBmYWxzZSxcbiAgICB9KTtcbiAgfVxuXG4gIGNhbmNlbFJlc2V0UmVxdWVzdCgpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XG4gIH1cblxuICBzdWJtaXRSZXNldFJlcXVlc3QoKTogdm9pZCB7XG4gICAgbGV0IHBheWxvYWQgPSB7XG4gICAgICBzdG9yZUlkOiB0aGlzLnN0b3JlSWRhcnJheSAmJiB0aGlzLnN0b3JlSWRhcnJheS5sZW5ndGggPiAwID8gdGhpcy5zdG9yZUlkYXJyYXlbMF0gOiBudWxsLFxuICAgICAgZGF0ZVN0cmluZzogdGhpcy5mb2xkZXJEYXRlIHx8IFwiXCJcbiAgICB9O1xuICAgIGNvbnNvbGUubG9nKCdzdWJtaXRSZXNldFJlcXVlc3QgUGF5bG9hZDonLCBwYXlsb2FkKTtcbiAgICAvLyBDbG9zZSBtb2RhbCBhZnRlciBzdWJtaXNzaW9uXG4gICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xuICAgIHRoaXMuc2VydmljZVxuICAgICAgLnNlbmRWTVNSZXNldFJlcXVlc3QocGF5bG9hZClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgID8uc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRDYXJkRGF0YSgpO1xuICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRTdWNjZXNzVG9hc3QoXCJSZXF1ZXN0IHJlc2V0IHN1Y2Nlc3NmdWxseVwiKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KFwiRmFpbGVkIHRvIHJlc2V0IHJlcXVlc3RcIik7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICAgIGNvbnN0IG1zZyA9XG4gICAgICAgICAgICBlcnIuZXJyb3I/LmVycm9yIHx8XG4gICAgICAgICAgICBlcnIuZXJyb3IgfHxcbiAgICAgICAgICAgIGVycj8uZXJyb3I/Lm1lc3NhZ2UgfHxcbiAgICAgICAgICAgIGVyci5tZXNzYWdlIHx8XG4gICAgICAgICAgICBcIlVua25vd24gZXJyb3JcIjtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbiBzdWJtaXRSZXNldFJlcXVlc3QgOicsIGVycik7XG4gICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KG1zZyB8fCBcIlVua25vd24gZXJyb3Igb2NjdXJyZWRcIik7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICBcbiAgfVxuXG4gIC8vIEdldCBub3JtYWxpemVkIGRhdGUgZm9yIGN1cnJlbnQgZm9sZGVyRGF0ZVxuICBnZXROb3JtYWxpemVkRGF0ZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuZm9sZGVyRGF0ZSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuZm9sZGVyRGF0ZSkudG9JU09TdHJpbmcoKS5zcGxpdChcIlRcIilbMF07XG4gIH1cblxuICAvLyBHZXQgc2VsZWN0ZWQgZGF0ZSdzIGNhcmQgZGF0YVxuICBnZXRTZWxlY3RlZERhdGVDYXJkRGF0YSgpOiBhbnkge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWREYXRlID0gdGhpcy5nZXROb3JtYWxpemVkRGF0ZSgpO1xuICAgIHJldHVybiBub3JtYWxpemVkRGF0ZSA/IHRoaXMuY2FyZERhdGFNYXBbbm9ybWFsaXplZERhdGVdIDogbnVsbDtcbiAgfVxufSIsIjxkaXYgY2xhc3M9XCJjYXJkIG10LTNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgbXQtMyBweC0wIGJvcmRlci1ib3R0b20tMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWFjY29yZGlvblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1hY2NvcmRpb24taXRlbVwiPlxuICAgICAgICAgICAgICAgIDwhLS0gZm9yIG5ldyBuYXZpZ2F0aW9uIGNoYW5nZXMgLS0+XG4gICAgICAgICAgICAgICAgPCEtLSBvbGQgdmlldyB3aGlsZSBmb2xkZXIgdmlldyAtLT5cbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZm9sZGVyVmlld1wiIGNsYXNzPVwibWFpbmhlYWRpbmcgcGItMCBjdXN0b20tYWNjb3JkaW9uLWhlYWRlclwiIChjbGljayk9XCJ0b2dnbGVBY2NvcmRpb24oKVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbWctZGlyZWNcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogNDBweDtcIj5JbWFnZSBEaXJlY3Rvcnk8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWNjb3JkaW9uLWFycm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBEb3duIGFycm93IGZvciBjb2xsYXBzZWQgc3RhdGUsIHVwIGFycm93IGZvciBleHBhbmRlZCBzdGF0ZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWlzQWNjb3JkaW9uRXhwYW5kZWRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNlwiIGhlaWdodD1cIjZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEgMUw1IDVMOSAxXCIgc3Ryb2tlPVwiIzA3MTQzN1wiIHN0cm9rZS13aWR0aD1cIjFcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiaXNBY2NvcmRpb25FeHBhbmRlZFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI2XCIgaGVpZ2h0PVwiNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMSA1TDUgMUw5IDVcIiBzdHJva2U9XCIjMWI4NGZmXCIgc3Ryb2tlLXdpZHRoPVwiMVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8IS0tIG5ldyB2aWV3IHdoaWxlIG5vdCBpbiBmb2xkZXIgdmlldyB2aWV3IC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZm9sZGVyVmlld1wiIGNsYXNzPVwiaGVhZGVyLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWxlZnQtc2VjdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJiYWNrbmF2ICYmICFpbWFnZUZsb3dcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImJhY2tUb0Zvb3RmYWxsKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHZpZXdCb3g9XCIwIDAgNDAgNDBcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgZmlsdGVyPVwidXJsKCNmaWx0ZXIwX2RfMjU4NV83MDM2KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMVwiIHdpZHRoPVwiMzZcIiBoZWlnaHQ9XCIzNlwiIHJ4PVwiOFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMi41XCIgeT1cIjEuNVwiIHdpZHRoPVwiMzVcIiBoZWlnaHQ9XCIzNVwiIHJ4PVwiNy41XCIgc3Ryb2tlPVwiI0QwRDVERFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTI1LjgzMjcgMTlIMTQuMTY2TTE0LjE2NiAxOUwxOS45OTkzIDI0LjgzMzRNMTQuMTY2IDE5TDE5Ljk5OTMgMTMuMTY2N1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMF9kXzI1ODVfNzAzNlwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZU9mZnNldCBkeT1cIjFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwLjA2Mjc0NTEgMCAwIDAgMCAwLjA5NDExNzYgMCAwIDAgMCAwLjE1Njg2MyAwIDAgMCAwLjA1IDBcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMjU4NV83MDM2XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW49XCJTb3VyY2VHcmFwaGljXCIgaW4yPVwiZWZmZWN0MV9kcm9wU2hhZG93XzI1ODVfNzAzNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD1cInNoYXBlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmlsdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGJhY2sgZnJvbSBpbWFnZSBmbG93IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpbWFnZUZsb3dcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImJhY2tUb0Zvb3RmYWxsMSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiB2aWV3Qm94PVwiMCAwIDQwIDQwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGZpbHRlcj1cInVybCgjZmlsdGVyMF9kXzI1ODVfNzAzNilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjFcIiB3aWR0aD1cIjM2XCIgaGVpZ2h0PVwiMzZcIiByeD1cIjhcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjIuNVwiIHk9XCIxLjVcIiB3aWR0aD1cIjM1XCIgaGVpZ2h0PVwiMzVcIiByeD1cIjcuNVwiIHN0cm9rZT1cIiNEMEQ1RERcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yNS44MzI3IDE5SDE0LjE2Nk0xNC4xNjYgMTlMMTkuOTk5MyAyNC44MzM0TTE0LjE2NiAxOUwxOS45OTkzIDEzLjE2NjdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjBfZF8yNTg1XzcwMzZcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVPZmZzZXQgZHk9XCIxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMC4wNjI3NDUxIDAgMCAwIDAgMC4wOTQxMTc2IDAgMCAwIDAgMC4xNTY4NjMgMCAwIDAgMC4wNSAwXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93XzI1ODVfNzAzNlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd18yNTg1XzcwMzZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJzaGFwZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbHRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbWctZGlyZWNcIj5JbWFnZSBEaXJlY3RvcnkgfCB7e2ZvbGRlckRhdGUgfCBkYXRlOidkZCBNTU0sIHl5eXknfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXJpZ2h0LXNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhZm9sZGVyVmlld1wiIGNsYXNzPVwiYWNjb3JkaW9uLXRvZ2dsZS1idG5cIiAoY2xpY2spPVwidG9nZ2xlQWNjb3JkaW9uKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFjY29yZGlvbi1hcnJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIERvd24gYXJyb3cgZm9yIGNvbGxhcHNlZCBzdGF0ZSwgdXAgYXJyb3cgZm9yIGV4cGFuZGVkIHN0YXRlIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWlzQWNjb3JkaW9uRXhwYW5kZWRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNlwiIGhlaWdodD1cIjZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiA2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMSAxTDUgNUw5IDFcIiBzdHJva2U9XCIjMDcxNDM3XCIgc3Ryb2tlLXdpZHRoPVwiMVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJpc0FjY29yZGlvbkV4cGFuZGVkXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjZcIiBoZWlnaHQ9XCI2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEgNUw1IDFMOSA1XCIgc3Ryb2tlPVwiIzFiODRmZlwiIHN0cm9rZS13aWR0aD1cIjFcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxzZWN0aW9uICpuZ0lmPVwiaXNBY2NvcmRpb25FeHBhbmRlZFwiPlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCJmb2xkZXJWaWV3XCIgY2xhc3M9XCJjYXJkLWJvZHkgcHgtMFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtbGlzdC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1saXN0LXNjcm9sbFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1jYXJkXCIgKm5nRm9yPVwibGV0IG9iaiBvZiBkYXRlQXJyYXk7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydkYXRlLWNhcmQtYWN0aXZlJzogaSA9PT0gc2VsZWN0SW5kZXh9XCIgKGNsaWNrKT1cImdldGltYWdlcyhpLCBvYmopXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1jYXJkLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGNsYXNzPVwiY2FsZW5kYXItaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMi42NjY3IDIuNjY2NjdIMTJWMkMxMiAxLjYzMTgxIDExLjcwMTUgMS4zMzMzMyAxMS4zMzMzIDEuMzMzMzNDMTAuOTY1MSAxLjMzMzMzIDEwLjY2NjcgMS42MzE4MSAxMC42NjY3IDJWMi42NjY2N0g1LjMzMzMzVjJDNS4zMzMzMyAxLjYzMTgxIDUuMDM0ODYgMS4zMzMzMyA0LjY2NjY3IDEuMzMzMzNDNC4yOTg0OCAxLjMzMzMzIDQgMS42MzE4MSA0IDJWMi42NjY2N0gzLjMzMzMzQzIuNTk2OTUgMi42NjY2NyAyIDMuMjYzNjIgMiA0VjEzLjMzMzNDMiAxNC4wNjk3IDIuNTk2OTUgMTQuNjY2NyAzLjMzMzMzIDE0LjY2NjdIMTIuNjY2N0MxMy40MDMgMTQuNjY2NyAxNCAxNC4wNjk3IDE0IDEzLjMzMzNWNEMxNCAzLjI2MzYyIDEzLjQwMyAyLjY2NjY3IDEyLjY2NjcgMi42NjY2N1pNMTIuNjY2NyAxMy4zMzMzSDMuMzMzMzNWNkgxMi42NjY3VjEzLjMzMzNaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNjY3MDg1XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGUtdGV4dFwiPnt7b2JqIHwgZGF0ZTonZGQgTU1NJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY2FyZERhdGFNYXBbb2JqXT8udGlja2V0U3RhdHVzTG93ZXIgYXMgc3RhdHVzXCIgY2xhc3M9XCJiYWRnZSBtcy0yXCIgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhZGdlLWxpZ2h0LXN1Y2Nlc3MnOiBzdGF0dXMgPT09ICdjbG9zZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhZGdlLWxpZ2h0LXdhcm5pbmcnOiBzdGF0dXMgPT09ICdyYWlzZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhZGdlLWxpZ2h0LWRlZmF1bHQnOiBzdGF0dXMgIT09ICdjbG9zZWQnICYmIHN0YXR1cyAhPT0gJ3JhaXNlZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHN0YXR1cyA9PT0gJ2Nsb3NlZCcgPyAnVGlja2V0IGNsb3NlZCcgOiAoc3RhdHVzID09PSAncmFpc2VkJyA/ICdUaWNrZXQgcmFpc2VkJyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYXJkRGF0YU1hcFtvYmpdPy50aWNrZXRTdGF0dXMgfHwgJycpKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3RmYWxsLWNvdW50XCI+e3sgY2FyZERhdGFNYXBbb2JqXT8uZm9vdGZhbGxDb3VudCB8fCAwIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGZhbGwtbGFiZWxcIj5Ub3RhbCBmb290ZmFsbDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuXG5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFmb2xkZXJWaWV3XCIgY2xhc3M9XCJjYXJkLWJvZHlcIj5cbiAgICAgICAgICAgIDxzZWN0aW9uICpuZ0lmPVwiIWltYWdlRmxvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBUaWNrZXQgQmxvY2sgQWxlcnQgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnZXRTZWxlY3RlZERhdGVDYXJkRGF0YSgpPy5yYWlzZWRTdGF0dXNFbmFibGVkID09PSAnYmxvY2snXCIgY2xhc3M9XCJjb2wtMTIgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1ibG9jay1hbGVydFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnQtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWJsb2NrLWFsZXJ0LWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMlwiIGZpbGw9XCIjRjA0NDM4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDhWMTNcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTZcIiByPVwiMVwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnQtdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1ibG9jay1hbGVydC10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW5ub3QgcmFpc2UgdGlja2V0IGZvciBuZXh0IHt7IGdldFNlbGVjdGVkRGF0ZUNhcmREYXRhKCk/Lm5vT2ZCbG9ja2VkRGF5c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICcwJyB9fSBkYXlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnQtZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdCBsb29rcyBsaWtlIHlvdSBoYXZlIGFjaGlldmVkIDk1JSBhY2N1cmFjeSBmb3IgdGhlIHRocmVlIHRpY2tldHMgcmFpc2VkIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250aC4gVGhpcyBsaW1pdHMgeW91IGZyb20gcmFpc2luZyBtb3JlIHRpY2tldHMgdG8gYXZvaWQgcmVkdW5kYW5jeS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1ibG9jay1hbGVydC1hY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugc3RpbGwgd2FudCB0byByYWlzZSB0aWNrZXRzLCA8c3BhbiBjbGFzcz1cInRpY2tldC1ibG9jay1hbGVydC1saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlcXVlc3RSZXNldCgpXCI+c2VuZCByZXF1ZXN0PC9zcGFuPiB0byByZXNldC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBUaWNrZXQgUmVxdWVzdCBTdWNjZXNzIEFsZXJ0IC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2V0U2VsZWN0ZWREYXRlQ2FyZERhdGEoKT8ucmFpc2VkU3RhdHVzRW5hYmxlZCA9PT0gJ3JlcXVlc3QnXCIgY2xhc3M9XCJjb2wtMTIgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1yZXF1ZXN0LWFsZXJ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1yZXF1ZXN0LWFsZXJ0LWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1yZXF1ZXN0LWFsZXJ0LWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yIDIxTDIzIDEyTDIgM1YxMEwxNyAxMkwyIDE0VjIxWlwiIGZpbGw9XCIjMTBCOTgxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1yZXF1ZXN0LWFsZXJ0LXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtcmVxdWVzdC1hbGVydC10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc2V0IFJlcXVlc3QgU2VudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LXJlcXVlc3QtYWxlcnQtZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3VyIHJlcXVlc3QgdG8gZW5hYmxlIHRpY2tldCByYWlzaW5nIGhhcyBiZWVuIHN1Ym1pdHRlZC4gWW91J2xsIGJlIG5vdGlmaWVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25jZSBpdCdzIGFwcHJvdmVkLiBQbGVhc2UgZW5zdXJlIGZ1dHVyZSB0aWNrZXQgYWNjdXJhY3kgcmVtYWlucyB3aXRoaW4gdGhlIDk1JVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVzaG9sZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBmb290ZmFsbCB0cmVuZHMgZmVhdHVyZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3RmYWxsVHJlbmRzVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRpY2tldFN0YXR1c1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBmb290ZmFsbCB0cmVuZHMgZmVhdHVyZSBlbmQgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1zaHJpbmstMCBtdC0zIGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1jZW50ZXIgcHgtMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c3BhbiAqbmdJZj1cImJhY2tuYXZcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImJhY2tUb0Zvb3RmYWxsKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHZpZXdCb3g9XCIwIDAgNDAgNDBcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgZmlsdGVyPVwidXJsKCNmaWx0ZXIwX2RfMjU4NV83MDM2KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMVwiIHdpZHRoPVwiMzZcIiBoZWlnaHQ9XCIzNlwiIHJ4PVwiOFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMi41XCIgeT1cIjEuNVwiIHdpZHRoPVwiMzVcIiBoZWlnaHQ9XCIzNVwiIHJ4PVwiNy41XCIgc3Ryb2tlPVwiI0QwRDVERFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTI1LjgzMjcgMTlIMTQuMTY2TTE0LjE2NiAxOUwxOS45OTkzIDI0LjgzMzRNMTQuMTY2IDE5TDE5Ljk5OTMgMTMuMTY2N1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMF9kXzI1ODVfNzAzNlwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZU9mZnNldCBkeT1cIjFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwLjA2Mjc0NTEgMCAwIDAgMCAwLjA5NDExNzYgMCAwIDAgMCAwLjE1Njg2MyAwIDAgMCAwLjA1IDBcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMjU4NV83MDM2XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW49XCJTb3VyY2VHcmFwaGljXCIgaW4yPVwiZWZmZWN0MV9kcm9wU2hhZG93XzI1ODVfNzAzNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD1cInNoYXBlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmlsdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cImltZy1kaXJlYyBtcy0yIG10LTFcIj57e2ZvbGRlckRhdGUgfCBkYXRlOidkZCBNTU0sIHl5eXknfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXdhcm5pbmcgbXgtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ2Nsb3NlZCcpICYmIGdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ29wZW4nKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWNrZXQgUmFpc2VkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcyBteC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdjbG9zZWQnKVwiPlRpY2tldCBDbG9zZWQ8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ29wZW4nKSAmJiAhZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnY2xvc2VkJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXMtYXV0byB0ZXh0LWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cIiFjYW5FbmFibGVCdXR0b24oKVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJSYWlzZWQoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYWlzZSB0aWNrZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFmb2xkZXJWaWV3XCIgY2xhc3M9XCJkLWZsZXggZmxleC13cmFwIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiB3LTEwMCBteS0yIGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmF2LWdyb3VwIGJnLXdoaXRlIGJvcmRlci0xIGJ0bi1ncm91cCB3LWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIShjb3VudERhdGE/Lmxlbmd0aCA+IDApXCI+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHB4LTYgcHktM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZm9vdGZhbGwnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW5UcmVuZHMoJ2Zvb3RmYWxsJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvdGFsIEZvb3RmYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdmb290ZmFsbCcgPyAnYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1hY3RpdmUnIDogJ2luYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvdW50RGF0YT8uZm9vdGZhbGxDb3VudCB8fCAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ25vbi10YWdnaW5nJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuVHJlbmRzKCdub24tdGFnZ2luZycpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb24tdGFnc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnbm9uLXRhZ2dpbmcnID8gJ2FjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtYWN0aXZlJyA6ICdpbmFjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudERhdGE/Lm5vblRhZ3MgfHwgMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdkdXBsaWNhdGUnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW5UcmVuZHMoJ2R1cGxpY2F0ZScpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEdXBsaWNhdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdkdXBsaWNhdGUnID8gJ2FjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtYWN0aXZlJyA6ICdpbmFjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudERhdGE/LmR1cGxpY2F0ZSB8fCAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2VtcGxveWVlJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuVHJlbmRzKCdlbXBsb3llZScpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXBsb3llZS9TdGFmZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZW1wbG95ZWUnID8gJ2FjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtYWN0aXZlJyA6ICdpbmFjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudERhdGE/LmVtcGxveWVlIHx8IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCIgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2p1bmsnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW5UcmVuZHMoJ2p1bmsnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnVua1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnanVuaycgPyAnYmFkZ2UgYmFkZ2UtYWN0aXZlIGFjdGl2ZVBsYW5CdG4nIDogJyBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0IGluYWN0aXZlUGxhbkJ0bidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudERhdGE/Lmp1bmsgfHwgMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2hvdXNlLWtlZXBpbmcnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW5UcmVuZHMoJ2hvdXNlLWtlZXBpbmcnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSG91c2UgS2VlcGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnaG91c2Uta2VlcGluZycgPyAnYmFkZ2UgYmFkZ2UtYWN0aXZlIGFjdGl2ZVBsYW5CdG4nIDogJyBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0IGluYWN0aXZlUGxhbkJ0bidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudERhdGE/LmhvdXNla2VlcGluZyB8fCAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cCB2aWV3LXRvZ2dsZSBtcy1hdXRvXCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIlRvZ2dsZSB2aWV3XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtMyBweS0yXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiB2aWV3TW9kZSA9PT0gJ2dyaWQnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRWaWV3TW9kZSgnZ3JpZCcpXCIgYXJpYS1sYWJlbD1cIkdyaWQgdmlld1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIzXCIgeT1cIjNcIiB3aWR0aD1cIjRcIiBoZWlnaHQ9XCI0XCIgcng9XCIxXCIgc3Ryb2tlPVwiIzQ3NTQ2N1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZmlsbF09XCJ2aWV3TW9kZSA9PT0gJ2dyaWQnID8gJyNFQUY4RkYnIDogJ25vbmUnXCI+PC9yZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjExXCIgeT1cIjNcIiB3aWR0aD1cIjRcIiBoZWlnaHQ9XCI0XCIgcng9XCIxXCIgc3Ryb2tlPVwiIzQ3NTQ2N1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZmlsbF09XCJ2aWV3TW9kZSA9PT0gJ2dyaWQnID8gJyNFQUY4RkYnIDogJ25vbmUnXCI+PC9yZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjNcIiB5PVwiMTFcIiB3aWR0aD1cIjRcIiBoZWlnaHQ9XCI0XCIgcng9XCIxXCIgc3Ryb2tlPVwiIzQ3NTQ2N1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZmlsbF09XCJ2aWV3TW9kZSA9PT0gJ2dyaWQnID8gJyNFQUY4RkYnIDogJ25vbmUnXCI+PC9yZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjExXCIgeT1cIjExXCIgd2lkdGg9XCI0XCIgaGVpZ2h0PVwiNFwiIHJ4PVwiMVwiIHN0cm9rZT1cIiM0NzU0NjdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmZpbGxdPVwidmlld01vZGUgPT09ICdncmlkJyA/ICcjRUFGOEZGJyA6ICdub25lJ1wiPjwvcmVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtMyBweS0yXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiB2aWV3TW9kZSA9PT0gJ2xpc3QnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRWaWV3TW9kZSgnbGlzdCcpXCIgYXJpYS1sYWJlbD1cIkxpc3Qgdmlld1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMjAgMThcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjNcIiB3aWR0aD1cIjRcIiBoZWlnaHQ9XCI0XCIgcng9XCIxXCIgc3Ryb2tlPVwiIzQ3NTQ2N1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZmlsbF09XCJ2aWV3TW9kZSA9PT0gJ2xpc3QnID8gJyNFQUY4RkYnIDogJ25vbmUnXCI+PC9yZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjhcIiB5PVwiNC41XCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEuNVwiIHJ4PVwiMC43NVwiIGZpbGw9XCIjNDc1NDY3XCI+PC9yZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjhcIiB5PVwiMTIuNVwiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxLjVcIiByeD1cIjAuNzVcIiBmaWxsPVwiIzQ3NTQ2N1wiPjwvcmVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjExXCIgd2lkdGg9XCI0XCIgaGVpZ2h0PVwiNFwiIHJ4PVwiMVwiIHN0cm9rZT1cIiM0NzU0NjdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmZpbGxdPVwidmlld01vZGUgPT09ICdsaXN0JyA/ICcjRUFGOEZGJyA6ICdub25lJ1wiPjwvcmVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaW1hZ2VGbG93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidHlwZSA9PT0gJ2Zvb3RmYWxsJyAmJiB2aWV3TW9kZSA9PT0gJ2dyaWQnXCIgY2xhc3M9XCJkLWZsZXggbXQtMiBtYi0yIHctMTAwIG92ZXJmbG93LXggcHgtMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgdGV4dC1ub3dyYXBcIiAqbmdGb3I9XCJsZXQgb2JqIG9mIG9iamVjdHNBcnJheVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJuYXYgbmF2LXN0cmV0Y2ggbmF2LWxpbmUtdGFiczEgbmF2LWxpbmUtdGFicyBib3JkZXItdHJhbnNwYXJlbnQgZmxleC1ub3dyYXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtIGN1cnNvci1wb2ludGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cInNlbGVjdGVkVGltZXMob2JqLnRpbWVSYW5nZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZFRpbWUgPT09IG9iaj8udGltZVJhbmdlID8gJ2FjdGl2ZScgOiAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmsgY3Vyc29yLXBvaW50ZXIgbm8tYm9yZGVyIG14LTMgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e29iaj8udGltZVJhbmdlfX08c3BhbiBjbGFzcz1cIm14LTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0ZWRUaW1lID09PSBvYmo/LnRpbWVSYW5nZSA/ICdiYWRnZS1udW0tcHJpbWFyeScgOidiYWRnZS1udW0tbXV0ZWQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvYmo/LmNvdW50ID8gb2JqPy5jb3VudCA6IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImxvYWRpbmdcIiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm9EYXRhXCIgY2xhc3M9XCJyb3dcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtYi0zXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtbiBcIiBzdHlsZT1cIm1hcmdpbjogNjRweDtib3JkZXItcmFkaXVzOiA4cHg7XG5iYWNrZ3JvdW5kOiB2YXIoLS1HcmF5LTUwLCAjRjlGQUZCKTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjk0XCIgaGVpZ2h0PVwiOTRcIiB2aWV3Qm94PVwiMCAwIDk0IDk0XCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjdcIiB5PVwiN1wiIHdpZHRoPVwiODBcIiBoZWlnaHQ9XCI4MFwiIHJ4PVwiNDBcIiBmaWxsPVwiI0RBRjFGRlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiN1wiIHk9XCI3XCIgd2lkdGg9XCI4MFwiIGhlaWdodD1cIjgwXCIgcng9XCI0MFwiIHN0cm9rZT1cIiNFQUY4RkZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEzLjMzMzNcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTM1LjMzMiA1MS45OTk5SDMzLjY2NTRDMzIuNzgxMyA1MS45OTk5IDMxLjkzMzUgNTEuNjQ4NyAzMS4zMDgzIDUxLjAyMzZDMzAuNjgzMiA1MC4zOTg1IDMwLjMzMiA0OS41NTA2IDMwLjMzMiA0OC42NjY2VjMzLjY2NjZDMzAuMzMyIDMyLjc4MjUgMzAuNjgzMiAzMS45MzQ3IDMxLjMwODMgMzEuMzA5NkMzMS45MzM1IDMwLjY4NDQgMzIuNzgxMyAzMC4zMzMzIDMzLjY2NTQgMzAuMzMzM0g0OC42NjU0QzQ5LjU0OTQgMzAuMzMzMyA1MC4zOTczIDMwLjY4NDQgNTEuMDIyNCAzMS4zMDk2QzUxLjY0NzUgMzEuOTM0NyA1MS45OTg3IDMyLjc4MjUgNTEuOTk4NyAzMy42NjY2VjM1LjMzMzNNNDUuMzMyIDQxLjk5OTlINjAuMzMyQzYyLjE3MyA0MS45OTk5IDYzLjY2NTQgNDMuNDkyMyA2My42NjU0IDQ1LjMzMzNWNjAuMzMzM0M2My42NjU0IDYyLjE3NDIgNjIuMTczIDYzLjY2NjYgNjAuMzMyIDYzLjY2NjZINDUuMzMyQzQzLjQ5MTEgNjMuNjY2NiA0MS45OTg3IDYyLjE3NDIgNDEuOTk4NyA2MC4zMzMzVjQ1LjMzMzNDNDEuOTk4NyA0My40OTIzIDQzLjQ5MTEgNDEuOTk5OSA0NS4zMzIgNDEuOTk5OVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCI0XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZSBteS0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBub0RhdGFNZXNzYWdlc1t0eXBlPy50b0xvd2VyQ2FzZSgpXSB8fCAnTm8gZGF0YSBmb3VuZCcgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBTcGxpdC1zY3JlZW4gbGF5b3V0IChvbmx5IHNob3duIGFmdGVyIGNsaWNraW5nIGFuIGltYWdlKSAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwbGl0LXNjcmVlbi1jb250YWluZXJcIiAqbmdJZj1cInNwbGl0U2NyZWVuRW5hYmxlZCAmJiAhbm9EYXRhICYmICFsb2FkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIExlZnQgUGFuZWw6IFRodW1ibmFpbCBMaXN0ICsgUmVsYXRlZCBJbWFnZXMgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdC1wYW5lbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gTWFpbiBJbWFnZXMgTGlzdCAoaGlkZGVuIHdoZW4gZHVwbGljYXRlIGlzIHNlbGVjdGVkKSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRSYWRpb1R5cGUgIT09ICdkdXBsaWNhdGUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aHVtYm5haWwtbGlzdC1zZWN0aW9uXCIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGxpc3RWaWV3R3JvdXBzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1yYW5nZS1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWUtcmFuZ2UtdGl0bGVcIj57eyBncm91cD8udGltZVJhbmdlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGltZS1yYW5nZS1jb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjE0OV8yMzQ0MClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIgOS4wMDA3N0g0Ljc1VjkuNjI1NzdDNC43NSA5Ljk5MDQ1IDQuNjA1MTMgMTAuMzQwMiA0LjM0NzI3IDEwLjU5OEM0LjA4OTQxIDEwLjg1NTkgMy43Mzk2NyAxMS4wMDA4IDMuMzc1IDExLjAwMDhDMy4wMTAzMyAxMS4wMDA4IDIuNjYwNTkgMTAuODU1OSAyLjQwMjczIDEwLjU5OEMyLjE0NDg3IDEwLjM0MDIgMiA5Ljk5MDQ1IDIgOS42MjU3N1Y5LjAwMDc3Wk00IDMuMDYwNzdDNSAzLjA2MDc3IDUuNSA0LjUwMDc3IDUuNSA1LjUwMDc3QzUuNSA2LjAwMDc3IDUuMjUgNi41MDA3NyA1IDcuMjUwNzdMNC43NSA4LjAwMDc3SDJDMiA3LjUwMDc3IDEuNzUgNi43NTA3NyAxLjc1IDUuNTAwNzdDMS43NSA0LjI1MDc3IDIuNzQ5IDMuMDYwNzcgNCAzLjA2MDc3Wk0xMC4wMjcgNy4wNDk3N0w5LjkxODUgNy42NjUyN0M5Ljg1MTE3IDguMDIwNTggOS42NDY1NiA4LjMzNTA3IDkuMzQ5MDEgOC41NDA2QzkuMDUxNDYgOC43NDYxMyA4LjY4NDkyIDguODI2MTYgOC4zMjg3OCA4Ljc2MzM3QzcuOTcyNjMgOC43MDA1NyA3LjY1NTU3IDguNDk5OTkgNy40NDYyNiA4LjIwNTA5QzcuMjM2OTUgNy45MTAxOCA3LjE1MjI1IDcuNTQ0NjkgNy4yMTA1IDcuMTg3NzdMNy4zMTg1IDYuNTcyNzdMMTAuMDI3IDcuMDQ5NzdaTTkuMDg5IDAuODUzMjcyQzEwLjMyMSAxLjA3MDI3IDExLjA5OCAyLjQxNTc3IDEwLjg4MSAzLjY0Njc3QzEwLjY2NCA0Ljg3Nzc3IDEwLjI4NzUgNS41NzI3NyAxMC4yMDEgNi4wNjUyN0w3LjQ5MjUgNS41ODc3N0w3LjM3NjUgNC44MDU3N0M3LjI2MDUgNC4wMjM3NyA3LjEwMTUgMy40ODc3NyA3LjE4OCAyLjk5NTc3QzcuMzYxNSAyLjAxMDc3IDguMTA0IDAuNjc5NzcyIDkuMDg5IDAuODUzMjcyWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMDBBM0ZGXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIxNDlfMjM0NDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz57eyBncm91cD8uZGF0YT8ubGVuZ3RoIHx8IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aHVtYm5haWwtZ3JpZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aHVtYm5haWwtaXRlbVwiICpuZ0Zvcj1cImxldCBvYmogb2YgZ3JvdXA/LmRhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3NlbGVjdGVkJzogc2VsZWN0SW1hZ2VBcnJheT8udGVtcGxkID09PSBvYmo/LnRlbXBsZH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0SW1hZ2VGb3JTcGxpdFZpZXcob2JqKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwidGh1bWJuYWlsLWltYWdlXCIgW3NyY109XCJpbWFnZVVybCArIG9iaj8uZmlsZVBhdGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yKT1cIm9iai5maWxlUGF0aCA9IG51bGxcIiBhbHQ9XCJcIiAqbmdJZj1cIm9iaj8uZmlsZVBhdGhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW9iaj8uZmlsZVBhdGhcIiBjbGFzcz1cIm5vLXByZXZpZXdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDEyMHB4OyBwYWRkaW5nOiAyMHB4O1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJjb2xvcjogIzY2NzA4NTsgZm9udC1zaXplOiAxMXB4O1wiPk5vIHByZXZpZXc8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGh1bWJuYWlsLWluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YW5nby1pZFwiPlRhbmdvIElEOiB7eyBvYmo/LnRlbXBsZCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVudHJ5LXRpbWVcIj5FbnRyeSBUaW1lOiB7eyBvYmo/LmVudHJ5VG1lIHx8IG9iaj8uZW50cnlUaW1lfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gbGVmdCBwYW5lbCBpbWFnZSBsb2dvIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01IHRleHQtZW5kIHB5LTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nbm9uLXRhZ2dpbmcnXCIgbmdiVG9vbHRpcD1cIllldCB0byB0YWcgdGhlIGN1c3RvbWVyXCIgcGxhY2VtZW50PVwidG9wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgMTkgMThcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMDIzNDQgNS42MjVINi4wMzA5NE0xNi4yMTU5IDEwLjQzMjVMMTAuODM4NCAxNS44MUMxMC42OTkxIDE1Ljk0OTUgMTAuNTMzNyAxNi4wNjAxIDEwLjM1MTYgMTYuMTM1NkMxMC4xNjk1IDE2LjIxMTEgOS45NzQzMSAxNi4yNDk5IDkuNzc3MTkgMTYuMjQ5OUM5LjU4MDA2IDE2LjI0OTkgOS4zODQ4NyAxNi4yMTExIDkuMjAyNzggMTYuMTM1NkM5LjAyMDY4IDE2LjA2MDEgOC44NTUyNSAxNS45NDk1IDguNzE1OTQgMTUuODFMMi4yNzM0NCA5LjM3NVYxLjg3NUg5Ljc3MzQ0TDE2LjIxNTkgOC4zMTc1QzE2LjQ5NTMgOC41OTg1NCAxNi42NTIxIDguOTc4NzIgMTYuNjUyMSA5LjM3NUMxNi42NTIxIDkuNzcxMjggMTYuNDk1MyAxMC4xNTE1IDE2LjIxNTkgMTAuNDMyNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdkdXBsaWNhdGUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJvYmo/LmlzUGFyZW50XCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgdmlld0JveD1cIjAgMCAxMCAxMFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF81NjhfMTAzNjU3KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi4wODM5OCA2LjI1MDAxSDEuNjY3MzJDMS40NDYzIDYuMjUwMDEgMS4yMzQzNCA2LjE2MjIxIDEuMDc4MDYgNi4wMDU5M0MwLjkyMTc4MiA1Ljg0OTY1IDAuODMzOTg0IDUuNjM3NjkgMC44MzM5ODQgNS40MTY2OFYxLjY2NjY4QzAuODMzOTg0IDEuNDQ1NjYgMC45MjE3ODIgMS4yMzM3IDEuMDc4MDYgMS4wNzc0MkMxLjIzNDM0IDAuOTIxMTQxIDEuNDQ2MyAwLjgzMzM0NCAxLjY2NzMyIDAuODMzMzQ0SDUuNDE3MzJDNS42MzgzMyAwLjgzMzM0NCA1Ljg1MDI5IDAuOTIxMTQxIDYuMDA2NTcgMS4wNzc0MkM2LjE2Mjg1IDEuMjMzNyA2LjI1MDY1IDEuNDQ1NjYgNi4yNTA2NSAxLjY2NjY4VjIuMDgzMzRNNC41ODM5OCAzLjc1MDAxSDguMzMzOThDOC43OTQyMiAzLjc1MDAxIDkuMTY3MzIgNC4xMjMxMSA5LjE2NzMyIDQuNTgzMzRWOC4zMzMzNEM5LjE2NzMyIDguNzkzNTggOC43OTQyMiA5LjE2NjY4IDguMzMzOTggOS4xNjY2OEg0LjU4Mzk4QzQuMTIzNzUgOS4xNjY2OCAzLjc1MDY1IDguNzkzNTggMy43NTA2NSA4LjMzMzM0VjQuNTgzMzRDMy43NTA2NSA0LjEyMzExIDQuMTIzNzUgMy43NTAwMSA0LjU4Mzk4IDMuNzUwMDFaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI1XCIgaGVpZ2h0PVwiNVwiIGZpbGw9XCIjNDc1NDY3XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzU2OF8xMDM2NTdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFvYmo/LmlzUGFyZW50XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM1KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNC4xNjc5NyAxMy4xODU5SDMuMzM0NjRDMi44OTI2MSAxMy4xODU5IDIuNDY4NjggMTMuMDEwMyAyLjE1NjEyIDEyLjY5NzdDMS44NDM1NiAxMi4zODUyIDEuNjY3OTcgMTEuOTYxMiAxLjY2Nzk3IDExLjUxOTJWNC4wMTkyMUMxLjY2Nzk3IDMuNTc3MTggMS44NDM1NiAzLjE1MzI2IDIuMTU2MTIgMi44NDA2OUMyLjQ2ODY4IDIuNTI4MTMgMi44OTI2MSAyLjM1MjU0IDMuMzM0NjQgMi4zNTI1NEgxMC44MzQ2QzExLjI3NjcgMi4zNTI1NCAxMS43MDA2IDIuNTI4MTMgMTIuMDEzMSAyLjg0MDY5QzEyLjMyNTcgMy4xNTMyNiAxMi41MDEzIDMuNTc3MTggMTIuNTAxMyA0LjAxOTIxVjQuODUyNTRNOS4xNjc5NyA4LjE4NTg3SDE2LjY2OEMxNy41ODg0IDguMTg1ODcgMTguMzM0NiA4LjkzMjA2IDE4LjMzNDYgOS44NTI1NFYxNy4zNTI1QzE4LjMzNDYgMTguMjczIDE3LjU4ODQgMTkuMDE5MiAxNi42NjggMTkuMDE5Mkg5LjE2Nzk3QzguMjQ3NDkgMTkuMDE5MiA3LjUwMTMgMTguMjczIDcuNTAxMyAxNy4zNTI1VjkuODUyNTRDNy41MDEzIDguOTMyMDYgOC4yNDc0OSA4LjE4NTg3IDkuMTY3OTcgOC4xODU4N1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM1XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdlbXBsb3llZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xNjU0IDE4LjE4NlYxNi41MTk0QzE0LjE2NTQgMTUuNjM1MyAxMy44MTQyIDE0Ljc4NzUgMTMuMTg5MSAxNC4xNjIzQzEyLjU2MzkgMTMuNTM3MiAxMS43MTYxIDEzLjE4NiAxMC44MzIgMTMuMTg2SDQuMTY1MzZDMy4yODEzMSAxMy4xODYgMi40MzM0NiAxMy41MzcyIDEuODA4MzQgMTQuMTYyM0MxLjE4MzIyIDE0Ljc4NzUgMC44MzIwMzEgMTUuNjM1MyAwLjgzMjAzMSAxNi41MTk0VjE4LjE4Nk0xOS4xNjU0IDE4LjE4NlYxNi41MTk0QzE5LjE2NDggMTUuNzgwOCAxOC45MTkgMTUuMDYzMyAxOC40NjY1IDE0LjQ3OTZDMTguMDE0IDEzLjg5NTkgMTcuMzgwNSAxMy40NzkgMTYuNjY1NCAxMy4yOTQ0TTEzLjMzMiAzLjI5NDM3QzE0LjA0OSAzLjQ3Nzk1IDE0LjY4NDYgMy44OTQ5NSAxNS4xMzg0IDQuNDc5NjNDMTUuNTkyMiA1LjA2NDMgMTUuODM4NiA1Ljc4MzM5IDE1LjgzODYgNi41MjM1NEMxNS44Mzg2IDcuMjYzNjggMTUuNTkyMiA3Ljk4Mjc3IDE1LjEzODQgOC41Njc0NEMxNC42ODQ2IDkuMTUyMTIgMTQuMDQ5IDkuNTY5MTIgMTMuMzMyIDkuNzUyN00xMC44MzIgNi41MTkzN0MxMC44MzIgOC4zNjAzMiA5LjMzOTY1IDkuODUyNyA3LjQ5ODcgOS44NTI3QzUuNjU3NzUgOS44NTI3IDQuMTY1MzYgOC4zNjAzMiA0LjE2NTM2IDYuNTE5MzdDNC4xNjUzNiA0LjY3ODQyIDUuNjU3NzUgMy4xODYwNCA3LjQ5ODcgMy4xODYwNEM5LjMzOTY1IDMuMTg2MDQgMTAuODMyIDQuNjc4NDIgMTAuODMyIDYuNTE5MzdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzOVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0naG91c2Uta2VlcGluZydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgdmlld0JveD1cIjAgMCAyMSAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2NDMpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuMjYyMTkgMS4zNjcyMkMxMC4xNzc3IDAuNDU4OTc0IDExLjY2MiAwLjQ1ODk3NCAxMi41Nzc2IDEuMzY3MjJMMjAuMzEzMyA5LjA0MTUzQzIxLjIyODcgOS45NDk4IDIxLjIyODcgMTEuNDIyMyAyMC4zMTMzIDEyLjMzMDZMMTIuNTc3NiAyMC4wMDQ5QzExLjY2MiAyMC45MTMxIDEwLjE3NzcgMjAuOTEzMSA5LjI2MjE5IDIwLjAwNDlMNy4wNTE2NiAxNy44MTE5TDUuMDI1MzggMTkuODIyMUM0LjEwOTg3IDIwLjczMDMgMi42MjU1MyAyMC43MzAzIDEuNzEwMDIgMTkuODIyMUMwLjc5NDUxIDE4LjkxMzkgMC43OTQ1MSAxNy40NDEzIDEuNzEwMDIgMTYuNTMzMUwzLjczNjMgMTQuNTIyOUwxLjUyNjQ4IDEyLjMzMDZDMC42MTA5NjYgMTEuNDIyMyAwLjYxMDk2NiA5Ljk0OTggMS41MjY0OCA5LjA0MTUzTDkuMjYyMTkgMS4zNjcyMlpNMTEuNDcyNCAyLjQ2MzU3QzExLjE2NzIgMi4xNjA4MiAxMC42NzI0IDIuMTYwODIgMTAuMzY3MiAyLjQ2MzU3TDQuODQxNDUgNy45NDU1NkwxMy42ODIzIDE2LjcxNjNMMTkuMjA4MSAxMS4yMzQyQzE5LjUxMzMgMTAuOTMxNSAxOS41MTMzIDEwLjQ0MDYgMTkuMjA4MSAxMC4xMzc5TDE1LjMzOTkgNi4zMDAzMkwxNC4wNTA1IDcuNTc5NEMxMy43NDUzIDcuODgyMTQgMTMuMjUwNiA3Ljg4MjE0IDEyLjk0NTUgNy41Nzk0QzEyLjY0MDMgNy4yNzY2NCAxMi42NDAzIDYuNzg1NzkgMTIuOTQ1NSA2LjQ4MzA1TDE0LjIzNDcgNS4yMDM5N0wxMy4xMjk5IDQuMTA3ODZMOS45OTg3MiA3LjIxNDE4QzkuNjkzNTQgNy41MTY5MiA5LjE5ODczIDcuNTE2OTIgOC44OTM1NiA3LjIxNDE4QzguNTg4MzggNi45MTE0MyA4LjU4ODM4IDYuNDIwNTggOC44OTM1NiA2LjExNzgzTDEyLjAyNDcgMy4wMTE1MUwxMS40NzI0IDIuNDYzNTdaTTEyLjU3NzEgMTcuODEyNUwzLjczNjMzIDkuMDQxOTFMMi42MzE2IDEwLjEzNzlDMi4zMjY0MiAxMC40NDA2IDIuMzI2NDIgMTAuOTMxNSAyLjYzMTYgMTEuMjM0MkwxMC4zNjcyIDE4LjkwODVDMTAuNjcyNCAxOS4yMTEzIDExLjE2NzIgMTkuMjExMyAxMS40NzI0IDE4LjkwODVMMTIuNTc3MSAxNy44MTI1Wk00Ljg0MTMyIDE1LjYxOTJMMi44MTUxNCAxNy42Mjk0QzIuNTA5OTcgMTcuOTMyMSAyLjUwOTk3IDE4LjQyMyAyLjgxNTE0IDE4LjcyNThDMy4xMjAzMSAxOS4wMjg1IDMuNjE1MDkgMTkuMDI4NSAzLjkyMDI2IDE4LjcyNThMNS45NDY0NCAxNi43MTU2TDQuODQxMzIgMTUuNjE5MlpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzQ3NTQ2N1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjQzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdqdW5rJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zIDZINU01IDZIMjFNNSA2VjIwQzUgMjAuNTMwNCA1LjIxMDcxIDIxLjAzOTEgNS41ODU3OSAyMS40MTQyQzUuOTYwODYgMjEuNzg5MyA2LjQ2OTU3IDIyIDcgMjJIMTdDMTcuNTMwNCAyMiAxOC4wMzkxIDIxLjc4OTMgMTguNDE0MiAyMS40MTQyQzE4Ljc4OTMgMjEuMDM5MSAxOSAyMC41MzA0IDE5IDIwVjZINVpNOCA2VjRDOCAzLjQ2OTU3IDguMjEwNzEgMi45NjA4NiA4LjU4NTc5IDIuNTg1NzlDOC45NjA4NiAyLjIxMDcxIDkuNDY5NTcgMiAxMCAySDE0QzE0LjUzMDQgMiAxNS4wMzkxIDIuMjEwNzEgMTUuNDE0MiAyLjU4NTc5QzE1Ljc4OTMgMi45NjA4NiAxNiAzLjQ2OTU3IDE2IDRWNk0xMCAxMVYxN00xNCAxMVYxN1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGxlZnQgcGFuZWwgSW1hZ2VzIFNlY3Rpb24gKE9OTFkgc2hvd24gd2hlbiBkdXBsaWNhdGUgaXMgc2VsZWN0ZWQpIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aHVtYm5haWwtbGlzdC1zZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZFJhZGlvVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgcmVtYWluaW5nSW1hZ2VzR3JvdXBzICYmIHJlbWFpbmluZ0ltYWdlc0dyb3Vwcy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aHVtYm5haWwtbGlzdC1zZWN0aW9uXCIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIHJlbWFpbmluZ0ltYWdlc0dyb3Vwc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtcmFuZ2UtaGVhZGVyXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAxNnB4O1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGltZS1yYW5nZS10aXRsZVwiPnt7IGdyb3VwPy50aW1lUmFuZ2UgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lLXJhbmdlLWNvdW50XCI+PHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIxNDlfMjM0NDApXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yIDkuMDAwNzdINC43NVY5LjYyNTc3QzQuNzUgOS45OTA0NSA0LjYwNTEzIDEwLjM0MDIgNC4zNDcyNyAxMC41OThDNC4wODk0MSAxMC44NTU5IDMuNzM5NjcgMTEuMDAwOCAzLjM3NSAxMS4wMDA4QzMuMDEwMzMgMTEuMDAwOCAyLjY2MDU5IDEwLjg1NTkgMi40MDI3MyAxMC41OThDMi4xNDQ4NyAxMC4zNDAyIDIgOS45OTA0NSAyIDkuNjI1NzdWOS4wMDA3N1pNNCAzLjA2MDc3QzUgMy4wNjA3NyA1LjUgNC41MDA3NyA1LjUgNS41MDA3N0M1LjUgNi4wMDA3NyA1LjI1IDYuNTAwNzcgNSA3LjI1MDc3TDQuNzUgOC4wMDA3N0gyQzIgNy41MDA3NyAxLjc1IDYuNzUwNzcgMS43NSA1LjUwMDc3QzEuNzUgNC4yNTA3NyAyLjc0OSAzLjA2MDc3IDQgMy4wNjA3N1pNMTAuMDI3IDcuMDQ5NzdMOS45MTg1IDcuNjY1MjdDOS44NTExNyA4LjAyMDU4IDkuNjQ2NTYgOC4zMzUwNyA5LjM0OTAxIDguNTQwNkM5LjA1MTQ2IDguNzQ2MTMgOC42ODQ5MiA4LjgyNjE2IDguMzI4NzggOC43NjMzN0M3Ljk3MjYzIDguNzAwNTcgNy42NTU1NyA4LjQ5OTk5IDcuNDQ2MjYgOC4yMDUwOUM3LjIzNjk1IDcuOTEwMTggNy4xNTIyNSA3LjU0NDY5IDcuMjEwNSA3LjE4Nzc3TDcuMzE4NSA2LjU3Mjc3TDEwLjAyNyA3LjA0OTc3Wk05LjA4OSAwLjg1MzI3MkMxMC4zMjEgMS4wNzAyNyAxMS4wOTggMi40MTU3NyAxMC44ODEgMy42NDY3N0MxMC42NjQgNC44Nzc3NyAxMC4yODc1IDUuNTcyNzcgMTAuMjAxIDYuMDY1MjdMNy40OTI1IDUuNTg3NzdMNy4zNzY1IDQuODA1NzdDNy4yNjA1IDQuMDIzNzcgNy4xMDE1IDMuNDg3NzcgNy4xODggMi45OTU3N0M3LjM2MTUgMi4wMTA3NyA4LjEwNCAwLjY3OTc3MiA5LjA4OSAwLjg1MzI3MlpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzAwQTNGRlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMTQ5XzIzNDQwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+e3sgZ3JvdXA/LmRhdGE/Lmxlbmd0aCB8fCAwIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGh1bWJuYWlsLWdyaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGh1bWJuYWlsLWl0ZW1cIiAqbmdGb3I9XCJsZXQgb2JqIG9mIGdyb3VwPy5kYXRhXCIgW25nQ2xhc3NdPVwieydzZWxlY3RlZCc6IG9iai5zZWxlY3RlZH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCIhcmV2b3BzVHlwZVZhbHVlICYmIHNlbGVjdGVkUmFkaW9UeXBlID09PSAnZHVwbGljYXRlJ1wiIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwib2JqLnNlbGVjdGVkXCIgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBhYnNvbHV0ZSBmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInRvcDogNXB4OyByaWdodDogNXB4OyB6LWluZGV4OiAyO1wiIChjaGFuZ2UpPVwib25JbWFnZUNoZWNrYm94Q2hhbmdlKCRldmVudCwgb2JqLCAnZHVwbGljYXRlJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiBbZGlzYWJsZWRdPVwib2JqLmR1cGxpY2F0ZUltYWdlUGF0aD8ubGVuZ3RoID4gMFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwidGh1bWJuYWlsLWltYWdlIGN1cnNvci1wb2ludGVyXCIgW3NyY109XCJpbWFnZVVybCArIG9iaj8uZmlsZVBhdGhcIiAoZXJyb3IpPVwib2JqLmZpbGVQYXRoID0gbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCIgKm5nSWY9XCJvYmo/LmZpbGVQYXRoXCIgKGNsaWNrKT1cImhhbmRsZUltYWdlQ2xpY2soJGV2ZW50LCBvYmopXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhb2JqPy5maWxlUGF0aFwiIGNsYXNzPVwibm8tcHJldmlldyBjdXJzb3ItcG9pbnRlclwiIHN0eWxlPVwiaGVpZ2h0OiAxMjBweDsgcGFkZGluZzogMjBweDtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVJbWFnZUNsaWNrKCRldmVudCwgb2JqKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwiY29sb3I6ICM2NjcwODU7IGZvbnQtc2l6ZTogMTFweDtcIj5ObyBwcmV2aWV3PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGh1bWJuYWlsLWluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFuZ28taWRcIj5UYW5nbyBJRDoge3sgb2JqPy50ZW1wbGQgfHwgb2JqPy50ZW1wSWQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW50cnktdGltZVwiPkVudHJ5IFRpbWU6IHt7IG9iaj8uZW50cnlUbWUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqPy5lbnRyeVRpbWUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTUgdGV4dC1lbmQgcHktM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nbm9uLXRhZ2dpbmcnXCIgbmdiVG9vbHRpcD1cIllldCB0byB0YWcgdGhlIGN1c3RvbWVyXCIgcGxhY2VtZW50PVwidG9wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiB2aWV3Qm94PVwiMCAwIDE5IDE4XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMDIzNDQgNS42MjVINi4wMzA5NE0xNi4yMTU5IDEwLjQzMjVMMTAuODM4NCAxNS44MUMxMC42OTkxIDE1Ljk0OTUgMTAuNTMzNyAxNi4wNjAxIDEwLjM1MTYgMTYuMTM1NkMxMC4xNjk1IDE2LjIxMTEgOS45NzQzMSAxNi4yNDk5IDkuNzc3MTkgMTYuMjQ5OUM5LjU4MDA2IDE2LjI0OTkgOS4zODQ4NyAxNi4yMTExIDkuMjAyNzggMTYuMTM1NkM5LjAyMDY4IDE2LjA2MDEgOC44NTUyNSAxNS45NDk1IDguNzE1OTQgMTUuODFMMi4yNzM0NCA5LjM3NVYxLjg3NUg5Ljc3MzQ0TDE2LjIxNTkgOC4zMTc1QzE2LjQ5NTMgOC41OTg1NCAxNi42NTIxIDguOTc4NzIgMTYuNjUyMSA5LjM3NUMxNi42NTIxIDkuNzcxMjggMTYuNDk1MyAxMC4xNTE1IDE2LjIxNTkgMTAuNDMyNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nZHVwbGljYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIm9iaj8uaXNQYXJlbnRcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiB2aWV3Qm94PVwiMCAwIDEwIDEwXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzU2OF8xMDM2NTcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIuMDgzOTggNi4yNTAwMUgxLjY2NzMyQzEuNDQ2MyA2LjI1MDAxIDEuMjM0MzQgNi4xNjIyMSAxLjA3ODA2IDYuMDA1OTNDMC45MjE3ODIgNS44NDk2NSAwLjgzMzk4NCA1LjYzNzY5IDAuODMzOTg0IDUuNDE2NjhWMS42NjY2OEMwLjgzMzk4NCAxLjQ0NTY2IDAuOTIxNzgyIDEuMjMzNyAxLjA3ODA2IDEuMDc3NDJDMS4yMzQzNCAwLjkyMTE0MSAxLjQ0NjMgMC44MzMzNDQgMS42NjczMiAwLjgzMzM0NEg1LjQxNzMyQzUuNjM4MzMgMC44MzMzNDQgNS44NTAyOSAwLjkyMTE0MSA2LjAwNjU3IDEuMDc3NDJDNi4xNjI4NSAxLjIzMzcgNi4yNTA2NSAxLjQ0NTY2IDYuMjUwNjUgMS42NjY2OFYyLjA4MzM0TTQuNTgzOTggMy43NTAwMUg4LjMzMzk4QzguNzk0MjIgMy43NTAwMSA5LjE2NzMyIDQuMTIzMTEgOS4xNjczMiA0LjU4MzM0VjguMzMzMzRDOS4xNjczMiA4Ljc5MzU4IDguNzk0MjIgOS4xNjY2OCA4LjMzMzk4IDkuMTY2NjhINC41ODM5OEM0LjEyMzc1IDkuMTY2NjggMy43NTA2NSA4Ljc5MzU4IDMuNzUwNjUgOC4zMzMzNFY0LjU4MzM0QzMuNzUwNjUgNC4xMjMxMSA0LjEyMzc1IDMuNzUwMDEgNC41ODM5OCAzLjc1MDAxWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNVwiIGhlaWdodD1cIjVcIiBmaWxsPVwiIzQ3NTQ2N1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzU2OF8xMDM2NTdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIW9iaj8uaXNQYXJlbnRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgdmlld0JveD1cIjAgMCAyMCAyMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2VtcGxveWVlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM5KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xNjU0IDE4LjE4NlYxNi41MTk0QzE0LjE2NTQgMTUuNjM1MyAxMy44MTQyIDE0Ljc4NzUgMTMuMTg5MSAxNC4xNjIzQzEyLjU2MzkgMTMuNTM3MiAxMS43MTYxIDEzLjE4NiAxMC44MzIgMTMuMTg2SDQuMTY1MzZDMy4yODEzMSAxMy4xODYgMi40MzM0NiAxMy41MzcyIDEuODA4MzQgMTQuMTYyM0MxLjE4MzIyIDE0Ljc4NzUgMC44MzIwMzEgMTUuNjM1MyAwLjgzMjAzMSAxNi41MTk0VjE4LjE4Nk0xOS4xNjU0IDE4LjE4NlYxNi41MTk0QzE5LjE2NDggMTUuNzgwOCAxOC45MTkgMTUuMDYzMyAxOC40NjY1IDE0LjQ3OTZDMTguMDE0IDEzLjg5NTkgMTcuMzgwNSAxMy40NzkgMTYuNjY1NCAxMy4yOTQ0TTEzLjMzMiAzLjI5NDM3QzE0LjA0OSAzLjQ3Nzk1IDE0LjY4NDYgMy44OTQ5NSAxNS4xMzg0IDQuNDc5NjNDMTUuNTkyMiA1LjA2NDMgMTUuODM4NiA1Ljc4MzM5IDE1LjgzODYgNi41MjM1NEMxNS44Mzg2IDcuMjYzNjggMTUuNTkyMiA3Ljk4Mjc3IDE1LjEzODQgOC41Njc0NEMxNC42ODQ2IDkuMTUyMTIgMTQuMDQ5IDkuNTY5MTIgMTMuMzMyIDkuNzUyN00xMC44MzIgNi41MTkzN0MxMC44MzIgOC4zNjAzMiA5LjMzOTY1IDkuODUyNyA3LjQ5ODcgOS44NTI3QzUuNjU3NzUgOS44NTI3IDQuMTY1MzYgOC4zNjAzMiA0LjE2NTM2IDYuNTE5MzdDNC4xNjUzNiA0LjY3ODQyIDUuNjU3NzUgMy4xODYwNCA3LjQ5ODcgMy4xODYwNEM5LjMzOTY1IDMuMTg2MDQgMTAuODMyIDQuNjc4NDIgMTAuODMyIDYuNTE5MzdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2hvdXNlLWtlZXBpbmcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiB2aWV3Qm94PVwiMCAwIDIxIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2NDMpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS4yNjIxOSAxLjM2NzIyQzEwLjE3NzcgMC40NTg5NzQgMTEuNjYyIDAuNDU4OTc0IDEyLjU3NzYgMS4zNjcyMkwyMC4zMTMzIDkuMDQxNTNDMjEuMjI4NyA5Ljk0OTggMjEuMjI4NyAxMS40MjIzIDIwLjMxMzMgMTIuMzMwNkwxMi41Nzc2IDIwLjAwNDlDMTEuNjYyIDIwLjkxMzEgMTAuMTc3NyAyMC45MTMxIDkuMjYyMTkgMjAuMDA0OUw3LjA1MTY2IDE3LjgxMTlMNS4wMjUzOCAxOS44MjIxQzQuMTA5ODcgMjAuNzMwMyAyLjYyNTUzIDIwLjczMDMgMS43MTAwMiAxOS44MjIxQzAuNzk0NTEgMTguOTEzOSAwLjc5NDUxIDE3LjQ0MTMgMS43MTAwMiAxNi41MzMxTDMuNzM2MyAxNC41MjI5TDEuNTI2NDggMTIuMzMwNkMwLjYxMDk2NiAxMS40MjIzIDAuNjEwOTY2IDkuOTQ5OCAxLjUyNjQ4IDkuMDQxNTNMOS4yNjIxOSAxLjM2NzIyWk0xMS40NzI0IDIuNDYzNTdDMTEuMTY3MiAyLjE2MDgyIDEwLjY3MjQgMi4xNjA4MiAxMC4zNjcyIDIuNDYzNTdMNC44NDE0NSA3Ljk0NTU2TDEzLjY4MjMgMTYuNzE2M0wxOS4yMDgxIDExLjIzNDJDMTkuNTEzMyAxMC45MzE1IDE5LjUxMzMgMTAuNDQwNiAxOS4yMDgxIDEwLjEzNzlMMTUuMzM5OSA2LjMwMDMyTDE0LjA1MDUgNy41Nzk0QzEzLjc0NTMgNy44ODIxNCAxMy4yNTA2IDcuODgyMTQgMTIuOTQ1NSA3LjU3OTRDMTIuNjQwMyA3LjI3NjY0IDEyLjY0MDMgNi43ODU3OSAxMi45NDU1IDYuNDgzMDVMMTQuMjM0NyA1LjIwMzk3TDEzLjEyOTkgNC4xMDc4Nkw5Ljk5ODcyIDcuMjE0MThDOS42OTM1NCA3LjUxNjkyIDkuMTk4NzMgNy41MTY5MiA4Ljg5MzU2IDcuMjE0MThDOC41ODgzOCA2LjkxMTQzIDguNTg4MzggNi40MjA1OCA4Ljg5MzU2IDYuMTE3ODNMMTIuMDI0NyAzLjAxMTUxTDExLjQ3MjQgMi40NjM1N1pNMTIuNTc3MSAxNy44MTI1TDMuNzM2MzMgOS4wNDE5MUwyLjYzMTYgMTAuMTM3OUMyLjMyNjQyIDEwLjQ0MDYgMi4zMjY0MiAxMC45MzE1IDIuNjMxNiAxMS4yMzQyTDEwLjM2NzIgMTguOTA4NUMxMC42NzI0IDE5LjIxMTMgMTEuMTY3MiAxOS4yMTEzIDExLjQ3MjQgMTguOTA4NUwxMi41NzcxIDE3LjgxMjVaTTQuODQxMzIgMTUuNjE5MkwyLjgxNTE0IDE3LjYyOTRDMi41MDk5NyAxNy45MzIxIDIuNTA5OTcgMTguNDIzIDIuODE1MTQgMTguNzI1OEMzLjEyMDMxIDE5LjAyODUgMy42MTUwOSAxOS4wMjg1IDMuOTIwMjYgMTguNzI1OEw1Ljk0NjQ0IDE2LjcxNTZMNC44NDEzMiAxNS42MTkyWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzQ3NTQ2N1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjQzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdqdW5rJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zIDZINU01IDZIMjFNNSA2VjIwQzUgMjAuNTMwNCA1LjIxMDcxIDIxLjAzOTEgNS41ODU3OSAyMS40MTQyQzUuOTYwODYgMjEuNzg5MyA2LjQ2OTU3IDIyIDcgMjJIMTdDMTcuNTMwNCAyMiAxOC4wMzkxIDIxLjc4OTMgMTguNDE0MiAyMS40MTQyQzE4Ljc4OTMgMjEuMDM5MSAxOSAyMC41MzA0IDE5IDIwVjZINVpNOCA2VjRDOCAzLjQ2OTU3IDguMjEwNzEgMi45NjA4NiA4LjU4NTc5IDIuNTg1NzlDOC45NjA4NiAyLjIxMDcxIDkuNDY5NTcgMiAxMCAySDE0QzE0LjUzMDQgMiAxNS4wMzkxIDIuMjEwNzEgMTUuNDE0MiAyLjU4NTc5QzE1Ljc4OTMgMi45NjA4NiAxNiAzLjQ2OTU3IDE2IDRWNk0xMCAxMVYxN00xNCAxMVYxN1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBSaWdodCBQYW5lbDogU2VsZWN0ZWQgSW1hZ2UgRGV0YWlscyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodC1wYW5lbFwiICpuZ0lmPVwic2VsZWN0SW1hZ2VBcnJheVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbWFnZURldGFpbFZpZXc7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBzZWxlY3RJbWFnZUFycmF5IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0LXBhbmVsXCIgKm5nSWY9XCIhc2VsZWN0SW1hZ2VBcnJheVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgY29sb3I6IHZhcigtLUdyYXktNTAwLCAjNjY3MDg1KTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT1cImZvbnQtc2l6ZTogMTZweDsgZm9udC13ZWlnaHQ6IDUwMDtcIj5TZWxlY3QgYW4gaW1hZ2UgdG8gdmlldyBkZXRhaWxzPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gSW1hZ2UgRGV0YWlsIFZpZXcgVGVtcGxhdGUgZm9yIFNwbGl0LVNjcmVlbiBSaWdodCBQYW5lbCAtLT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpbWFnZURldGFpbFZpZXcgbGV0LW9iaj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXItZ3JheSBwLTMgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXNyYzFcIiBbc3JjXT1cImltYWdlVXJsICsgb2JqPy5maWxlUGF0aFwiIGFsdD1cIlwiICpuZ0lmPVwib2JqPy5maWxlUGF0aFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gWm9vbSBJY29uIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiem9vbS1pY29uLWJ1dHRvblwiIChjbGljayk9XCJvcGVuSW1hZ2Vab29tTW9kYWwoaW1hZ2VVcmwsIG9iailcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTVcIiBoZWlnaHQ9XCIxNVwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTguMzMzMyAxOC4zMzMzTDE1IDE1TTE2LjY2NjcgOS4xNjY2N0MxNi42NjY3IDEzLjMwNjcgMTMuMzA2NyAxNi42NjY3IDkuMTY2NjcgMTYuNjY2N0M1LjAyNjY3IDE2LjY2NjcgMS42NjY2NyAxMy4zMDY3IDEuNjY2NjcgOS4xNjY2N0MxLjY2NjY3IDUuMDI2NjcgNS4wMjY2NyAxLjY2NjY3IDkuMTY2NjcgMS42NjY2N0MxMy4zMDY3IDEuNjY2NjcgMTYuNjY2NyA1LjAyNjY3IDE2LjY2NjcgOS4xNjY2N1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05LjE2NjY3IDYuNjY2NjdWMTEuNjY2N002LjY2NjY3IDkuMTY2NjdIMTEuNjY2N1wiIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFvYmo/LmZpbGVQYXRoXCIgY2xhc3M9XCJuby1wcmV2aWV3XCIgc3R5bGU9XCJoZWlnaHQ6IDM3NXB4O1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIzXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIzIDIwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiR3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVmVjdG9yXCIgZD1cIk02LjUgNi4zMjIyN0g2LjUxTTE2LjI1IDkuMzIyMjdIMjEuNUwxOCAxNi4zMjIzTDE0LjkxIDEyLjAwMjNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVmVjdG9yXzJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMS41IDE2LjMyMjlINS4yNkM1LjYzMjczIDE2LjMyNTUgNS45OTg3NyAxNi4yMjM5IDYuMzE2ODIgMTYuMDI5NUM2LjYzNDg3IDE1LjgzNTIgNi44OTIyOCAxNS41NTU4IDcuMDYgMTUuMjIyOUw4LjUgMTIuMzIyOU0xLjUgMTguMzIyOVYxNC4zMjI5TTE3LjUgNi44MjI5MUwxMy41IDE0LjgyMjlMMy4xMSA5LjYyMjkxQzIuNDIwMzMgOS4yNzU1MyAxLjg5NjM1IDguNjY5MSAxLjY1MjcyIDcuOTM2MzJDMS40MDkwOSA3LjIwMzU0IDEuNDY1NjQgNi40MDQxIDEuODEgNS43MTI5MUwzLjE5IDIuOTIyOTFDMy4zNjIgMi41ODAxNCAzLjU5OTg0IDIuMjc0NiAzLjg4OTk0IDIuMDIzNzVDNC4xODAwMyAxLjc3MjkgNC41MTY3IDEuNTgxNjUgNC44ODA3MiAxLjQ2MDkzQzUuMjQ0NzQgMS4zNDAyMSA1LjYyODk3IDEuMjkyMzkgNi4wMTE0NyAxLjMyMDE4QzYuMzkzOTggMS4zNDc5NyA2Ljc2NzI2IDEuNDUwODQgNy4xMSAxLjYyMjkxTDE3LjUgNi44MjI5MVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXIgbWItNSB0ZXh0LWNlbnRlclwiPlByZXZpZXcgbm90IGF2YWlsYWJsZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGVzY3JpcHRpb24gbWItNSB0ZXh0LWNlbnRlclwiPlRoZSBzZWxlY3RlZCBjYW1lcmEgaXMgbm90IGF2YWlsYWJsZSBhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBtb21lbnQuPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB4LTIgbWItMiBtdC0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTIgaW1nLWRvYy10aW1lXCI+VGFuZ28gSUQgOiB7e29iaj8udGVtcGxkfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8uc3RhdHVzID09PSdhcHByb3ZlZCdcIiBjbGFzcz1cIm1zLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBzdHlsZT1cIndpZHRoOiAyMHB4OyBoZWlnaHQ6IDIwcHg7XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTFcIiB2aWV3Qm94PVwiMCAwIDEwIDExXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHk9XCIwLjVcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiByeD1cIjVcIiBmaWxsPVwiI0QxRkFERlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk03LjEyMjIgMy41NzkxOUw0LjEzODg3IDYuNDU4MzZMMy4zNDcyIDUuNjEyNTNDMy4yMDEzNyA1LjQ3NTAzIDIuOTcyMiA1LjQ2NjY5IDIuODA1NTMgNS41ODMzNkMyLjY0MzAzIDUuNzA0MTkgMi41OTcyIDUuOTE2NjkgMi42OTcyIDYuMDg3NTNMMy42MzQ3IDcuNjEyNTNDMy43MjYzNyA3Ljc1NDE5IDMuODg0NyA3Ljg0MTY5IDQuMDYzODcgNy44NDE2OUM0LjIzNDcgNy44NDE2OSA0LjM5NzIgNy43NTQxOSA0LjQ4ODg3IDcuNjEyNTNDNC42Mzg4NyA3LjQxNjY5IDcuNTAxMzcgNC4wMDQxOSA3LjUwMTM3IDQuMDA0MTlDNy44NzYzNyAzLjYyMDg2IDcuNDIyMiAzLjI4MzM2IDcuMTIyMiAzLjU3NTAzVjMuNTc5MTlaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzEyQjc2QVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8uc3RhdHVzID09PSdyZWplY3RlZCdcIiBjbGFzcz1cIm1zLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBzdHlsZT1cIndpZHRoOiAyMHB4OyBoZWlnaHQ6IDIwcHg7XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTNcIiB2aWV3Qm94PVwiMCAwIDEzIDEzXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTQyOF81OTQ4NClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuNTI5NjEgMS41SDguNjY5NjFMMTEuNTk5NiA0LjQzVjguNTdMOC42Njk2MSAxMS41SDQuNTI5NjFMMS41OTk2MSA4LjU3VjQuNDNMNC41Mjk2MSAxLjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNGRUU0RTJcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wOTk2MSA1TDUuMDk5NjEgOE01LjA5OTYxIDVMOC4wOTk2MSA4TTQuNTI5NjEgMS41SDguNjY5NjFMMTEuNTk5NiA0LjQzVjguNTdMOC42Njk2MSAxMS41SDQuNTI5NjFMMS41OTk2MSA4LjU3VjQuNDNMNC41Mjk2MSAxLjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xNDI4XzU5NDg0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLjU5OTYwOSAwLjUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWctZG9jLXZhbHVlXCI+RW50cnkgVGltZSA6IHt7b2JqPy5lbnRyeVRtZSB8fCBvYmo/LmVudHJ5VGltZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTUgdGV4dC1lbmQgcHktM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J25vbi10YWdnaW5nJ1wiIG5nYlRvb2x0aXA9XCJZZXQgdG8gdGFnIHRoZSBjdXN0b21lclwiIHBsYWNlbWVudD1cInRvcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTlcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTkgMThcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02LjAyMzQ0IDUuNjI1SDYuMDMwOTRNMTYuMjE1OSAxMC40MzI1TDEwLjgzODQgMTUuODFDMTAuNjk5MSAxNS45NDk1IDEwLjUzMzcgMTYuMDYwMSAxMC4zNTE2IDE2LjEzNTZDMTAuMTY5NSAxNi4yMTExIDkuOTc0MzEgMTYuMjQ5OSA5Ljc3NzE5IDE2LjI0OTlDOS41ODAwNiAxNi4yNDk5IDkuMzg0ODcgMTYuMjExMSA5LjIwMjc4IDE2LjEzNTZDOS4wMjA2OCAxNi4wNjAxIDguODU1MjUgMTUuOTQ5NSA4LjcxNTk0IDE1LjgxTDIuMjczNDQgOS4zNzVWMS44NzVIOS43NzM0NEwxNi4yMTU5IDguMzE3NUMxNi40OTUzIDguNTk4NTQgMTYuNjUyMSA4Ljk3ODcyIDE2LjY1MjEgOS4zNzVDMTYuNjUyMSA5Ljc3MTI4IDE2LjQ5NTMgMTAuMTUxNSAxNi4yMTU5IDEwLjQzMjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdkdXBsaWNhdGUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIm9iaj8uaXNQYXJlbnRcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDEwIDEwXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfNTY4XzEwMzY1NylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjA4Mzk4IDYuMjUwMDFIMS42NjczMkMxLjQ0NjMgNi4yNTAwMSAxLjIzNDM0IDYuMTYyMjEgMS4wNzgwNiA2LjAwNTkzQzAuOTIxNzgyIDUuODQ5NjUgMC44MzM5ODQgNS42Mzc2OSAwLjgzMzk4NCA1LjQxNjY4VjEuNjY2NjhDMC44MzM5ODQgMS40NDU2NiAwLjkyMTc4MiAxLjIzMzcgMS4wNzgwNiAxLjA3NzQyQzEuMjM0MzQgMC45MjExNDEgMS40NDYzIDAuODMzMzQ0IDEuNjY3MzIgMC44MzMzNDRINS40MTczMkM1LjYzODMzIDAuODMzMzQ0IDUuODUwMjkgMC45MjExNDEgNi4wMDY1NyAxLjA3NzQyQzYuMTYyODUgMS4yMzM3IDYuMjUwNjUgMS40NDU2NiA2LjI1MDY1IDEuNjY2NjhWMi4wODMzNE00LjU4Mzk4IDMuNzUwMDFIOC4zMzM5OEM4Ljc5NDIyIDMuNzUwMDEgOS4xNjczMiA0LjEyMzExIDkuMTY3MzIgNC41ODMzNFY4LjMzMzM0QzkuMTY3MzIgOC43OTM1OCA4Ljc5NDIyIDkuMTY2NjggOC4zMzM5OCA5LjE2NjY4SDQuNTgzOThDNC4xMjM3NSA5LjE2NjY4IDMuNzUwNjUgOC43OTM1OCAzLjc1MDY1IDguMzMzMzRWNC41ODMzNEMzLjc1MDY1IDQuMTIzMTEgNC4xMjM3NSAzLjc1MDAxIDQuNTgzOTggMy43NTAwMVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjVcIiBoZWlnaHQ9XCI1XCIgZmlsbD1cIiM0NzU0NjdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzU2OF8xMDM2NTdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhb2JqPy5pc1BhcmVudFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM1KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM1XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdlbXBsb3llZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM5KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjE2NTQgMTguMTg2VjE2LjUxOTRDMTQuMTY1NCAxNS42MzUzIDEzLjgxNDIgMTQuNzg3NSAxMy4xODkxIDE0LjE2MjNDMTIuNTYzOSAxMy41MzcyIDExLjcxNjEgMTMuMTg2IDEwLjgzMiAxMy4xODZINC4xNjUzNkMzLjI4MTMxIDEzLjE4NiAyLjQzMzQ2IDEzLjUzNzIgMS44MDgzNCAxNC4xNjIzQzEuMTgzMjIgMTQuNzg3NSAwLjgzMjAzMSAxNS42MzUzIDAuODMyMDMxIDE2LjUxOTRWMTguMTg2TTE5LjE2NTQgMTguMTg2VjE2LjUxOTRDMTkuMTY0OCAxNS43ODA4IDE4LjkxOSAxNS4wNjMzIDE4LjQ2NjUgMTQuNDc5NkMxOC4wMTQgMTMuODk1OSAxNy4zODA1IDEzLjQ3OSAxNi42NjU0IDEzLjI5NDRNMTMuMzMyIDMuMjk0MzdDMTQuMDQ5IDMuNDc3OTUgMTQuNjg0NiAzLjg5NDk1IDE1LjEzODQgNC40Nzk2M0MxNS41OTIyIDUuMDY0MyAxNS44Mzg2IDUuNzgzMzkgMTUuODM4NiA2LjUyMzU0QzE1LjgzODYgNy4yNjM2OCAxNS41OTIyIDcuOTgyNzcgMTUuMTM4NCA4LjU2NzQ0QzE0LjY4NDYgOS4xNTIxMiAxNC4wNDkgOS41NjkxMiAxMy4zMzIgOS43NTI3TTEwLjgzMiA2LjUxOTM3QzEwLjgzMiA4LjM2MDMyIDkuMzM5NjUgOS44NTI3IDcuNDk4NyA5Ljg1MjdDNS42NTc3NSA5Ljg1MjcgNC4xNjUzNiA4LjM2MDMyIDQuMTY1MzYgNi41MTkzN0M0LjE2NTM2IDQuNjc4NDIgNS42NTc3NSAzLjE4NjA0IDcuNDk4NyAzLjE4NjA0QzkuMzM5NjUgMy4xODYwNCAxMC44MzIgNC42Nzg0MiAxMC44MzIgNi41MTkzN1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2hvdXNlLWtlZXBpbmcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAyMSAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDY0MylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuMjYyMTkgMS4zNjcyMkMxMC4xNzc3IDAuNDU4OTc0IDExLjY2MiAwLjQ1ODk3NCAxMi41Nzc2IDEuMzY3MjJMMjAuMzEzMyA5LjA0MTUzQzIxLjIyODcgOS45NDk4IDIxLjIyODcgMTEuNDIyMyAyMC4zMTMzIDEyLjMzMDZMMTIuNTc3NiAyMC4wMDQ5QzExLjY2MiAyMC45MTMxIDEwLjE3NzcgMjAuOTEzMSA5LjI2MjE5IDIwLjAwNDlMNy4wNTE2NiAxNy44MTE5TDUuMDI1MzggMTkuODIyMUM0LjEwOTg3IDIwLjczMDMgMi42MjU1MyAyMC43MzAzIDEuNzEwMDIgMTkuODIyMUMwLjc5NDUxIDE4LjkxMzkgMC43OTQ1MSAxNy40NDEzIDEuNzEwMDIgMTYuNTMzMUwzLjczNjMgMTQuNTIyOUwxLjUyNjQ4IDEyLjMzMDZDMC42MTA5NjYgMTEuNDIyMyAwLjYxMDk2NiA5Ljk0OTggMS41MjY0OCA5LjA0MTUzTDkuMjYyMTkgMS4zNjcyMlpNMTEuNDcyNCAyLjQ2MzU3QzExLjE2NzIgMi4xNjA4MiAxMC42NzI0IDIuMTYwODIgMTAuMzY3MiAyLjQ2MzU3TDQuODQxNDUgNy45NDU1NkwxMy42ODIzIDE2LjcxNjNMMTkuMjA4MSAxMS4yMzQyQzE5LjUxMzMgMTAuOTMxNSAxOS41MTMzIDEwLjQ0MDYgMTkuMjA4MSAxMC4xMzc5TDE1LjMzOTkgNi4zMDAzMkwxNC4wNTA1IDcuNTc5NEMxMy43NDUzIDcuODgyMTQgMTMuMjUwNiA3Ljg4MjE0IDEyLjk0NTUgNy41Nzk0QzEyLjY0MDMgNy4yNzY2NCAxMi42NDAzIDYuNzg1NzkgMTIuOTQ1NSA2LjQ4MzA1TDE0LjIzNDcgNS4yMDM5N0wxMy4xMjk5IDQuMTA3ODZMOS45OTg3MiA3LjIxNDE4QzkuNjkzNTQgNy41MTY5MiA5LjE5ODczIDcuNTE2OTIgOC44OTM1NiA3LjIxNDE4QzguNTg4MzggNi45MTE0MyA4LjU4ODM4IDYuNDIwNTggOC44OTM1NiA2LjExNzgzTDEyLjAyNDcgMy4wMTE1MUwxMS40NzI0IDIuNDYzNTdaTTEyLjU3NzEgMTcuODEyNUwzLjczNjMzIDkuMDQxOTFMMi42MzE2IDEwLjEzNzlDMi4zMjY0MiAxMC40NDA2IDIuMzI2NDIgMTAuOTMxNSAyLjYzMTYgMTEuMjM0MkwxMC4zNjcyIDE4LjkwODVDMTAuNjcyNCAxOS4yMTEzIDExLjE2NzIgMTkuMjExMyAxMS40NzI0IDE4LjkwODVMMTIuNTc3MSAxNy44MTI1Wk00Ljg0MTMyIDE1LjYxOTJMMi44MTUxNCAxNy42Mjk0QzIuNTA5OTcgMTcuOTMyMSAyLjUwOTk3IDE4LjQyMyAyLjgxNTE0IDE4LjcyNThDMy4xMjAzMSAxOS4wMjg1IDMuNjE1MDkgMTkuMDI4NSAzLjkyMDI2IDE4LjcyNThMNS45NDY0NCAxNi43MTU2TDQuODQxMzIgMTUuNjE5MlpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNDc1NDY3XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2NDNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2p1bmsnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTMgNkg1TTUgNkgyMU01IDZWMjBDNSAyMC41MzA0IDUuMjEwNzEgMjEuMDM5MSA1LjU4NTc5IDIxLjQxNDJDNS45NjA4NiAyMS43ODkzIDYuNDY5NTcgMjIgNyAyMkgxN0MxNy41MzA0IDIyIDE4LjAzOTEgMjEuNzg5MyAxOC40MTQyIDIxLjQxNDJDMTguNzg5MyAyMS4wMzkxIDE5IDIwLjUzMDQgMTkgMjBWNkg1Wk04IDZWNEM4IDMuNDY5NTcgOC4yMTA3MSAyLjk2MDg2IDguNTg1NzkgMi41ODU3OUM4Ljk2MDg2IDIuMjEwNzEgOS40Njk1NyAyIDEwIDJIMTRDMTQuNTMwNCAyIDE1LjAzOTEgMi4yMTA3MSAxNS40MTQyIDIuNTg1NzlDMTUuNzg5MyAyLjk2MDg2IDE2IDMuNDY5NTcgMTYgNFY2TTEwIDExVjE3TTE0IDExVjE3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXItZ3JheSBwLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IHRpdGxlLXR5cGVcIj5TZWxlY3Qgbm9uLXNob3BwZXIgdHlwZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiB0ZXh0LWVuZFwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhKHVzZXJzPy5yb2xlID09PSd1c2VyJyAmJiB1c2Vycz8udXNlclR5cGUgPT09J2NsaWVudCcgJiYgc2VsZWN0ZWRSYWRpb1R5cGUgPT09J2p1bmsnKVwiPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiB0ZXh0LWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdvcGVuJykgJiYgIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ2Nsb3NlZCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1iLTMgdGV4dC1lbmQgZC1pbmxpbmUtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIENsZWFyIFRhZyBCdXR0b24gKHZpc2libGUgd2hlbiBFZGl0IGJ1dHRvbiBPUiBTYXZlL0NhbmNlbCBidXR0b25zIGFyZSB2aXNpYmxlKSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIXJldm9wc1R5cGVWYWx1ZSB8fCAocmV2b3BzVHlwZVZhbHVlICYmIGVkaXRCdG5TaG93KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIoc2VsZWN0ZWRSYWRpb1R5cGUgPT09IHVuZGVmaW5lZCB8fCBzZWxlY3RlZFJhZGlvVHlwZSA9PT0gJycpIHx8IChzZWxlY3RlZFJhZGlvVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0Lmxlbmd0aCA9PT0gMClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tY2xlYXItdGFnIGQtaW5saW5lLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyVmFsdWUoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiNDlcIiBoZWlnaHQ9XCI0OVwiIHZpZXdCb3g9XCIwIDAgNDkgNDlcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGZpbHRlcj1cInVybCgjZmlsdGVyMF9kXzUxNl85Njg0MSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMi4xNjc5N1wiIHk9XCIxLjA4NDQ3XCIgd2lkdGg9XCI0NC4wMzQyXCIgaGVpZ2h0PVwiNDQuMDI4NFwiIHJ4PVwiOC42NzQ0NVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRkVGM0YyXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMi43MTAxMlwiIHk9XCIxLjYyNjYzXCIgd2lkdGg9XCI0Mi45NDk5XCIgaGVpZ2h0PVwiNDIuOTQ0MVwiIHJ4PVwiOC4xMzIyOVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNGRUYzRjJcIiBzdHJva2Utd2lkdGg9XCIxLjA4NDMxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTMzLjQ4OTMgMjEuMzYxM0wzMy40OTEyIDIxLjM2NDNDMzQuMDUzMyAyMS45Mjk3IDM0LjM2OSAyMi42OTQ5IDM0LjM2OTEgMjMuNDkyMkMzNC4zNjkxIDI0LjI4OTUgMzQuMDUzMyAyNS4wNTQ2IDMzLjQ5MTIgMjUuNjIwMUwyNi43MjU2IDMyLjM4NTdDMjYuNDQ1NCAzMi42NjYxIDI2LjExMjIgMzIuODg4MiAyNS43NDYxIDMzLjA0QzI1LjM3OTggMzMuMTkxOSAyNC45ODczIDMzLjI3MDUgMjQuNTkwOCAzMy4yNzA1QzI0LjE5NDIgMzMuMjcwNSAyMy44MDEgMzMuMTkxOSAyMy40MzQ2IDMzLjA0QzIzLjA2ODYgMzIuODg4MyAyMi43MzYxIDMyLjY2NTkgMjIuNDU2MSAzMi4zODU3TDIwLjc2NzYgMzAuNjk5MkwyMi4zNjgyIDI5LjA5ODZMMjQuMDU1NyAzMC43ODQyTDI0LjA1NjYgMzAuNzg1MkMyNC4xMjY3IDMwLjg1NTMgMjQuMjEwMiAzMC45MTEyIDI0LjMwMTggMzAuOTQ5MkMyNC4zOTMzIDMwLjk4NzIgMjQuNDkxNyAzMS4wMDY4IDI0LjU5MDggMzEuMDA2OEMyNC42ODk5IDMxLjAwNjggMjQuNzg4MyAzMC45ODcyIDI0Ljg3OTkgMzAuOTQ5MkMyNC45NzEzIDMwLjkxMTMgMjUuMDU0MSAzMC44NTUyIDI1LjEyNCAzMC43ODUySDI1LjEyNUwzMS44ODc3IDI0LjAyMTVDMzIuMDI2NyAyMy44ODA0IDMyLjEwNTUgMjMuNjkwMyAzMi4xMDU1IDIzLjQ5MjJDMzIuMTA1NCAyMy4yOTQxIDMyLjAyNjcgMjMuMTAzOSAzMS44ODc3IDIyLjk2MjlMMzAuMTk2MyAyMS4yNzE1TDMxLjc5NzkgMTkuNjY5OUwzMy40ODkzIDIxLjM2MTNaTTI0LjY5ODIgMTIuOTMzNkMyNC45NTcxIDEyLjk1OTQgMjUuMjAxMSAxMy4wNzMzIDI1LjM4NjcgMTMuMjU4OEwzMC4xOTczIDE4LjA2OTNMMjguNTk1NyAxOS42NzA5TDI0LjExNjIgMTUuMTkxNEgxNi4yODUyVjIzLjAyMjVMMjAuNzY2NiAyNy40OTlMMTkuMTY2IDI5LjA5OTZMMTQuMzUzNSAyNC4yOTNDMTQuMTQxMSAyNC4wODA3IDE0LjAyMTUgMjMuNzkyNSAxNC4wMjE1IDIzLjQ5MjJWMTQuMDU5NkMxNC4wMjE3IDEzLjQzNDYgMTQuNTI4MyAxMi45Mjc3IDE1LjE1MzMgMTIuOTI3N0gyNC41ODU5TDI0LjY5ODIgMTIuOTMzNlpNMTkuODc4OSAxNy42NDM2QzIwLjUwMzggMTcuNjQzNiAyMS4wMTAzIDE4LjE1MDYgMjEuMDEwNyAxOC43NzU0QzIxLjAxMDcgMTkuNDAwNSAyMC41MDQgMTkuOTA4MiAxOS44Nzg5IDE5LjkwODJIMTkuODY5MUMxOS4yNDQyIDE5LjkwOCAxOC43MzczIDE5LjQwMDQgMTguNzM3MyAxOC43NzU0QzE4LjczNzggMTguMTUwOCAxOS4yNDQ1IDE3LjY0MzggMTkuODY5MSAxNy42NDM2SDE5Ljg3ODlaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNCNDIzMThcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMzMuMTY5OSAxNC4wODQ1TDE1LjE2OTkgMzIuMDg0NVwiIHN0cm9rZT1cIiNCNDIzMThcIiBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMF9kXzUxNl85Njg0MVwiIHg9XCItMC4wMDA2NDMyNTNcIiB5PVwiMC4wMDAxNjY2NTVcIiB3aWR0aD1cIjQ4LjM3MjRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI0OC4zNjU1XCIgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZU9mZnNldCBkeT1cIjEuMDg0MzFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMS4wODQzMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwLjA2Mjc0NTEgMCAwIDAgMCAwLjA5NDExNzYgMCAwIDAgMCAwLjE1Njg2MyAwIDAgMCAwLjA1IDBcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD1cImVmZmVjdDFfZHJvcFNoYWRvd181MTZfOTY4NDFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW49XCJTb3VyY2VHcmFwaGljXCIgaW4yPVwiZWZmZWN0MV9kcm9wU2hhZG93XzUxNl85Njg0MVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJzaGFwZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWx0ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ2FuY2VsIGFuZCBTYXZlIEJ1dHRvbnMgKHdoZW4gIXJldm9wc1R5cGVWYWx1ZSkgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFyZXZvcHNUeXBlVmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBtZS0yXCIgKGNsaWNrKT1cImNhbmNlbCgpXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBpZD1cImFsZXJ0LXRvYXN0XCIgKGNsaWNrKT1cInNhdmUoc2VsZWN0ZWRUeXBlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiKHNlbGVjdGVkUmFkaW9UeXBlID09PSB1bmRlZmluZWQgfHwgc2VsZWN0ZWRSYWRpb1R5cGUgPT09ICcnKSB8fCAoc2VsZWN0ZWRSYWRpb1R5cGUgPT09ICdkdXBsaWNhdGUnICYmIHNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdC5sZW5ndGggPT09IDApXCI+U2F2ZTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRWRpdCBCdXR0b24gKHdoZW4gcmV2b3BzVHlwZVZhbHVlICYmIGVkaXRCdG5TaG93KSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicmV2b3BzVHlwZVZhbHVlICYmIGVkaXRCdG5TaG93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgbWUtMlwiIChjbGljayk9XCJlZGl0VmFsdWUoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjY1NTQgMS43MTA0N0MxNC44OTI3IDEuNDczMTUgMTUuMTc0NSAxLjI4NDkgMTUuNDg0NSAxLjE1NjQ2QzE1Ljc5NDYgMS4wMjgwMiAxNi4xMjY5IDAuOTYxOTE0IDE2LjQ2MjYgMC45NjE5MTRDMTYuNzk4MiAwLjk2MTkxNCAxNy4xMzA1IDEuMDI4MDIgMTcuNDQwNiAxLjE1NjQ2QzE3Ljc1MDcgMS4yODQ5IDE4LjAzMjQgMS40NzMxNSAxOC4yNjk3IDEuNzEwNDdDMTguNTA3MSAxLjk0Nzc5IDE4LjY5NTMgMi4yMjk1MyAxOC44MjM4IDIuNTM5NjFDMTguOTUyMiAyLjg0OTY5IDE5LjAxODMgMy4xODIwMiAxOS4wMTgzIDMuNTE3NjVDMTkuMDE4MyAzLjg1MzI3IDE4Ljk1MjIgNC4xODU2MSAxOC44MjM4IDQuNDk1NjhDMTguNjk1MyA0LjgwNTc2IDE4LjUwNzEgNS4wODc1IDE4LjI2OTcgNS4zMjQ4Mkw2LjA3MTMgMTcuNTIzM0wxLjEwMTU2IDE4Ljg3ODZMMi40NTY5NSAxMy45MDg5TDE0LjY1NTQgMS43MTA0N1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuODEwNzlcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+RWRpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBteS0xNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgbmFtZT1cImR1cGxpY2F0ZVwiIGlkPVwiZHVwbGljYXRlLXNwbGl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUeXBlXCIgW3ZhbHVlXT1cIidkdXBsaWNhdGUnXCIgKGNoYW5nZSk9XCJvblJhZGlvQ2hhbmdlKHNlbGVjdGVkVHlwZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJldm9wc1R5cGVWYWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiZHVwbGljYXRlLXNwbGl0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTVcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDIwIDIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM1KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM1XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTUgdGFnLWNsYXNzXCI+RHVwbGljYXRlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG15LTE1XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwiZW1wbG95ZWVcIiBpZD1cImVtcGxveWVlLXNwbGl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUeXBlXCIgW3ZhbHVlXT1cIidlbXBsb3llZSdcIiAoY2hhbmdlKT1cIm9uUmFkaW9DaGFuZ2Uoc2VsZWN0ZWRUeXBlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicmV2b3BzVHlwZVZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJlbXBsb3llZS1zcGxpdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01XCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAyMCAyMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzOSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xNjU0IDE4LjE4NlYxNi41MTk0QzE0LjE2NTQgMTUuNjM1MyAxMy44MTQyIDE0Ljc4NzUgMTMuMTg5MSAxNC4xNjIzQzEyLjU2MzkgMTMuNTM3MiAxMS43MTYxIDEzLjE4NiAxMC44MzIgMTMuMTg2SDQuMTY1MzZDMy4yODEzMSAxMy4xODYgMi40MzM0NiAxMy41MzcyIDEuODA4MzQgMTQuMTYyM0MxLjE4MzIyIDE0Ljc4NzUgMC44MzIwMzEgMTUuNjM1MyAwLjgzMjAzMSAxNi41MTk0VjE4LjE4Nk0xOS4xNjU0IDE4LjE4NlYxNi41MTk0QzE5LjE2NDggMTUuNzgwOCAxOC45MTkgMTUuMDYzMyAxOC40NjY1IDE0LjQ3OTZDMTguMDE0IDEzLjg5NTkgMTcuMzgwNSAxMy40NzkgMTYuNjY1NCAxMy4yOTQ0TTEzLjMzMiAzLjI5NDM3QzE0LjA0OSAzLjQ3Nzk1IDE0LjY4NDYgMy44OTQ5NSAxNS4xMzg0IDQuNDc5NjNDMTUuNTkyMiA1LjA2NDMgMTUuODM4NiA1Ljc4MzM5IDE1LjgzODYgNi41MjM1NEMxNS44Mzg2IDcuMjYzNjggMTUuNTkyMiA3Ljk4Mjc3IDE1LjEzODQgOC41Njc0NEMxNC42ODQ2IDkuMTUyMTIgMTQuMDQ5IDkuNTY5MTIgMTMuMzMyIDkuNzUyN00xMC44MzIgNi41MTkzN0MxMC44MzIgOC4zNjAzMiA5LjMzOTY1IDkuODUyNyA3LjQ5ODcgOS44NTI3QzUuNjU3NzUgOS44NTI3IDQuMTY1MzYgOC4zNjAzMiA0LjE2NTM2IDYuNTE5MzdDNC4xNjUzNiA0LjY3ODQyIDUuNjU3NzUgMy4xODYwNCA3LjQ5ODcgMy4xODYwNEM5LjMzOTY1IDMuMTg2MDQgMTAuODMyIDQuNjc4NDIgMTAuODMyIDYuNTE5MzdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTUgdGFnLWNsYXNzXCI+RW1wbG95ZWUvU3RhZmY8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbXktMTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJob3VzZS1rZWVwaW5nXCIgaWQ9XCJob3VzZS1rZWVwaW5nLXNwbGl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUeXBlXCIgW3ZhbHVlXT1cIidob3VzZS1rZWVwaW5nJ1wiIChjaGFuZ2UpPVwib25SYWRpb0NoYW5nZShzZWxlY3RlZFR5cGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZXZvcHNUeXBlVmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImhvdXNlLWtlZXBpbmctc3BsaXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMjEgMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2NDMpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05LjI2MjE5IDEuMzY3MjJDMTAuMTc3NyAwLjQ1ODk3NCAxMS42NjIgMC40NTg5NzQgMTIuNTc3NiAxLjM2NzIyTDIwLjMxMzMgOS4wNDE1M0MyMS4yMjg3IDkuOTQ5OCAyMS4yMjg3IDExLjQyMjMgMjAuMzEzMyAxMi4zMzA2TDEyLjU3NzYgMjAuMDA0OUMxMS42NjIgMjAuOTEzMSAxMC4xNzc3IDIwLjkxMzEgOS4yNjIxOSAyMC4wMDQ5TDcuMDUxNjYgMTcuODExOUw1LjAyNTM4IDE5LjgyMjFDNC4xMDk4NyAyMC43MzAzIDIuNjI1NTMgMjAuNzMwMyAxLjcxMDAyIDE5LjgyMjFDMC43OTQ1MSAxOC45MTM5IDAuNzk0NTEgMTcuNDQxMyAxLjcxMDAyIDE2LjUzMzFMMy43MzYzIDE0LjUyMjlMMS41MjY0OCAxMi4zMzA2QzAuNjEwOTY2IDExLjQyMjMgMC42MTA5NjYgOS45NDk4IDEuNTI2NDggOS4wNDE1M0w5LjI2MjE5IDEuMzY3MjJaTTExLjQ3MjQgMi40NjM1N0MxMS4xNjcyIDIuMTYwODIgMTAuNjcyNCAyLjE2MDgyIDEwLjM2NzIgMi40NjM1N0w0Ljg0MTQ1IDcuOTQ1NTZMMTMuNjgyMyAxNi43MTYzTDE5LjIwODEgMTEuMjM0MkMxOS41MTMzIDEwLjkzMTUgMTkuNTEzMyAxMC40NDA2IDE5LjIwODEgMTAuMTM3OUwxNS4zMzk5IDYuMzAwMzJMMTQuMDUwNSA3LjU3OTRDMTMuNzQ1MyA3Ljg4MjE0IDEzLjI1MDYgNy44ODIxNCAxMi45NDU1IDcuNTc5NEMxMi42NDAzIDcuMjc2NjQgMTIuNjQwMyA2Ljc4NTc5IDEyLjk0NTUgNi40ODMwNUwxNC4yMzQ3IDUuMjAzOTdMMTMuMTI5OSA0LjEwNzg2TDkuOTk4NzIgNy4yMTQxOEM5LjY5MzU0IDcuNTE2OTIgOS4xOTg3MyA3LjUxNjkyIDguODkzNTYgNy4yMTQxOEM4LjU4ODM4IDYuOTExNDMgOC41ODgzOCA2LjQyMDU4IDguODkzNTYgNi4xMTc4M0wxMi4wMjQ3IDMuMDExNTFMMTEuNDcyNCAyLjQ2MzU3Wk0xMi41NzcxIDE3LjgxMjVMMy43MzYzMyA5LjA0MTkxTDIuNjMxNiAxMC4xMzc5QzIuMzI2NDIgMTAuNDQwNiAyLjMyNjQyIDEwLjkzMTUgMi42MzE2IDExLjIzNDJMMTAuMzY3MiAxOC45MDg1QzEwLjY3MjQgMTkuMjExMyAxMS4xNjcyIDE5LjIxMTMgMTEuNDcyNCAxOC45MDg1TDEyLjU3NzEgMTcuODEyNVpNNC44NDEzMiAxNS42MTkyTDIuODE1MTQgMTcuNjI5NEMyLjUwOTk3IDE3LjkzMjEgMi41MDk5NyAxOC40MjMgMi44MTUxNCAxOC43MjU4QzMuMTIwMzEgMTkuMDI4NSAzLjYxNTA5IDE5LjAyODUgMy45MjAyNiAxOC43MjU4TDUuOTQ2NDQgMTYuNzE1Nkw0Ljg0MTMyIDE1LjYxOTJaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzQ3NTQ2N1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjQzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTUgdGFnLWNsYXNzXCI+SG91c2UgS2VlcGluZzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBteS0xNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgbmFtZT1cImp1bmtcIiBpZD1cImp1bmstc3BsaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFR5cGVcIiBbdmFsdWVdPVwiJ2p1bmsnXCIgKGNoYW5nZSk9XCJvblJhZGlvQ2hhbmdlKHNlbGVjdGVkVHlwZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJldm9wc1R5cGVWYWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwianVuay1zcGxpdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01XCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTMgNkg1TTUgNkgyMU01IDZWMjBDNSAyMC41MzA0IDUuMjEwNzEgMjEuMDM5MSA1LjU4NTc5IDIxLjQxNDJDNS45NjA4NiAyMS43ODkzIDYuNDY5NTcgMjIgNyAyMkgxN0MxNy41MzA0IDIyIDE4LjAzOTEgMjEuNzg5MyAxOC40MTQyIDIxLjQxNDJDMTguNzg5MyAyMS4wMzkxIDE5IDIwLjUzMDQgMTkgMjBWNkg1Wk04IDZWNEM4IDMuNDY5NTcgOC4yMTA3MSAyLjk2MDg2IDguNTg1NzkgMi41ODU3OUM4Ljk2MDg2IDIuMjEwNzEgOS40Njk1NyAyIDEwIDJIMTRDMTQuNTMwNCAyIDE1LjAzOTEgMi4yMTA3MSAxNS40MTQyIDIuNTg1NzlDMTUuNzg5MyAyLjk2MDg2IDE2IDMuNDY5NTcgMTYgNFY2TTEwIDExVjE3TTE0IDExVjE3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTUgdGFnLWNsYXNzXCI+SnVuazwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+UmVtYXJrcyAoT3B0aW9uYWwpPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcm93cz1cIjNcIiBwbGFjZWhvbGRlcj1cIkNvbW1lbnQgaGVyZVwiIFsobmdNb2RlbCldPVwidXNlckNvbW1lbnRcIj48L3RleHRhcmVhPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBHcmlkL0xpc3QgVmlldyAoc2hvd24gd2hlbiBzcGxpdC1zY3JlZW4gaXMgbm90IGVuYWJsZWQpIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB4LTAgaW1nLXRyYWZmaWMgY29udGFpbiBoaWdoLTQwMHB4IHNjcm9sbC15XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidmlld01vZGUgPT09ICdncmlkJyAmJiAhbm9EYXRhICYmICFsb2FkaW5nICYmICFzcGxpdFNjcmVlbkVuYWJsZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9iaiBvZiBpbWFnZXNBcnJheURhdGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW1hZ2VDYXJkOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogb2JqIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC12aWV3LXdyYXBwZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ2aWV3TW9kZSA9PT0gJ2xpc3QnICYmICFub0RhdGEgJiYgIWxvYWRpbmcgJiYgIXNwbGl0U2NyZWVuRW5hYmxlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtZ3JvdXAgbWItNVwiICpuZ0Zvcj1cImxldCBncm91cCBvZiBsaXN0Vmlld0dyb3Vwc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWdyb3VwLWhlYWRlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwLXRpdGxlXCI+e3sgZ3JvdXA/LnRpbWVSYW5nZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdyb3VwLWNvdW50IGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQgbXMtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMTQ5XzIzNDQwKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yIDkuMDAwNzdINC43NVY5LjYyNTc3QzQuNzUgOS45OTA0NSA0LjYwNTEzIDEwLjM0MDIgNC4zNDcyNyAxMC41OThDNC4wODk0MSAxMC44NTU5IDMuNzM5NjcgMTEuMDAwOCAzLjM3NSAxMS4wMDA4QzMuMDEwMzMgMTEuMDAwOCAyLjY2MDU5IDEwLjg1NTkgMi40MDI3MyAxMC41OThDMi4xNDQ4NyAxMC4zNDAyIDIgOS45OTA0NSAyIDkuNjI1NzdWOS4wMDA3N1pNNCAzLjA2MDc3QzUgMy4wNjA3NyA1LjUgNC41MDA3NyA1LjUgNS41MDA3N0M1LjUgNi4wMDA3NyA1LjI1IDYuNTAwNzcgNSA3LjI1MDc3TDQuNzUgOC4wMDA3N0gyQzIgNy41MDA3NyAxLjc1IDYuNzUwNzcgMS43NSA1LjUwMDc3QzEuNzUgNC4yNTA3NyAyLjc0OSAzLjA2MDc3IDQgMy4wNjA3N1pNMTAuMDI3IDcuMDQ5NzdMOS45MTg1IDcuNjY1MjdDOS44NTExNyA4LjAyMDU4IDkuNjQ2NTYgOC4zMzUwNyA5LjM0OTAxIDguNTQwNkM5LjA1MTQ2IDguNzQ2MTMgOC42ODQ5MiA4LjgyNjE2IDguMzI4NzggOC43NjMzN0M3Ljk3MjYzIDguNzAwNTcgNy42NTU1NyA4LjQ5OTk5IDcuNDQ2MjYgOC4yMDUwOUM3LjIzNjk1IDcuOTEwMTggNy4xNTIyNSA3LjU0NDY5IDcuMjEwNSA3LjE4Nzc3TDcuMzE4NSA2LjU3Mjc3TDEwLjAyNyA3LjA0OTc3Wk05LjA4OSAwLjg1MzI3MkMxMC4zMjEgMS4wNzAyNyAxMS4wOTggMi40MTU3NyAxMC44ODEgMy42NDY3N0MxMC42NjQgNC44Nzc3NyAxMC4yODc1IDUuNTcyNzcgMTAuMjAxIDYuMDY1MjdMNy40OTI1IDUuNTg3NzdMNy4zNzY1IDQuODA1NzdDNy4yNjA1IDQuMDIzNzcgNy4xMDE1IDMuNDg3NzcgNy4xODggMi45OTU3N0M3LjM2MTUgMi4wMTA3NyA4LjEwNCAwLjY3OTc3MiA5LjA4OSAwLjg1MzI3MlpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMwMEEzRkZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjE0OV8yMzQ0MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz57eyBncm91cD8uZGF0YT8ubGVuZ3RoIHx8IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZ3gtNCBsaXN0LWdyb3VwLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvYmogb2YgZ3JvdXA/LmRhdGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImltYWdlQ2FyZDsgY29udGV4dDogeyAkaW1wbGljaXQ6IG9iaiB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaW1hZ2VDYXJkIGxldC1vYmo+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIG1haW4gaW1hZ2UgY2FyZCBzZWxlY3Rpb24gc2VjdGlvbi0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInR5cGUgIT09ICdkdXBsaWNhdGUnIHx8ICh0eXBlID09PSAnZHVwbGljYXRlJyYmIG9iai5yZXZvcHNUeXBlID09PSAnZHVwbGljYXRlJyAmJiBvYmouZHVwbGljYXRlSW1hZ2VQYXRoPy5sZW5ndGggPiAwKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtbWQtMyBib3JkZXItZ3JheSBteC0yIHAtMiBtdC01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBDb25kaXRpb246IE9ubHkgc2hvdyBpZiBub3QgZHVwbGljYXRlIE9SIGR1cGxpY2F0ZSB3aXRoIG5vbi1lbXB0eSBkdXBsaWNhdGVJbWFnZVBhdGggLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmMgY3Vyc29yLXBvaW50ZXJcIiBbc3JjXT1cImltYWdlVXJsICsgb2JqPy5maWxlUGF0aFwiIChlcnJvcik9XCJvYmouZmlsZVBhdGggPSBudWxsXCIgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RJbWFnZUZvclNwbGl0VmlldyhvYmopXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFvYmo/LmZpbGVQYXRoXCIgY2xhc3M9XCJuby1wcmV2aWV3XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWItNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIzXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIzIDIwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJHcm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlZlY3RvclwiIGQ9XCJNNi41IDYuMzIyMjdINi41MU0xNi4yNSA5LjMyMjI3SDIxLjVMMTggMTYuMzIyM0wxNC45MSAxMi4wMDIzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJWZWN0b3JfMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEuNSAxNi4zMjI5SDUuMjZDNS42MzI3MyAxNi4zMjU1IDUuOTk4NzcgMTYuMjIzOSA2LjMxNjgyIDE2LjAyOTVDNi42MzQ4NyAxNS44MzUyIDYuODkyMjggMTUuNTU1OCA3LjA2IDE1LjIyMjlMOC41IDEyLjMyMjlNMS41IDE4LjMyMjlWMTQuMzIyOU0xNy41IDYuODIyOTFMMTMuNSAxNC44MjI5TDMuMTEgOS42MjI5MUMyLjQyMDMzIDkuMjc1NTMgMS44OTYzNSA4LjY2OTEgMS42NTI3MiA3LjkzNjMyQzEuNDA5MDkgNy4yMDM1NCAxLjQ2NTY0IDYuNDA0MSAxLjgxIDUuNzEyOTFMMy4xOSAyLjkyMjkxQzMuMzYyIDIuNTgwMTQgMy41OTk4NCAyLjI3NDYgMy44ODk5NCAyLjAyMzc1QzQuMTgwMDMgMS43NzI5IDQuNTE2NyAxLjU4MTY1IDQuODgwNzIgMS40NjA5M0M1LjI0NDc0IDEuMzQwMjEgNS42Mjg5NyAxLjI5MjM5IDYuMDExNDcgMS4zMjAxOEM2LjM5Mzk4IDEuMzQ3OTcgNi43NjcyNiAxLjQ1MDg0IDcuMTEgMS42MjI5MUwxNy41IDYuODIyOTFaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXIgbWItNSB0ZXh0LWNlbnRlclwiPlByZXZpZXcgbm90IGF2YWlsYWJsZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXNjcmlwdGlvbiBtYi01IHRleHQtY2VudGVyXCI+VGhlIHNlbGVjdGVkIGNhbWVyYSBpcyBub3QgYXZhaWxhYmxlIGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbWVudC48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInR5cGUgIT09ICdkdXBsaWNhdGUnIHx8ICh0eXBlID09PSAnZHVwbGljYXRlJyYmIG9iai5yZXZvcHNUeXBlID09PSAnZHVwbGljYXRlJyAmJiBvYmouZHVwbGljYXRlSW1hZ2VQYXRoPy5sZW5ndGggPiAwKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm93IHB4LTIgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS0yIGltZy1kb2MtdGltZVwiPlRhbmdvIElEIDoge3tvYmo/LnRlbXBsZH19IDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKHR5cGUgPT09ICdkdXBsaWNhdGUnJiYgb2JqLnJldm9wc1R5cGUgPT09ICdkdXBsaWNhdGUnICYmIG9iai5kdXBsaWNhdGVJbWFnZVBhdGg/Lmxlbmd0aCA+IDApXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJteC0yIGJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnlcIj57e29iai5kdXBsaWNhdGVJbWFnZVBhdGg/Lmxlbmd0aH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5zdGF0dXMgPT09J2FwcHJvdmVkJ1wiIGNsYXNzPVwibXMtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHN0eWxlPVwid2lkdGg6IDIwcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjBweDtcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxMVwiIHZpZXdCb3g9XCIwIDAgMTAgMTFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeT1cIjAuNVwiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHJ4PVwiNVwiIGZpbGw9XCIjRDFGQURGXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTcuMTIyMiAzLjU3OTE5TDQuMTM4ODcgNi40NTgzNkwzLjM0NzIgNS42MTI1M0MzLjIwMTM3IDUuNDc1MDMgMi45NzIyIDUuNDY2NjkgMi44MDU1MyA1LjU4MzM2QzIuNjQzMDMgNS43MDQxOSAyLjU5NzIgNS45MTY2OSAyLjY5NzIgNi4wODc1M0wzLjYzNDcgNy42MTI1M0MzLjcyNjM3IDcuNzU0MTkgMy44ODQ3IDcuODQxNjkgNC4wNjM4NyA3Ljg0MTY5QzQuMjM0NyA3Ljg0MTY5IDQuMzk3MiA3Ljc1NDE5IDQuNDg4ODcgNy42MTI1M0M0LjYzODg3IDcuNDE2NjkgNy41MDEzNyA0LjAwNDE5IDcuNTAxMzcgNC4wMDQxOUM3Ljg3NjM3IDMuNjIwODYgNy40MjIyIDMuMjgzMzYgNy4xMjIyIDMuNTc1MDNWMy41NzkxOVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMTJCNzZBXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5zdGF0dXMgPT09J3JlamVjdGVkJ1wiIGNsYXNzPVwibXMtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHN0eWxlPVwid2lkdGg6IDIwcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjBweDtcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxM1wiIHZpZXdCb3g9XCIwIDAgMTMgMTNcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xNDI4XzU5NDg0KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNC41Mjk2MSAxLjVIOC42Njk2MUwxMS41OTk2IDQuNDNWOC41N0w4LjY2OTYxIDExLjVINC41Mjk2MUwxLjU5OTYxIDguNTdWNC40M0w0LjUyOTYxIDEuNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0ZFRTRFMlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjA5OTYxIDVMNS4wOTk2MSA4TTUuMDk5NjEgNUw4LjA5OTYxIDhNNC41Mjk2MSAxLjVIOC42Njk2MUwxMS41OTk2IDQuNDNWOC41N0w4LjY2OTYxIDExLjVINC41Mjk2MUwxLjU5OTYxIDguNTdWNC40M0w0LjUyOTYxIDEuNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE0MjhfNTk0ODRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuNTk5NjA5IDAuNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltZy1kb2MtdmFsdWVcIj5FbnRyeSBUaW1lIDoge3tvYmo/LmVudHJ5VG1lfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNSB0ZXh0LWVuZCBweS0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nbm9uLXRhZ2dpbmcnXCIgbmdiVG9vbHRpcD1cIllldCB0byB0YWcgdGhlIGN1c3RvbWVyXCIgcGxhY2VtZW50PVwidG9wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAxOSAxOFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMDIzNDQgNS42MjVINi4wMzA5NE0xNi4yMTU5IDEwLjQzMjVMMTAuODM4NCAxNS44MUMxMC42OTkxIDE1Ljk0OTUgMTAuNTMzNyAxNi4wNjAxIDEwLjM1MTYgMTYuMTM1NkMxMC4xNjk1IDE2LjIxMTEgOS45NzQzMSAxNi4yNDk5IDkuNzc3MTkgMTYuMjQ5OUM5LjU4MDA2IDE2LjI0OTkgOS4zODQ4NyAxNi4yMTExIDkuMjAyNzggMTYuMTM1NkM5LjAyMDY4IDE2LjA2MDEgOC44NTUyNSAxNS45NDk1IDguNzE1OTQgMTUuODFMMi4yNzM0NCA5LjM3NVYxLjg3NUg5Ljc3MzQ0TDE2LjIxNTkgOC4zMTc1QzE2LjQ5NTMgOC41OTg1NCAxNi42NTIxIDguOTc4NzIgMTYuNjUyMSA5LjM3NUMxNi42NTIxIDkuNzcxMjggMTYuNDk1MyAxMC4xNTE1IDE2LjIxNTkgMTAuNDMyNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2R1cGxpY2F0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwib2JqPy5pc1BhcmVudFwiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMTAgMTBcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF81NjhfMTAzNjU3KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIuMDgzOTggNi4yNTAwMUgxLjY2NzMyQzEuNDQ2MyA2LjI1MDAxIDEuMjM0MzQgNi4xNjIyMSAxLjA3ODA2IDYuMDA1OTNDMC45MjE3ODIgNS44NDk2NSAwLjgzMzk4NCA1LjYzNzY5IDAuODMzOTg0IDUuNDE2NjhWMS42NjY2OEMwLjgzMzk4NCAxLjQ0NTY2IDAuOTIxNzgyIDEuMjMzNyAxLjA3ODA2IDEuMDc3NDJDMS4yMzQzNCAwLjkyMTE0MSAxLjQ0NjMgMC44MzMzNDQgMS42NjczMiAwLjgzMzM0NEg1LjQxNzMyQzUuNjM4MzMgMC44MzMzNDQgNS44NTAyOSAwLjkyMTE0MSA2LjAwNjU3IDEuMDc3NDJDNi4xNjI4NSAxLjIzMzcgNi4yNTA2NSAxLjQ0NTY2IDYuMjUwNjUgMS42NjY2OFYyLjA4MzM0TTQuNTgzOTggMy43NTAwMUg4LjMzMzk4QzguNzk0MjIgMy43NTAwMSA5LjE2NzMyIDQuMTIzMTEgOS4xNjczMiA0LjU4MzM0VjguMzMzMzRDOS4xNjczMiA4Ljc5MzU4IDguNzk0MjIgOS4xNjY2OCA4LjMzMzk4IDkuMTY2NjhINC41ODM5OEM0LjEyMzc1IDkuMTY2NjggMy43NTA2NSA4Ljc5MzU4IDMuNzUwNjUgOC4zMzMzNFY0LjU4MzM0QzMuNzUwNjUgNC4xMjMxMSA0LjEyMzc1IDMuNzUwMDEgNC41ODM5OCAzLjc1MDAxWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNVwiIGhlaWdodD1cIjVcIiBmaWxsPVwiIzQ3NTQ2N1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfNTY4XzEwMzY1N1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFvYmo/LmlzUGFyZW50XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNC4xNjc5NyAxMy4xODU5SDMuMzM0NjRDMi44OTI2MSAxMy4xODU5IDIuNDY4NjggMTMuMDEwMyAyLjE1NjEyIDEyLjY5NzdDMS44NDM1NiAxMi4zODUyIDEuNjY3OTcgMTEuOTYxMiAxLjY2Nzk3IDExLjUxOTJWNC4wMTkyMUMxLjY2Nzk3IDMuNTc3MTggMS44NDM1NiAzLjE1MzI2IDIuMTU2MTIgMi44NDA2OUMyLjQ2ODY4IDIuNTI4MTMgMi44OTI2MSAyLjM1MjU0IDMuMzM0NjQgMi4zNTI1NEgxMC44MzQ2QzExLjI3NjcgMi4zNTI1NCAxMS43MDA2IDIuNTI4MTMgMTIuMDEzMSAyLjg0MDY5QzEyLjMyNTcgMy4xNTMyNiAxMi41MDEzIDMuNTc3MTggMTIuNTAxMyA0LjAxOTIxVjQuODUyNTRNOS4xNjc5NyA4LjE4NTg3SDE2LjY2OEMxNy41ODg0IDguMTg1ODcgMTguMzM0NiA4LjkzMjA2IDE4LjMzNDYgOS44NTI1NFYxNy4zNTI1QzE4LjMzNDYgMTguMjczIDE3LjU4ODQgMTkuMDE5MiAxNi42NjggMTkuMDE5Mkg5LjE2Nzk3QzguMjQ3NDkgMTkuMDE5MiA3LjUwMTMgMTguMjczIDcuNTAxMyAxNy4zNTI1VjkuODUyNTRDNy41MDEzIDguOTMyMDYgOC4yNDc0OSA4LjE4NTg3IDkuMTY3OTcgOC4xODU4N1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2VtcGxveWVlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMTY1NCAxOC4xODZWMTYuNTE5NEMxNC4xNjU0IDE1LjYzNTMgMTMuODE0MiAxNC43ODc1IDEzLjE4OTEgMTQuMTYyM0MxMi41NjM5IDEzLjUzNzIgMTEuNzE2MSAxMy4xODYgMTAuODMyIDEzLjE4Nkg0LjE2NTM2QzMuMjgxMzEgMTMuMTg2IDIuNDMzNDYgMTMuNTM3MiAxLjgwODM0IDE0LjE2MjNDMS4xODMyMiAxNC43ODc1IDAuODMyMDMxIDE1LjYzNTMgMC44MzIwMzEgMTYuNTE5NFYxOC4xODZNMTkuMTY1NCAxOC4xODZWMTYuNTE5NEMxOS4xNjQ4IDE1Ljc4MDggMTguOTE5IDE1LjA2MzMgMTguNDY2NSAxNC40Nzk2QzE4LjAxNCAxMy44OTU5IDE3LjM4MDUgMTMuNDc5IDE2LjY2NTQgMTMuMjk0NE0xMy4zMzIgMy4yOTQzN0MxNC4wNDkgMy40Nzc5NSAxNC42ODQ2IDMuODk0OTUgMTUuMTM4NCA0LjQ3OTYzQzE1LjU5MjIgNS4wNjQzIDE1LjgzODYgNS43ODMzOSAxNS44Mzg2IDYuNTIzNTRDMTUuODM4NiA3LjI2MzY4IDE1LjU5MjIgNy45ODI3NyAxNS4xMzg0IDguNTY3NDRDMTQuNjg0NiA5LjE1MjEyIDE0LjA0OSA5LjU2OTEyIDEzLjMzMiA5Ljc1MjdNMTAuODMyIDYuNTE5MzdDMTAuODMyIDguMzYwMzIgOS4zMzk2NSA5Ljg1MjcgNy40OTg3IDkuODUyN0M1LjY1Nzc1IDkuODUyNyA0LjE2NTM2IDguMzYwMzIgNC4xNjUzNiA2LjUxOTM3QzQuMTY1MzYgNC42Nzg0MiA1LjY1Nzc1IDMuMTg2MDQgNy40OTg3IDMuMTg2MDRDOS4zMzk2NSAzLjE4NjA0IDEwLjgzMiA0LjY3ODQyIDEwLjgzMiA2LjUxOTM3WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzOVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0naG91c2Uta2VlcGluZydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDIxIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjQzKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS4yNjIxOSAxLjM2NzIyQzEwLjE3NzcgMC40NTg5NzQgMTEuNjYyIDAuNDU4OTc0IDEyLjU3NzYgMS4zNjcyMkwyMC4zMTMzIDkuMDQxNTNDMjEuMjI4NyA5Ljk0OTggMjEuMjI4NyAxMS40MjIzIDIwLjMxMzMgMTIuMzMwNkwxMi41Nzc2IDIwLjAwNDlDMTEuNjYyIDIwLjkxMzEgMTAuMTc3NyAyMC45MTMxIDkuMjYyMTkgMjAuMDA0OUw3LjA1MTY2IDE3LjgxMTlMNS4wMjUzOCAxOS44MjIxQzQuMTA5ODcgMjAuNzMwMyAyLjYyNTUzIDIwLjczMDMgMS43MTAwMiAxOS44MjIxQzAuNzk0NTEgMTguOTEzOSAwLjc5NDUxIDE3LjQ0MTMgMS43MTAwMiAxNi41MzMxTDMuNzM2MyAxNC41MjI5TDEuNTI2NDggMTIuMzMwNkMwLjYxMDk2NiAxMS40MjIzIDAuNjEwOTY2IDkuOTQ5OCAxLjUyNjQ4IDkuMDQxNTNMOS4yNjIxOSAxLjM2NzIyWk0xMS40NzI0IDIuNDYzNTdDMTEuMTY3MiAyLjE2MDgyIDEwLjY3MjQgMi4xNjA4MiAxMC4zNjcyIDIuNDYzNTdMNC44NDE0NSA3Ljk0NTU2TDEzLjY4MjMgMTYuNzE2M0wxOS4yMDgxIDExLjIzNDJDMTkuNTEzMyAxMC45MzE1IDE5LjUxMzMgMTAuNDQwNiAxOS4yMDgxIDEwLjEzNzlMMTUuMzM5OSA2LjMwMDMyTDE0LjA1MDUgNy41Nzk0QzEzLjc0NTMgNy44ODIxNCAxMy4yNTA2IDcuODgyMTQgMTIuOTQ1NSA3LjU3OTRDMTIuNjQwMyA3LjI3NjY0IDEyLjY0MDMgNi43ODU3OSAxMi45NDU1IDYuNDgzMDVMMTQuMjM0NyA1LjIwMzk3TDEzLjEyOTkgNC4xMDc4Nkw5Ljk5ODcyIDcuMjE0MThDOS42OTM1NCA3LjUxNjkyIDkuMTk4NzMgNy41MTY5MiA4Ljg5MzU2IDcuMjE0MThDOC41ODgzOCA2LjkxMTQzIDguNTg4MzggNi40MjA1OCA4Ljg5MzU2IDYuMTE3ODNMMTIuMDI0NyAzLjAxMTUxTDExLjQ3MjQgMi40NjM1N1pNMTIuNTc3MSAxNy44MTI1TDMuNzM2MzMgOS4wNDE5MUwyLjYzMTYgMTAuMTM3OUMyLjMyNjQyIDEwLjQ0MDYgMi4zMjY0MiAxMC45MzE1IDIuNjMxNiAxMS4yMzQyTDEwLjM2NzIgMTguOTA4NUMxMC42NzI0IDE5LjIxMTMgMTEuMTY3MiAxOS4yMTEzIDExLjQ3MjQgMTguOTA4NUwxMi41NzcxIDE3LjgxMjVaTTQuODQxMzIgMTUuNjE5MkwyLjgxNTE0IDE3LjYyOTRDMi41MDk5NyAxNy45MzIxIDIuNTA5OTcgMTguNDIzIDIuODE1MTQgMTguNzI1OEMzLjEyMDMxIDE5LjAyODUgMy42MTUwOSAxOS4wMjg1IDMuOTIwMjYgMTguNzI1OEw1Ljk0NjQ0IDE2LjcxNTZMNC44NDEzMiAxNS42MTkyWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM0NzU0NjdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDY0M1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nanVuaydcIj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTMgNkg1TTUgNkgyMU01IDZWMjBDNSAyMC41MzA0IDUuMjEwNzEgMjEuMDM5MSA1LjU4NTc5IDIxLjQxNDJDNS45NjA4NiAyMS43ODkzIDYuNDY5NTcgMjIgNyAyMkgxN0MxNy41MzA0IDIyIDE4LjAzOTEgMjEuNzg5MyAxOC40MTQyIDIxLjQxNDJDMTguNzg5MyAyMS4wMzkxIDE5IDIwLjUzMDQgMTkgMjBWNkg1Wk04IDZWNEM4IDMuNDY5NTcgOC4yMTA3MSAyLjk2MDg2IDguNTg1NzkgMi41ODU3OUM4Ljk2MDg2IDIuMjEwNzEgOS40Njk1NyAyIDEwIDJIMTRDMTQuNTMwNCAyIDE1LjAzOTEgMi4yMTA3MSAxNS40MTQyIDIuNTg1NzlDMTUuNzg5MyAyLjk2MDg2IDE2IDMuNDY5NTcgMTYgNFY2TTEwIDExVjE3TTE0IDExVjE3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgICA8IS0tIGZ1bGwgaW1hZ2UgVmlldyAtLT5cbiAgICAgICAgICAgIDxzZWN0aW9uICpuZ0lmPVwiaW1hZ2VGbG93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIFRpY2tldCBCbG9jayBBbGVydCAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdldFNlbGVjdGVkRGF0ZUNhcmREYXRhKCk/LnJhaXNlZFN0YXR1c0VuYWJsZWQgPT09ICdibG9jaydcIiBjbGFzcz1cImNvbC0xMiBtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWJsb2NrLWFsZXJ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1ibG9jay1hbGVydC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnQtaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjEyXCIgZmlsbD1cIiNGMDQ0MzhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTIgOFYxM1wiIHN0cm9rZT1cIndoaXRlXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxNlwiIHI9XCIxXCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1ibG9jay1hbGVydC10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWJsb2NrLWFsZXJ0LXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbm5vdCByYWlzZSB0aWNrZXQgZm9yIG5leHQge3sgZ2V0U2VsZWN0ZWREYXRlQ2FyZERhdGEoKT8ubm9PZkJsb2NrZWREYXlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJzAnIH19IGRheXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1ibG9jay1hbGVydC1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0IGxvb2tzIGxpa2UgeW91IGhhdmUgYWNoaWV2ZWQgOTUlIGFjY3VyYWN5IGZvciB0aGUgdGhyZWUgdGlja2V0cyByYWlzZWQgdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoLiBUaGlzIGxpbWl0cyB5b3UgZnJvbSByYWlzaW5nIG1vcmUgdGlja2V0cyB0byBhdm9pZCByZWR1bmRhbmN5LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWJsb2NrLWFsZXJ0LWFjdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBzdGlsbCB3YW50IHRvIHJhaXNlIHRpY2tldHMsIDxzcGFuIGNsYXNzPVwidGlja2V0LWJsb2NrLWFsZXJ0LWxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVxdWVzdFJlc2V0KClcIj5zZW5kIHJlcXVlc3Q8L3NwYW4+IHRvIHJlc2V0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8IS0tIFRpY2tldCBSZXF1ZXN0IFN1Y2Nlc3MgQWxlcnQgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnZXRTZWxlY3RlZERhdGVDYXJkRGF0YSgpPy5yYWlzZWRTdGF0dXNFbmFibGVkID09PSAncmVxdWVzdCdcIiBjbGFzcz1cImNvbC0xMiBtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LXJlcXVlc3QtYWxlcnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LXJlcXVlc3QtYWxlcnQtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LXJlcXVlc3QtYWxlcnQtaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIgMjFMMjMgMTJMMiAzVjEwTDE3IDEyTDIgMTRWMjFaXCIgZmlsbD1cIiMxMEI5ODFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LXJlcXVlc3QtYWxlcnQtdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1yZXF1ZXN0LWFsZXJ0LXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzZXQgUmVxdWVzdCBTZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtcmVxdWVzdC1hbGVydC1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdXIgcmVxdWVzdCB0byBlbmFibGUgdGlja2V0IHJhaXNpbmcgaGFzIGJlZW4gc3VibWl0dGVkLiBZb3UnbGwgYmUgbm90aWZpZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmNlIGl0J3MgYXBwcm92ZWQuIFBsZWFzZSBlbnN1cmUgZnV0dXJlIHRpY2tldCBhY2N1cmFjeSByZW1haW5zIHdpdGhpbiB0aGUgOTUlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZXNob2xkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTIgbWItMiB3LTEwMCBvdmVyZmxvdy14IHB4LTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZmFsbFRyZW5kc1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGlja2V0U3RhdHVzVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc2hyaW5rLTAgbXQtMyBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyIHB4LTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnb3BlbicpICYmICFnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdjbG9zZWQnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtcy1hdXRvIHRleHQtZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tnZXRUaWNrZXRTdGF0dXMoKX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiIWNhbkVuYWJsZUJ1dHRvbigpXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlJhaXNlZCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhaXNlIHRpY2tldFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmF2LWdyb3VwIGJnLXdoaXRlIGJvcmRlci0xIGJ0bi1ncm91cCB3LWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhKGNvdW50RGF0YT8ubGVuZ3RoID4gMClcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2Zvb3RmYWxsJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW5UcmVuZHMoJ2Zvb3RmYWxsJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG90YWwgRm9vdGZhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdmb290ZmFsbCcgPyAnYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1hY3RpdmUnIDogJ2luYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnREYXRhPy5mb290ZmFsbENvdW50IHx8IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnbm9uLXRhZ2dpbmcnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UGxhblRyZW5kcygnbm9uLXRhZ2dpbmcnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb24tdGFnc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ25vbi10YWdnaW5nJyA/ICdhY3RpdmVQbGFuQnRuIGJhZGdlIGJhZGdlLWFjdGl2ZScgOiAnaW5hY3RpdmVQbGFuQnRuIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudERhdGE/Lm5vblRhZ3MgfHwgMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHB4LTYgcHktM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdkdXBsaWNhdGUnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UGxhblRyZW5kcygnZHVwbGljYXRlJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHVwbGljYXRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2R1cGxpY2F0ZScgPyAnYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1hY3RpdmUnIDogJ2luYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnREYXRhPy5kdXBsaWNhdGUgfHwgMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHB4LTYgcHktM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdlbXBsb3llZScgPyAnYWN0aXZlUGxhbkJ0bicgOiAnaW5hY3RpdmVQbGFuQnRuJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuVHJlbmRzKCdlbXBsb3llZScpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcGxveWVlL1N0YWZmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZW1wbG95ZWUnID8gJ2FjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtYWN0aXZlJyA6ICdpbmFjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvdW50RGF0YT8uZW1wbG95ZWUgfHwgMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnanVuaycgPyAnYWN0aXZlUGxhbkJ0bicgOiAnaW5hY3RpdmVQbGFuQnRuJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuVHJlbmRzKCdqdW5rJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnVua1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2p1bmsnID8gJ2JhZGdlIGJhZGdlLWFjdGl2ZSBhY3RpdmVQbGFuQnRuJyA6ICcgYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCBpbmFjdGl2ZVBsYW5CdG4nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudERhdGE/Lmp1bmsgfHwgMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnaG91c2Uta2VlcGluZycgPyAnYWN0aXZlUGxhbkJ0bicgOiAnaW5hY3RpdmVQbGFuQnRuJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuVHJlbmRzKCdob3VzZS1rZWVwaW5nJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSG91c2UgS2VlcGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2hvdXNlLWtlZXBpbmcnID8gJ2JhZGdlIGJhZGdlLWFjdGl2ZSBhY3RpdmVQbGFuQnRuJyA6ICcgYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCBpbmFjdGl2ZVBsYW5CdG4nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudERhdGE/LmhvdXNla2VlcGluZyB8fCAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBteC0wIGJvcmRlci1ncmF5IGltZy10cmFmZmljXCIgKm5nSWY9XCIhbm9EYXRhICYmICFsb2FkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgcC0yICBtYi0yIG10LTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgYm9yZGVyLWdyYXkgcC0yIFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIE1haW4gSW1hZ2UgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGltZyBjbGFzcz1cImltZy1zcmMgY3Vyc29yLXBvaW50ZXIgaC00NTBweFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RlZEltYWdlQXJyYXkoaW1hZ2VVcmwsIHNlbGVjdEltYWdlQXJyYXkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpbWFnZVVybCArIHNlbGVjdEltYWdlQXJyYXk/LmZpbGVQYXRoXCIgYXBwTWFnbmlmaWVyIGFsdD1cIlwiPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmMgY3Vyc29yLXBvaW50ZXIgaC00NTBweFwiIChjbGljayk9XCJzZWxlY3RlZEltYWdlQXJyYXkoaW1hZ2VVcmwsIHNlbGVjdEltYWdlQXJyYXkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaW1hZ2VVcmwgKyBzZWxlY3RJbWFnZUFycmF5Py5maWxlUGF0aFwiIGFsdD1cIlwiPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBSaWdodCBhcnJvdyBidXR0b24gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktMiBpbWctZG9jLXRpbWVcIj5UYW5nbyBJRCA6IHt7c2VsZWN0SW1hZ2VBcnJheT8udGVtcGxkfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RJbWFnZUFycmF5Py5zdGF0dXMgPT09J2FwcHJvdmVkJ1wiIGNsYXNzPVwibXMtMlwiPjxzdmcgc3R5bGU9XCJ3aWR0aDogMjBweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjBweDtcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjExXCIgdmlld0JveD1cIjAgMCAxMCAxMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeT1cIjAuNVwiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHJ4PVwiNVwiIGZpbGw9XCIjRDFGQURGXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNy4xMjIyIDMuNTc5MTlMNC4xMzg4NyA2LjQ1ODM2TDMuMzQ3MiA1LjYxMjUzQzMuMjAxMzcgNS40NzUwMyAyLjk3MjIgNS40NjY2OSAyLjgwNTUzIDUuNTgzMzZDMi42NDMwMyA1LjcwNDE5IDIuNTk3MiA1LjkxNjY5IDIuNjk3MiA2LjA4NzUzTDMuNjM0NyA3LjYxMjUzQzMuNzI2MzcgNy43NTQxOSAzLjg4NDcgNy44NDE2OSA0LjA2Mzg3IDcuODQxNjlDNC4yMzQ3IDcuODQxNjkgNC4zOTcyIDcuNzU0MTkgNC40ODg4NyA3LjYxMjUzQzQuNjM4ODcgNy40MTY2OSA3LjUwMTM3IDQuMDA0MTkgNy41MDEzNyA0LjAwNDE5QzcuODc2MzcgMy42MjA4NiA3LjQyMjIgMy4yODMzNiA3LjEyMjIgMy41NzUwM1YzLjU3OTE5WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMTJCNzZBXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RJbWFnZUFycmF5Py5zdGF0dXMgPT09J3JlamVjdGVkJ1wiIGNsYXNzPVwibXMtMlwiPjxzdmcgc3R5bGU9XCJ3aWR0aDogMjBweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjBweDtcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjEzXCIgdmlld0JveD1cIjAgMCAxMyAxM1wiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xNDI4XzU5NDg0KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00LjUyOTYxIDEuNUg4LjY2OTYxTDExLjU5OTYgNC40M1Y4LjU3TDguNjY5NjEgMTEuNUg0LjUyOTYxTDEuNTk5NjEgOC41N1Y0LjQzTDQuNTI5NjEgMS41WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0ZFRTRFMlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDk5NjEgNUw1LjA5OTYxIDhNNS4wOTk2MSA1TDguMDk5NjEgOE00LjUyOTYxIDEuNUg4LjY2OTYxTDExLjU5OTYgNC40M1Y4LjU3TDguNjY5NjEgMTEuNUg0LjUyOTYxTDEuNTk5NjEgOC41N1Y0LjQzTDQuNTI5NjEgMS41WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE0MjhfNTk0ODRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLjU5OTYwOSAwLjUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltZy1kb2MtdmFsdWVcIj5FbnRyeSBUaW1lIDoge3sodGVtcE1vZGFsSW1hZ2UgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0SW1hZ2VBcnJheSk/LmVudHJ5VG1lIHx8ICh0ZW1wTW9kYWxJbWFnZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RJbWFnZUFycmF5KT8uZW50cnlUaW1lfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01IHRleHQtZW5kIHB5LTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIih0ZW1wTW9kYWxJbWFnZSB8fCBzZWxlY3RJbWFnZUFycmF5KT8ucmV2b3BzVHlwZSA9PT0nbm9uLXRhZ2dpbmcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cIllldCB0byB0YWcgdGhlIGN1c3RvbWVyXCIgcGxhY2VtZW50PVwidG9wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTlcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTkgMThcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMDIzNDQgNS42MjVINi4wMzA5NE0xNi4yMTU5IDEwLjQzMjVMMTAuODM4NCAxNS44MUMxMC42OTkxIDE1Ljk0OTUgMTAuNTMzNyAxNi4wNjAxIDEwLjM1MTYgMTYuMTM1NkMxMC4xNjk1IDE2LjIxMTEgOS45NzQzMSAxNi4yNDk5IDkuNzc3MTkgMTYuMjQ5OUM5LjU4MDA2IDE2LjI0OTkgOS4zODQ4NyAxNi4yMTExIDkuMjAyNzggMTYuMTM1NkM5LjAyMDY4IDE2LjA2MDEgOC44NTUyNSAxNS45NDk1IDguNzE1OTQgMTUuODFMMi4yNzM0NCA5LjM3NVYxLjg3NUg5Ljc3MzQ0TDE2LjIxNTkgOC4zMTc1QzE2LjQ5NTMgOC41OTg1NCAxNi42NTIxIDguOTc4NzIgMTYuNjUyMSA5LjM3NUMxNi42NTIxIDkuNzcxMjggMTYuNDk1MyAxMC4xNTE1IDE2LjIxNTkgMTAuNDMyNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0SW1hZ2VBcnJheT8ucmV2b3BzVHlwZSA9PT0nZHVwbGljYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwic2VsZWN0SW1hZ2VBcnJheT8uaXNQYXJlbnRcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDEwIDEwXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF81NjhfMTAzNjU3KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi4wODM5OCA2LjI1MDAxSDEuNjY3MzJDMS40NDYzIDYuMjUwMDEgMS4yMzQzNCA2LjE2MjIxIDEuMDc4MDYgNi4wMDU5M0MwLjkyMTc4MiA1Ljg0OTY1IDAuODMzOTg0IDUuNjM3NjkgMC44MzM5ODQgNS40MTY2OFYxLjY2NjY4QzAuODMzOTg0IDEuNDQ1NjYgMC45MjE3ODIgMS4yMzM3IDEuMDc4MDYgMS4wNzc0MkMxLjIzNDM0IDAuOTIxMTQxIDEuNDQ2MyAwLjgzMzM0NCAxLjY2NzMyIDAuODMzMzQ0SDUuNDE3MzJDNS42MzgzMyAwLjgzMzM0NCA1Ljg1MDI5IDAuOTIxMTQxIDYuMDA2NTcgMS4wNzc0MkM2LjE2Mjg1IDEuMjMzNyA2LjI1MDY1IDEuNDQ1NjYgNi4yNTA2NSAxLjY2NjY4VjIuMDgzMzRNNC41ODM5OCAzLjc1MDAxSDguMzMzOThDOC43OTQyMiAzLjc1MDAxIDkuMTY3MzIgNC4xMjMxMSA5LjE2NzMyIDQuNTgzMzRWOC4zMzMzNEM5LjE2NzMyIDguNzkzNTggOC43OTQyMiA5LjE2NjY4IDguMzMzOTggOS4xNjY2OEg0LjU4Mzk4QzQuMTIzNzUgOS4xNjY2OCAzLjc1MDY1IDguNzkzNTggMy43NTA2NSA4LjMzMzM0VjQuNTgzMzRDMy43NTA2NSA0LjEyMzExIDQuMTIzNzUgMy43NTAwMSA0LjU4Mzk4IDMuNzUwMDFaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI1XCIgaGVpZ2h0PVwiNVwiIGZpbGw9XCIjNDc1NDY3XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzU2OF8xMDM2NTdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFzZWxlY3RJbWFnZUFycmF5Py5pc1BhcmVudFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00LjE2Nzk3IDEzLjE4NTlIMy4zMzQ2NEMyLjg5MjYxIDEzLjE4NTkgMi40Njg2OCAxMy4wMTAzIDIuMTU2MTIgMTIuNjk3N0MxLjg0MzU2IDEyLjM4NTIgMS42Njc5NyAxMS45NjEyIDEuNjY3OTcgMTEuNTE5MlY0LjAxOTIxQzEuNjY3OTcgMy41NzcxOCAxLjg0MzU2IDMuMTUzMjYgMi4xNTYxMiAyLjg0MDY5QzIuNDY4NjggMi41MjgxMyAyLjg5MjYxIDIuMzUyNTQgMy4zMzQ2NCAyLjM1MjU0SDEwLjgzNDZDMTEuMjc2NyAyLjM1MjU0IDExLjcwMDYgMi41MjgxMyAxMi4wMTMxIDIuODQwNjlDMTIuMzI1NyAzLjE1MzI2IDEyLjUwMTMgMy41NzcxOCAxMi41MDEzIDQuMDE5MjFWNC44NTI1NE05LjE2Nzk3IDguMTg1ODdIMTYuNjY4QzE3LjU4ODQgOC4xODU4NyAxOC4zMzQ2IDguOTMyMDYgMTguMzM0NiA5Ljg1MjU0VjE3LjM1MjVDMTguMzM0NiAxOC4yNzMgMTcuNTg4NCAxOS4wMTkyIDE2LjY2OCAxOS4wMTkySDkuMTY3OTdDOC4yNDc0OSAxOS4wMTkyIDcuNTAxMyAxOC4yNzMgNy41MDEzIDE3LjM1MjVWOS44NTI1NEM3LjUwMTMgOC45MzIwNiA4LjI0NzQ5IDguMTg1ODcgOS4xNjc5NyA4LjE4NTg3WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RJbWFnZUFycmF5Py5yZXZvcHNUeXBlID09PSdlbXBsb3llZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xNjU0IDE4LjE4NlYxNi41MTk0QzE0LjE2NTQgMTUuNjM1MyAxMy44MTQyIDE0Ljc4NzUgMTMuMTg5MSAxNC4xNjIzQzEyLjU2MzkgMTMuNTM3MiAxMS43MTYxIDEzLjE4NiAxMC44MzIgMTMuMTg2SDQuMTY1MzZDMy4yODEzMSAxMy4xODYgMi40MzM0NiAxMy41MzcyIDEuODA4MzQgMTQuMTYyM0MxLjE4MzIyIDE0Ljc4NzUgMC44MzIwMzEgMTUuNjM1MyAwLjgzMjAzMSAxNi41MTk0VjE4LjE4Nk0xOS4xNjU0IDE4LjE4NlYxNi41MTk0QzE5LjE2NDggMTUuNzgwOCAxOC45MTkgMTUuMDYzMyAxOC40NjY1IDE0LjQ3OTZDMTguMDE0IDEzLjg5NTkgMTcuMzgwNSAxMy40NzkgMTYuNjY1NCAxMy4yOTQ0TTEzLjMzMiAzLjI5NDM3QzE0LjA0OSAzLjQ3Nzk1IDE0LjY4NDYgMy44OTQ5NSAxNS4xMzg0IDQuNDc5NjNDMTUuNTkyMiA1LjA2NDMgMTUuODM4NiA1Ljc4MzM5IDE1LjgzODYgNi41MjM1NEMxNS44Mzg2IDcuMjYzNjggMTUuNTkyMiA3Ljk4Mjc3IDE1LjEzODQgOC41Njc0NEMxNC42ODQ2IDkuMTUyMTIgMTQuMDQ5IDkuNTY5MTIgMTMuMzMyIDkuNzUyN00xMC44MzIgNi41MTkzN0MxMC44MzIgOC4zNjAzMiA5LjMzOTY1IDkuODUyNyA3LjQ5ODcgOS44NTI3QzUuNjU3NzUgOS44NTI3IDQuMTY1MzYgOC4zNjAzMiA0LjE2NTM2IDYuNTE5MzdDNC4xNjUzNiA0LjY3ODQyIDUuNjU3NzUgMy4xODYwNCA3LjQ5ODcgMy4xODYwNEM5LjMzOTY1IDMuMTg2MDQgMTAuODMyIDQuNjc4NDIgMTAuODMyIDYuNTE5MzdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzOVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXk/LnJldm9wc1R5cGUgPT09J2hvdXNlLWtlZXBpbmcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMjEgMjFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjQzKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05LjI2MjE5IDEuMzY3MjJDMTAuMTc3NyAwLjQ1ODk3NCAxMS42NjIgMC40NTg5NzQgMTIuNTc3NiAxLjM2NzIyTDIwLjMxMzMgOS4wNDE1M0MyMS4yMjg3IDkuOTQ5OCAyMS4yMjg3IDExLjQyMjMgMjAuMzEzMyAxMi4zMzA2TDEyLjU3NzYgMjAuMDA0OUMxMS42NjIgMjAuOTEzMSAxMC4xNzc3IDIwLjkxMzEgOS4yNjIxOSAyMC4wMDQ5TDcuMDUxNjYgMTcuODExOUw1LjAyNTM4IDE5LjgyMjFDNC4xMDk4NyAyMC43MzAzIDIuNjI1NTMgMjAuNzMwMyAxLjcxMDAyIDE5LjgyMjFDMC43OTQ1MSAxOC45MTM5IDAuNzk0NTEgMTcuNDQxMyAxLjcxMDAyIDE2LjUzMzFMMy43MzYzIDE0LjUyMjlMMS41MjY0OCAxMi4zMzA2QzAuNjEwOTY2IDExLjQyMjMgMC42MTA5NjYgOS45NDk4IDEuNTI2NDggOS4wNDE1M0w5LjI2MjE5IDEuMzY3MjJaTTExLjQ3MjQgMi40NjM1N0MxMS4xNjcyIDIuMTYwODIgMTAuNjcyNCAyLjE2MDgyIDEwLjM2NzIgMi40NjM1N0w0Ljg0MTQ1IDcuOTQ1NTZMMTMuNjgyMyAxNi43MTYzTDE5LjIwODEgMTEuMjM0MkMxOS41MTMzIDEwLjkzMTUgMTkuNTEzMyAxMC40NDA2IDE5LjIwODEgMTAuMTM3OUwxNS4zMzk5IDYuMzAwMzJMMTQuMDUwNSA3LjU3OTRDMTMuNzQ1MyA3Ljg4MjE0IDEzLjI1MDYgNy44ODIxNCAxMi45NDU1IDcuNTc5NEMxMi42NDAzIDcuMjc2NjQgMTIuNjQwMyA2Ljc4NTc5IDEyLjk0NTUgNi40ODMwNUwxNC4yMzQ3IDUuMjAzOTdMMTMuMTI5OSA0LjEwNzg2TDkuOTk4NzIgNy4yMTQxOEM5LjY5MzU0IDcuNTE2OTIgOS4xOTg3MyA3LjUxNjkyIDguODkzNTYgNy4yMTQxOEM4LjU4ODM4IDYuOTExNDMgOC41ODgzOCA2LjQyMDU4IDguODkzNTYgNi4xMTc4M0wxMi4wMjQ3IDMuMDExNTFMMTEuNDcyNCAyLjQ2MzU3Wk0xMi41NzcxIDE3LjgxMjVMMy43MzYzMyA5LjA0MTkxTDIuNjMxNiAxMC4xMzc5QzIuMzI2NDIgMTAuNDQwNiAyLjMyNjQyIDEwLjkzMTUgMi42MzE2IDExLjIzNDJMMTAuMzY3MiAxOC45MDg1QzEwLjY3MjQgMTkuMjExMyAxMS4xNjcyIDE5LjIxMTMgMTEuNDcyNCAxOC45MDg1TDEyLjU3NzEgMTcuODEyNVpNNC44NDEzMiAxNS42MTkyTDIuODE1MTQgMTcuNjI5NEMyLjUwOTk3IDE3LjkzMjEgMi41MDk5NyAxOC40MjMgMi44MTUxNCAxOC43MjU4QzMuMTIwMzEgMTkuMDI4NSAzLjYxNTA5IDE5LjAyODUgMy45MjAyNiAxOC43MjU4TDUuOTQ2NDQgMTYuNzE1Nkw0Ljg0MTMyIDE1LjYxOTJaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM0NzU0NjdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDY0M1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBwLTIgbWItMiAgbXQtNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0yIFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgdGl0bGUtdHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCBub24tc2hvcHBlciB0eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c2VjdGlvbiBjbGFzcz1cImNvbC1tZC02IHRleHQtZW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiISh1c2Vycz8ucm9sZSA9PT0ndXNlcicgJiYgdXNlcnM/LnVzZXJUeXBlID09PSdjbGllbnQnICYmIHNlbGVjdGVkUmFkaW9UeXBlID09PSdqdW5rJylcIj4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNvbC1tZC02IHRleHQtZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhcmV2b3BzVHlwZVZhbHVlXCIgY2xhc3M9XCJtYi01IHRleHQtZW5kXCIgcm9sZT1cImdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnb3BlbicpICYmICFnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdjbG9zZWQnKVwiPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkUmFkaW9UeXBlID09PSB1bmRlZmluZWQgfHwgc2VsZWN0ZWRSYWRpb1R5cGUgPT09ICcnKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkUmFkaW9UeXBlID09PSAnZHVwbGljYXRlJyAmJiBzZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsZWFyVmFsdWUoKVwiPkNsZWFyPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIG1lLTJcIiAoY2xpY2spPVwiY2FuY2VsKClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBpZD1cImFsZXJ0LXRvYXN0XCIgKGNsaWNrKT1cInNhdmUoc2VsZWN0ZWRUeXBlKVwiIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZFJhZGlvVHlwZSA9PT0gdW5kZWZpbmVkIHx8IHNlbGVjdGVkUmFkaW9UeXBlID09PSAnJykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZFJhZGlvVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0Lmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhdmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwiISh1c2Vycz8ucm9sZSA9PT0ndXNlcicgJiYgdXNlcnM/LnVzZXJUeXBlID09PSdjbGllbnQnICYmIHNlbGVjdGVkUmFkaW9UeXBlID09PSdqdW5rJylcIj4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkUmFkaW9UeXBlID09PSdqdW5rJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWRpdEJ0blNob3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZXZvcHNUeXBlVmFsdWVcIiBjbGFzcz1cIm1iLTUgdGV4dC1lbmRcIiByb2xlPVwiZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ29wZW4nKSAmJiAhZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnY2xvc2VkJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBtZS0yXCIgKGNsaWNrKT1cImVkaXRWYWx1ZSgpXCI+PHNwYW4gY2xhc3M9XCJtZS0yXCI+PHN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuNjU1NCAxLjcxMDQ3QzE0Ljg5MjcgMS40NzMxNSAxNS4xNzQ1IDEuMjg0OSAxNS40ODQ1IDEuMTU2NDZDMTUuNzk0NiAxLjAyODAyIDE2LjEyNjkgMC45NjE5MTQgMTYuNDYyNiAwLjk2MTkxNEMxNi43OTgyIDAuOTYxOTE0IDE3LjEzMDUgMS4wMjgwMiAxNy40NDA2IDEuMTU2NDZDMTcuNzUwNyAxLjI4NDkgMTguMDMyNCAxLjQ3MzE1IDE4LjI2OTcgMS43MTA0N0MxOC41MDcxIDEuOTQ3NzkgMTguNjk1MyAyLjIyOTUzIDE4LjgyMzggMi41Mzk2MUMxOC45NTIyIDIuODQ5NjkgMTkuMDE4MyAzLjE4MjAyIDE5LjAxODMgMy41MTc2NUMxOS4wMTgzIDMuODUzMjcgMTguOTUyMiA0LjE4NTYxIDE4LjgyMzggNC40OTU2OEMxOC42OTUzIDQuODA1NzYgMTguNTA3MSA1LjA4NzUgMTguMjY5NyA1LjMyNDgyTDYuMDcxMyAxNy41MjMzTDEuMTAxNTYgMTguODc4NkwyLjQ1Njk1IDEzLjkwODlMMTQuNjU1NCAxLjcxMDQ3WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjgxMDc5XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5FZGl0PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBteS0xNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJkdXBsaWNhdGVcIiBpZD1cImR1cGxpY2F0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFR5cGVcIiBbdmFsdWVdPVwiJ2R1cGxpY2F0ZSdcIiAoY2hhbmdlKT1cIm9uUmFkaW9DaGFuZ2Uoc2VsZWN0ZWRUeXBlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJldm9wc1R5cGVWYWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImR1cGxpY2F0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzNSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTUgdGFnLWNsYXNzXCI+RHVwbGljYXRlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG15LTE1XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgbmFtZT1cImVtcGxveWVlXCIgaWQ9XCJlbXBsb3llZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFR5cGVcIiBbdmFsdWVdPVwiJ2VtcGxveWVlJ1wiIChjaGFuZ2UpPVwib25SYWRpb0NoYW5nZShzZWxlY3RlZFR5cGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicmV2b3BzVHlwZVZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiZW1wbG95ZWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTVcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xNjU0IDE4LjE4NlYxNi41MTk0QzE0LjE2NTQgMTUuNjM1MyAxMy44MTQyIDE0Ljc4NzUgMTMuMTg5MSAxNC4xNjIzQzEyLjU2MzkgMTMuNTM3MiAxMS43MTYxIDEzLjE4NiAxMC44MzIgMTMuMTg2SDQuMTY1MzZDMy4yODEzMSAxMy4xODYgMi40MzM0NiAxMy41MzcyIDEuODA4MzQgMTQuMTYyM0MxLjE4MzIyIDE0Ljc4NzUgMC44MzIwMzEgMTUuNjM1MyAwLjgzMjAzMSAxNi41MTk0VjE4LjE4Nk0xOS4xNjU0IDE4LjE4NlYxNi41MTk0QzE5LjE2NDggMTUuNzgwOCAxOC45MTkgMTUuMDYzMyAxOC40NjY1IDE0LjQ3OTZDMTguMDE0IDEzLjg5NTkgMTcuMzgwNSAxMy40NzkgMTYuNjY1NCAxMy4yOTQ0TTEzLjMzMiAzLjI5NDM3QzE0LjA0OSAzLjQ3Nzk1IDE0LjY4NDYgMy44OTQ5NSAxNS4xMzg0IDQuNDc5NjNDMTUuNTkyMiA1LjA2NDMgMTUuODM4NiA1Ljc4MzM5IDE1LjgzODYgNi41MjM1NEMxNS44Mzg2IDcuMjYzNjggMTUuNTkyMiA3Ljk4Mjc3IDE1LjEzODQgOC41Njc0NEMxNC42ODQ2IDkuMTUyMTIgMTQuMDQ5IDkuNTY5MTIgMTMuMzMyIDkuNzUyN00xMC44MzIgNi41MTkzN0MxMC44MzIgOC4zNjAzMiA5LjMzOTY1IDkuODUyNyA3LjQ5ODcgOS44NTI3QzUuNjU3NzUgOS44NTI3IDQuMTY1MzYgOC4zNjAzMiA0LjE2NTM2IDYuNTE5MzdDNC4xNjUzNiA0LjY3ODQyIDUuNjU3NzUgMy4xODYwNCA3LjQ5ODcgMy4xODYwNEM5LjMzOTY1IDMuMTg2MDQgMTAuODMyIDQuNjc4NDIgMTAuODMyIDYuNTE5MzdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzOVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTUgdGFnLWNsYXNzXCI+RW1wbG95ZWUvU3RhZmY8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbXktMTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwiaG91c2Uta2VlcGluZ1wiIGlkPVwiaG91c2Uta2VlcGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFR5cGVcIiBbdmFsdWVdPVwiJ2hvdXNlLWtlZXBpbmcnXCIgKGNoYW5nZSk9XCJvblJhZGlvQ2hhbmdlKHNlbGVjdGVkVHlwZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZXZvcHNUeXBlVmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJob3VzZS1rZWVwaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01XCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjEgMjFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjQzKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05LjI2MjE5IDEuMzY3MjJDMTAuMTc3NyAwLjQ1ODk3NCAxMS42NjIgMC40NTg5NzQgMTIuNTc3NiAxLjM2NzIyTDIwLjMxMzMgOS4wNDE1M0MyMS4yMjg3IDkuOTQ5OCAyMS4yMjg3IDExLjQyMjMgMjAuMzEzMyAxMi4zMzA2TDEyLjU3NzYgMjAuMDA0OUMxMS42NjIgMjAuOTEzMSAxMC4xNzc3IDIwLjkxMzEgOS4yNjIxOSAyMC4wMDQ5TDcuMDUxNjYgMTcuODExOUw1LjAyNTM4IDE5LjgyMjFDNC4xMDk4NyAyMC43MzAzIDIuNjI1NTMgMjAuNzMwMyAxLjcxMDAyIDE5LjgyMjFDMC43OTQ1MSAxOC45MTM5IDAuNzk0NTEgMTcuNDQxMyAxLjcxMDAyIDE2LjUzMzFMMy43MzYzIDE0LjUyMjlMMS41MjY0OCAxMi4zMzA2QzAuNjEwOTY2IDExLjQyMjMgMC42MTA5NjYgOS45NDk4IDEuNTI2NDggOS4wNDE1M0w5LjI2MjE5IDEuMzY3MjJaTTExLjQ3MjQgMi40NjM1N0MxMS4xNjcyIDIuMTYwODIgMTAuNjcyNCAyLjE2MDgyIDEwLjM2NzIgMi40NjM1N0w0Ljg0MTQ1IDcuOTQ1NTZMMTMuNjgyMyAxNi43MTYzTDE5LjIwODEgMTEuMjM0MkMxOS41MTMzIDEwLjkzMTUgMTkuNTEzMyAxMC40NDA2IDE5LjIwODEgMTAuMTM3OUwxNS4zMzk5IDYuMzAwMzJMMTQuMDUwNSA3LjU3OTRDMTMuNzQ1MyA3Ljg4MjE0IDEzLjI1MDYgNy44ODIxNCAxMi45NDU1IDcuNTc5NEMxMi42NDAzIDcuMjc2NjQgMTIuNjQwMyA2Ljc4NTc5IDEyLjk0NTUgNi40ODMwNUwxNC4yMzQ3IDUuMjAzOTdMMTMuMTI5OSA0LjEwNzg2TDkuOTk4NzIgNy4yMTQxOEM5LjY5MzU0IDcuNTE2OTIgOS4xOTg3MyA3LjUxNjkyIDguODkzNTYgNy4yMTQxOEM4LjU4ODM4IDYuOTExNDMgOC41ODgzOCA2LjQyMDU4IDguODkzNTYgNi4xMTc4M0wxMi4wMjQ3IDMuMDExNTFMMTEuNDcyNCAyLjQ2MzU3Wk0xMi41NzcxIDE3LjgxMjVMMy43MzYzMyA5LjA0MTkxTDIuNjMxNiAxMC4xMzc5QzIuMzI2NDIgMTAuNDQwNiAyLjMyNjQyIDEwLjkzMTUgMi42MzE2IDExLjIzNDJMMTAuMzY3MiAxOC45MDg1QzEwLjY3MjQgMTkuMjExMyAxMS4xNjcyIDE5LjIxMTMgMTEuNDcyNCAxOC45MDg1TDEyLjU3NzEgMTcuODEyNVpNNC44NDEzMiAxNS42MTkyTDIuODE1MTQgMTcuNjI5NEMyLjUwOTk3IDE3LjkzMjEgMi41MDk5NyAxOC40MjMgMi44MTUxNCAxOC43MjU4QzMuMTIwMzEgMTkuMDI4NSAzLjYxNTA5IDE5LjAyODUgMy45MjAyNiAxOC43MjU4TDUuOTQ2NDQgMTYuNzE1Nkw0Ljg0MTMyIDE1LjYxOTJaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM0NzU0NjdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDY0M1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTUgdGFnLWNsYXNzXCI+IEhvdXNlIEtlZXBpbmc8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbXktMTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwianVua1wiIGlkPVwianVua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFR5cGVcIiBbdmFsdWVdPVwiJ2p1bmsnXCIgKGNoYW5nZSk9XCJvblJhZGlvQ2hhbmdlKHNlbGVjdGVkVHlwZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ1c2Vycz8ucm9sZSA9PT0ndXNlcicgJiYgdGhpcy51c2Vycz8udXNlclR5cGUgPT09J2NsaWVudCcgfHwgcmV2b3BzVHlwZVZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwianVua1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zIDZINU01IDZIMjFNNSA2VjIwQzUgMjAuNTMwNCA1LjIxMDcxIDIxLjAzOTEgNS41ODU3OSAyMS40MTQyQzUuOTYwODYgMjEuNzg5MyA2LjQ2OTU3IDIyIDcgMjJIMTdDMTcuNTMwNCAyMiAxOC4wMzkxIDIxLjc4OTMgMTguNDE0MiAyMS40MTQyQzE4Ljc4OTMgMjEuMDM5MSAxOSAyMC41MzA0IDE5IDIwVjZINVpNOCA2VjRDOCAzLjQ2OTU3IDguMjEwNzEgMi45NjA4NiA4LjU4NTc5IDIuNTg1NzlDOC45NjA4NiAyLjIxMDcxIDkuNDY5NTcgMiAxMCAySDE0QzE0LjUzMDQgMiAxNS4wMzkxIDIuMjEwNzEgMTUuNDE0MiAyLjU4NTc5QzE1Ljc4OTMgMi45NjA4NiAxNiAzLjQ2OTU3IDE2IDRWNk0xMCAxMVYxN00xNCAxMVYxN1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01IHRhZy1jbGFzc1wiPiBKdW5rPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMCBpbWctdHJhZmZpYyBtdC0zIGhpZ2gtNDAwcHggc2Nyb2xsLXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBib3JkZXItZ3JheSBteC0yIHAtMiBtdC01XCIgKm5nRm9yPVwibGV0IG9iaiBvZiByZW1haW5pbmdJbWFnZUFycmF5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cIiFyZXZvcHNUeXBlVmFsdWUgJiYgc2VsZWN0ZWRSYWRpb1R5cGUgPT09ICdkdXBsaWNhdGUnXCIgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIm9iai5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGFic29sdXRlIGZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkltYWdlQ2hlY2tib3hDaGFuZ2UoJGV2ZW50LCBvYmosICdkdXBsaWNhdGUnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwib2JqLmR1cGxpY2F0ZUltYWdlUGF0aD8ubGVuZ3RoID4gMFwiIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0ZWRSYWRpb1R5cGUgIT09ICdkdXBsaWNhdGUnID8gJ2N1cnNvci1wb2ludGVyJyA6ICdjdXJzb3ItcG9pbnRlcidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpbWFnZVVybCArIG9iaj8uZmlsZVBhdGhcIiAoZXJyb3IpPVwib2JqLmZpbGVQYXRoID0gbnVsbFwiIGFsdD1cIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlSW1hZ2VDbGljaygkZXZlbnQsIG9iailcIiAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhb2JqPy5maWxlUGF0aFwiIGNsYXNzPVwibm8tcHJldmlld1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIzXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIzIDIwXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiR3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVmVjdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuNSA2LjMyMjI3SDYuNTFNMTYuMjUgOS4zMjIyN0gyMS41TDE4IDE2LjMyMjNMMTQuOTEgMTIuMDAyM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlZlY3Rvcl8yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEuNSAxNi4zMjI5SDUuMjZDNS42MzI3MyAxNi4zMjU1IDUuOTk4NzcgMTYuMjIzOSA2LjMxNjgyIDE2LjAyOTVDNi42MzQ4NyAxNS44MzUyIDYuODkyMjggMTUuNTU1OCA3LjA2IDE1LjIyMjlMOC41IDEyLjMyMjlNMS41IDE4LjMyMjlWMTQuMzIyOU0xNy41IDYuODIyOTFMMTMuNSAxNC44MjI5TDMuMTEgOS42MjI5MUMyLjQyMDMzIDkuMjc1NTMgMS44OTYzNSA4LjY2OTEgMS42NTI3MiA3LjkzNjMyQzEuNDA5MDkgNy4yMDM1NCAxLjQ2NTY0IDYuNDA0MSAxLjgxIDUuNzEyOTFMMy4xOSAyLjkyMjkxQzMuMzYyIDIuNTgwMTQgMy41OTk4NCAyLjI3NDYgMy44ODk5NCAyLjAyMzc1QzQuMTgwMDMgMS43NzI5IDQuNTE2NyAxLjU4MTY1IDQuODgwNzIgMS40NjA5M0M1LjI0NDc0IDEuMzQwMjEgNS42Mjg5NyAxLjI5MjM5IDYuMDExNDcgMS4zMjAxOEM2LjM5Mzk4IDEuMzQ3OTcgNi43NjcyNiAxLjQ1MDg0IDcuMTEgMS42MjI5MUwxNy41IDYuODIyOTFaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhlYWRlciBtYi01IHRleHQtY2VudGVyXCI+UHJldmlldyBub3QgYXZhaWxhYmxlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXNjcmlwdGlvbiBtYi01IHRleHQtY2VudGVyXCI+VGhlIHNlbGVjdGVkIGNhbWVyYSBpcyBub3QgYXZhaWxhYmxlIGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9tZW50Ljwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktMiBpbWctZG9jLXRpbWVcIj5UYW5nbyBJRCA6IHt7b2JqPy50ZW1wbGQgPyBvYmo/LnRlbXBsZCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iaj8udGVtcElkfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnN0YXR1cyA9PT0nYXBwcm92ZWQnXCIgY2xhc3M9XCJtcy0yXCI+PHN2ZyBzdHlsZT1cIndpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMjBweDtcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjExXCIgdmlld0JveD1cIjAgMCAxMCAxMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeT1cIjAuNVwiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHJ4PVwiNVwiIGZpbGw9XCIjRDFGQURGXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNy4xMjIyIDMuNTc5MTlMNC4xMzg4NyA2LjQ1ODM2TDMuMzQ3MiA1LjYxMjUzQzMuMjAxMzcgNS40NzUwMyAyLjk3MjIgNS40NjY2OSAyLjgwNTUzIDUuNTgzMzZDMi42NDMwMyA1LjcwNDE5IDIuNTk3MiA1LjkxNjY5IDIuNjk3MiA2LjA4NzUzTDMuNjM0NyA3LjYxMjUzQzMuNzI2MzcgNy43NTQxOSAzLjg4NDcgNy44NDE2OSA0LjA2Mzg3IDcuODQxNjlDNC4yMzQ3IDcuODQxNjkgNC4zOTcyIDcuNzU0MTkgNC40ODg4NyA3LjYxMjUzQzQuNjM4ODcgNy40MTY2OSA3LjUwMTM3IDQuMDA0MTkgNy41MDEzNyA0LjAwNDE5QzcuODc2MzcgMy42MjA4NiA3LjQyMjIgMy4yODMzNiA3LjEyMjIgMy41NzUwM1YzLjU3OTE5WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMTJCNzZBXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnN0YXR1cyA9PT0ncmVqZWN0ZWQnXCIgY2xhc3M9XCJtcy0yXCI+PHN2ZyBzdHlsZT1cIndpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMjBweDtcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjEzXCIgdmlld0JveD1cIjAgMCAxMyAxM1wiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xNDI4XzU5NDg0KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00LjUyOTYxIDEuNUg4LjY2OTYxTDExLjU5OTYgNC40M1Y4LjU3TDguNjY5NjEgMTEuNUg0LjUyOTYxTDEuNTk5NjEgOC41N1Y0LjQzTDQuNTI5NjEgMS41WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0ZFRTRFMlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDk5NjEgNUw1LjA5OTYxIDhNNS4wOTk2MSA1TDguMDk5NjEgOE00LjUyOTYxIDEuNUg4LjY2OTYxTDExLjU5OTYgNC40M1Y4LjU3TDguNjY5NjEgMTEuNUg0LjUyOTYxTDEuNTk5NjEgOC41N1Y0LjQzTDQuNTI5NjEgMS41WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xNDI4XzU5NDg0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLjU5OTYwOSAwLjUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltZy1kb2MtdmFsdWVcIj5FbnRyeSBUaW1lIDoge3tvYmo/LmVudHJ5VG1lID8gb2JqPy5lbnRyeVRtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6b2JqPy5lbnRyeVRpbWV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTUgdGV4dC1lbmQgcHktM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdub24tdGFnZ2luZydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiWWV0IHRvIHRhZyB0aGUgY3VzdG9tZXJcIiBwbGFjZW1lbnQ9XCJ0b3BcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOVwiIGhlaWdodD1cIjE4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTkgMThcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMDIzNDQgNS42MjVINi4wMzA5NE0xNi4yMTU5IDEwLjQzMjVMMTAuODM4NCAxNS44MUMxMC42OTkxIDE1Ljk0OTUgMTAuNTMzNyAxNi4wNjAxIDEwLjM1MTYgMTYuMTM1NkMxMC4xNjk1IDE2LjIxMTEgOS45NzQzMSAxNi4yNDk5IDkuNzc3MTkgMTYuMjQ5OUM5LjU4MDA2IDE2LjI0OTkgOS4zODQ4NyAxNi4yMTExIDkuMjAyNzggMTYuMTM1NkM5LjAyMDY4IDE2LjA2MDEgOC44NTUyNSAxNS45NDk1IDguNzE1OTQgMTUuODFMMi4yNzM0NCA5LjM3NVYxLjg3NUg5Ljc3MzQ0TDE2LjIxNTkgOC4zMTc1QzE2LjQ5NTMgOC41OTg1NCAxNi42NTIxIDguOTc4NzIgMTYuNjUyMSA5LjM3NUMxNi42NTIxIDkuNzcxMjggMTYuNDk1MyAxMC4xNTE1IDE2LjIxNTkgMTAuNDMyNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2R1cGxpY2F0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIm9iaj8uaXNQYXJlbnRcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDEwIDEwXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF81NjhfMTAzNjU3KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi4wODM5OCA2LjI1MDAxSDEuNjY3MzJDMS40NDYzIDYuMjUwMDEgMS4yMzQzNCA2LjE2MjIxIDEuMDc4MDYgNi4wMDU5M0MwLjkyMTc4MiA1Ljg0OTY1IDAuODMzOTg0IDUuNjM3NjkgMC44MzM5ODQgNS40MTY2OFYxLjY2NjY4QzAuODMzOTg0IDEuNDQ1NjYgMC45MjE3ODIgMS4yMzM3IDEuMDc4MDYgMS4wNzc0MkMxLjIzNDM0IDAuOTIxMTQxIDEuNDQ2MyAwLjgzMzM0NCAxLjY2NzMyIDAuODMzMzQ0SDUuNDE3MzJDNS42MzgzMyAwLjgzMzM0NCA1Ljg1MDI5IDAuOTIxMTQxIDYuMDA2NTcgMS4wNzc0MkM2LjE2Mjg1IDEuMjMzNyA2LjI1MDY1IDEuNDQ1NjYgNi4yNTA2NSAxLjY2NjY4VjIuMDgzMzRNNC41ODM5OCAzLjc1MDAxSDguMzMzOThDOC43OTQyMiAzLjc1MDAxIDkuMTY3MzIgNC4xMjMxMSA5LjE2NzMyIDQuNTgzMzRWOC4zMzMzNEM5LjE2NzMyIDguNzkzNTggOC43OTQyMiA5LjE2NjY4IDguMzMzOTggOS4xNjY2OEg0LjU4Mzk4QzQuMTIzNzUgOS4xNjY2OCAzLjc1MDY1IDguNzkzNTggMy43NTA2NSA4LjMzMzM0VjQuNTgzMzRDMy43NTA2NSA0LjEyMzExIDQuMTIzNzUgMy43NTAwMSA0LjU4Mzk4IDMuNzUwMDFaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI1XCIgaGVpZ2h0PVwiNVwiIGZpbGw9XCIjNDc1NDY3XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzU2OF8xMDM2NTdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFvYmo/LmlzUGFyZW50XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMjAgMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzNSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nZW1wbG95ZWUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzOSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjE2NTQgMTguMTg2VjE2LjUxOTRDMTQuMTY1NCAxNS42MzUzIDEzLjgxNDIgMTQuNzg3NSAxMy4xODkxIDE0LjE2MjNDMTIuNTYzOSAxMy41MzcyIDExLjcxNjEgMTMuMTg2IDEwLjgzMiAxMy4xODZINC4xNjUzNkMzLjI4MTMxIDEzLjE4NiAyLjQzMzQ2IDEzLjUzNzIgMS44MDgzNCAxNC4xNjIzQzEuMTgzMjIgMTQuNzg3NSAwLjgzMjAzMSAxNS42MzUzIDAuODMyMDMxIDE2LjUxOTRWMTguMTg2TTE5LjE2NTQgMTguMTg2VjE2LjUxOTRDMTkuMTY0OCAxNS43ODA4IDE4LjkxOSAxNS4wNjMzIDE4LjQ2NjUgMTQuNDc5NkMxOC4wMTQgMTMuODk1OSAxNy4zODA1IDEzLjQ3OSAxNi42NjU0IDEzLjI5NDRNMTMuMzMyIDMuMjk0MzdDMTQuMDQ5IDMuNDc3OTUgMTQuNjg0NiAzLjg5NDk1IDE1LjEzODQgNC40Nzk2M0MxNS41OTIyIDUuMDY0MyAxNS44Mzg2IDUuNzgzMzkgMTUuODM4NiA2LjUyMzU0QzE1LjgzODYgNy4yNjM2OCAxNS41OTIyIDcuOTgyNzcgMTUuMTM4NCA4LjU2NzQ0QzE0LjY4NDYgOS4xNTIxMiAxNC4wNDkgOS41NjkxMiAxMy4zMzIgOS43NTI3TTEwLjgzMiA2LjUxOTM3QzEwLjgzMiA4LjM2MDMyIDkuMzM5NjUgOS44NTI3IDcuNDk4NyA5Ljg1MjdDNS42NTc3NSA5Ljg1MjcgNC4xNjUzNiA4LjM2MDMyIDQuMTY1MzYgNi41MTkzN0M0LjE2NTM2IDQuNjc4NDIgNS42NTc3NSAzLjE4NjA0IDcuNDk4NyAzLjE4NjA0QzkuMzM5NjUgMy4xODYwNCAxMC44MzIgNC42Nzg0MiAxMC44MzIgNi41MTkzN1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0naG91c2Uta2VlcGluZydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjEgMjFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjQzKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05LjI2MjE5IDEuMzY3MjJDMTAuMTc3NyAwLjQ1ODk3NCAxMS42NjIgMC40NTg5NzQgMTIuNTc3NiAxLjM2NzIyTDIwLjMxMzMgOS4wNDE1M0MyMS4yMjg3IDkuOTQ5OCAyMS4yMjg3IDExLjQyMjMgMjAuMzEzMyAxMi4zMzA2TDEyLjU3NzYgMjAuMDA0OUMxMS42NjIgMjAuOTEzMSAxMC4xNzc3IDIwLjkxMzEgOS4yNjIxOSAyMC4wMDQ5TDcuMDUxNjYgMTcuODExOUw1LjAyNTM4IDE5LjgyMjFDNC4xMDk4NyAyMC43MzAzIDIuNjI1NTMgMjAuNzMwMyAxLjcxMDAyIDE5LjgyMjFDMC43OTQ1MSAxOC45MTM5IDAuNzk0NTEgMTcuNDQxMyAxLjcxMDAyIDE2LjUzMzFMMy43MzYzIDE0LjUyMjlMMS41MjY0OCAxMi4zMzA2QzAuNjEwOTY2IDExLjQyMjMgMC42MTA5NjYgOS45NDk4IDEuNTI2NDggOS4wNDE1M0w5LjI2MjE5IDEuMzY3MjJaTTExLjQ3MjQgMi40NjM1N0MxMS4xNjcyIDIuMTYwODIgMTAuNjcyNCAyLjE2MDgyIDEwLjM2NzIgMi40NjM1N0w0Ljg0MTQ1IDcuOTQ1NTZMMTMuNjgyMyAxNi43MTYzTDE5LjIwODEgMTEuMjM0MkMxOS41MTMzIDEwLjkzMTUgMTkuNTEzMyAxMC40NDA2IDE5LjIwODEgMTAuMTM3OUwxNS4zMzk5IDYuMzAwMzJMMTQuMDUwNSA3LjU3OTRDMTMuNzQ1MyA3Ljg4MjE0IDEzLjI1MDYgNy44ODIxNCAxMi45NDU1IDcuNTc5NEMxMi42NDAzIDcuMjc2NjQgMTIuNjQwMyA2Ljc4NTc5IDEyLjk0NTUgNi40ODMwNUwxNC4yMzQ3IDUuMjAzOTdMMTMuMTI5OSA0LjEwNzg2TDkuOTk4NzIgNy4yMTQxOEM5LjY5MzU0IDcuNTE2OTIgOS4xOTg3MyA3LjUxNjkyIDguODkzNTYgNy4yMTQxOEM4LjU4ODM4IDYuOTExNDMgOC41ODgzOCA2LjQyMDU4IDguODkzNTYgNi4xMTc4M0wxMi4wMjQ3IDMuMDExNTFMMTEuNDcyNCAyLjQ2MzU3Wk0xMi41NzcxIDE3LjgxMjVMMy43MzYzMyA5LjA0MTkxTDIuNjMxNiAxMC4xMzc5QzIuMzI2NDIgMTAuNDQwNiAyLjMyNjQyIDEwLjkzMTUgMi42MzE2IDExLjIzNDJMMTAuMzY3MiAxOC45MDg1QzEwLjY3MjQgMTkuMjExMyAxMS4xNjcyIDE5LjIxMTMgMTEuNDcyNCAxOC45MDg1TDEyLjU3NzEgMTcuODEyNVpNNC44NDEzMiAxNS42MTkyTDIuODE1MTQgMTcuNjI5NEMyLjUwOTk3IDE3LjkzMjEgMi41MDk5NyAxOC40MjMgMi44MTUxNCAxOC43MjU4QzMuMTIwMzEgMTkuMDI4NSAzLjYxNTA5IDE5LjAyODUgMy45MjAyNiAxOC43MjU4TDUuOTQ2NDQgMTYuNzE1Nkw0Ljg0MTMyIDE1LjYxOTJaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM0NzU0NjdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDY0M1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2p1bmsnXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTMgNkg1TTUgNkgyMU01IDZWMjBDNSAyMC41MzA0IDUuMjEwNzEgMjEuMDM5MSA1LjU4NTc5IDIxLjQxNDJDNS45NjA4NiAyMS43ODkzIDYuNDY5NTcgMjIgNyAyMkgxN0MxNy41MzA0IDIyIDE4LjAzOTEgMjEuNzg5MyAxOC40MTQyIDIxLjQxNDJDMTguNzg5MyAyMS4wMzkxIDE5IDIwLjUzMDQgMTkgMjBWNkg1Wk04IDZWNEM4IDMuNDY5NTcgOC4yMTA3MSAyLjk2MDg2IDguNTg1NzkgMi41ODU3OUM4Ljk2MDg2IDIuMjEwNzEgOS40Njk1NyAyIDEwIDJIMTRDMTQuNTMwNCAyIDE1LjAzOTEgMi4yMTA3MSAxNS40MTQyIDIuNTg1NzlDMTUuNzg5MyAyLjk2MDg2IDE2IDMuNDY5NTcgMTYgNFY2TTEwIDExVjE3TTE0IDExVjE3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cbjwvZGl2PlxuXG5cbjxuZy10ZW1wbGF0ZSAjem9vbVBvcHVwIGxldC1tb2RlbD5cbiAgICA8ZGl2IGNsYXNzPVwicC00IG0tNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIGJvcmRlci0wIHAtMCB3LTEwMCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1zdGFydFwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdub24tdGFnZ2luZydcIiBjbGFzcz1cIm15LTNcIj5cblxuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHZpZXdCb3g9XCIwIDAgNDAgNDBcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiByeD1cIjIwXCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwODhfOTgzMzcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjkuMTY5MyAxMy4zMzMzVjE4LjMzMzNNMjkuMTY5MyAxOC4zMzMzSDI0LjE2OTNNMjkuMTY5MyAxOC4zMzMzTDI1LjMwMjYgMTQuN0MyNC40MDcgMTMuODAzOSAyMy4yOTkgMTMuMTQ5MyAyMi4wODE5IDEyLjc5NzNDMjAuODY0OSAxMi40NDUzIDE5LjU3ODUgMTIuNDA3MyAxOC4zNDI4IDEyLjY4NjlDMTcuMTA3MiAxMi45NjY1IDE1Ljk2MjQgMTMuNTU0NSAxNS4wMTU1IDE0LjM5NjJDMTQuMDY4NSAxNS4yMzc4IDEzLjM1MDIgMTYuMzA1NiAxMi45Mjc2IDE3LjVNMTAuODM1OSAyNi42NjY2VjIxLjY2NjZNMTAuODM1OSAyMS42NjY2SDE1LjgzNTlNMTAuODM1OSAyMS42NjY2TDE0LjcwMjYgMjUuM0MxNS41OTgyIDI2LjE5NjEgMTYuNzA2MiAyNi44NTA2IDE3LjkyMzMgMjcuMjAyN0MxOS4xNDAzIDI3LjU1NDcgMjAuNDI2NyAyNy41OTI3IDIxLjY2MjQgMjcuMzEzMUMyMi44OTggMjcuMDMzNSAyNC4wNDI4IDI2LjQ0NTUgMjQuOTg5NyAyNS42MDM4QzI1LjkzNjcgMjQuNzYyMSAyNi42NTUgMjMuNjk0MyAyNy4wNzc2IDIyLjVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwODhfOTgzMzdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMTAgMTApXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwhLS0gSGVhZGluZyAtLT5cbiAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlIG1iLTJcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ2VtcGxveWVlJ1wiPlRhZ2dpbmcgYXMgZW1wbG95ZWUvc3RhZmYgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnZHVwbGljYXRlJ1wiPlRhZ2dpbmcgYXMgZHVwbGljYXRlcyA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdob3VzZS1rZWVwaW5nJ1wiPlRhZ2dpbmcgYXMgaG91c2Uga2VlcGluZyA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdub24tdGFnZ2luZydcIj5DbGVhciBkdXBsaWNhdGVzPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSdqdW5rJ1wiPlRhZ2dpbmcgYXMganVuazwvc3Bhbj5cblxuICAgICAgICAgICAgPC9oNT5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwibWItM1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnZW1wbG95ZWUnXCI+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHRhZyB0aGlzIGFzIGVtcGxveWVlL3N0YWZmPzwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ2R1cGxpY2F0ZSdcIj5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gdGFnIHRoaXMgYXMgZHVwbGljYXRlcz8gPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnaG91c2Uta2VlcGluZydcIj5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gdGFnIHRoaXMgYXMgaG91c2Uga2VlcGluZz8gPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnbm9uLXRhZ2dpbmcnXCI+VGhpcyB3aWxsIHJlbW92ZSB0YWdnZWQgZHVwbGljYXRlcyBhbmQgbW92ZSB0aGVtIHRvXG4gICAgICAgICAgICAgICAgICAgICdOb24tdGFnJy48L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09J2p1bmsnXCI+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHRhZyB0aGlzIGFzIGp1bms/PC9zcGFuPlxuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBtdC01IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIG1lLTJcIiAoY2xpY2spPVwiY2FuY2VsU3VibWl0KClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJwb3B1cFR5cGUgIT09ICdub24tdGFnZ2luZydcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJzdWJtaXRWYWx1ZShwb3B1cFR5cGUpXCI+XG4gICAgICAgICAgICAgICAgWWVzLCBUYWdcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ25vbi10YWdnaW5nJ1wiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cInN1Ym1pdFZhbHVlKHBvcHVwVHlwZSlcIj5cbiAgICAgICAgICAgICAgICBZZXMsIGNsZWFyXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG5cbjxuZy10ZW1wbGF0ZSAjcmFpc2VkUG9wdXAgbGV0LW1vZGVsPlxuICAgIDxkaXYgY2xhc3M9XCJwLTQgbS00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgYm9yZGVyLTAgcC0wIHctMTAwIGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLXN0YXJ0XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm15LTNcIj5cblxuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHZpZXdCb3g9XCIwIDAgNDAgNDBcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiByeD1cIjIwXCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yMS4yNTEgMTEuMDgwNkMyMS43NDA1IDExLjA2OTkgMjIuMjE1MyAxMS4yNDg3IDIyLjU3NjIgMTEuNTc5NkwyMy40OTIyIDEyLjQyMDRDMjMuODA4OSAxMi43MDk3IDIzLjg5MyAxMy4xMDE3IDIzLjg2NTIgMTMuNDI2M1YxMy40MjcyQzIzLjgzNiAxMy43NDc4IDIzLjY5NTQgMTQuMDU5MiAyMy40Nzg1IDE0LjI5NDRDMjMuMzY5OSAxNC40MTMgMjMuMjg2NSAxNC41NTI1IDIzLjIzMTQgMTQuNzAzNkMyMy4xNzY0IDE0Ljg1NDggMjMuMTUxMiAxNS4wMTU1IDIzLjE1ODIgMTUuMTc2M0MyMy4xNjUyIDE1LjMzNyAyMy4yMDM1IDE1LjQ5NTMgMjMuMjcxNSAxNS42NDExQzIzLjMzOTQgMTUuNzg2OSAyMy40MzYyIDE1LjkxNzIgMjMuNTU0NyAxNi4wMjU5QzIzLjY3MzMgMTYuMTM0NiAyMy44MTE3IDE2LjIxOTggMjMuOTYyOSAxNi4yNzQ5QzI0LjExNDEgMTYuMzMgMjQuMjc0OCAxNi4zNTQxIDI0LjQzNTUgMTYuMzQ3MkMyNC41OTYxIDE2LjM0MDIgMjQuNzUzNyAxNi4zMDE3IDI0Ljg5OTQgMTYuMjMzOUMyNS4wMDg5IDE2LjE4MjkgMjUuMTEwNiAxNi4xMTYgMjUuMjAwMiAxNi4wMzU2TDI1LjM3MDEgMTUuODY1N0MyNS41NzU5IDE1LjY3NDggMjUuODM4NSAxNS41NDA4IDI2LjExNTIgMTUuNDkwN0MyNi4yOTcyIDE1LjQ1NDYgMjYuNDg1IDE1LjQ2MTcgMjYuNjY0MSAxNS41MTAzQzI2Ljg0MzkgMTUuNTU5MSAyNy4wMTAzIDE1LjY0OSAyNy4xNDk0IDE1Ljc3MjlMMjcuMTUxNCAxNS43NzQ5TDI4LjI1OTggMTYuNzkwNUMyOC40NDUgMTYuOTYwNSAyOC41OTQ4IDE3LjE2NTggMjguNzAwMiAxNy4zOTRDMjguODA1NiAxNy42MjIzIDI4Ljg2NDggMTcuODY5NCAyOC44NzQgMTguMTIwNkMyOC44ODMyIDE4LjM3MiAyOC44NDIzIDE4LjYyMzQgMjguNzUzOSAxOC44NTg5QzI4LjY2NTUgMTkuMDk0MSAyOC41MzE2IDE5LjMwOTYgMjguMzU5NCAxOS40OTI3TDIwLjExMTMgMjguMjU4M0MxOS45MzcgMjguNDQzNCAxOS43MjY4IDI4LjU5MTIgMTkuNDk0MSAyOC42OTM4QzE5LjI2MTQgMjguNzk2NSAxOS4wMTAyIDI4Ljg1MjIgMTguNzU1OSAyOC44NTZDMTguNTAxNiAyOC44NTk3IDE4LjI0OTMgMjguODExOSAxOC4wMTM3IDI4LjcxNjNDMTcuNzc3OSAyOC42MjA2IDE3LjU2MzYgMjguNDc4NCAxNy4zODM4IDI4LjI5ODNMMTYuMjUzOSAyNy4xNjg1QzE1Ljc1MTEgMjYuNjY1NiAxNS44ODMyIDI1Ljk1NTIgMTYuMTUxNCAyNS41NTQyTDE2LjIwNjEgMjUuNDY0NEMxNi4zMjQxIDI1LjI0ODYgMTYuMzc0MiAyNS4wMDA4IDE2LjM0OTYgMjQuNzU0NEMxNi4zMjE0IDI0LjQ3MzEgMTYuMTk3IDI0LjIxMDIgMTUuOTk3MSAyNC4wMTAzQzE1Ljc5NzEgMjMuODEwMyAxNS41MzQzIDIzLjY4NTkgMTUuMjUyOSAyMy42NTc3QzE0Ljk3MTUgMjMuNjI5NyAxNC42ODg3IDIzLjY5OTUgMTQuNDUzMSAyMy44NTZIMTQuNDUyMUMxNC4wNDk0IDI0LjEyMjIgMTMuMzQwNyAyNC4yNTUyIDEyLjgzNzkgMjMuNzUxNUwxMS42Nzk3IDIyLjU5MzNDMTEuNTAzNCAyMi40MTY5IDExLjM2NCAyMi4yMDc0IDExLjI2ODYgMjEuOTc3MUMxMS4xNzMxIDIxLjc0NjcgMTEuMTIzMSAyMS40OTk5IDExLjEyMyAyMS4yNTA1QzExLjEyMyAyMS4wMDEgMTEuMTczMSAyMC43NTM1IDExLjI2ODYgMjAuNTIyOUMxMS4zNjQgMjAuMjkyNiAxMS41MDM0IDIwLjA4MzEgMTEuNjc5NyAxOS45MDY3TDE5Ljk0OTIgMTEuNjM2MkMyMC4yOTU0IDExLjI5MDIgMjAuNzYxNiAxMS4wOTEyIDIxLjI1MSAxMS4wODA2Wk0yMS4yNzgzIDEyLjM4MDRDMjEuMTIzNyAxMi4zODM4IDIwLjk3NjUgMTIuNDQ2OCAyMC44NjcyIDEyLjU1NjJMMTIuNTk2NyAyMC44MjU3QzEyLjU0MDkgMjAuODgxNCAxMi40OTcgMjAuOTQ4MiAxMi40NjY4IDIxLjAyMUMxMi40MzY3IDIxLjA5MzggMTIuNDIwOSAyMS4xNzE3IDEyLjQyMDkgMjEuMjUwNUMxMi40MjA5IDIxLjMyOTIgMTIuNDM2NyAyMS40MDczIDEyLjQ2NjggMjEuNDhDMTIuNDk3IDIxLjU1MjggMTIuNTQxIDIxLjYxOTYgMTIuNTk2NyAyMS42NzUzTDEzLjcwNjEgMjIuNzgzN0wxMy43MzE0IDIyLjc3MkMxNC4yMTY5IDIyLjQ0ODUgMTQuNzk5MyAyMi4zMDM1IDE1LjM3OTkgMjIuMzYwOEMxNS45NjA4IDIyLjQxODMgMTYuNTA0MiAyMi42NzQ3IDE2LjkxNyAyMy4wODc0QzE3LjMyOTggMjMuNTAwMiAxNy41ODcgMjQuMDQzNiAxNy42NDQ1IDI0LjYyNDVDMTcuNzAyIDI1LjIwNTUgMTcuNTU2NSAyNS43ODkyIDE3LjIzMjQgMjYuMjc0OUwxNy4yMzA1IDI2LjI3NTlDMTcuMjI2MSAyNi4yODIyIDE3LjIyMjYgMjYuMjg5MyAxNy4yMTk3IDI2LjI5NjRMMTguMzAxOCAyNy4zODA0QzE4LjM1ODUgMjcuNDM3MiAxOC40MjY2IDI3LjQ4MiAxOC41MDEgMjcuNTEyMkMxOC41NzU1IDI3LjU0MjUgMTguNjU1OSAyNy41NTc0IDE4LjczNjMgMjcuNTU2MkMxOC44MTY2IDI3LjU1NDkgMTguODk2MyAyNy41Mzc4IDE4Ljk2OTcgMjcuNTA1NEMxOS4wNDMgMjcuNDcyOSAxOS4xMDkxIDI3LjQyNjEgMTkuMTY0MSAyNy4zNjc3TDI3LjQxMzEgMTguNjAyMUMyNy40NjczIDE4LjU0NDIgMjcuNTA5MyAxOC40NzYxIDI3LjUzNzEgMTguNDAxOUMyNy41NjQ5IDE4LjMyNzYgMjcuNTc4MSAxOC4yNDg3IDI3LjU3NTIgMTguMTY5NEMyNy41NzIyIDE4LjA5MDIgMjcuNTUzOCAxOC4wMTE5IDI3LjUyMDUgMTcuOTM5OUMyNy40ODcyIDE3Ljg2NzkgMjcuNDM5NCAxNy44MDMyIDI3LjM4MDkgMTcuNzQ5NUwyNi4zMjIzIDE2Ljc3NzhDMjYuMjkyNSAxNi43ODg1IDI2LjI2NDggMTYuODA1MyAyNi4yNDMyIDE2LjgyODZDMjYuMDIxNyAxNy4wNzg4IDI1Ljc1MjkgMTcuMjgyNyAyNS40NTIxIDE3LjQyODJDMjUuMTUgMTcuNTc0MyAyNC44MjE0IDE3LjY1ODUgMjQuNDg2MyAxNy42NzYzQzI0LjE1MTEgMTcuNjk0IDIzLjgxNSAxNy42NDUyIDIzLjQ5OSAxNy41MzE3QzIzLjE4MzIgMTcuNDE4MyAyMi44OTI4IDE3LjI0MjkgMjIuNjQ1NSAxNy4wMTYxQzIyLjM5ODIgMTYuNzg5MyAyMi4xOTg4IDE2LjUxNTMgMjIuMDU4NiAxNi4yMTA0QzIxLjkxODMgMTUuOTA1NSAyMS44NDA0IDE1LjU3NTIgMjEuODI5MSAxNS4yMzk3QzIxLjgxNzggMTQuOTA0MyAyMS44NzM3IDE0LjU3IDIxLjk5MzIgMTQuMjU2M0MyMi4xMTIxIDEzLjk0NDIgMjIuMjkxNSAxMy42NTg3IDIyLjUyMTUgMTMuNDE2NUwyMi41NTQ3IDEzLjM2NTdDMjIuNTU5NCAxMy4zNTUyIDIyLjU2MDcgMTMuMzQzNyAyMi41NjM1IDEzLjMzMjVMMjEuNjk3MyAxMi41Mzg2VjEyLjUzNzZDMjEuNTgzMyAxMi40MzMxIDIxLjQzMjkgMTIuMzc3IDIxLjI3ODMgMTIuMzgwNFpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMwMEEzRkZcIiBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMC4zXCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwhLS0gSGVhZGluZyAtLT5cbiAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlIG1iLTJcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5SYWlzZSB0aWNrZXRzIGZvciB0aGUgZm9sbG93aW5nPC9zcGFuPlxuXG4gICAgICAgICAgICA8L2g1PlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+UmFpc2luZyBhIHRpY2tldCBmb3IgZm9vdGZhbGwgY291bnQgaXNzdWVzLiBNYWtlIHN1cmUgYWxsIHJlY29yZHMgYXJlIGlkZW50aWZpZWQgZm9yXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb24uPC9zcGFuPlxuXG5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBteS00XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciBib3JkZXItMSByb3VuZGVkIHAtMyBoLTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgZnMtNSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e3RlbXBSYWlzZWRQYXlsb2FkPy5kdXBsaWNhdGVDb3VudCA/IHRlbXBSYWlzZWRQYXlsb2FkPy5kdXBsaWNhdGVDb3VudCA6JzAnfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCB0ZXh0LW11dGVkIGZzLTYgbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgRHVwbGljYXRlc1xuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgbXktNFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgYm9yZGVyLTEgcm91bmRlZCBwLTMgaC0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIGZzLTUgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3t0ZW1wUmFpc2VkUGF5bG9hZD8uZW1wbG95ZWVDb3VudCA/IHRlbXBSYWlzZWRQYXlsb2FkPy5lbXBsb3llZUNvdW50OicwJyB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIHRleHQtbXV0ZWQgZnMtNiBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBFbXBsb3llZVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgbXktNFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgYm9yZGVyLTEgcm91bmRlZCBwLTMgaC0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIGZzLTUgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3t0ZW1wUmFpc2VkUGF5bG9hZD8uaG91c2VLZWVwaW5nQ291bnQgPyB0ZW1wUmFpc2VkUGF5bG9hZD8uaG91c2VLZWVwaW5nQ291bnQgOicwJ319XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgdGV4dC1tdXRlZCBmcy02IG10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEhvdXNlIEtlZXBpbmdcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBteS00XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciBib3JkZXItMSByb3VuZGVkIHAtMyBoLTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgZnMtNSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e3RlbXBSYWlzZWRQYXlsb2FkPy5qdW5rQ291bnQgPyB0ZW1wUmFpc2VkUGF5bG9hZD8uanVua0NvdW50IDonMCd9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIHRleHQtbXV0ZWQgZnMtNiBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBKdW5rXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBMYWJlbCBhbmQgVGV4dGFyZWEgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS0zXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+RGVzY3JpcHRpb24gKE9wdGlvbmFsKTwvbGFiZWw+XG4gICAgICAgICAgICA8dGV4dGFyZWEgcm93cz1cIjNcIiBbKG5nTW9kZWwpXT1cImNvbW1lbnRUZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgZGVzY3JpcHRpb25cIj48L3RleHRhcmVhPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIG10LTUgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cblxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSB3LTUwIG1lLTJcIiAoY2xpY2spPVwiY2FuY2VsUmFzaWVkKClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy01MFwiIChjbGljayk9XCJzdWJtaXRSYWlzZWQoKVwiPlxuICAgICAgICAgICAgICAgIFJhaXNlIFRpY2tldFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuXG48bmctdGVtcGxhdGUgI2ltYWdlUG9wdXAgbGV0LW1vZGVsPlxuICAgIDxkaXYgY2xhc3M9XCJteC00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgcC0yICBtYi0yIG10LTVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNNb2RhbE9wZW5cIiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGJvcmRlci1ncmF5IHAtMiBcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uICpuZ0lmPVwiY2FuTmF2aWdhdGVMZWZ0XCIgKGNsaWNrKT1cIm5hdmlnYXRlSW1hZ2UoJ2xlZnQnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQgcG9zaXRpb24tYWJzb2x1dGUgc3RhcnQtMCB0b3AtNTAgei1pbmRleC0xMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4peAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIE1haW4gSW1hZ2UgLS0+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGltZyBjbGFzcz1cIiBjdXJzb3ItcG9pbnRlciB3LTEwMCBoLTUyNXB4XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImltYWdlVXJsICsgKHRlbXBNb2RhbEltYWdlPy5maWxlUGF0aCB8fCBzZWxlY3RJbWFnZUFycmF5Py5maWxlUGF0aClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwTWFnbmlmaWVyIGFsdD1cIlwiPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cIiBjdXJzb3ItcG9pbnRlciB3LTEwMCBoLTUyNXB4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaW1hZ2VVcmwgKyAodGVtcE1vZGFsSW1hZ2U/LmZpbGVQYXRoIHx8IHNlbGVjdEltYWdlQXJyYXk/LmZpbGVQYXRoKVwiIGFsdD1cIlwiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gKm5nSWY9XCJjYW5OYXZpZ2F0ZVJpZ2h0XCIgKGNsaWNrKT1cIm5hdmlnYXRlSW1hZ2UoJ3JpZ2h0JylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IHBvc2l0aW9uLWFic29sdXRlIGVuZC0wIHRvcC01MCB6LWluZGV4LTEwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilrZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+IC0tPlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gUmlnaHQgYXJyb3cgYnV0dG9uIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB4LTIgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTIgaW1nLWRvYy10aW1lXCI+VGFuZ28gSUQgOiB7eyh0ZW1wTW9kYWxJbWFnZSB8fCBzZWxlY3RJbWFnZUFycmF5KT8udGVtcGxkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0ZW1wTW9kYWxJbWFnZSB8fCBzZWxlY3RJbWFnZUFycmF5KT8udGVtcElkfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIodGVtcE1vZGFsSW1hZ2UgfHwgc2VsZWN0SW1hZ2VBcnJheSk/LnN0YXR1cyA9PT0nYXBwcm92ZWQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXMtMlwiPjxzdmcgc3R5bGU9XCJ3aWR0aDogMjBweDtcbiAgICBoZWlnaHQ6IDIwcHg7XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMVwiIHZpZXdCb3g9XCIwIDAgMTAgMTFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHk9XCIwLjVcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiByeD1cIjVcIiBmaWxsPVwiI0QxRkFERlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTcuMTIyMiAzLjU3OTE5TDQuMTM4ODcgNi40NTgzNkwzLjM0NzIgNS42MTI1M0MzLjIwMTM3IDUuNDc1MDMgMi45NzIyIDUuNDY2NjkgMi44MDU1MyA1LjU4MzM2QzIuNjQzMDMgNS43MDQxOSAyLjU5NzIgNS45MTY2OSAyLjY5NzIgNi4wODc1M0wzLjYzNDcgNy42MTI1M0MzLjcyNjM3IDcuNzU0MTkgMy44ODQ3IDcuODQxNjkgNC4wNjM4NyA3Ljg0MTY5QzQuMjM0NyA3Ljg0MTY5IDQuMzk3MiA3Ljc1NDE5IDQuNDg4ODcgNy42MTI1M0M0LjYzODg3IDcuNDE2NjkgNy41MDEzNyA0LjAwNDE5IDcuNTAxMzcgNC4wMDQxOUM3Ljg3NjM3IDMuNjIwODYgNy40MjIyIDMuMjgzMzYgNy4xMjIyIDMuNTc1MDNWMy41NzkxOVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzEyQjc2QVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiKHRlbXBNb2RhbEltYWdlIHx8IHNlbGVjdEltYWdlQXJyYXkpPy5zdGF0dXMgPT09J3JlamVjdGVkJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1zLTJcIj48c3ZnIHN0eWxlPVwid2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiMTNcIiB2aWV3Qm94PVwiMCAwIDEzIDEzXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE0MjhfNTk0ODQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuNTI5NjEgMS41SDguNjY5NjFMMTEuNTk5NiA0LjQzVjguNTdMOC42Njk2MSAxMS41SDQuNTI5NjFMMS41OTk2MSA4LjU3VjQuNDNMNC41Mjk2MSAxLjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRkVFNEUyXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wOTk2MSA1TDUuMDk5NjEgOE01LjA5OTYxIDVMOC4wOTk2MSA4TTQuNTI5NjEgMS41SDguNjY5NjFMMTEuNTk5NiA0LjQzVjguNTdMOC42Njk2MSAxMS41SDQuNTI5NjFMMS41OTk2MSA4LjU3VjQuNDNMNC41Mjk2MSAxLjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTQyOF81OTQ4NFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC41OTk2MDkgMC41KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nLWRvYy12YWx1ZVwiPkVudHJ5IFRpbWUgOiB7eyh0ZW1wTW9kYWxJbWFnZSB8fCBzZWxlY3RJbWFnZUFycmF5KT8uZW50cnlUbWUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRlbXBNb2RhbEltYWdlIHx8IHNlbGVjdEltYWdlQXJyYXkpPy5lbnRyeVRpbWV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTUgdGV4dC1lbmQgcHktM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7KHRlbXBNb2RhbEltYWdlIHx8IHNlbGVjdEltYWdlQXJyYXkpPy5yZXZvcHNUeXBlfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIih0ZW1wTW9kYWxJbWFnZSB8fCBzZWxlY3RJbWFnZUFycmF5KT8ucmV2b3BzVHlwZSA9PT0nbm9uLXRhZ2dpbmcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cIllldCB0byB0YWcgdGhlIGN1c3RvbWVyXCIgcGxhY2VtZW50PVwidG9wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTlcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTkgMThcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02LjAyMzQ0IDUuNjI1SDYuMDMwOTRNMTYuMjE1OSAxMC40MzI1TDEwLjgzODQgMTUuODFDMTAuNjk5MSAxNS45NDk1IDEwLjUzMzcgMTYuMDYwMSAxMC4zNTE2IDE2LjEzNTZDMTAuMTY5NSAxNi4yMTExIDkuOTc0MzEgMTYuMjQ5OSA5Ljc3NzE5IDE2LjI0OTlDOS41ODAwNiAxNi4yNDk5IDkuMzg0ODcgMTYuMjExMSA5LjIwMjc4IDE2LjEzNTZDOS4wMjA2OCAxNi4wNjAxIDguODU1MjUgMTUuOTQ5NSA4LjcxNTk0IDE1LjgxTDIuMjczNDQgOS4zNzVWMS44NzVIOS43NzM0NEwxNi4yMTU5IDguMzE3NUMxNi40OTUzIDguNTk4NTQgMTYuNjUyMSA4Ljk3ODcyIDE2LjY1MjEgOS4zNzVDMTYuNjUyMSA5Ljc3MTI4IDE2LjQ5NTMgMTAuMTUxNSAxNi4yMTU5IDEwLjQzMjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiKHRlbXBNb2RhbEltYWdlIHx8IHNlbGVjdEltYWdlQXJyYXkpPy5yZXZvcHNUeXBlID09PSdkdXBsaWNhdGUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIodGVtcE1vZGFsSW1hZ2UgfHwgc2VsZWN0SW1hZ2VBcnJheSk/LmlzUGFyZW50XCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAxMCAxMFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF81NjhfMTAzNjU3KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi4wODM5OCA2LjI1MDAxSDEuNjY3MzJDMS40NDYzIDYuMjUwMDEgMS4yMzQzNCA2LjE2MjIxIDEuMDc4MDYgNi4wMDU5M0MwLjkyMTc4MiA1Ljg0OTY1IDAuODMzOTg0IDUuNjM3NjkgMC44MzM5ODQgNS40MTY2OFYxLjY2NjY4QzAuODMzOTg0IDEuNDQ1NjYgMC45MjE3ODIgMS4yMzM3IDEuMDc4MDYgMS4wNzc0MkMxLjIzNDM0IDAuOTIxMTQxIDEuNDQ2MyAwLjgzMzM0NCAxLjY2NzMyIDAuODMzMzQ0SDUuNDE3MzJDNS42MzgzMyAwLjgzMzM0NCA1Ljg1MDI5IDAuOTIxMTQxIDYuMDA2NTcgMS4wNzc0MkM2LjE2Mjg1IDEuMjMzNyA2LjI1MDY1IDEuNDQ1NjYgNi4yNTA2NSAxLjY2NjY4VjIuMDgzMzRNNC41ODM5OCAzLjc1MDAxSDguMzMzOThDOC43OTQyMiAzLjc1MDAxIDkuMTY3MzIgNC4xMjMxMSA5LjE2NzMyIDQuNTgzMzRWOC4zMzMzNEM5LjE2NzMyIDguNzkzNTggOC43OTQyMiA5LjE2NjY4IDguMzMzOTggOS4xNjY2OEg0LjU4Mzk4QzQuMTIzNzUgOS4xNjY2OCAzLjc1MDY1IDguNzkzNTggMy43NTA2NSA4LjMzMzM0VjQuNTgzMzRDMy43NTA2NSA0LjEyMzExIDQuMTIzNzUgMy43NTAwMSA0LjU4Mzk4IDMuNzUwMDFaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI1XCIgaGVpZ2h0PVwiNVwiIGZpbGw9XCIjNDc1NDY3XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzU2OF8xMDM2NTdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiEodGVtcE1vZGFsSW1hZ2UgfHwgc2VsZWN0SW1hZ2VBcnJheSk/LmlzUGFyZW50XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM1KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNC4xNjc5NyAxMy4xODU5SDMuMzM0NjRDMi44OTI2MSAxMy4xODU5IDIuNDY4NjggMTMuMDEwMyAyLjE1NjEyIDEyLjY5NzdDMS44NDM1NiAxMi4zODUyIDEuNjY3OTcgMTEuOTYxMiAxLjY2Nzk3IDExLjUxOTJWNC4wMTkyMUMxLjY2Nzk3IDMuNTc3MTggMS44NDM1NiAzLjE1MzI2IDIuMTU2MTIgMi44NDA2OUMyLjQ2ODY4IDIuNTI4MTMgMi44OTI2MSAyLjM1MjU0IDMuMzM0NjQgMi4zNTI1NEgxMC44MzQ2QzExLjI3NjcgMi4zNTI1NCAxMS43MDA2IDIuNTI4MTMgMTIuMDEzMSAyLjg0MDY5QzEyLjMyNTcgMy4xNTMyNiAxMi41MDEzIDMuNTc3MTggMTIuNTAxMyA0LjAxOTIxVjQuODUyNTRNOS4xNjc5NyA4LjE4NTg3SDE2LjY2OEMxNy41ODg0IDguMTg1ODcgMTguMzM0NiA4LjkzMjA2IDE4LjMzNDYgOS44NTI1NFYxNy4zNTI1QzE4LjMzNDYgMTguMjczIDE3LjU4ODQgMTkuMDE5MiAxNi42NjggMTkuMDE5Mkg5LjE2Nzk3QzguMjQ3NDkgMTkuMDE5MiA3LjUwMTMgMTguMjczIDcuNTAxMyAxNy4zNTI1VjkuODUyNTRDNy41MDEzIDguOTMyMDYgOC4yNDc0OSA4LjE4NTg3IDkuMTY3OTcgOC4xODU4N1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM1XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiKHRlbXBNb2RhbEltYWdlIHx8IHNlbGVjdEltYWdlQXJyYXkpPy5yZXZvcHNUeXBlID09PSdlbXBsb3llZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAyMCAyMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM5KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMTY1NCAxOC4xODZWMTYuNTE5NEMxNC4xNjU0IDE1LjYzNTMgMTMuODE0MiAxNC43ODc1IDEzLjE4OTEgMTQuMTYyM0MxMi41NjM5IDEzLjUzNzIgMTEuNzE2MSAxMy4xODYgMTAuODMyIDEzLjE4Nkg0LjE2NTM2QzMuMjgxMzEgMTMuMTg2IDIuNDMzNDYgMTMuNTM3MiAxLjgwODM0IDE0LjE2MjNDMS4xODMyMiAxNC43ODc1IDAuODMyMDMxIDE1LjYzNTMgMC44MzIwMzEgMTYuNTE5NFYxOC4xODZNMTkuMTY1NCAxOC4xODZWMTYuNTE5NEMxOS4xNjQ4IDE1Ljc4MDggMTguOTE5IDE1LjA2MzMgMTguNDY2NSAxNC40Nzk2QzE4LjAxNCAxMy44OTU5IDE3LjM4MDUgMTMuNDc5IDE2LjY2NTQgMTMuMjk0NE0xMy4zMzIgMy4yOTQzN0MxNC4wNDkgMy40Nzc5NSAxNC42ODQ2IDMuODk0OTUgMTUuMTM4NCA0LjQ3OTYzQzE1LjU5MjIgNS4wNjQzIDE1LjgzODYgNS43ODMzOSAxNS44Mzg2IDYuNTIzNTRDMTUuODM4NiA3LjI2MzY4IDE1LjU5MjIgNy45ODI3NyAxNS4xMzg0IDguNTY3NDRDMTQuNjg0NiA5LjE1MjEyIDE0LjA0OSA5LjU2OTEyIDEzLjMzMiA5Ljc1MjdNMTAuODMyIDYuNTE5MzdDMTAuODMyIDguMzYwMzIgOS4zMzk2NSA5Ljg1MjcgNy40OTg3IDkuODUyN0M1LjY1Nzc1IDkuODUyNyA0LjE2NTM2IDguMzYwMzIgNC4xNjUzNiA2LjUxOTM3QzQuMTY1MzYgNC42Nzg0MiA1LjY1Nzc1IDMuMTg2MDQgNy40OTg3IDMuMTg2MDRDOS4zMzk2NSAzLjE4NjA0IDEwLjgzMiA0LjY3ODQyIDEwLjgzMiA2LjUxOTM3WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiKHRlbXBNb2RhbEltYWdlIHx8IHNlbGVjdEltYWdlQXJyYXkpPy5yZXZvcHNUeXBlID09PSdob3VzZS1rZWVwaW5nJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDIxIDIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2NDMpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuMjYyMTkgMS4zNjcyMkMxMC4xNzc3IDAuNDU4OTc0IDExLjY2MiAwLjQ1ODk3NCAxMi41Nzc2IDEuMzY3MjJMMjAuMzEzMyA5LjA0MTUzQzIxLjIyODcgOS45NDk4IDIxLjIyODcgMTEuNDIyMyAyMC4zMTMzIDEyLjMzMDZMMTIuNTc3NiAyMC4wMDQ5QzExLjY2MiAyMC45MTMxIDEwLjE3NzcgMjAuOTEzMSA5LjI2MjE5IDIwLjAwNDlMNy4wNTE2NiAxNy44MTE5TDUuMDI1MzggMTkuODIyMUM0LjEwOTg3IDIwLjczMDMgMi42MjU1MyAyMC43MzAzIDEuNzEwMDIgMTkuODIyMUMwLjc5NDUxIDE4LjkxMzkgMC43OTQ1MSAxNy40NDEzIDEuNzEwMDIgMTYuNTMzMUwzLjczNjMgMTQuNTIyOUwxLjUyNjQ4IDEyLjMzMDZDMC42MTA5NjYgMTEuNDIyMyAwLjYxMDk2NiA5Ljk0OTggMS41MjY0OCA5LjA0MTUzTDkuMjYyMTkgMS4zNjcyMlpNMTEuNDcyNCAyLjQ2MzU3QzExLjE2NzIgMi4xNjA4MiAxMC42NzI0IDIuMTYwODIgMTAuMzY3MiAyLjQ2MzU3TDQuODQxNDUgNy45NDU1NkwxMy42ODIzIDE2LjcxNjNMMTkuMjA4MSAxMS4yMzQyQzE5LjUxMzMgMTAuOTMxNSAxOS41MTMzIDEwLjQ0MDYgMTkuMjA4MSAxMC4xMzc5TDE1LjMzOTkgNi4zMDAzMkwxNC4wNTA1IDcuNTc5NEMxMy43NDUzIDcuODgyMTQgMTMuMjUwNiA3Ljg4MjE0IDEyLjk0NTUgNy41Nzk0QzEyLjY0MDMgNy4yNzY2NCAxMi42NDAzIDYuNzg1NzkgMTIuOTQ1NSA2LjQ4MzA1TDE0LjIzNDcgNS4yMDM5N0wxMy4xMjk5IDQuMTA3ODZMOS45OTg3MiA3LjIxNDE4QzkuNjkzNTQgNy41MTY5MiA5LjE5ODczIDcuNTE2OTIgOC44OTM1NiA3LjIxNDE4QzguNTg4MzggNi45MTE0MyA4LjU4ODM4IDYuNDIwNTggOC44OTM1NiA2LjExNzgzTDEyLjAyNDcgMy4wMTE1MUwxMS40NzI0IDIuNDYzNTdaTTEyLjU3NzEgMTcuODEyNUwzLjczNjMzIDkuMDQxOTFMMi42MzE2IDEwLjEzNzlDMi4zMjY0MiAxMC40NDA2IDIuMzI2NDIgMTAuOTMxNSAyLjYzMTYgMTEuMjM0MkwxMC4zNjcyIDE4LjkwODVDMTAuNjcyNCAxOS4yMTEzIDExLjE2NzIgMTkuMjExMyAxMS40NzI0IDE4LjkwODVMMTIuNTc3MSAxNy44MTI1Wk00Ljg0MTMyIDE1LjYxOTJMMi44MTUxNCAxNy42Mjk0QzIuNTA5OTcgMTcuOTMyMSAyLjUwOTk3IDE4LjQyMyAyLjgxNTE0IDE4LjcyNThDMy4xMjAzMSAxOS4wMjg1IDMuNjE1MDkgMTkuMDI4NSAzLjkyMDI2IDE4LjcyNThMNS45NDY0NCAxNi43MTU2TDQuODQxMzIgMTUuNjE5MlpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzQ3NTQ2N1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjQzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXIgcHktMiBweC0wXCI+IC0tPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBweS0yIG1iLTIgcHgtMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxuXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lXCIgKGNsaWNrKT1cImNsb3NlSW1hZ2UoKVwiPkNsb3NlPC9idXR0b24+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gPC9kaXY+IC0tPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBGb290ZmFsbCBUcmVuZHMgVGVtcGxhdGUgLS0+XG48bmctdGVtcGxhdGUgI2Zvb3RmYWxsVHJlbmRzVGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cInJvdyB3LTEwMCBtYi0xIGctMVwiPlxuICAgICAgICA8IS0tIFRvdGFsIEZvb3RmYWxsIENhcmQgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWV0cmljLXRpdGxlXCI+VG90YWwgRm9vdGZhbGw8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHBsYWNlbWVudD1cInRvcFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNCAxOEg5LjVWMTkuMjVDOS41IDE5Ljk3OTMgOS4yMTAyNyAyMC42Nzg4IDguNjk0NTQgMjEuMTk0NUM4LjE3ODgyIDIxLjcxMDMgNy40NzkzNSAyMiA2Ljc1IDIyQzYuMDIwNjUgMjIgNS4zMjExOCAyMS43MTAzIDQuODA1NDYgMjEuMTk0NUM0LjI4OTczIDIwLjY3ODggNCAxOS45NzkzIDQgMTkuMjVWMThaTTggNi4xMTk5OUMxMCA2LjExOTk5IDExIDguOTk5OTkgMTEgMTFDMTEgMTIgMTAuNSAxMyAxMCAxNC41TDkuNSAxNkg0QzQgMTUgMy41IDEzLjUgMy41IDExQzMuNSA4LjQ5OTk5IDUuNDk4IDYuMTE5OTkgOCA2LjExOTk5Wk0yMC4wNTQgMTQuMDk4TDE5LjgzNyAxNS4zMjlDMTkuNzAyMyAxNi4wMzk2IDE5LjI5MzEgMTYuNjY4NiAxOC42OTggMTcuMDc5NkMxOC4xMDI5IDE3LjQ5MDcgMTcuMzY5OCAxNy42NTA4IDE2LjY1NzYgMTcuNTI1MkMxNS45NDUzIDE3LjM5OTYgMTUuMzExMSAxNi45OTg0IDE0Ljg5MjUgMTYuNDA4NkMxNC40NzM5IDE1LjgxODggMTQuMzA0NSAxNS4wODc4IDE0LjQyMSAxNC4zNzRMMTQuNjM3IDEzLjE0NEwyMC4wNTQgMTQuMDk4Wk0xOC4xNzggMS43MDQ5OUMyMC42NDIgMi4xMzg5OSAyMi4xOTYgNC44Mjk5OSAyMS43NjIgNy4yOTE5OUMyMS4zMjggOS43NTM5OSAyMC41NzUgMTEuMTQ0IDIwLjQwMiAxMi4xMjlMMTQuOTg1IDExLjE3NEwxNC43NTMgOS42MDk5OUMxNC41MjEgOC4wNDU5OSAxNC4yMDMgNi45NzM5OSAxNC4zNzYgNS45ODk5OUMxNC43MjMgNC4wMTk5OSAxNi4yMDggMS4zNTc5OSAxOC4xNzggMS43MDQ5OVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzAwQTNGRlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy12YWx1ZVwiPnt7IGdldEN1cnJlbnRGb290ZmFsbCgpIHx8IDAgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgPCEtLSBbbmdDbGFzc109XCJnZXRGb290ZmFsbFBlcmNlbnRhZ2VDaGFuZ2UoKSA+PSAwID8gJ3VwJyA6ICdkb3duJ1wiIC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtdHJlbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTUuMzMyNyAzLjk5OTk4TDguOTk5MzUgMTAuMzMzM0w1LjY2NjAyIDYuOTk5OThMMC42NjYwMTYgMTJNMTUuMzMyNyAzLjk5OTk4SDExLjMzMjdNMTUuMzMyNyAzLjk5OTk4VjcuOTk5OThcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMzk4NTVcIiBzdHJva2Utd2lkdGg9XCIxLjE4NjgxXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwiY29sb3I6ICMxMEI5ODFcIj57e2dldEZvb3RmYWxsUGVyY2VudGFnZUNoYW5nZSgpIH19JSA8L3NwYW4+PHNwYW4+dnMgWWVzdGVyZGF5PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIFRvdGFsIERvd250aW1lIENhcmQgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWV0cmljLXRpdGxlXCI+VG90YWwgRG93bnRpbWU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG93bnRpbWUtaWNvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MVwiIHZpZXdCb3g9XCIwIDAgNDAgNDFcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeT1cIjAuNVwiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHJ4PVwiMjBcIiBmaWxsPVwiI0RBRjFGRlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIxLjkwMDQgMTIuMTY3NUMyMi45OTU4IDEyLjE2NzUgMjQuMDQyMyAxMi4zOTE4IDI0Ljk5NzcgMTIuNzk4N0MyNS45ODg5IDEzLjIyMDcgMjYuODgwOSAxMy44NDAyIDI3LjYyNzkgMTQuNjA4N0MyOC4zNzM0IDE1LjM3NTYgMjguOTc1NiAxNi4yOTMxIDI5LjM4NTcgMTcuMzE2MkMyOS43ODEzIDE4LjI5OSAyOS45OTkzIDE5LjM3NTYgMjkuOTk5MyAyMC41MDA4QzI5Ljk5OTMgMjEuNjI3NyAyOS43ODEzIDIyLjcwNDMgMjkuMzg1NyAyMy42ODcxQzI4Ljk3NTYgMjQuNzA2OCAyOC4zNzM0IDI1LjYyNDQgMjcuNjI2MyAyNi4zOTI5QzI2Ljg4MDkgMjcuMTU5OCAyNS45ODg5IDI3Ljc3OTMgMjQuOTk0NSAyOC4yMDEyQzI0LjAzOTEgMjguNjA4MSAyMi45OTI1IDI4LjgzMjUgMjEuODk4OCAyOC44MzI1QzIwLjgwMzQgMjguODMyNSAxOS43NTY4IDI4LjYwODEgMTguODAxNCAyOC4yMDEyQzE3LjgxMDIgMjcuNzc5MyAxNi45MTgzIDI3LjE1OTggMTYuMTcyOSAyNi4zOTI5TDE2LjE3MTIgMjYuMzkxMkMxNS40MjQyIDI1LjYyMjcgMTQuODIzNiAyNC43MDUyIDE0LjQxMzQgMjMuNjg3MUMxNC4yODY1IDIzLjM3MDcgMTQuMTc3NCAyMy4wNDU5IDE0LjA4NzkgMjIuNzEyN0MxNC4yNTcyIDIyLjcyOTQgMTQuNDI5NyAyMi43Mzc4IDE0LjYwMzggMjIuNzM3OEMxNC45MzQyIDIyLjczNzggMTUuMjU2NSAyMi43MDc2IDE1LjU3MDYgMjIuNjQ5QzE1LjYyMjcgMjIuODA5OCAxNS42Nzk3IDIyLjk2ODggMTUuNzQxNSAyMy4xMjQ2QzE2LjA3ODUgMjMuOTYxNyAxNi41NzMyIDI0LjcxNTIgMTcuMTg4NSAyNS4zNDgxQzE3LjgwMzcgMjUuOTgxIDE4LjUzNzggMjYuNDkgMTkuMzQ5OSAyNi44MzY2QzIwLjEzMjggMjcuMTY5OCAyMC45OTM4IDI3LjM1NTcgMjEuODk4OCAyNy4zNTU3QzIyLjgwMzcgMjcuMzU1NyAyMy42NjMxIDI3LjE3MTUgMjQuNDQ3NiAyNi44MzY2QzI1LjI2MTQgMjYuNDkgMjUuOTkzOCAyNS45ODEgMjYuNjA5MSAyNS4zNDgxQzI3LjIyNDMgMjQuNzE1MiAyNy43MTkxIDIzLjk2MDEgMjguMDU2IDIzLjEyNDZDMjguMzc5OSAyMi4zMTkyIDI4LjU2MDUgMjEuNDMzNCAyOC41NjA1IDIwLjUwMjVDMjguNTYwNSAxOS41NzE1IDI4LjM4MTUgMTguNjg3NSAyOC4wNTYgMTcuODgwNEMyNy43MTkxIDE3LjA0MzIgMjcuMjI0MyAxNi4yODk4IDI2LjYwOTEgMTUuNjU2OUMyNS45OTM4IDE1LjAyNCAyNS4yNTk4IDE0LjUxNDkgMjQuNDQ3NiAxNC4xNjg0QzIzLjY2NDcgMTMuODM1MiAyMi44MDM3IDEzLjY0OTMgMjEuODk4OCAxMy42NDkzQzIwLjk5MzggMTMuNjQ5MyAyMC4xMzQ0IDEzLjgzMzUgMTkuMzQ5OSAxNC4xNjg0QzE5LjI3OTkgMTQuMTk4NSAxOS4yMSAxNC4yMzAzIDE5LjE0MTYgMTQuMjYyMUMxOC44NzQ3IDEzLjgzMDEgMTguNTUyNCAxMy40MzgzIDE4LjE4MjkgMTMuMDk4NEMxOC4zODQ4IDEyLjk5MTMgMTguNTkxNSAxMi44OTI1IDE4LjgwMTQgMTIuODAyMUMxOS43NjAxIDEyLjM5MTggMjAuODA1IDEyLjE2NzUgMjEuOTAwNCAxMi4xNjc1Wk0yMC45NzEgMTYuNTM5M0MyMC45NzEgMTYuMzM1IDIxLjA1MjQgMTYuMTUwOCAyMS4xODEgMTYuMDE2OUMyMS4zMTEyIDE1Ljg4MjkgMjEuNDkwMiAxNS44MDA5IDIxLjY4ODggMTUuODAwOUMyMS44ODc0IDE1LjgwMDkgMjIuMDY2NCAxNS44ODI5IDIyLjE5NjYgMTYuMDE2OUMyMi4zMjY4IDE2LjE1MDggMjIuNDA2NiAxNi4zMzUgMjIuNDA2NiAxNi41MzkzVjIwLjQyNzFMMjUuMjMwNSAyMi4xNTAxQzI1LjM5OTcgMjIuMjUzOSAyNS41MTM3IDIyLjQxOTYgMjUuNTU5MiAyMi42MDIxQzI1LjYwNDggMjIuNzg0NyAyNS41ODM3IDIyLjk4NTYgMjUuNDgyNyAyMy4xNTk3VjIzLjE2MTRDMjUuMzgxOCAyMy4zMzU1IDI1LjIyMDcgMjMuNDUyNyAyNS4wNDMzIDIzLjQ5OTZDMjQuODY1OSAyMy41NDY1IDI0LjY3MDYgMjMuNTI0NyAyNC41MDEzIDIzLjQyMDlIMjQuNDk5N0wyMS4zNDA1IDIxLjQ5MzdDMjEuMjMxNCAyMS40MzE4IDIxLjE0MTkgMjEuMzQxMyAyMS4wNzY4IDIxLjIzNDJDMjEuMDEwMSAyMS4xMjIgMjAuOTcxIDIwLjk4OTcgMjAuOTcxIDIwLjg0OTFWMTYuNTM5M1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM2NjcwODVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjM5MTMgMTIuNjA5NUMxNi44MTY0IDEyLjYwOTUgMTguNzgyNiAxNC42MzIxIDE4Ljc4MjYgMTcuMTI2OUMxOC43ODI2IDE5LjYyMTggMTYuODE2NCAyMS42NDQ0IDE0LjM5MTMgMjEuNjQ0NEMxMS45NjYxIDIxLjY0NDQgMTAgMTkuNjIxOCAxMCAxNy4xMjY5QzEwIDE0LjYzMjEgMTEuOTY2MSAxMi42MDk1IDE0LjM5MTMgMTIuNjA5NVpNMTQuMzkxMyAxOS43MTcyTDE2Ljc0OCAxNi43MjAxSDE1LjI4NDhWMTUuMTI2MUgxMy40OTc3VjE2LjcyMDFIMTIuMDM0NUwxNC4zOTEzIDE5LjcxNzJaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRjA0NDM4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLXZhbHVlXCI+e3sgZ2V0Rm9ybWF0dGVkRG93bnRpbWUoKSB8fCAnLScgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLXRyZW5kIG1ldHJpYy10cmVuZC1wbGFjZWhvbGRlclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIm1ldHJpYy10YWcgc3VjY2Vzc1wiICpuZ0lmPVwiaGFzRG93bnRpbWUoKVwiPiAtLT5cbiAgICAgICAgICAgICAgICA8IS0tIDxzdmcgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS42NjY3IDMuNUw1LjI1IDkuOTE2NjdMMi4zMzMzNCA3XCIgc3Ryb2tlPVwiIzEwQjk4MVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPiAtLT5cbiAgICAgICAgICAgICAgICA8IS0tIDxzcGFuPklzc3VlIHN1Ym1pdHRlZDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTQuNSAyLjVMNy41IDUuNUwxMC41IDIuNVwiIHN0cm9rZT1cIiMxMEI5ODFcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPiAtLT5cbiAgICAgICAgICAgICAgICA8IS0tIDwvZGl2PiAtLT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIFRpY2tldCBTdGF0dXMgQ2FyZCAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWNhcmRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldHJpYy10aXRsZVwiPlRpY2tldCBzdGF0dXM8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy12YWx1ZVwiIFxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAndGlja2V0LXN0YXR1cy1yYWlzZWQnOiBnZXRUaWNrZXRTdGF0dXMoKT8udG9Mb3dlckNhc2UoKSA9PT0gJ3JhaXNlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAndGlja2V0LXN0YXR1cy1jbG9zZWQnOiBnZXRUaWNrZXRTdGF0dXMoKT8udG9Mb3dlckNhc2UoKSA9PT0gJ2Nsb3NlZCdcbiAgICAgICAgICAgICAgICAgICAgfVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBnZXRUaWNrZXRTdGF0dXMoKSA9PT0gJy0nID8gJy0nIDogKGdldFRpY2tldFN0YXR1cygpIHwgdGl0bGVjYXNlKSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtdHJlbmQgbWV0cmljLXRyZW5kLXBsYWNlaG9sZGVyXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcmVzZXRSZXF1ZXN0UG9wdXAgbGV0LW1vZGVsPlxuICAgIDxkaXYgY2xhc3M9XCJwLTRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBib3JkZXItMCBwLTAgdy0xMDBcIj5cbiAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlIG1iLTMgZnctYm9sZFwiPlxuICAgICAgICAgICAgICAgIFJlc2V0IHJlcXVlc3QuXG4gICAgICAgICAgICA8L2g1PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgcC0wXCI+XG4gICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtbXV0ZWQgbWItM1wiPlxuICAgICAgICAgICAgICAgIFlvdSdyZSByZXF1ZXN0aW5nIHRvIHJlLWVuYWJsZSBmb290ZmFsbCB0aWNrZXRzLCBkaXNhYmxlZCBhZnRlciB0aHJlZSBpbnN0YW5jZXMgb2YgZXhjZWVkaW5nIDk1JVxuICAgICAgICAgICAgICAgIGFjY3VyYWN5LlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LW11dGVkIG1iLTBcIj5cbiAgICAgICAgICAgICAgICBQbGVhc2UgZW5zdXJlIGZ1dHVyZSBhY2N1cmFjeSBzdGF5cyBvbiBvciB3aXRoaW4gOTUlLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlciBib3JkZXItMCBwLTAgbXQtNCBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBnYXAtMlwiPlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiAoY2xpY2spPVwiY2FuY2VsUmVzZXRSZXF1ZXN0KClcIj5cbiAgICAgICAgICAgICAgICBDYW5jZWxcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwic3VibWl0UmVzZXRSZXF1ZXN0KClcIj5cbiAgICAgICAgICAgICAgICBTZW5kIFJlcXVlc3RcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdGlja2V0U3RhdHVzVGVtcGxhdGUgbGV0LW1vZGVsPlxuICAgIDwhLS0gVGlja2V0IFJldmlldyBDYXJkIChzaG93biB3aGVuIHRpY2tldCBzdGF0dXMgaXMgcmFpc2VkKSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1iLTNcIiAqbmdJZj1cImlzVGlja2V0UmFpc2VkKCkgJiYgZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LXJldmlldy1jYXJkXCI+XG4gICAgICAgICAgICA8IS0tIEFjdHVhbCBGb290ZmFsbCBIZWFkZXIgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0dWFsLWZvb3RmYWxsLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWN0dWFsLWZvb3RmYWxsLW51bWJlclwiPnt7IGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LmZvb3RmYWxsIHx8IDAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhY3R1YWwtZm9vdGZhbGwtbGFiZWxcIj5BY3R1YWwgRm9vdGZhbGw8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gVGlja2V0IENyZWF0ZWQgQnkgU2VjdGlvbiAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtY3JlYXRvci1zZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LmNyZWF0ZWRCeUVtYWlsIHx8IGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LmNyZWF0ZWRBdFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNyZWF0b3ItYXZhdGFyXCIgKm5nSWY9XCJnZXRUYWdnaW5nRGF0YSgpPy5jcmVhdGVkQnlFbWFpbD8ucHJvZmlsZVBpY3R1cmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJnZXRUYWdnaW5nRGF0YSgpPy5jcmVhdGVkQnlFbWFpbD8ucHJvZmlsZVBpY3R1cmVcIiBhbHQ9XCJQcm9maWxlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3JlYXRvci1hdmF0YXItcGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8uY3JlYXRlZEJ5RW1haWw/LnByb2ZpbGVQaWN0dXJlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHZpZXdCb3g9XCIwIDAgMzIgMzJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiByeD1cIjE2XCIgZmlsbD1cIiNFQUY4RkZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYgMTBDMTcuNjU2OSAxMCAxOSAxMS4zNDMxIDE5IDEzQzE5IDE0LjY1NjkgMTcuNjU2OSAxNiAxNiAxNkMxNC4zNDMxIDE2IDEzIDE0LjY1NjkgMTMgMTNDMTMgMTEuMzQzMSAxNC4zNDMxIDEwIDE2IDEwWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMDBBM0ZGXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExIDIyQzExIDE5LjIzODYgMTMuMjM4NiAxNyAxNiAxN0MxOC43NjE0IDE3IDIxIDE5LjIzODYgMjEgMjJWMjNIMTFWMjJaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMwMEEzRkZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3JlYXRvci1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3JlYXRvci1sYWJlbFwiPlRpY2tldCBjcmVhdGVkIGJ5PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3JlYXRvci1kZXRhaWxzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcmVhdG9yLWVtYWlsXCI+e3sgZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8uY3JlYXRlZEJ5RW1haWwgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8uY3JlYXRlZEJ5RW1haWwgfHwgJ04vQScgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcmVhdG9yLXNlcGFyYXRvclwiICpuZ0lmPVwiZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8uY3JlYXRlZEF0XCI+4oCiPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3JlYXRvci10aW1lXCIgKm5nSWY9XCJnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5jcmVhdGVkQXRcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5jcmVhdGVkQXQgfCBkYXRlOidoOm1tOnNzIGEgLSBkIE1NTSB5eXl5JyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIFRpY2tldCBSZXZpc2VkIEZvb3RmYWxsIGFuZCBNZXRyaWNzIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlzZWQtZm9vdGZhbGwtc2VjdGlvblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWNzLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbnVtYmVyIGJsdWUtdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LnJldmljZWRGb290ZmFsbCB8fCAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRyaWMtcGVyY2VudGFnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe3sgZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8ucmV2aWNlZFBlcmMgfHwgMCB9fSUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWV0cmljLWFycm93XCI+4oaTPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+UmV2aXNlZCBmb290ZmFsbDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlclwiPih7eyBnZXRSZXZpc2lvbkNhbGN1bGF0aW9uKCd0YWdnaW5nJyl9fSUpPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+VGlja2V0JTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1kaXZpZGVyXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1udW1iZXJcIj57eyBnZXRDb3VudEJ5VHlwZShnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpLCAnZHVwbGljYXRlJykgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbGFiZWxcIj5EdXBsaWNhdGVzPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbnVtYmVyXCI+e3sgZ2V0Q291bnRCeVR5cGUoZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKSwgJ2VtcGxveWVlJykgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbGFiZWxcIj5FbXBsb3llZS9TdGFmZjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlclwiPnt7IGdldENvdW50QnlUeXBlKGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyksICdqdW5rJykgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbGFiZWxcIj5KdW5rPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbnVtYmVyXCI+e3sgZ2V0Q291bnRCeVR5cGUoZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKSwgJ2hvdXNlS2VlcGluZycpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+SG91c2UgS2VlcGluZzwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gVGlja2V0IEZpbmFsIHJldmlzaW9uIENhcmQgKHNob3duIHdoZW4gdGlja2V0IHN0YXR1cyBpcyBjbG9zZWQpIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbWItM1wiICpuZ0lmPVwiaXNUaWNrZXRDbG9zZWQoKSAmJiBnZXRUYWdnaW5nRGF0YSgnZmluYWxSZXZpc2lvbicpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtcmV2aWV3LWNhcmRcIj5cbiAgICAgICAgICAgIDwhLS0gVGlja2V0IGNhcmQgc2VjdGlvbiBpbiByZXZpc2lvbiBzdGFydCAtLT5cblxuICAgICAgICAgICAgPCEtLSBBY3R1YWwgRm9vdGZhbGwgSGVhZGVyIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdHVhbC1mb290ZmFsbC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFjdHVhbC1mb290ZmFsbC1udW1iZXJcIj57eyBnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5mb290ZmFsbCB8fCAwIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWN0dWFsLWZvb3RmYWxsLWxhYmVsXCI+QWN0dWFsIEZvb3RmYWxsPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIFRpY2tldCBDcmVhdGVkIEJ5IFNlY3Rpb24gLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWNyZWF0b3Itc2VjdGlvblwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5jcmVhdGVkQnlFbWFpbCB8fCBnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5jcmVhdGVkQXRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjcmVhdG9yLWF2YXRhclwiICpuZ0lmPVwiZ2V0VGFnZ2luZ0RhdGEoKT8uY3JlYXRlZEJ5RW1haWw/LnByb2ZpbGVQaWN0dXJlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiZ2V0VGFnZ2luZ0RhdGEoKT8uY3JlYXRlZEJ5RW1haWw/LnByb2ZpbGVQaWN0dXJlXCIgYWx0PVwiUHJvZmlsZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNyZWF0b3ItYXZhdGFyLXBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LmNyZWF0ZWRCeUVtYWlsPy5wcm9maWxlUGljdHVyZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiB2aWV3Qm94PVwiMCAwIDMyIDMyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgcng9XCIxNlwiIGZpbGw9XCIjRUFGOEZGXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2IDEwQzE3LjY1NjkgMTAgMTkgMTEuMzQzMSAxOSAxM0MxOSAxNC42NTY5IDE3LjY1NjkgMTYgMTYgMTZDMTQuMzQzMSAxNiAxMyAxNC42NTY5IDEzIDEzQzEzIDExLjM0MzEgMTQuMzQzMSAxMCAxNiAxMFpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzAwQTNGRlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMSAyMkMxMSAxOS4yMzg2IDEzLjIzODYgMTcgMTYgMTdDMTguNzYxNCAxNyAyMSAxOS4yMzg2IDIxIDIyVjIzSDExVjIyWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMDBBM0ZGXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNyZWF0b3ItaW5mb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNyZWF0b3ItbGFiZWxcIj5UaWNrZXQgY3JlYXRlZCBieTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNyZWF0b3ItZGV0YWlsc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3JlYXRvci1lbWFpbFwiPnt7IGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LmNyZWF0ZWRCeUVtYWlsIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LmNyZWF0ZWRCeUVtYWlsIHx8ICdOL0EnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3JlYXRvci1zZXBhcmF0b3JcIiAqbmdJZj1cImdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LmNyZWF0ZWRBdFwiPuKAojwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNyZWF0b3ItdGltZVwiICpuZ0lmPVwiZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8uY3JlYXRlZEF0XCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8uY3JlYXRlZEF0IHwgZGF0ZTonaDptbTpzcyBhIC0gZCBNTU0geXl5eScgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBUaWNrZXQgUmV2aXNlZCBGb290ZmFsbCBhbmQgTWV0cmljcyAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpc2VkLWZvb3RmYWxsLXNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljcy1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlciBibHVlLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5yZXZpY2VkRm9vdGZhbGwgfHwgMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWV0cmljLXBlcmNlbnRhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHt7IGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LnJldmljZWRQZXJjIHx8IDAgfX0lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldHJpYy1hcnJvd1wiPuKGkzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1sYWJlbFwiPlJldmlzZWQgZm9vdGZhbGw8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1udW1iZXJcIj4oe3sgZ2V0UmV2aXNpb25DYWxjdWxhdGlvbigndGFnZ2luZycpfX0lKTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1sYWJlbFwiPlRpY2tldCU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1udW1iZXJcIj57eyBnZXRDb3VudEJ5VHlwZShnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpLCAnZHVwbGljYXRlJykgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbGFiZWxcIj5EdXBsaWNhdGVzPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbnVtYmVyXCI+e3sgZ2V0Q291bnRCeVR5cGUoZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKSwgJ2VtcGxveWVlJykgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbGFiZWxcIj5FbXBsb3llZS9TdGFmZjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlclwiPnt7IGdldENvdW50QnlUeXBlKGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyksICdqdW5rJykgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbGFiZWxcIj5KdW5rPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbnVtYmVyXCI+e3sgZ2V0Q291bnRCeVR5cGUoZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKSwgJ2hvdXNlS2VlcGluZycpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+SG91c2UgS2VlcGluZzwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPCEtLSBUaWNrZXQgY2FyZCBzZWN0aW9uIGluIHJldmlzaW9uIGVuZCAtLT5cblxuICAgICAgICAgICAgPCEtLSBGaW5hbCBSZXZpc2lvbiBTZWN0aW9uIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlzaW9uLXNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aXNpb24tdGl0bGVcIj5GaW5hbCByZXZpc2lvbjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaW5hbC1yZXZpc2lvbi1ub3RlXCI+XG4gICAgICAgICAgICAgICAgICAgIFBsZWFzZSByZWFjaCA8YSBbaHJlZl09XCInbWFpbHRvOicgKyByZXZpc2lvbk1haWxUb1wiIGNsYXNzPVwiZW1haWwtbGlua1wiPnt7IHJldmlzaW9uTWFpbFRvIH19PC9hPiBmb3IgYW55IGZ1cnRoZXJcbiAgICAgICAgICAgICAgICAgICAgZGlzY3JlcGFuY2llc1xuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpc2VkLWZvb3RmYWxsLXNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpY3Mtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlciBibHVlLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0VGFnZ2luZ0RhdGEoJ2ZpbmFsUmV2aXNpb24nKT8ucmV2aWNlZEZvb3RmYWxsIHx8IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRyaWMtcGVyY2VudGFnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHt7IGdldFRhZ2dpbmdEYXRhKCdmaW5hbFJldmlzaW9uJyk/LnJldmljZWRQZXJjIHx8IDB9fSUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRyaWMtYXJyb3dcIj7ihpE8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1sYWJlbFwiPlJldmlzZWQgZm9vdGZhbGw8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1udW1iZXJcIj4oe3sgZ2V0UmV2aXNpb25DYWxjdWxhdGlvbignZmluYWxSZXZpc2lvbicpfX0lKTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbGFiZWxcIj5UaWNrZXQlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbnVtYmVyXCI+e3sgZ2V0Q291bnRCeVR5cGUoZ2V0VGFnZ2luZ0RhdGEoJ2ZpbmFsUmV2aXNpb24nKSwgJ2R1cGxpY2F0ZScpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1sYWJlbFwiPkR1cGxpY2F0ZXM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1udW1iZXJcIj57eyBnZXRDb3VudEJ5VHlwZShnZXRUYWdnaW5nRGF0YSgnZmluYWxSZXZpc2lvbicpLCAnZW1wbG95ZWUnKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbGFiZWxcIj5FbXBsb3llZS9TdGFmZjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlclwiPnt7IGdldENvdW50QnlUeXBlKGdldFRhZ2dpbmdEYXRhKCdmaW5hbFJldmlzaW9uJyksICdqdW5rJykgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+SnVuazwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlclwiPnt7IGdldENvdW50QnlUeXBlKGdldFRhZ2dpbmdEYXRhKCdmaW5hbFJldmlzaW9uJyksICdob3VzZUtlZXBpbmcnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbGFiZWxcIj5Ib3VzZSBLZWVwaW5nPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==
1368
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1nLXJ2cHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmFmZmljL3NyYy9saWIvY29tcG9uZW50cy9pbWctcnZwcy9pbWctcnZwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYWZmaWMvc3JjL2xpYi9jb21wb25lbnRzL2ltZy1ydnBzL2ltZy1ydnBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBR1MsU0FBUyxFQUM1QixNQUFNLGVBQWUsQ0FBQztBQUt2QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQU85QyxNQUFNLE9BQU8sZ0JBQWdCO0lBWWpCO0lBQ0Q7SUFDQztJQUNBO0lBQ0E7SUFDQTtJQWhCVixVQUFVLENBQU07SUFDaEIsWUFBWSxDQUFNO0lBQ2xCLE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDeEIsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUNmLFNBQVMsQ0FBTTtJQUNmLGVBQWUsR0FBUSxFQUFFLENBQUM7SUFDMUIsV0FBVyxHQUE0QixFQUFFLENBQUM7SUFDMUMsa0JBQWtCLEdBQVEsRUFBRSxDQUFDO0lBQzdCLFdBQVcsQ0FBTTtJQUNqQixjQUFjLEdBQVcsK0JBQStCLENBQUE7SUFDeEQsWUFDVSxPQUF1QixFQUN4QixFQUFzQixFQUNyQixFQUFxQixFQUNyQixZQUFzQixFQUN0QixLQUFtQixFQUNuQixXQUErQjtRQUwvQixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN4QixPQUFFLEdBQUYsRUFBRSxDQUFvQjtRQUNyQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixpQkFBWSxHQUFaLFlBQVksQ0FBVTtRQUN0QixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtJQUN0QyxDQUFDO0lBQ2EsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFDMUMsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUNELG1CQUFtQixHQUFHLElBQUksQ0FBQztJQUMzQixlQUFlO1FBQ2IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ3ZELENBQUM7SUFDRCxLQUFLLENBQUs7SUFDVixRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sUUFBUSxHQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztJQUN4QixDQUFDO0lBQ0QsU0FBUztRQUNQLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYzthQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDakQsU0FBUyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDdkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDNUIsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxNQUFNLEtBQUssSUFBSSxFQUFFO2dCQUMxQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU07cUJBQ3hDLE1BQU0sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztxQkFDckMsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDcEIsSUFDRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxTQUFTLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUNuRTtvQkFDQSxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztvQkFDckIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7b0JBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUNqRDtxQkFBTTtvQkFDTCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztvQkFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7aUJBQ3JCO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFDRCxVQUFVLENBQVU7SUFDcEIsT0FBTyxDQUFVO0lBQ2pCLFNBQVMsQ0FBTTtJQUNmLGdCQUFnQjtRQUNkLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FDbEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQzdCLENBQUM7UUFDRixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsUUFBZ0IsRUFBRSxNQUFjO1FBQ2hELE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsZ0NBQWdDO1FBQ2xFLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZ0NBQWdDO1FBQzlELE1BQU0sU0FBUyxHQUFhLEVBQUUsQ0FBQztRQUUvQiwrQkFBK0I7UUFDL0IsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFO1lBQ2xELE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBRUQsbUNBQW1DO1FBQ25DLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN4QixPQUFPLFdBQVcsSUFBSSxHQUFHLEVBQUU7WUFDekIsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0I7WUFDN0UsV0FBVyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyw4QkFBOEI7U0FDL0U7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsaUJBQWlCO0lBQ2pCLFlBQVk7UUFDVixNQUFNLE9BQU8sR0FDYixJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2hGLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRTtZQUN0QyxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztZQUN0QixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsV0FBVzthQUNiLHlCQUF5QixDQUN4QixPQUFPLEVBQ1AsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQzdCO2FBQ0EsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDL0IsRUFBRSxTQUFTLENBQUM7WUFDVixJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLEVBQUU7b0JBQzNCLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ3ZDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FDcEQsQ0FBQyxHQUEyQixFQUFFLElBQVMsRUFBRSxFQUFFO3dCQUN6QyxNQUFNLGNBQWMsR0FBRyxJQUFJLEVBQUUsSUFBSTs0QkFDL0IsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUNqRCxDQUFDLENBQUMsSUFBSSxDQUFDO3dCQUNULElBQUksY0FBYyxFQUFFOzRCQUNsQixHQUFHLENBQUMsY0FBYyxDQUFDLEdBQUc7Z0NBQ3BCLEdBQUcsSUFBSTtnQ0FDUCxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsWUFBWTtvQ0FDbkMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsV0FBVyxFQUFFO29DQUN6QyxDQUFDLENBQUMsRUFBRTs2QkFDUCxDQUFDO3lCQUNIO3dCQUNELE9BQU8sR0FBRyxDQUFDO29CQUNiLENBQUMsRUFDRCxFQUFFLENBQ0gsQ0FBQztpQkFDSDtxQkFBTTtvQkFDTCxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztvQkFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7aUJBQ3ZCO1lBQ0gsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsOEJBQThCLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztZQUN4QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUdELFlBQVksQ0FBTTtJQUNsQixVQUFVLENBQU07SUFDaEIsYUFBYSxDQUFDLEdBQVE7UUFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7UUFDdEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBQ0QsVUFBVSxDQUFNO0lBQ2hCLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDbEIsa0JBQWtCLEdBQUcsS0FBSyxDQUFDLENBQUMsbUNBQW1DO0lBQy9ELGlCQUFpQjtJQUNqQixXQUFXLENBQU07SUFDakIsZ0JBQWdCLENBQU07SUFDdEIsWUFBWSxDQUFNO0lBQ2xCLGVBQWUsQ0FBTTtJQUNyQixjQUFjLEdBQThDLEVBQUUsQ0FBQztJQUMvRCxXQUFXLEdBQVEsQ0FBQyxDQUFDO0lBQ3JCLFlBQVksQ0FBTTtJQUNsQixXQUFXLENBQVU7SUFDckIsUUFBUSxHQUFvQixNQUFNLENBQUM7SUFDbkMsU0FBUyxDQUFDLEtBQVUsRUFBRSxHQUFRO1FBQzVCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO1FBQ3RCLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLE9BQU8sRUFBRSxpQkFBaUI7WUFDN0IsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkQsRUFBRSxTQUFTLENBQUMsQ0FBQyxTQUFjLEVBQUUsRUFBRTtZQUM3QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztZQUMzQixJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNkLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNqQixtQkFBbUI7YUFDcEI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO2FBQ3hCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsU0FBUyxHQUFRLEVBQUUsQ0FBQztJQUVwQixRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsTUFBTSxPQUFPLEdBQ1gsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQy9DLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ1gsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLFdBQVc7YUFDYixXQUFXLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQzthQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvQixFQUFFLFNBQVMsQ0FBQztZQUNWLElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsRUFBRTtvQkFFM0IsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU07d0JBQUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO2lCQUN6RDtxQkFBTTtvQkFDTCxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztpQkFDckI7WUFDSCxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRSxDQUFDO1NBQ25CLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxRQUFRLENBQU07SUFDZCxlQUFlLENBQU07SUFDckIsb0JBQW9CLEdBQVEsRUFBRSxDQUFDO0lBQy9CLGdCQUFnQixHQUFRLEVBQUUsQ0FBQztJQUMzQixlQUFlLEdBQVEsRUFBRSxDQUFDO0lBQzFCLGlCQUFpQjtRQUNmLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDO1FBQ2xELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUM3QixPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyx5QkFBeUI7U0FDbEc7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFDRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIseUJBQXlCO1FBQ3pCLDZCQUE2QjtRQUM3Qix3QkFBd0I7UUFDeEIsNEJBQTRCO1FBQzVCLDJCQUEyQjtRQUMzQixNQUFNLE9BQU8sR0FDWCxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDL0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDWCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQztRQUN6QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUM7UUFDMUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDN0QsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBRS9CLElBQUksQ0FBQyxXQUFXO2FBQ2IsY0FBYyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxXQUFXLENBQUM7YUFDbEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUIsU0FBUyxDQUFDO1lBQ1QsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFO29CQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsRUFBRSxJQUFJLENBQUM7b0JBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUM7b0JBQzlDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQztvQkFDMUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDO29CQUNsRCxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDbEQscURBQXFEO29CQUNyRCxJQUFJLENBQUMsZUFBZSxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFlBQVksSUFBSSxFQUFFLENBQUM7b0JBRTdELGtDQUFrQztvQkFDbEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQ3pDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUM5QixDQUFDO29CQUNGLElBQUksQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDdEQsU0FBUzt3QkFDVCxLQUFLLEVBQ0gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDOzRCQUM5RCxFQUFFLElBQUksRUFBRSxNQUFNLElBQUksQ0FBQztxQkFDeEIsQ0FBQyxDQUFDLENBQUM7b0JBQ0osOERBQThEO29CQUM5RCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUU7d0JBQzNDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztxQkFDcEQ7b0JBRUQsc0NBQXNDO29CQUN0QyxJQUFJLENBQUMsb0JBQW9CO3dCQUN2QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FDdkIsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FDcEQsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO29CQUVoQixvQkFBb0I7b0JBQ3BCLE1BQU0sZUFBZSxHQUE4Qjt3QkFDakQsYUFBYSxFQUFFLENBQUM7d0JBQ2hCLFNBQVMsRUFBRSxDQUFDO3dCQUNaLFFBQVEsRUFBRSxDQUFDO3dCQUNYLGNBQWMsRUFBRSxDQUFDO3dCQUNqQixJQUFJLEVBQUUsQ0FBQztxQkFDUixDQUFDO29CQUVGLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztvQkFDbkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztvQkFFM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTt3QkFDekMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTs0QkFDaEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzs0QkFDbEMsVUFBVSxFQUFFLENBQUM7NEJBRWIsZUFBZTs0QkFDZix5REFBeUQ7NEJBQ3ZELE1BQU0sSUFBSSxHQUNWLEtBQUssQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLElBQUksU0FBUyxDQUFDOzRCQUN4QyxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxDQUFDOzRCQUN6QyxJQUFJLElBQUksS0FBSyxhQUFhLEVBQUU7Z0NBQzFCLGVBQWUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDOzZCQUNsQztpQ0FBTSxJQUFJLElBQUksS0FBSyxVQUFVLEVBQUU7Z0NBQzlCLGVBQWUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDOzZCQUMvQjtpQ0FBTSxJQUFJLElBQUksS0FBSyxjQUFjLEVBQUU7Z0NBQ2xDLGVBQWUsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDOzZCQUNuQztpQ0FBTSxJQUFHLElBQUksS0FBSyxNQUFNLEVBQUU7Z0NBQ3pCLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDOzZCQUMzQjs0QkFFRCxrREFBa0Q7NEJBQ2xELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsRUFBRTtnQ0FDM0MsZUFBZSxDQUFDLFdBQVcsQ0FBQztvQ0FDMUIsS0FBSyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQzs2QkFDbkM7d0JBQ0gsQ0FBQyxDQUFDLENBQUM7b0JBQ0wsQ0FBQyxDQUFDLENBQUM7b0JBRUgsSUFBSSxDQUFDLFNBQVMsR0FBRzt3QkFDZixhQUFhLEVBQUUsVUFBVTt3QkFDekIsT0FBTyxFQUFFLGVBQWUsQ0FBQyxhQUFhLENBQUM7d0JBQ3ZDLFNBQVMsRUFBRSxlQUFlLENBQUMsV0FBVyxDQUFDO3dCQUN2QyxRQUFRLEVBQUUsZUFBZSxDQUFDLFVBQVUsQ0FBQzt3QkFDckMsWUFBWSxFQUFFLGVBQWUsQ0FBQyxjQUFjLENBQUM7d0JBQzdDLElBQUksRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDO3FCQUM5QixDQUFDO29CQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUVuRCxpREFBaUQ7b0JBQ2pELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFFcEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7b0JBQ3JCLHVCQUF1QjtpQkFDeEI7cUJBQU07b0JBQ0wscUJBQXFCO29CQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztvQkFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztvQkFDM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO29CQUMxQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO29CQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztvQkFDcEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2lCQUNwQjtZQUNILENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDYixNQUFNLEdBQUcsR0FDUCxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUs7b0JBQ2YsR0FBRyxDQUFDLEtBQUs7b0JBQ1QsR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPO29CQUNuQixHQUFHLENBQUMsT0FBTztvQkFDWCxlQUFlLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM5QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1lBQ3RCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsMkJBQTJCLENBQU07SUFDakMsU0FBUztRQUNQLE1BQU0sSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUU3QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDNUMsTUFBTSxjQUFjLEdBQUcsYUFBYSxFQUFFLE1BQU0sQ0FBQztRQUU3QyxJQUNFLElBQUksS0FBSyxXQUFXO1lBQ3BCLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLEVBQy9DO1lBQ0EsOEVBQThFO1lBQzlFLE1BQU0saUJBQWlCLEdBQUcsYUFBYSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FDNUQsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2YsR0FBRyxLQUFLO2dCQUNSLE1BQU0sRUFBRSxjQUFjO2dCQUN0QixRQUFRLEVBQUUsSUFBSTthQUNmLENBQUMsQ0FDSCxDQUFDO1lBRUYscURBQXFEO1lBQ3JELE1BQU0saUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxDQUM3QyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FDN0IsQ0FBQztZQUVGLDZFQUE2RTtZQUM3RSxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDakUsTUFBTSxZQUFZLEdBQ2hCLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxhQUFhLENBQUM7Z0JBQ3pELE1BQU0sYUFBYSxHQUNqQixHQUFHLENBQUMsTUFBTSxLQUFLLGNBQWM7b0JBQzdCLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDMUMsT0FBTyxZQUFZLElBQUksYUFBYSxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxDQUFDO1lBRUgseURBQXlEO1lBQ3pELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLEdBQUcsaUJBQWlCLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDO1lBRXZFLHFFQUFxRTtZQUNyRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQzVDLE1BQU0sV0FBVyxHQUNmLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxXQUFXLENBQUM7Z0JBQ3ZELEdBQUcsQ0FBQyxRQUFRLEdBQUcsV0FBVyxJQUFJLEdBQUcsQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDO1lBQ3ZELENBQUMsQ0FBQyxDQUFDO1lBRUgsK0RBQStEO1lBQy9ELElBQUksQ0FBQywyQkFBMkIsR0FBRyxJQUFJLENBQUMsbUJBQW1CO2lCQUN4RCxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDO2lCQUM1QyxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUVqQyxxRUFBcUU7WUFDckUsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQyxtQkFBbUI7aUJBQ3hELE1BQU0sQ0FDTCxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQ1gsQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxLQUFLLFdBQVc7Z0JBQ3BELEdBQUcsQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUN6QjtpQkFDQSxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2xCLEdBQUcsR0FBRztnQkFDTixNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sSUFBSSxjQUFjO2dCQUNwQyxTQUFTLEVBQUUsSUFBSTthQUNoQixDQUFDLENBQUMsQ0FBQztTQUNQO2FBQU07WUFDTCxzRkFBc0Y7WUFDdEYsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDbkUsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNyRCxPQUFPLE9BQU8sS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxjQUFjLENBQUM7WUFDM0QsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQztRQUNuQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDLENBQUMsdUNBQXVDO1FBQ3hFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUNELGdCQUFnQixDQUFNO0lBQ3RCLG1CQUFtQixDQUFNO0lBQ3pCLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFFeEIsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUNwQix3Q0FBd0M7SUFDeEMsdUJBQXVCLENBQUMsR0FBUTtRQUM5QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLENBQUMsNENBQTRDO1FBQzVFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLENBQUM7UUFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtRQUVwRCxtRUFBbUU7UUFDbkUsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixLQUFLLFdBQVcsQ0FBQztRQUUvRCxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1lBQzdCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUM7WUFFbkMsbUZBQW1GO1lBQ25GLE1BQU0sY0FBYyxHQUFHLEdBQUcsRUFBRSxNQUFNLENBQUM7WUFDbkMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDbkUsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNyRCxzREFBc0Q7Z0JBQ3RELE9BQU8sT0FBTyxLQUFLLFdBQVcsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLGNBQWMsQ0FBQztZQUNsRSxDQUFDLENBQUMsQ0FBQztZQUVILHdCQUF3QjtZQUN4QixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQzVDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUNyQixHQUFHLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN4QixDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUMsQ0FBQyxlQUFlO1NBQ2pEO1FBRUQsSUFBSSxjQUFjLEdBQVUsRUFBRSxDQUFDO1FBQy9CLE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFFbkQsMkZBQTJGO1FBQzNGLElBQUksZUFBZSxFQUFFO1lBQ25CLG1FQUFtRTtZQUNuRSw4Q0FBOEM7WUFDOUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsQ0FBQywyQkFBMkI7WUFDekQsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUMsQ0FBQywrQkFBK0I7WUFDdkQsNERBQTREO1NBQzdEO2FBQU0sSUFBSSxZQUFZLEtBQUssV0FBVyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLEVBQUU7WUFDaEYscUZBQXFGO1lBQ3JGLE1BQU0sY0FBYyxHQUFHLEdBQUcsRUFBRSxNQUFNLENBQUM7WUFDbkMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDbkUsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNyRCxPQUFPLE9BQU8sS0FBSyxXQUFXLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxjQUFjLENBQUM7WUFDbEUsQ0FBQyxDQUFDLENBQUM7WUFFSCx3QkFBd0I7WUFDeEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUM1QyxHQUFHLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDckIsR0FBRyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDeEIsQ0FBQyxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUE7WUFDckMsMEVBQTBFO1lBQzFFLE1BQU0sY0FBYyxHQUFHLEdBQUcsRUFBRSxNQUFNLENBQUM7WUFDbkMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDbkUsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNyRCxPQUFPLE9BQU8sS0FBSyxXQUFXLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxjQUFjLENBQUM7WUFDbEUsQ0FBQyxDQUFDLENBQUM7WUFFSCx3QkFBd0I7WUFDeEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUM1QyxHQUFHLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDckIsR0FBRyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDeEIsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELHlEQUF5RDtRQUN6RCxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3BCLElBQ0UsR0FBRyxFQUFFLFVBQVUsS0FBSyxXQUFXO2dCQUMvQixHQUFHLEVBQUUsVUFBVSxLQUFLLFVBQVU7Z0JBQzlCLEdBQUcsRUFBRSxVQUFVLEtBQUssY0FBYyxJQUFJLEdBQUcsRUFBRSxVQUFVLEtBQUksTUFBTSxFQUMvRDtnQkFDQSxJQUNFLEdBQUcsRUFBRSxVQUFVLEtBQUssV0FBVztvQkFDL0IsR0FBRyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQ25DO29CQUNBLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2lCQUN6QjtxQkFBTSxJQUNMLEdBQUcsRUFBRSxVQUFVLEtBQUssVUFBVTtvQkFDOUIsR0FBRyxFQUFFLFVBQVUsS0FBSyxjQUFjLElBQUksR0FBRyxFQUFFLFVBQVUsS0FBSSxNQUFNLEVBQy9EO29CQUNBLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2lCQUN6QjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztpQkFDMUI7Z0JBQ0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxFQUFFLFVBQVUsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7YUFDckM7U0FDRjthQUFNO1lBQ0wsc0RBQXNEO1lBQ3RELElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1lBQzdCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1NBQzFCO1FBRUQsOENBQThDO1FBQzlDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxXQUFXLENBQUMsR0FBUTtRQUNwQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxDQUFDO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUM7UUFDbkMsSUFBSSxjQUFjLEdBQVUsRUFBRSxDQUFDO1FBQy9CLE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFFbkQsSUFBSSxZQUFZLEtBQUssV0FBVyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLEVBQUU7WUFDekUsNEVBQTRFO1lBQzVFLG9EQUFvRDtZQUNwRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO1NBQy9CO2FBQU07WUFDTCwrRUFBK0U7WUFDL0UsTUFBTSxjQUFjLEdBQUcsR0FBRyxFQUFFLE1BQU0sQ0FBQztZQUNuQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNuRSxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3JELE9BQU8sT0FBTyxLQUFLLFdBQVcsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLGNBQWMsQ0FBQztZQUNsRSxDQUFDLENBQUMsQ0FBQztZQUVILHdCQUF3QjtZQUN4QixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQzVDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUNyQixHQUFHLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN4QixDQUFDLENBQUMsQ0FBQztTQUNKO1FBR0QscUNBQXFDO1FBQ3JDLElBQ0UsR0FBRyxFQUFFLFVBQVUsS0FBSyxXQUFXO1lBQy9CLEdBQUcsRUFBRSxVQUFVLEtBQUssVUFBVTtZQUM5QixHQUFHLEVBQUUsVUFBVSxLQUFLLGNBQWMsSUFBSSxHQUFHLEVBQUUsVUFBVSxLQUFJLE1BQU0sRUFDL0Q7WUFDQSxJQUNFLEdBQUcsRUFBRSxVQUFVLEtBQUssV0FBVztnQkFDL0IsR0FBRyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQ25DO2dCQUNBLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2FBQ3pCO2lCQUFNLElBQ0wsR0FBRyxFQUFFLFVBQVUsS0FBSyxVQUFVO2dCQUM5QixHQUFHLEVBQUUsVUFBVSxLQUFLLGNBQWMsSUFBSSxHQUFHLEVBQUUsVUFBVSxLQUFJLE1BQU0sRUFDL0Q7Z0JBQ0EsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7YUFDekI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7YUFDMUI7WUFFRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUM1QixJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsRUFBRSxVQUFVLENBQUM7WUFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7U0FDckM7SUFDSCxDQUFDO0lBR0MsT0FBTyxDQUFDLEdBQVE7UUFDZCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN6QixtREFBbUQ7WUFDbkQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FDOUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sQ0FDeEMsQ0FBQztZQUVGLDZEQUE2RDtZQUM3RCxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDaEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQzthQUN6RDtpQkFBTTtnQkFDTCx3QkFBd0I7Z0JBQ3hCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7YUFDdEQ7U0FDRjtRQUVELHdCQUF3QjtRQUN4QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxDQUFDO1FBRTVCLHNDQUFzQztRQUN0QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FDeEQsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sQ0FDeEMsQ0FBQztRQUVGLGtDQUFrQztRQUNsQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUVsQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDO0lBRUQsWUFBWSxHQUFRLEVBQUUsQ0FBQyxDQUFDLG1CQUFtQjtJQUMzQyxpQkFBaUIsQ0FBTTtJQUN2QixvQ0FBb0M7SUFDcEMsYUFBYSxDQUFDLEdBQVE7UUFDdEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztRQUM3QixJQUFJLENBQUMsMkJBQTJCLEdBQUcsRUFBRSxDQUFDO1FBRXRDLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXZDLElBQUksSUFBSSxLQUFLLFdBQVcsRUFBRTtZQUN4Qiw2R0FBNkc7WUFDN0csTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQztZQUVyRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNuRSxPQUFPLEdBQUcsQ0FBQyxNQUFNLEtBQUssY0FBYyxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxDQUFDO1lBRUgsa0ZBQWtGO1lBQ2xGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDNUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNyRCxJQUFJLE9BQU8sS0FBSyxXQUFXLEVBQUU7b0JBQzNCLHVDQUF1QztvQkFDdkMsR0FBRyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7b0JBQ3BCLEdBQUcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2lCQUN0QjtxQkFBTTtvQkFDTCw2QkFBNkI7b0JBQzdCLEdBQUcsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO29CQUNyQixHQUFHLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztpQkFDdkI7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILGtFQUFrRTtZQUNsRSxJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQjtpQkFDeEQsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxXQUFXLENBQUM7aUJBQzFGLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDbkIsR0FBRyxJQUFJO2dCQUNQLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNO2dCQUNwRCxTQUFTLEVBQUUsSUFBSTthQUNoQixDQUFDLENBQUMsQ0FBQztZQUVOLGlEQUFpRDtZQUNqRCxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztZQUNsQyxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1NBQy9EO2FBQU07WUFDTCxvRkFBb0Y7WUFDcEYsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQztZQUNyRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNuRSxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3JELE9BQU8sT0FBTyxLQUFLLFdBQVcsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLGNBQWMsQ0FBQztZQUNsRSxDQUFDLENBQUMsQ0FBQztZQUVILHdCQUF3QjtZQUN4QixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQzVDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUNyQixHQUFHLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN4QixDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7U0FDbkM7SUFDSCxDQUFDO0lBR0MsSUFBSSxHQUFRLFVBQVUsQ0FBQztJQUN2QixnQkFBZ0IsQ0FBQyxJQUFTO1FBQ3hCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBRWpCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUMsQ0FBQyx5Q0FBeUM7UUFDMUUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUU3QixtQ0FBbUM7UUFDbkMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUU5QyxJQUFJLFlBQVksS0FBSyxVQUFVLEVBQUU7WUFDL0IsNkRBQTZEO1lBQzdELElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQ3ZEO2FBQU07WUFDTCxnRUFBZ0U7WUFDaEUsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUNqRCxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxZQUFZLENBQy9ELENBQUM7U0FDSDtRQUNELFNBQVM7UUFDVCxxRUFBcUU7UUFDckUsMkVBQTJFO1FBQzNFLHVCQUF1QjtRQUN2QixPQUFPO1FBQ1AsSUFBSTtRQUVKLDZCQUE2QjtRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUM7UUFFNUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBQ0QsV0FBVyxDQUFDLElBQXFCO1FBQy9CLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7U0FDdEI7SUFDSCxDQUFDO0lBRUQsOEJBQThCO0lBQzVCLGNBQWMsQ0FBQyxZQUFvQjtRQUNqQyxJQUFJLENBQUMsWUFBWSxJQUFJLFlBQVksS0FBSyxDQUFDO1lBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3RFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sSUFBSSxHQUFHLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDL0IsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUgscUJBQXFCLEdBQThDLEVBQUUsQ0FBQztJQUU5RCwwQkFBMEI7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN0RSxJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDO1lBQ2hDLE9BQU87U0FDUjtRQUVELE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQztRQUMzQixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBaUIsQ0FBQztRQUVyQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDNUMsTUFBTSxHQUFHLEdBQUcsR0FBRyxFQUFFLFNBQVMsSUFBSSxJQUFJLENBQUM7WUFDbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2pCLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNqQixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2pCO1lBQ0QsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1FBRWhFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQy9DLFNBQVMsRUFBRSxHQUFHO1lBQ2QsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRTtTQUN6QixDQUFDLENBQUMsQ0FBQztRQUVKLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUE7SUFDckUsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFO1lBQzVCLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQztpQkFDL0MsTUFBTSxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztpQkFDdkUsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNwQixTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsSUFBSSxJQUFJO2dCQUNuQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksSUFBSSxFQUFFO2FBQ3hCLENBQUMsQ0FBQyxDQUFDO1lBQ04sT0FBTztTQUNSO1FBRUQsTUFBTSxLQUFLLEdBQWEsRUFBRSxDQUFDO1FBQzNCLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxFQUFpQixDQUFDO1FBRXJDLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNoRCxNQUFNLEdBQUcsR0FBRyxHQUFHLEVBQUUsU0FBUyxJQUFJLElBQUksQ0FBQztZQUNuQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDakIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2pCLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDakI7WUFDRCxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN4QyxTQUFTLEVBQUUsR0FBRztZQUNkLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUU7U0FDekIsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsR0FBUSxFQUFFLEdBQVE7UUFDakMsZ0ZBQWdGO1FBQ2hGLElBQUksSUFBSSxDQUFDLGlCQUFpQixLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDckUsc0RBQXNEO1lBQ3RELHdEQUF3RDtZQUN4RCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUM1QyxPQUFPO1NBQ1I7UUFFRCw4RUFBOEU7UUFDOUUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLElBQUksSUFBSSxDQUFDLGlCQUFpQixLQUFLLFdBQVcsRUFBRTtZQUNyRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbkM7YUFBTSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxXQUFXLEVBQUU7WUFDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLHdDQUF3QztTQUM1RDtJQUNILENBQUM7SUFFRCxjQUFjLEdBQVEsSUFBSSxDQUFDLENBQUMsK0RBQStEO0lBRTNGLGtCQUFrQixDQUFDLFFBQWEsRUFBRSxTQUFjO1FBQzlDLHFEQUFxRDtRQUNyRCxJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQztRQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3ZELFFBQVEsRUFBRSxJQUFJO1lBQ2QsSUFBSSxFQUFFLElBQUk7WUFDVixRQUFRLEVBQUUsUUFBUTtZQUNsQixRQUFRLEVBQUUsS0FBSztTQUNoQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsMkJBQTJCLEdBQVEsRUFBRSxDQUFDO0lBRXRDLHdCQUF3QixDQUFDLEdBQVE7UUFDL0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsRUFBRSxHQUFHLENBQUMsQ0FBQTtRQUMvQyxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzlDLE9BQU87U0FDUjtRQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7UUFDakQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsSUFBSSxDQUFDLENBQUM7UUFDMUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDcEQsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUM1RCxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FDN0IsQ0FBQyxNQUFNLENBQUM7UUFFVCxNQUFNLFVBQVUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFFakMsbURBQW1EO1FBQ25ELElBQ0UsVUFBVTtZQUNWLHNCQUFzQixHQUFHLGtCQUFrQixJQUFJLGFBQWEsRUFDNUQ7WUFDQSxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FDeEIsdUJBQXVCLGFBQWEsWUFDbEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFNBQVMsSUFBSSxLQUMvQyxxQkFBcUIsQ0FDdEIsQ0FBQztZQUNGLE9BQU87U0FDUjtRQUVELGtDQUFrQztRQUNsQyxHQUFHLENBQUMsUUFBUSxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUM3QixHQUFHLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFFN0IscUNBQXFDO1FBQ3JDLElBQUksQ0FBQywyQkFBMkIsR0FBRyxJQUFJLENBQUMsbUJBQW1CO2FBQ3hELE1BQU0sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQzthQUNwQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbkIsR0FBRyxJQUFJO1lBQ1AsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLE1BQU07WUFDcEQsU0FBUyxFQUFFLElBQUk7U0FDaEIsQ0FBQyxDQUFDLENBQUM7UUFFTixzRkFBc0Y7UUFDdEYsMEZBQTBGO1FBQzFGLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELHFCQUFxQixDQUFDLEdBQVEsRUFBRSxHQUFRLEVBQUUsSUFBWTtRQUNwRCxJQUFJLElBQUksS0FBSyxXQUFXLEVBQUU7WUFDeEIsZ0RBQWdEO1lBQ2hELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuQywyQ0FBMkM7WUFDM0MsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRTtnQkFDckIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQzthQUNuQztTQUNGO0lBQ0gsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pCLGtDQUFrQztJQUNwQyxDQUFDO0lBQ0QsTUFBTTtRQUNKLDBDQUEwQztRQUMxQyxJQUFJLENBQUMsMkJBQTJCLEdBQUcsRUFBRSxDQUFDO1FBRXRDLGtFQUFrRTtRQUNsRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMvRCxHQUFHLEdBQUc7WUFDTixTQUFTLEVBQUUsS0FBSztZQUNoQixRQUFRLEVBQUUsS0FBSztZQUNmLE1BQU0sRUFBRSxJQUFJLEVBQUUsdUJBQXVCO1lBQ3JDLGlDQUFpQztTQUNsQyxDQUFDLENBQUMsQ0FBQztRQUVKLHdDQUF3QztRQUN4QyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUV2QiwyQ0FBMkM7UUFDM0MsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztRQUNoQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDO1FBRWhDLG9FQUFvRTtRQUNwRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO1FBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFDRCxTQUFTLENBQU07SUFDUyxTQUFTLENBQWE7SUFDOUMsSUFBSSxDQUFDLFFBQWE7UUFDaEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUN0RCxRQUFRLEVBQUUsSUFBSTtZQUNkLElBQUksRUFBRSxJQUFJO1lBQ1YsUUFBUSxFQUFFLFFBQVE7WUFDbEIsUUFBUSxFQUFFLEtBQUssRUFBRSw2QkFBNkI7U0FDL0MsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7SUFDNUIsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRS9CLElBQUksQ0FBQywyQkFBMkIsR0FBRyxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUNELFdBQVcsQ0FBQyxRQUFhO1FBQ3ZCLElBQUksZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUV6QixJQUFJLFFBQVEsS0FBSyxXQUFXLEVBQUU7WUFDNUIsZUFBZSxHQUFHLElBQUksQ0FBQyxtQkFBbUI7aUJBQ3ZDLE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUM7aUJBQzNDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDbEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxFQUFFO2dCQUN0QyxTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVMsSUFBSSxFQUFFO2dCQUM5QixTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVMsSUFBSSxHQUFHLENBQUMsUUFBUSxJQUFJLEVBQUU7Z0JBQzlDLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUSxJQUFJLEVBQUU7Z0JBQzVCLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUTtnQkFDdEIsVUFBVSxFQUFFLFdBQVc7Z0JBQ3ZCLFNBQVMsRUFBRSxJQUFJO2FBQ2hCLENBQUMsQ0FBQyxDQUFDO1NBQ1A7UUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFFbEMsTUFBTSxHQUFHLEdBQUc7WUFDVixPQUFPLEVBQ0wsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUMvQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7Z0JBQ3RCLENBQUMsQ0FBQyxJQUFJO1lBQ1YsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLElBQUksRUFBRTtZQUNqQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO1lBQ3hCLFVBQVUsRUFBRSxRQUFRO1lBQ3BCLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxJQUFJLEVBQUU7WUFDL0IsU0FBUyxFQUFFLElBQUk7WUFDZixjQUFjLEVBQUUsZUFBZTtZQUMvQixXQUFXLEVBQUUsR0FBRyxFQUFFLFdBQVcsSUFBSSxVQUFVO1lBQzNDLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxJQUFJLEdBQUcsRUFBRSxRQUFRLElBQUksRUFBRTtZQUNoRCxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsSUFBSSxFQUFFO1lBQzdCLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxJQUFJLEVBQUU7WUFDN0IsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRTtZQUNoQyxJQUFJLEVBQUUsS0FBSztTQUNaLENBQUM7UUFFRixJQUFJLENBQUMsV0FBVzthQUNiLFVBQVUsQ0FBQyxHQUFHLENBQUM7YUFDZixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLEVBQUU7b0JBQzNCLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUN4QixHQUFHLEVBQUUsT0FBTyxJQUFJLDZCQUE2QixDQUM5QyxDQUFDO29CQUNGLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO29CQUN2QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ2pCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDcEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO29CQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztpQkFDeEI7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsQ0FBQztpQkFDOUM7WUFDSCxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2xCLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3pDLE1BQU0sR0FBRyxHQUNQLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxJQUFJLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxFQUFFLE9BQU8sSUFBSSxlQUFlLENBQUM7Z0JBQ25FLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2hDLENBQUM7U0FDRixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsY0FBYyxHQUE4QjtRQUMxQyxTQUFTLEVBQUUscUJBQXFCO1FBQ2hDLFFBQVEsRUFBRSx5QkFBeUI7UUFDbkMsWUFBWSxFQUFFLHdCQUF3QjtRQUN0QyxhQUFhLEVBQUUsc0JBQXNCO1FBQ3JDLElBQUksRUFBRSxlQUFlO0tBQ3RCLENBQUM7SUFFRixpQkFBaUIsR0FBUSxJQUFJLENBQUMsQ0FBQyxtQ0FBbUM7SUFFbEUsb0JBQW9CLENBQUMsUUFBUSxHQUFHLEtBQUssSUFBUSxDQUFDO0lBRXBCLFdBQVcsQ0FBYTtJQUNsQixpQkFBaUIsQ0FBYTtJQUM5RCxNQUFNO1FBQ0osTUFBTSxPQUFPLEdBQVE7WUFDbkIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDcEUsVUFBVSxFQUFFLG9CQUFvQjtZQUNoQyxhQUFhLEVBQUUsQ0FBQztZQUNoQixjQUFjLEVBQUUsQ0FBQztZQUNqQixhQUFhLEVBQUUsQ0FBQztZQUNoQixpQkFBaUIsRUFBRSxDQUFDO1lBQ3BCLFNBQVMsRUFBQyxDQUFDO1lBQ1gsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRTtZQUNoQyxlQUFlLEVBQUUsRUFBRTtZQUNuQixZQUFZLEVBQUUsRUFBRTtZQUNoQixRQUFRLEVBQUUsRUFBRTtZQUNaLElBQUksRUFBRSxFQUFFO1NBQ1QsQ0FBQztRQUVGLElBQUksaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBRTFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUMxQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ3BELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDO1lBRTFDLGtFQUFrRTtZQUNsRSw4Q0FBOEM7WUFFOUMscUJBQXFCO1lBQ3JCLHlCQUF5QjtZQUN6QixJQUFJO1lBRUosaUJBQWlCO1lBQ2pCLElBQUksSUFBSSxLQUFLLFdBQVcsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO2dCQUNsRSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsa0JBQWtCO3FCQUN2QyxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7cUJBQ25DLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDbEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxFQUFFO29CQUN0QyxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVE7b0JBQ3RCLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxJQUFJLEdBQUcsRUFBRSxRQUFRLElBQUksRUFBRTtvQkFDaEQsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO29CQUN0QixTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVM7b0JBQ3hCLFNBQVMsRUFBRSxHQUFHLENBQUMsU0FBUztpQkFDekIsQ0FBQyxDQUFDLENBQUM7Z0JBRU4sSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDekIsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7d0JBQzNCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTt3QkFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO3dCQUN2QixTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsSUFBSSxJQUFJLEVBQUUsUUFBUSxJQUFJLEVBQUU7d0JBQ2xELFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTt3QkFDdkIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO3dCQUN6QixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7d0JBQ3pCLElBQUksRUFBRSxVQUFVO3FCQUNqQixDQUFDLENBQUM7b0JBRUgsT0FBTyxDQUFDLGNBQWMsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDO2lCQUM3QzthQUNGO1lBRUQsV0FBVztpQkFDTixJQUFJLElBQUksS0FBSyxVQUFVLElBQUksU0FBUyxFQUFFO2dCQUN6QyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztvQkFDcEIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO29CQUNuQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7b0JBQ3ZCLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxJQUFJLElBQUksRUFBRSxRQUFRLElBQUksRUFBRTtvQkFDbEQsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO29CQUN2QixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7b0JBQ3pCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztpQkFDMUIsQ0FBQyxDQUFDO2dCQUVILE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQzthQUN6QjtZQUVELGVBQWU7aUJBQ1YsSUFBSSxJQUFJLEtBQUssY0FBYyxJQUFJLFNBQVMsRUFBRTtnQkFDN0MsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7b0JBQ3hCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtvQkFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO29CQUN2QixTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsSUFBSSxJQUFJLEVBQUUsUUFBUSxJQUFJLEVBQUU7b0JBQ2xELFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtvQkFDdkIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO29CQUN6QixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7aUJBQzFCLENBQUMsQ0FBQztnQkFFSCxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzthQUM3QjtpQkFDSSxJQUFJLElBQUksS0FBSyxNQUFNLElBQUksU0FBUyxFQUFFO2dCQUNyQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztvQkFDaEIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO29CQUNuQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7b0JBQ3ZCLFNBQVMsRUFBRyxJQUFJLEVBQUUsU0FBUyxJQUFJLElBQUksRUFBRSxRQUFRLElBQUksRUFBRTtvQkFDbkQsUUFBUSxFQUFHLElBQUksQ0FBQyxRQUFRO29CQUN4QixTQUFTLEVBQUcsSUFBSSxDQUFDLFNBQVM7b0JBQzFCLFNBQVMsRUFBRyxJQUFJLENBQUMsU0FBUztpQkFDM0IsQ0FBQyxDQUFDO2dCQUVILE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQzthQUNyQjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQztRQUV0RCxzQkFBc0I7UUFFdEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQztRQUNqQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDeEQsUUFBUSxFQUFFLElBQUk7WUFDZCxJQUFJLEVBQUUsSUFBSTtZQUNWLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFFBQVEsRUFBRSxLQUFLO1NBQ2hCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsMkJBQTJCLEdBQUcsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxXQUFXLENBQU07SUFDakIsYUFBYSxDQUFNO0lBQ25CLFlBQVk7UUFDVixnRUFBZ0U7UUFDaEUsTUFBTSxPQUFPLEdBQUc7WUFDZCxVQUFVLEVBQUUsb0JBQW9CO1lBQ2hDLE9BQU8sRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTztZQUN2QyxVQUFVLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVU7WUFDN0MsSUFBSSxFQUFFLFFBQVE7WUFDZCxJQUFJLEVBQUUsS0FBSztTQUNaLENBQUE7UUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQztRQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQ3ZDLElBQUksQ0FBQyxXQUFXO2FBQ2Isa0JBQWtCLENBQUMsT0FBTyxDQUFDO2FBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVMsQ0FBQztZQUNULElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsRUFBRTtvQkFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQ3hCLEdBQUcsRUFBRSxPQUFPLElBQUksNkJBQTZCLENBQzlDLENBQUM7b0JBQ0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDakIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUM7b0JBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO29CQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztpQkFDckI7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsQ0FBQztvQkFDN0MsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2lCQUNyQjtZQUNILENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDbEIsTUFBTSxHQUFHLEdBQ1AsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLO29CQUNoQixHQUFHLENBQUMsS0FBSztvQkFDVCxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU87b0JBQ25CLEdBQUcsQ0FBQyxPQUFPO29CQUNYLGVBQWUsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGtEQUFrRDtJQUNsRCxnQ0FBZ0M7SUFDaEMsbUZBQW1GO0lBQ25GLHNFQUFzRTtJQUN0RSx1QkFBdUI7SUFDdkIsZ0hBQWdIO0lBQ2hILGdCQUFnQjtJQUVoQixtRkFBbUY7SUFFbkYsbUVBQW1FO0lBQ25FLGtEQUFrRDtJQUNsRCxTQUFTO0lBRVQsMEJBQTBCO0lBQzFCLDRDQUE0QztJQUM1QyxxRUFBcUU7SUFDckUsb0NBQW9DO0lBQ3BDLG1HQUFtRztJQUNuRyxhQUFhO0lBRWIsZ0NBQWdDO0lBQ2hDLG9HQUFvRztJQUNwRyw4QkFBOEI7SUFDOUIsMkRBQTJEO0lBQzNELFlBQVk7SUFFWiw2QkFBNkI7SUFDN0Isa0NBQWtDO0lBQ2xDLGNBQWM7SUFFZCxrQkFBa0I7SUFDbEIsVUFBVTtJQUVWLHdDQUF3QztJQUN4Qyw4QkFBOEI7SUFDOUIsa0RBQWtEO0lBQ2xELG9CQUFvQjtJQUNwQiw2QkFBNkI7SUFDN0IsdUNBQXVDO0lBQ3ZDLGNBQWM7SUFDZCxVQUFVO0lBQ1YsZUFBZTtJQUNmLDBCQUEwQjtJQUMxQixvRkFBb0Y7SUFDcEYsb0RBQW9EO0lBQ3BELFdBQVc7SUFDWCxRQUFRO0lBQ1IsTUFBTTtJQUVOLGtEQUFrRDtJQUNsRCxxQ0FBcUM7SUFDckMsSUFBSTtJQUVKLGdDQUFnQztJQUVoQywrQkFBK0I7SUFDL0IsZ0NBQWdDO0lBQ2hDLDZGQUE2RjtJQUM3RixJQUFJO0lBRUosV0FBVyxHQUFHLEtBQUssQ0FBQztJQUNLLFVBQVUsQ0FBYTtJQUNoRCxrQkFBa0IsQ0FBQyxHQUFRLEVBQUUsSUFBUztRQUNwQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3ZELFFBQVEsRUFBRSxJQUFJO1lBQ2QsSUFBSSxFQUFFLElBQUk7WUFDVixRQUFRLEVBQUUsUUFBUTtZQUNsQixRQUFRLEVBQUUsS0FBSztTQUNoQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLENBQUMsMkNBQTJDO1FBQ3ZFLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDdkMsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBRW5FLHdCQUF3QjtRQUN4QixNQUFNLFFBQVEsR0FBRyxTQUFTLEdBQUcsQ0FBQyxJQUFJLFlBQVksR0FBRyxDQUFDLElBQUksUUFBUSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBRS9FLDZCQUE2QjtRQUM3QixNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekMsTUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUV6QiwyREFBMkQ7UUFDM0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1QixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTNCLCtCQUErQjtRQUMvQixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3RELE1BQU0sVUFBVSxHQUFHLFVBQVUsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFbkQsNENBQTRDO1FBQzVDLE1BQU0sYUFBYSxHQUFHLFVBQVUsSUFBSSxDQUFDLElBQUksVUFBVSxJQUFJLENBQUMsQ0FBQztRQUV6RCxPQUFPLFFBQVEsSUFBSSxhQUFhLENBQUM7SUFDbkMsQ0FBQztJQUVELGlCQUFpQixHQUFXLENBQUMsQ0FBQztJQUM5QixJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELGFBQWEsQ0FBQyxTQUEyQjtRQUN2QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQztRQUUzQyxJQUFJLFNBQVMsS0FBSyxNQUFNLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUNoRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUMxQjthQUFNLElBQUksU0FBUyxLQUFLLE9BQU8sSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDMUI7UUFFRCx3QkFBd0I7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFckUsMEJBQTBCO1FBQzFCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FDcEQsQ0FBQyxDQUFNLEVBQUUsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLGlCQUFpQixDQUNqRCxDQUFDO0lBQ0osQ0FBQztJQUVELCtDQUErQztJQUMvQyxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFDL0IsTUFBTSxjQUFjLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3RSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsYUFBYSxJQUFJLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsZ0RBQWdEO0lBQ2hELDJCQUEyQjtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPLENBQUMsQ0FBQztRQUMvQixNQUFNLGNBQWMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsRUFBRSxrQkFBa0IsSUFBSSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELGlEQUFpRDtJQUNqRCxvQkFBb0I7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTyxHQUFHLENBQUM7UUFDakMsTUFBTSxjQUFjLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3RSxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxFQUFFLFFBQVEsSUFBSSxDQUFDLENBQUM7UUFFeEUsSUFBSSxDQUFDLGVBQWUsSUFBSSxlQUFlLEtBQUssQ0FBQztZQUFFLE9BQU8sR0FBRyxDQUFDO1FBRTFELE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM3RCxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRTtZQUN6QixPQUFPLEdBQUcsS0FBSyxNQUFNLElBQUksT0FBTyxDQUFDO1NBQ2xDO2FBQU0sSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO1lBQ3BCLE9BQU8sR0FBRyxLQUFLLElBQUksQ0FBQztTQUNyQjthQUFNLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRTtZQUNuQixPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUM7U0FDdkI7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxvQkFBb0I7SUFDcEIsZUFBZTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU8sR0FBRyxDQUFDO1FBQ2pDLE1BQU0sY0FBYyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0UsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsRUFBRSxZQUFZLENBQUM7UUFDOUQsT0FBTyxNQUFNLElBQUksR0FBRyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCw0QkFBNEI7SUFDNUIsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ25DLE1BQU0sY0FBYyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0UsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsRUFBRSxRQUFRLElBQUksQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sUUFBUSxHQUFHLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsd0VBQXdFO0lBQ3hFLGNBQWMsQ0FBQyxJQUFZO1FBQ3pCLGdFQUFnRTtRQUNoRSxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNoRixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQztJQUN4RixDQUFDO0lBRUQsbUNBQW1DO0lBQ25DLGNBQWM7UUFDWixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdEMsT0FBTyxNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sRUFBRSxXQUFXLEVBQUUsS0FBSyxRQUFRLENBQUM7SUFDOUQsQ0FBQztJQUVELG1DQUFtQztJQUNuQyxjQUFjO1FBQ1osTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3RDLE9BQU8sTUFBTSxLQUFLLEdBQUcsSUFBSSxNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssUUFBUSxDQUFDO0lBQzlELENBQUM7SUFFRCwrREFBK0Q7SUFDL0QsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUU7WUFDdkUsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUNELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLFVBQVUsS0FBSyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0YsQ0FBQztJQUVELGlEQUFpRDtJQUNqRCxzQkFBc0I7UUFDcEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDNUMsT0FBTyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdEQsQ0FBQztJQUVELG1FQUFtRTtJQUNuRSxvQkFBb0I7UUFDbEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDNUMsT0FBTyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEgsQ0FBQztJQUVELDREQUE0RDtJQUM1RCxjQUFjLENBQUMsSUFBUyxFQUFFLFNBQWlCO1FBQ3pDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ3hCLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFFRCwwQ0FBMEM7UUFDMUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM3QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQztZQUMzRSxPQUFPLFNBQVMsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDO1NBQzlCO1FBRUQsbUNBQW1DO1FBQ25DLE1BQU0sTUFBTSxHQUE4QjtZQUN4QyxXQUFXLEVBQUUsZ0JBQWdCO1lBQzdCLFVBQVUsRUFBRSxlQUFlO1lBQzNCLE1BQU0sRUFBRSxXQUFXO1lBQ25CLGNBQWMsRUFBRSxtQkFBbUI7U0FDcEMsQ0FBQztRQUVGLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QixPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELGdGQUFnRjtJQUNoRixpQ0FBaUM7SUFDakMsc0JBQXNCLENBQUMsSUFBWTtRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLElBQUksQ0FBQyxJQUFJLENBQUUsRUFBRTtZQUNqRixPQUFPLENBQUMsQ0FBQztTQUNWO1FBRUQsbUNBQW1DO1FBQ25DLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxVQUFVLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDOUYsSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUM3QixPQUFPLENBQUMsQ0FBQztTQUNWO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsS0FBSyxDQUFDLEVBQUU7WUFDakcsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUVELE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQzFDLGlFQUFpRTtRQUNqRSxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFFbkIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLCtEQUErRDtZQUMvRCxNQUFNLFVBQVUsR0FBRyxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3JFLFVBQVUsR0FBRyxLQUFLO2lCQUNmLE1BQU0sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7aUJBQ3RELE1BQU0sQ0FBQyxDQUFDLEdBQVcsRUFBRSxJQUFTLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDcEU7UUFDRCxTQUFTO1FBQ1QsZ0RBQWdEO1FBQ2hELGdEQUFnRDtRQUNoRCwrQ0FBK0M7UUFDL0MsMkNBQTJDO1FBQzNDLGlEQUFpRDtRQUNqRCxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsWUFBWTtRQUNWLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUM5RCxRQUFRLEVBQUUsSUFBSTtZQUNkLElBQUksRUFBRSxJQUFJO1lBQ1YsUUFBUSxFQUFFLFFBQVE7WUFDbEIsUUFBUSxFQUFFLEtBQUs7U0FDaEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxPQUFPLEdBQUc7WUFDWixPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDeEYsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLElBQUksRUFBRTtTQUNsQyxDQUFDO1FBQ0YsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNwRCwrQkFBK0I7UUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTzthQUNULG1CQUFtQixDQUFDLE9BQU8sQ0FBQzthQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvQixFQUFFLFNBQVMsQ0FBQztZQUNWLElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsRUFBRTtvQkFDM0IsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO2lCQUMxRDtxQkFBTTtvQkFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO2lCQUNyRDtZQUNILENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDYixNQUFNLEdBQUcsR0FDUCxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUs7b0JBQ2hCLEdBQUcsQ0FBQyxLQUFLO29CQUNULEdBQUcsRUFBRSxLQUFLLEVBQUUsT0FBTztvQkFDbkIsR0FBRyxDQUFDLE9BQU87b0JBQ1gsZUFBZSxDQUFDO2dCQUNsQixPQUFPLENBQUMsS0FBSyxDQUFDLCtCQUErQixFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksd0JBQXdCLENBQUMsQ0FBQztZQUM1RCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBRVAsQ0FBQztJQUVELDZDQUE2QztJQUM3QyxpQkFBaUI7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNsQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELGdDQUFnQztJQUNoQyx1QkFBdUI7UUFDckIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDaEQsT0FBTyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNsRSxDQUFDO3dHQXpnRFUsZ0JBQWdCOzRGQUFoQixnQkFBZ0IsNmJDcEI3Qix3MG1OQXV1RWM7OzRGRG50RUQsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLGNBQWM7dU9BazdCQSxTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBOEZJLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFDUSxpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CO2dCQW9PTCxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsRWxlbWVudFJlZixWaWV3Q2hpbGRcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFRyYWZmaWNSdnBzU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy90cmFmZmljLXJ2cHMuc2VydmljZVwiO1xuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSBcInRhbmdvLWFwcC11aS1nbG9iYWxcIjtcbmltcG9ydCB7IFRyYWZmaWNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3RyYWZmaWMuc2VydmljZVwiO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSBcInRhbmdvLWFwcC11aS1zaGFyZWRcIjtcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJsaWItaW1nLXJ2cHNcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9pbWctcnZwcy5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybDogXCIuL2ltZy1ydnBzLmNvbXBvbmVudC5zY3NzXCIsXG59KVxuZXhwb3J0IGNsYXNzIEltZ1J2cHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIGhlYWRlckRhdGE6IGFueTtcbiAgc3RvcmVJZGFycmF5OiBhbnk7XG4gIGxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xuICBub0RhdGEgPSBmYWxzZTtcbiAgbm9ybWFsaXplOiBhbnk7XG4gIG92ZXJhbGxDYXJkRGF0YTogYW55ID0gW107XG4gIGNhcmREYXRhTWFwOiB7IFtkYXRlOiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICB0aWNrZXRSZXZpZXdTdGF0dXM6IGFueSA9IFtdO1xuICB1c2VyQ29tbWVudDogYW55O1xuICByZXZpc2lvbk1haWxUbzogc3RyaW5nID0gJ2NlbnRyYWxvcGVyYXRpb25zQGxlbnNrYXJ0LmluJ1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNlcnZpY2U6IFRyYWZmaWNTZXJ2aWNlLFxuICAgIHB1YmxpYyBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxcbiAgICBwcml2YXRlIHRvYXN0OiBUb2FzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBydnBzU2VydmljZTogVHJhZmZpY1J2cHNTZXJ2aWNlXG4gICkge31cbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbiAgaXNBY2NvcmRpb25FeHBhbmRlZCA9IHRydWU7XG4gIHRvZ2dsZUFjY29yZGlvbigpIHtcbiAgICB0aGlzLmlzQWNjb3JkaW9uRXhwYW5kZWQgPSAhdGhpcy5pc0FjY29yZGlvbkV4cGFuZGVkO1xuICB9XG4gIHVzZXJzOmFueTtcbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5nZXRJbml0YWwoKTtcbiAgICBjb25zdCB1c2VyRGF0YTogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInVzZXItaW5mb1wiKSB8fCBcInt9XCIpO1xuICAgIHRoaXMudXNlcnMgPSB1c2VyRGF0YTtcbiAgfVxuICBnZXRJbml0YWwoKSB7XG4gICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLCBkZWJvdW5jZVRpbWUoMTAwKSlcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnZGF0YSA6JywgZGF0YSk7XG4gICAgICAgIGlmIChkYXRhICE9PSBudWxsIHx8IGRhdGE/LmNsaWVudCAhPT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuaGVhZGVyRGF0YSA9IGRhdGE7XG4gICAgICAgICAgdGhpcy5zdG9yZUlkYXJyYXkgPSB0aGlzLmhlYWRlckRhdGE/LnN0b3Jlc1xuICAgICAgICAgICAgLmZpbHRlcigoc3RvcmU6IGFueSkgPT4gc3RvcmUuY2hlY2tlZClcbiAgICAgICAgICAgIC5tYXAoKHN0b3JlOiBhbnkpID0+IHN0b3JlLnN0b3JlSWQpO1xuICAgICAgICAgIHRoaXMuYmFja1RvRm9vdGZhbGwoKTtcbiAgICAgICAgICB0aGlzLmRpc3BsYXlEYXRlUmFuZ2UoKTtcbiAgICAgICAgICB0aGlzLmxvYWRDYXJkRGF0YSgpO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuaGVhZGVyRGF0YT8uZGF0ZT8uc3RhcnREYXRlID09PSB0aGlzLmhlYWRlckRhdGE/LmRhdGU/LmVuZERhdGVcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuYmFja25hdiA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5RGF0ZVJhbmdlKCk7XG4gICAgICAgICAgICB0aGlzLmdldGltYWdlcygwLCB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mb2xkZXJWaWV3ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuYmFja25hdiA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIGJhY2tUb0Zvb3RmYWxsKCkge1xuICAgIHRoaXMuZm9sZGVyVmlldyA9IHRydWU7XG4gICAgdGhpcy5nZXRSdnBzTGlzdCA9IFtdO1xuICAgIHRoaXMuZ2V0UnZwc0ltYWdlTGlzdCA9IFtdO1xuICAgIHRoaXMub2JqZWN0c0FycmF5ID0gW107XG4gICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcbiAgICB0aGlzLnR5cGUgPSBcImZvb3RmYWxsXCI7XG4gICAgdGhpcy5zZWxlY3RlZFRpbWUgPSBcIlwiO1xuICAgIHRoaXMuc3BsaXRTY3JlZW5FbmFibGVkID0gZmFsc2U7XG4gICAgdGhpcy5zZWxlY3RJbWFnZUFycmF5ID0gbnVsbDtcbiAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSBbXTtcbiAgICB0aGlzLnJlbWFpbmluZ0ltYWdlc0dyb3VwcyA9IFtdO1xuICB9XG4gIGZvbGRlclZpZXc6IGJvb2xlYW47XG4gIGJhY2tuYXY6IGJvb2xlYW47XG4gIGRhdGVBcnJheTogYW55O1xuICBkaXNwbGF5RGF0ZVJhbmdlKCkge1xuICAgIGNvbnN0IGRhdGVzID0gdGhpcy5nZXREYXRlUmFuZ2VBcnJheShcbiAgICAgIHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSxcbiAgICAgIHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGVcbiAgICApO1xuICAgIHRoaXMuZGF0ZUFycmF5ID0gZGF0ZXM7XG4gIH1cblxuICBnZXREYXRlUmFuZ2VBcnJheShmcm9tRGF0ZTogc3RyaW5nLCB0b0RhdGU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKGZyb21EYXRlKTsgLy8gQ29udmVydCBzdHJpbmcgdG8gRGF0ZSBvYmplY3RcbiAgICBjb25zdCBlbmQgPSBuZXcgRGF0ZSh0b0RhdGUpOyAvLyBDb252ZXJ0IHN0cmluZyB0byBEYXRlIG9iamVjdFxuICAgIGNvbnN0IGRhdGVBcnJheTogc3RyaW5nW10gPSBbXTtcblxuICAgIC8vIENoZWNrIGlmIHRoZSBkYXRlcyBhcmUgdmFsaWRcbiAgICBpZiAoaXNOYU4oc3RhcnQuZ2V0VGltZSgpKSB8fCBpc05hTihlbmQuZ2V0VGltZSgpKSkge1xuICAgICAgcmV0dXJuIGRhdGVBcnJheTtcbiAgICB9XG5cbiAgICAvLyBMb29wIGZyb20gc3RhcnQgZGF0ZSB0byBlbmQgZGF0ZVxuICAgIGxldCBjdXJyZW50RGF0ZSA9IHN0YXJ0O1xuICAgIHdoaWxlIChjdXJyZW50RGF0ZSA8PSBlbmQpIHtcbiAgICAgIGRhdGVBcnJheS5wdXNoKGN1cnJlbnREYXRlLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdKTsgLy8gRm9ybWF0IFlZWVktTU0tRERcbiAgICAgIGN1cnJlbnREYXRlLnNldERhdGUoY3VycmVudERhdGUuZ2V0RGF0ZSgpICsgMSk7IC8vIEluY3JlbWVudCB0aGUgZGF0ZSBieSAxIGRheVxuICAgIH1cblxuICAgIHJldHVybiBkYXRlQXJyYXk7XG4gIH1cblxuICAvLyBMb2FkIGNhcmQgZGF0YVxuICBsb2FkQ2FyZERhdGEoKSB7XG4gICAgY29uc3Qgc3RvcmVJZCA9XG4gICAgdGhpcy5zdG9yZUlkYXJyYXkgJiYgdGhpcy5zdG9yZUlkYXJyYXkubGVuZ3RoID4gMCA/IHRoaXMuc3RvcmVJZGFycmF5WzBdIDogbnVsbDtcbiAgICBpZiAoIXN0b3JlSWQgfHwgIXRoaXMuaGVhZGVyRGF0YT8uZGF0ZSkge1xuICAgICAgdGhpcy5vdmVyYWxsQ2FyZERhdGEgPSBbXTtcbiAgICAgIHRoaXMuY2FyZERhdGFNYXAgPSB7fTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnJ2cHNTZXJ2aWNlXG4gICAgICAuZ2V0SW1hZ2VEaXJlY3RvcnlDYXJkRGF0YShcbiAgICAgICAgc3RvcmVJZCxcbiAgICAgICAgdGhpcy5oZWFkZXJEYXRhLmRhdGUuc3RhcnREYXRlLFxuICAgICAgICB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlXG4gICAgICApXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICA/LnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xuICAgICAgICAgICAgdGhpcy5vdmVyYWxsQ2FyZERhdGEgPSByZXM/LmRhdGEgfHwgW107XG4gICAgICAgICAgICB0aGlzLmNhcmREYXRhTWFwID0gKHRoaXMub3ZlcmFsbENhcmREYXRhIHx8IFtdKS5yZWR1Y2UoXG4gICAgICAgICAgICAgIChhY2M6IHsgW2tleTogc3RyaW5nXTogYW55IH0sIGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWREYXRlID0gaXRlbT8uZGF0ZVxuICAgICAgICAgICAgICAgICAgPyBuZXcgRGF0ZShpdGVtLmRhdGUpLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdXG4gICAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWREYXRlKSB7XG4gICAgICAgICAgICAgICAgICBhY2Nbbm9ybWFsaXplZERhdGVdID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICB0aWNrZXRTdGF0dXNMb3dlcjogaXRlbT8udGlja2V0U3RhdHVzXG4gICAgICAgICAgICAgICAgICAgICAgPyBTdHJpbmcoaXRlbS50aWNrZXRTdGF0dXMpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICA6IFwiXCIsXG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7fVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vdmVyYWxsQ2FyZERhdGEgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuY2FyZERhdGFNYXAgPSB7fTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGZldGNoaW5nIGxvYWRDYXJkRGF0YTpcIiwgZXJyKTtcbiAgICAgICAgICB0aGlzLm92ZXJhbGxDYXJkRGF0YSA9IFtdO1xuICAgICAgICAgIHRoaXMuY2FyZERhdGFNYXAgPSB7fTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cblxuICBzZWxlY3RlZFRpbWU6IGFueTtcbiAgZm9sZGVyTmFtZTogYW55O1xuICBzZWxlY3RlZFRpbWVzKHZhbDogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZFRpbWUgPSB2YWw7XG4gICAgdGhpcy5mb2xkZXJOYW1lID0gdmFsO1xuICAgIHRoaXMuZm9sZGVyVmlldyA9IGZhbHNlO1xuICAgIHRoaXMudHlwZSA9IHRoaXMudHlwZTtcbiAgICB0aGlzLmdldFJldm9wcygpO1xuICB9XG4gIGZvbGRlckRhdGU6IGFueTtcbiAgaW1hZ2VGbG93ID0gZmFsc2U7XG4gIHNwbGl0U2NyZWVuRW5hYmxlZCA9IGZhbHNlOyAvLyBGbGFnIHRvIGVuYWJsZSBzcGxpdC1zY3JlZW4gdmlld1xuICAvLyBnZXQgUmV2b3BzIEFwaVxuICBnZXRSdnBzTGlzdDogYW55O1xuICBnZXRSdnBzSW1hZ2VMaXN0OiBhbnk7XG4gIG9iamVjdHNBcnJheTogYW55O1xuICBpbWFnZXNBcnJheURhdGE6IGFueTtcbiAgbGlzdFZpZXdHcm91cHM6IEFycmF5PHsgdGltZVJhbmdlOiBzdHJpbmc7IGRhdGE6IGFueVtdIH0+ID0gW107XG4gIHNlbGVjdEluZGV4OiBhbnkgPSAwO1xuICBmb290ZmFsbERhdGU6IGFueTtcbiAgbGVuZ3RoVmFsdWU6IGJvb2xlYW47XG4gIHZpZXdNb2RlOiBcImdyaWRcIiB8IFwibGlzdFwiID0gXCJncmlkXCI7XG4gIGdldGltYWdlcyhpbmRleDogYW55LCBvYmo6IGFueSkge1xuICAgIHRoaXMub2JqZWN0c0FycmF5ID0gW107XG4gICAgdGhpcy5zZWxlY3RJbmRleCA9IGluZGV4O1xuICAgIHRoaXMuZm9sZGVyRGF0ZSA9IG9iajtcbiAgICAodGhpcy5mb290ZmFsbERhdGUgPSBvYmopLCAodGhpcy5mb2xkZXJWaWV3ID0gZmFsc2UpO1xuICAgIHRoaXMuc2VydmljZT8uaXNub3JtYWxpemVTb3VyY2VcbiAgICAgID8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCksIGRlYm91bmNlVGltZSgzMDApKVxuICAgICAgPy5zdWJzY3JpYmUoKG5vcm1hbGl6ZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubm9ybWFsaXplID0gbm9ybWFsaXplO1xuICAgICAgICBpZiAoIW5vcm1hbGl6ZSkge1xuICAgICAgICAgIHRoaXMuZ2V0UnZwc0xpc3QgPSBbXTtcbiAgICAgICAgICB0aGlzLmdldFJ2cHNJbWFnZUxpc3QgPSBbXTtcbiAgICAgICAgICB0aGlzLm9iamVjdHNBcnJheSA9IFtdO1xuICAgICAgICAgIHRoaXMuZ2V0UmV2b3BzKCk7XG4gICAgICAgICAgLy8gdGhpcy5nZXRUb3RhbCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubGVuZ3RoVmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLm9iamVjdHNBcnJheSA9IFtdO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuICBjb3VudERhdGE6IGFueSA9IFtdO1xuXG4gIGdldFRvdGFsKCkge1xuICAgIHRoaXMuY291bnREYXRhID0gW107XG4gICAgY29uc3Qgc3RvcmVJZCA9XG4gICAgICB0aGlzLnN0b3JlSWRhcnJheSAmJiB0aGlzLnN0b3JlSWRhcnJheS5sZW5ndGggPiAwXG4gICAgICAgID8gdGhpcy5zdG9yZUlkYXJyYXlbMF1cbiAgICAgICAgOiBudWxsO1xuICAgIGNvbnN0IGRhdGVTdHJpbmcgPSB0aGlzLmZvbGRlckRhdGUgfHwgXCJcIjtcbiAgICB0aGlzLnJ2cHNTZXJ2aWNlXG4gICAgICAuZ2V0VG90YWxWYWwoc3RvcmVJZCwgZGF0ZVN0cmluZylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgID8uc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmdldFJ2cHNMaXN0Py5sZW5ndGgpIHRoaXMuY291bnREYXRhID0gcmVzLmRhdGE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY291bnREYXRhID0gW107XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycikgPT4ge30sXG4gICAgICB9KTtcbiAgfVxuICBpbWFnZVVybDogYW55O1xuICByZXZvcHNUeXBlQ291bnQ6IGFueTtcbiAgY3VycmVudFRpbWVSYW5nZURhdGE6IGFueSA9IFtdO1xuICBvdmVyYWxsQXJyYXlEYXRhOiBhbnkgPSBbXTtcbiAgYWxsRm9vdGZhbGxEYXRhOiBhbnkgPSBbXTtcbiAgZ2V0VGlja2V0U3RhdHVzZXMoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHN0YXR1c0xpc3QgPSB0aGlzLmdldFJ2cHNMaXN0Py50aWNrZXRTdGF0dXM7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc3RhdHVzTGlzdCkpIHtcbiAgICAgIHJldHVybiBzdGF0dXNMaXN0Lm1hcCgocykgPT4gcz8uc3RhdHVzPy50b0xvd2VyQ2FzZSgpKS5maWx0ZXIoQm9vbGVhbik7IC8vIFJlbW92ZXMgbnVsbC91bmRlZmluZWRcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGdldFJldm9wcygpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XG4gICAgLy8gdGhpcy5vYmplY3RzQXJyYXkgPVtdO1xuICAgIC8vIHRoaXMub3ZlcmFsbEFycmF5RGF0YSA9W107XG4gICAgLy8gdGhpcy5nZXRSdnBzTGlzdCA9W107XG4gICAgLy8gdGhpcy5nZXRSdnBzSW1hZ2VMaXN0PVtdO1xuICAgIC8vIHRoaXMuYWxsRm9vdGZhbGxEYXRhID1bXVxuICAgIGNvbnN0IHN0b3JlSWQgPVxuICAgICAgdGhpcy5zdG9yZUlkYXJyYXkgJiYgdGhpcy5zdG9yZUlkYXJyYXkubGVuZ3RoID4gMFxuICAgICAgICA/IHRoaXMuc3RvcmVJZGFycmF5WzBdXG4gICAgICAgIDogbnVsbDtcbiAgICBjb25zdCBkYXRlU3RyaW5nID0gdGhpcy5mb2xkZXJEYXRlIHx8IFwiXCI7XG4gICAgY29uc3QgZ3JvdXBCeUtleSA9IFwidGltZVwiO1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLnR5cGUgPT09IFwiZm9vdGZhbGxcIiA/IFwiXCIgOiB0aGlzLnR5cGUgfHwgXCJcIjtcbiAgICBjb25zdCBwcm9jZXNzVHlwZSA9IFwiZm9vdGZhbGxcIjtcblxuICAgIHRoaXMucnZwc1NlcnZpY2VcbiAgICAgIC5nZXRSdnBzTGlzdEFwaShzdG9yZUlkLCBkYXRlU3RyaW5nLCBncm91cEJ5S2V5LCB0eXBlLCBwcm9jZXNzVHlwZSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0UnZwc0xpc3QgPSByZXM/LmRhdGE7XG4gICAgICAgICAgICB0aGlzLmltYWdlVXJsID0gdGhpcy5ydnBzU2VydmljZT8uZm9vdGZhbGxDRE47XG4gICAgICAgICAgICB0aGlzLmdldFJ2cHNJbWFnZUxpc3QgPSByZXM/LmRhdGE/LnJlc3VsdDtcbiAgICAgICAgICAgIHRoaXMudGlja2V0UmV2aWV3U3RhdHVzID0gcmVzPy5kYXRhPy50aWNrZXRTdGF0dXM7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygncmV2b3BzIGdldFJ2cHNMaXN0QXBpIDonLCByZXM/LmRhdGEpO1xuICAgICAgICAgICAgLy8gU2F2ZSB0aGUgZnVsbCBmb290ZmFsbCBkYXRhIChncm91cGVkIGJ5IHRpbWVSYW5nZSlcbiAgICAgICAgICAgIHRoaXMuYWxsRm9vdGZhbGxEYXRhID0gcmVzPy5kYXRhPy5yZXN1bHQ/LmZvb3RmYWxsRGF0YSB8fCBbXTtcblxuICAgICAgICAgICAgLy8gQ3JlYXRlIHRpbWVSYW5nZSArIGNvdW50IG9iamVjdFxuICAgICAgICAgICAgY29uc3QgdGltZVJhbmdlcyA9IHRoaXMuYWxsRm9vdGZhbGxEYXRhLm1hcChcbiAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS50aW1lUmFuZ2VcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLm9iamVjdHNBcnJheSA9IHRpbWVSYW5nZXMubWFwKCh0aW1lUmFuZ2U6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgdGltZVJhbmdlLFxuICAgICAgICAgICAgICBjb3VudDpcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEZvb3RmYWxsRGF0YS5maW5kKChkOiBhbnkpID0+IGQudGltZVJhbmdlID09PSB0aW1lUmFuZ2UpXG4gICAgICAgICAgICAgICAgICA/LmRhdGE/Lmxlbmd0aCB8fCAwLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgLy8gT25seSByZXNldCBpZiBwcmV2aW91cyBzZWxlY3RlZCB0aW1lIGlzIE5PVCBpbiB0aGUgbmV3IGxpc3RcbiAgICAgICAgICAgIGlmICghdGltZVJhbmdlcy5pbmNsdWRlcyh0aGlzLnNlbGVjdGVkVGltZSkpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRpbWVzKHRoaXMub2JqZWN0c0FycmF5WzBdLnRpbWVSYW5nZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEdldCBkYXRhIGZvciB0aGUgc2VsZWN0ZWQgdGltZVJhbmdlXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUaW1lUmFuZ2VEYXRhID1cbiAgICAgICAgICAgICAgdGhpcy5hbGxGb290ZmFsbERhdGEuZmluZChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnRpbWVSYW5nZSA9PT0gdGhpcy5zZWxlY3RlZFRpbWVcbiAgICAgICAgICAgICAgKT8uZGF0YSB8fCBbXTtcblxuICAgICAgICAgICAgLy8gQ291bnQgcmV2b3BzVHlwZXNcbiAgICAgICAgICAgIGNvbnN0IHJldm9wc1R5cGVDb3VudDogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHtcbiAgICAgICAgICAgICAgXCJub24tdGFnZ2luZ1wiOiAwLFxuICAgICAgICAgICAgICBkdXBsaWNhdGU6IDAsXG4gICAgICAgICAgICAgIGVtcGxveWVlOiAwLFxuICAgICAgICAgICAgICBcImhvdXNlS2VlcGluZ1wiOiAwLFxuICAgICAgICAgICAgICBqdW5rOiAwLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgbGV0IHRvdGFsQ291bnQgPSAwO1xuICAgICAgICAgICAgdGhpcy5vdmVyYWxsQXJyYXlEYXRhID0gW107XG5cbiAgICAgICAgICAgIHRoaXMuYWxsRm9vdGZhbGxEYXRhLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICBpdGVtLmRhdGE/LmZvckVhY2goKGltYWdlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJhbGxBcnJheURhdGEucHVzaChpbWFnZSk7XG4gICAgICAgICAgICAgICAgdG90YWxDb3VudCsrO1xuXG4gICAgICAgICAgICAgICAgLy8gY29uc3QgdHlwZSA9XG4gICAgICAgICAgICAgICAgLy8gICBpbWFnZS5yZXZvcHNUeXBlPy50cmltKCkudG9Mb3dlckNhc2UoKSB8fCBcInVua25vd25cIjtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPVxuICAgICAgICAgICAgICAgICAgaW1hZ2UucmV2b3BzVHlwZT8udHJpbSgpIHx8IFwidW5rbm93blwiO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdpbWFnZSByZXZvcHNUeXBlIDo6JywgdHlwZSk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IFwibm9uLXRhZ2dpbmdcIikge1xuICAgICAgICAgICAgICAgICAgcmV2b3BzVHlwZUNvdW50W1wibm9uLXRhZ2dpbmdcIl0rKztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiZW1wbG95ZWVcIikge1xuICAgICAgICAgICAgICAgICAgcmV2b3BzVHlwZUNvdW50W1wiZW1wbG95ZWVcIl0rKztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFwiaG91c2VLZWVwaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgIHJldm9wc1R5cGVDb3VudFtcImhvdXNlS2VlcGluZ1wiXSsrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZih0eXBlID09PSBcImp1bmtcIikge1xuICAgICAgICAgICAgICAgICAgcmV2b3BzVHlwZUNvdW50W1wianVua1wiXSsrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIOKchSBDb3VudCBkdXBsaWNhdGVzIG9ubHkgZnJvbSBkdXBsaWNhdGVJbWFnZVBhdGhcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpbWFnZS5kdXBsaWNhdGVJbWFnZVBhdGgpKSB7XG4gICAgICAgICAgICAgICAgICByZXZvcHNUeXBlQ291bnRbXCJkdXBsaWNhdGVcIl0gKz1cbiAgICAgICAgICAgICAgICAgICAgaW1hZ2UuZHVwbGljYXRlSW1hZ2VQYXRoLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuY291bnREYXRhID0ge1xuICAgICAgICAgICAgICBmb290ZmFsbENvdW50OiB0b3RhbENvdW50LFxuICAgICAgICAgICAgICBub25UYWdzOiByZXZvcHNUeXBlQ291bnRbXCJub24tdGFnZ2luZ1wiXSxcbiAgICAgICAgICAgICAgZHVwbGljYXRlOiByZXZvcHNUeXBlQ291bnRbXCJkdXBsaWNhdGVcIl0sXG4gICAgICAgICAgICAgIGVtcGxveWVlOiByZXZvcHNUeXBlQ291bnRbXCJlbXBsb3llZVwiXSxcbiAgICAgICAgICAgICAgaG91c2VLZWVwaW5nOiByZXZvcHNUeXBlQ291bnRbXCJob3VzZUtlZXBpbmdcIl0sXG4gICAgICAgICAgICAgIGp1bms6IHJldm9wc1R5cGVDb3VudFtcImp1bmtcIl1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zb2xlLmxvZygncmV2b3BzIGNvdW50RGF0YSA6OicsIHRoaXMuY291bnREYXRhKTtcblxuICAgICAgICAgICAgLy8gQXBwbHkgdHlwZSBmaWx0ZXIgYWZ0ZXIgbG9hZGluZyB0aW1lUmFuZ2UgZGF0YVxuICAgICAgICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIC8vIHRoaXMubm9EYXRhID0gZmFsc2U7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEluIGNhc2Ugb2YgZmFpbHVyZVxuICAgICAgICAgICAgdGhpcy5nZXRSdnBzTGlzdCA9IFtdO1xuICAgICAgICAgICAgdGhpcy5nZXRSdnBzSW1hZ2VMaXN0ID0gW107XG4gICAgICAgICAgICB0aGlzLm9iamVjdHNBcnJheSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5pbWFnZXNBcnJheURhdGEgPSBbXTtcbiAgICAgICAgICAgIHRoaXMub3ZlcmFsbEFycmF5RGF0YSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5jb3VudERhdGEgPSBbXTtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICBjb25zdCBtc2cgPVxuICAgICAgICAgICAgZXJyLmVycm9yLmVycm9yIHx8XG4gICAgICAgICAgICBlcnIuZXJyb3IgfHxcbiAgICAgICAgICAgIGVycj8uZXJyb3I/Lm1lc3NhZ2UgfHxcbiAgICAgICAgICAgIGVyci5tZXNzYWdlIHx8XG4gICAgICAgICAgICBcIlVua25vd24gZXJyb3JcIjtcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QobXNnKTtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5nZXRSdnBzTGlzdCA9IFtdO1xuICAgICAgICAgIHRoaXMuZ2V0UnZwc0ltYWdlTGlzdCA9IFtdO1xuICAgICAgICAgIHRoaXMub2JqZWN0c0FycmF5ID0gW107XG4gICAgICAgICAgdGhpcy5pbWFnZXNBcnJheURhdGEgPSBbXTtcbiAgICAgICAgICB0aGlzLm92ZXJhbGxBcnJheURhdGEgPSBbXTtcbiAgICAgICAgICB0aGlzLmNvdW50RGF0YSA9IFtdO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gIH1cblxuICBvcmlnaW5hbENoZWNrZWREdXBsaWNhdGVJZHM6IGFueTtcbiAgZWRpdFZhbHVlKCkge1xuICAgIGNvbnN0IHR5cGUgPSAodGhpcy5zZWxlY3RlZFR5cGUgfHwgXCJcIikudG9Mb3dlckNhc2UoKTtcbiAgICB0aGlzLnJldm9wc1R5cGVWYWx1ZSA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRJbWFnZSA9IHRoaXMuc2VsZWN0SW1hZ2VBcnJheTtcbiAgICBjb25zdCBzZWxlY3RlZFRlbXBsZCA9IHNlbGVjdGVkSW1hZ2U/LnRlbXBsZDtcblxuICAgIGlmIChcbiAgICAgIHR5cGUgPT09IFwiZHVwbGljYXRlXCIgJiZcbiAgICAgIEFycmF5LmlzQXJyYXkoc2VsZWN0ZWRJbWFnZS5kdXBsaWNhdGVJbWFnZVBhdGgpXG4gICAgKSB7XG4gICAgICAvLyAxLiBDb252ZXJ0IGR1cGxpY2F0ZSBjaGlsZHJlbiBpbnRvIGNvbnNpc3RlbnQgb2JqZWN0cyB3aXRoIHBhcmVudCByZWZlcmVuY2VcbiAgICAgIGNvbnN0IGR1cGxpY2F0ZUNoaWxkcmVuID0gc2VsZWN0ZWRJbWFnZS5kdXBsaWNhdGVJbWFnZVBhdGgubWFwKFxuICAgICAgICAoY2hpbGQ6IGFueSkgPT4gKHtcbiAgICAgICAgICAuLi5jaGlsZCxcbiAgICAgICAgICBwYXJlbnQ6IHNlbGVjdGVkVGVtcGxkLFxuICAgICAgICAgIHNlbGVjdGVkOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgKTtcblxuICAgICAgLy8gMi4gQ29sbGVjdCB0aGUgdGVtcGxkIHZhbHVlcyBvZiBkdXBsaWNhdGUgY2hpbGRyZW5cbiAgICAgIGNvbnN0IGR1cGxpY2F0ZUNoaWxkSWRzID0gZHVwbGljYXRlQ2hpbGRyZW4ubWFwKFxuICAgICAgICAoY2hpbGQ6IGFueSkgPT4gY2hpbGQudGVtcElkXG4gICAgICApO1xuXG4gICAgICAvLyAzLiBGaWx0ZXIgb3V0IG5vbi10YWdnaW5nIGltYWdlcyBleGNlcHQgdGhlIHNlbGVjdGVkIHBhcmVudCAmIGl0cyBjaGlsZHJlblxuICAgICAgY29uc3Qgbm9uVGFnZ2luZ0ltYWdlcyA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maWx0ZXIoKGltZzogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGlzTm9uVGFnZ2luZyA9XG4gICAgICAgICAgKGltZy5yZXZvcHNUeXBlIHx8IFwiXCIpLnRvTG93ZXJDYXNlKCkgPT09IFwibm9uLXRhZ2dpbmdcIjtcbiAgICAgICAgY29uc3QgaXNOb3RTZWxlY3RlZCA9XG4gICAgICAgICAgaW1nLnRlbXBsZCAhPT0gc2VsZWN0ZWRUZW1wbGQgJiZcbiAgICAgICAgICAhZHVwbGljYXRlQ2hpbGRJZHMuaW5jbHVkZXMoaW1nLnRlbXBsZCk7XG4gICAgICAgIHJldHVybiBpc05vblRhZ2dpbmcgJiYgaXNOb3RTZWxlY3RlZDtcbiAgICAgIH0pO1xuXG4gICAgICAvLyA0LiBNZXJnZSBkdXBsaWNhdGUgY2hpbGRyZW4gKyBvdGhlciBub24tdGFnZ2luZyBpbWFnZXNcbiAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSA9IFsuLi5kdXBsaWNhdGVDaGlsZHJlbiwgLi4ubm9uVGFnZ2luZ0ltYWdlc107XG5cbiAgICAgIC8vIDUuIE1hcmsgc2VsZWN0ZWQ6IG9ubHkgZHVwbGljYXRlIGltYWdlcyB0aGF0IHdlcmUgbWFya2VkIGlzQ2hlY2tlZFxuICAgICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5LmZvckVhY2goKGltZzogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGlzRHVwbGljYXRlID1cbiAgICAgICAgICAoaW1nLnJldm9wc1R5cGUgfHwgXCJcIikudG9Mb3dlckNhc2UoKSA9PT0gXCJkdXBsaWNhdGVcIjtcbiAgICAgICAgaW1nLnNlbGVjdGVkID0gaXNEdXBsaWNhdGUgJiYgaW1nLmlzQ2hlY2tlZCA9PT0gdHJ1ZTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyA2LiBTdG9yZSBvcmlnaW5hbCBjaGVja2VkIElEcyB0byBjb21wYXJlIGxhdGVyIGR1cmluZyBzdWJtaXRcbiAgICAgIHRoaXMub3JpZ2luYWxDaGVja2VkRHVwbGljYXRlSWRzID0gdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5XG4gICAgICAgIC5maWx0ZXIoKGltZzogYW55KSA9PiBpbWcuaXNDaGVja2VkID09PSB0cnVlKVxuICAgICAgICAubWFwKChpbWc6IGFueSkgPT4gaW1nLnRlbXBsZCk7XG5cbiAgICAgIC8vIOKchSA3LiBGaWxsIHNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdCB3aXRoIHByZS1zZWxlY3RlZCBkdXBsaWNhdGVzXG4gICAgICB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdCA9IHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheVxuICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgIChpbWc6IGFueSkgPT5cbiAgICAgICAgICAgIChpbWcucmV2b3BzVHlwZSB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpID09PSBcImR1cGxpY2F0ZVwiICYmXG4gICAgICAgICAgICBpbWcuaXNDaGVja2VkID09PSB0cnVlXG4gICAgICAgIClcbiAgICAgICAgLm1hcCgoaW1nOiBhbnkpID0+ICh7XG4gICAgICAgICAgLi4uaW1nLFxuICAgICAgICAgIHBhcmVudDogaW1nLnBhcmVudCB8fCBzZWxlY3RlZFRlbXBsZCxcbiAgICAgICAgICBpc0NoZWNrZWQ6IHRydWUsXG4gICAgICAgIH0pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTm90IGR1cGxpY2F0ZSB0eXBlIOKGkiBzaG93IG9ubHkgc2VsZWN0ZWQgdHlwZSAoZXhjbHVkaW5nIHRoZSBjdXJyZW50IHNlbGVjdGVkIGltYWdlKVxuICAgICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbHRlcigoaW1nOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgaW1nVHlwZSA9IChpbWcucmV2b3BzVHlwZSB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICByZXR1cm4gaW1nVHlwZSA9PT0gdHlwZSAmJiBpbWcudGVtcGxkICE9PSBzZWxlY3RlZFRlbXBsZDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGJhY2tUb0Zvb3RmYWxsMSgpIHtcbiAgICB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuaW1hZ2VGbG93ID0gZmFsc2U7XG4gICAgdGhpcy5zcGxpdFNjcmVlbkVuYWJsZWQgPSBmYWxzZTsgLy8gRGlzYWJsZSBzcGxpdC1zY3JlZW4gd2hlbiBnb2luZyBiYWNrXG4gICAgdGhpcy5zZWxlY3RJbWFnZUFycmF5ID0gbnVsbDtcbiAgfVxuICBzZWxlY3RJbWFnZUFycmF5OiBhbnk7XG4gIHJlbWFpbmluZ0ltYWdlQXJyYXk6IGFueTtcbiAgcmV2b3BzVHlwZVZhbHVlID0gZmFsc2U7XG5cbiAgZWRpdEJ0blNob3cgPSBmYWxzZTtcbiAgLy8gd2hlbiBpbWFnZSBzZWxlY3Rpb24gZnJvbSBmb2xkZXIgdmlld1xuICBzZWxlY3RJbWFnZUZvclNwbGl0VmlldyhvYmo6IGFueSkge1xuICAgIHRoaXMuc3BsaXRTY3JlZW5FbmFibGVkID0gdHJ1ZTsgLy8gRW5hYmxlIHNwbGl0LXNjcmVlbiB3aGVuIGltYWdlIGlzIGNsaWNrZWRcbiAgICB0aGlzLnNlbGVjdEltYWdlQXJyYXkgPSBvYmo7XG4gICAgY29uc29sZS5sb2coJ2ltYWdlIGFycmF5IDo6JywgdGhpcy5zZWxlY3RJbWFnZUFycmF5KVxuICAgIFxuICAgIC8vIElmIGR1cGxpY2F0ZSBpcyBhbHJlYWR5IHNlbGVjdGVkLCBwcmVzZXJ2ZSB0aGUgZHVwbGljYXRlIGNvbnRleHRcbiAgICBjb25zdCBpc0R1cGxpY2F0ZU1vZGUgPSB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID09PSBcImR1cGxpY2F0ZVwiO1xuICAgIFxuICAgIGlmICghaXNEdXBsaWNhdGVNb2RlKSB7XG4gICAgICB0aGlzLnJldm9wc1R5cGVWYWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5zZWxlY3RlZFR5cGUgPSBcIlwiO1xuICAgICAgdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSA9IHVuZGVmaW5lZDtcbiAgICAgIFxuICAgICAgLy8gU2hvdyBhbGwgaW1hZ2VzIGluIGxlZnQgcGFuZWwgZXhjZXB0IGR1cGxpY2F0ZXMgYW5kIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgaW1hZ2VcbiAgICAgIGNvbnN0IHNlbGVjdGVkVGVtcGxkID0gb2JqPy50ZW1wbGQ7XG4gICAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEuZmlsdGVyKChpbWc6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBpbWdUeXBlID0gKGltZy5yZXZvcHNUeXBlIHx8IFwiXCIpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIC8vIEV4Y2x1ZGUgZHVwbGljYXRlcyBhbmQgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBpbWFnZVxuICAgICAgICByZXR1cm4gaW1nVHlwZSAhPT0gXCJkdXBsaWNhdGVcIiAmJiBpbWcudGVtcGxkICE9PSBzZWxlY3RlZFRlbXBsZDtcbiAgICAgIH0pO1xuICAgICAgXG4gICAgICAvLyBSZXNldCBjaGVja2JveCBzdGF0ZXNcbiAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheS5mb3JFYWNoKChpbWc6IGFueSkgPT4ge1xuICAgICAgICBpbWcuc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgaW1nLmlzQ2hlY2tlZCA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgICBcbiAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VzR3JvdXBzID0gW107IC8vIFJlc2V0IGdyb3Vwc1xuICAgIH1cbiAgICBcbiAgICBsZXQgZmlsdGVyZWRCeVR5cGU6IGFueVtdID0gW107XG4gICAgY29uc3Qgc2VsZWN0ZWRUeXBlID0gb2JqLnJldm9wc1R5cGU/LnRvTG93ZXJDYXNlKCk7XG5cbiAgICAvLyBJZiB3ZSdyZSBpbiBkdXBsaWNhdGUgbW9kZSBhbmQgY2xpY2tpbmcgb24gYSByZW1haW5pbmcgaW1hZ2UsIGtlZXAgdGhlIGR1cGxpY2F0ZSBjb250ZXh0XG4gICAgaWYgKGlzRHVwbGljYXRlTW9kZSkge1xuICAgICAgLy8gS2VlcCB0aGUgZXhpc3RpbmcgcmVtYWluaW5nIGltYWdlcyBidXQgdXBkYXRlIHRoZSBzZWxlY3RlZCBpbWFnZVxuICAgICAgLy8gRG9uJ3QgcmVzZXQgdGhlIGR1cGxpY2F0ZSBzZWxlY3Rpb24gY29udGV4dFxuICAgICAgdGhpcy5yZXZvcHNUeXBlVmFsdWUgPSBmYWxzZTsgLy8gQWxsb3cgZWRpdGluZyB0aGlzIGltYWdlXG4gICAgICB0aGlzLnNlbGVjdGVkVHlwZSA9IFwiXCI7IC8vIFJlc2V0IHRvIGFsbG93IG5ldyBzZWxlY3Rpb25cbiAgICAgIC8vIEtlZXAgc2VsZWN0ZWRSYWRpb1R5cGUgYXMgJ2R1cGxpY2F0ZScgdG8gbWFpbnRhaW4gY29udGV4dFxuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWRUeXBlID09PSBcImR1cGxpY2F0ZVwiICYmIEFycmF5LmlzQXJyYXkob2JqLmR1cGxpY2F0ZUltYWdlUGF0aCkpIHtcbiAgICAgIC8vIFdoZW4gY2xpY2tpbmcgb24gYSBkdXBsaWNhdGUgcGFyZW50LCBzaG93IGFsbCBpbWFnZXMgZXhjZXB0IGR1cGxpY2F0ZXMgYW5kIGN1cnJlbnRcbiAgICAgIGNvbnN0IHNlbGVjdGVkVGVtcGxkID0gb2JqPy50ZW1wbGQ7XG4gICAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEuZmlsdGVyKChpbWc6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBpbWdUeXBlID0gKGltZy5yZXZvcHNUeXBlIHx8IFwiXCIpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHJldHVybiBpbWdUeXBlICE9PSBcImR1cGxpY2F0ZVwiICYmIGltZy50ZW1wbGQgIT09IHNlbGVjdGVkVGVtcGxkO1xuICAgICAgfSk7XG4gICAgICBcbiAgICAgIC8vIFJlc2V0IGNoZWNrYm94IHN0YXRlc1xuICAgICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5LmZvckVhY2goKGltZzogYW55KSA9PiB7XG4gICAgICAgIGltZy5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICBpbWcuaXNDaGVja2VkID0gZmFsc2U7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coJ3R5cGUgOjo6Jywgc2VsZWN0ZWRUeXBlKVxuICAgICAgLy8gRm9yIG5vbi1kdXBsaWNhdGUgaW1hZ2VzLCBzaG93IGFsbCBpbWFnZXMgZXhjZXB0IGR1cGxpY2F0ZXMgYW5kIGN1cnJlbnRcbiAgICAgIGNvbnN0IHNlbGVjdGVkVGVtcGxkID0gb2JqPy50ZW1wbGQ7XG4gICAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEuZmlsdGVyKChpbWc6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBpbWdUeXBlID0gKGltZy5yZXZvcHNUeXBlIHx8IFwiXCIpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHJldHVybiBpbWdUeXBlICE9PSBcImR1cGxpY2F0ZVwiICYmIGltZy50ZW1wbGQgIT09IHNlbGVjdGVkVGVtcGxkO1xuICAgICAgfSk7XG4gICAgICBcbiAgICAgIC8vIFJlc2V0IGNoZWNrYm94IHN0YXRlc1xuICAgICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5LmZvckVhY2goKGltZzogYW55KSA9PiB7XG4gICAgICAgIGltZy5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICBpbWcuaXNDaGVja2VkID0gZmFsc2U7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBPbmx5IGF1dG8tc2V0IHJldm9wc1R5cGVWYWx1ZSBpZiBub3QgaW4gZHVwbGljYXRlIG1vZGVcbiAgICBpZiAoIWlzRHVwbGljYXRlTW9kZSkge1xuICAgICAgaWYgKFxuICAgICAgICBvYmo/LnJldm9wc1R5cGUgPT09IFwiZHVwbGljYXRlXCIgfHxcbiAgICAgICAgb2JqPy5yZXZvcHNUeXBlID09PSBcImVtcGxveWVlXCIgfHxcbiAgICAgICAgb2JqPy5yZXZvcHNUeXBlID09PSBcImhvdXNlS2VlcGluZ1wiIHx8IG9iaj8ucmV2b3BzVHlwZSA9PT1cImp1bmtcIlxuICAgICAgKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBvYmo/LnJldm9wc1R5cGUgPT09IFwiZHVwbGljYXRlXCIgJiZcbiAgICAgICAgICBvYmo/LmR1cGxpY2F0ZUltYWdlUGF0aD8ubGVuZ3RoID4gMFxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmVkaXRCdG5TaG93ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICBvYmo/LnJldm9wc1R5cGUgPT09IFwiZW1wbG95ZWVcIiB8fFxuICAgICAgICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gXCJob3VzZUtlZXBpbmdcIiB8fCBvYmo/LnJldm9wc1R5cGUgPT09XCJqdW5rXCJcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5lZGl0QnRuU2hvdyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5lZGl0QnRuU2hvdyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmV2b3BzVHlwZVZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFR5cGUgPSBvYmo/LnJldm9wc1R5cGU7XG4gICAgICAgIHRoaXMub25SYWRpb0NoYW5nZShvYmo/LnJldm9wc1R5cGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJbiBkdXBsaWNhdGUgbW9kZSwgYWxsb3cgZWRpdGluZyB0aGUgc2VsZWN0ZWQgaW1hZ2VcbiAgICAgIHRoaXMucmV2b3BzVHlwZVZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLmVkaXRCdG5TaG93ID0gZmFsc2U7XG4gICAgfVxuICAgIFxuICAgIC8vIEJ1aWxkIHJlbWFpbmluZyBpbWFnZXMgZ3JvdXBzIGJ5IHRpbWUgcmFuZ2VcbiAgICB0aGlzLmJ1aWxkUmVtYWluaW5nSW1hZ2VzR3JvdXBzKCk7XG4gIH1cblxuICBpbWdGdWxsVmlldyhvYmo6IGFueSkge1xuICB0aGlzLnNlbGVjdEltYWdlQXJyYXkgPSBvYmo7XG4gIHRoaXMuaW1hZ2VGbG93ID0gdHJ1ZTtcbiAgdGhpcy5yZXZvcHNUeXBlVmFsdWUgPSBmYWxzZTtcbiAgdGhpcy5zZWxlY3RlZFR5cGUgPSBcIlwiO1xuICB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID0gdW5kZWZpbmVkO1xuICBsZXQgZmlsdGVyZWRCeVR5cGU6IGFueVtdID0gW107XG4gIGNvbnN0IHNlbGVjdGVkVHlwZSA9IG9iai5yZXZvcHNUeXBlPy50b0xvd2VyQ2FzZSgpO1xuXG4gIGlmIChzZWxlY3RlZFR5cGUgPT09IFwiZHVwbGljYXRlXCIgJiYgQXJyYXkuaXNBcnJheShvYmouZHVwbGljYXRlSW1hZ2VQYXRoKSkge1xuICAgIC8vIPCflLkgQ2FzZSAxOiBEdXBsaWNhdGUgcGFyZW50IOKGkiBkb24ndCBzaG93IGNoaWxkcmVuIGluIGxlZnQgcGFuZWwgaW5pdGlhbGx5XG4gICAgLy8gVGhleSB3aWxsIGFwcGVhciB3aGVuIGR1cGxpY2F0ZSByYWRpbyBpcyBzZWxlY3RlZFxuICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSA9IFtdO1xuICB9IGVsc2Uge1xuICAgIC8vIPCflLkgQ2FzZSAyOiBOb3JtYWwg4oaSIHNob3cgYWxsIGltYWdlcyBleGNlcHQgZHVwbGljYXRlcyBhbmQgY3VycmVudGx5IHNlbGVjdGVkXG4gICAgY29uc3Qgc2VsZWN0ZWRUZW1wbGQgPSBvYmo/LnRlbXBsZDtcbiAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEuZmlsdGVyKChpbWc6IGFueSkgPT4ge1xuICAgICAgY29uc3QgaW1nVHlwZSA9IChpbWcucmV2b3BzVHlwZSB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgcmV0dXJuIGltZ1R5cGUgIT09IFwiZHVwbGljYXRlXCIgJiYgaW1nLnRlbXBsZCAhPT0gc2VsZWN0ZWRUZW1wbGQ7XG4gICAgfSk7XG4gICAgXG4gICAgLy8gUmVzZXQgY2hlY2tib3ggc3RhdGVzXG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5LmZvckVhY2goKGltZzogYW55KSA9PiB7XG4gICAgICBpbWcuc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIGltZy5pc0NoZWNrZWQgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG5cbiAgLy8g4pyFIEhhbmRsZSBlZGl0IGJ1dHRvbiAvIHJhZGlvIGxvZ2ljXG4gIGlmIChcbiAgICBvYmo/LnJldm9wc1R5cGUgPT09IFwiZHVwbGljYXRlXCIgfHxcbiAgICBvYmo/LnJldm9wc1R5cGUgPT09IFwiZW1wbG95ZWVcIiB8fFxuICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gXCJob3VzZUtlZXBpbmdcIiB8fCBvYmo/LnJldm9wc1R5cGUgPT09XCJqdW5rXCJcbiAgKSB7XG4gICAgaWYgKFxuICAgICAgb2JqPy5yZXZvcHNUeXBlID09PSBcImR1cGxpY2F0ZVwiICYmXG4gICAgICBvYmo/LmR1cGxpY2F0ZUltYWdlUGF0aD8ubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgdGhpcy5lZGl0QnRuU2hvdyA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gXCJlbXBsb3llZVwiIHx8XG4gICAgICBvYmo/LnJldm9wc1R5cGUgPT09IFwiaG91c2VLZWVwaW5nXCIgfHwgb2JqPy5yZXZvcHNUeXBlID09PVwianVua1wiXG4gICAgKSB7XG4gICAgICB0aGlzLmVkaXRCdG5TaG93ID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lZGl0QnRuU2hvdyA9IGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMucmV2b3BzVHlwZVZhbHVlID0gdHJ1ZTtcbiAgICB0aGlzLnNlbGVjdGVkVHlwZSA9IG9iaj8ucmV2b3BzVHlwZTtcbiAgICB0aGlzLm9uUmFkaW9DaGFuZ2Uob2JqPy5yZXZvcHNUeXBlKTtcbiAgfVxufVxuXG5cbiAgaW1nU3dhcChvYmo6IGFueSkge1xuICAgIGlmICh0aGlzLnNlbGVjdEltYWdlQXJyYXkpIHtcbiAgICAgIC8vIEZpbmQgd2hlcmUgdGhlIG5ldyBzZWxlY3RlZCBpbWFnZSBpcyBpbiB0aGUgbGlzdFxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkuZmluZEluZGV4KFxuICAgICAgICAoaW1nOiBhbnkpID0+IGltZy50ZW1wbGQgPT09IG9iai50ZW1wbGRcbiAgICAgICk7XG5cbiAgICAgIC8vIFJlcGxhY2Ugc2VsZWN0ZWRJbWFnZUFycmF5IGJhY2sgaW50byBpdHMgb3JpZ2luYWwgcG9zaXRpb25cbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5W2luZGV4XSA9IHRoaXMuc2VsZWN0SW1hZ2VBcnJheTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGZhbGxiYWNrIGlmIG5vdCBmb3VuZFxuICAgICAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkucHVzaCh0aGlzLnNlbGVjdEltYWdlQXJyYXkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFVwZGF0ZSBzZWxlY3RlZCBpbWFnZVxuICAgIHRoaXMuc2VsZWN0SW1hZ2VBcnJheSA9IG9iajtcblxuICAgIC8vIFJlbW92ZSBzZWxlY3RlZCBmcm9tIHJlbWFpbmluZyBsaXN0XG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5LmZpbHRlcihcbiAgICAgIChpbWc6IGFueSkgPT4gaW1nLnRlbXBsZCAhPT0gb2JqLnRlbXBsZFxuICAgICk7XG5cbiAgICAvLyBSZWJ1aWxkIHJlbWFpbmluZyBpbWFnZXMgZ3JvdXBzXG4gICAgdGhpcy5idWlsZFJlbWFpbmluZ0ltYWdlc0dyb3VwcygpO1xuICAgIFxuICAgIHRoaXMuaW1hZ2VGbG93ID0gdHJ1ZTtcbiAgfVxuXG4gIHNlbGVjdGVkVHlwZTogYW55ID0gXCJcIjsgLy8gZGVmYXVsdCBzZWxlY3RlZFxuICBzZWxlY3RlZFJhZGlvVHlwZTogYW55O1xuICAvLyAtLSBOb24tc2hvcHBlcnMgc2VsZWN0aW9uIHR5cGUgLS1cbiAgb25SYWRpb0NoYW5nZSh2YWw6IGFueSkge1xuICB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID0gdmFsO1xuICB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdCA9IFtdO1xuXG4gIGNvbnN0IHR5cGUgPSAodmFsIHx8IFwiXCIpLnRvTG93ZXJDYXNlKCk7XG5cbiAgaWYgKHR5cGUgPT09IFwiZHVwbGljYXRlXCIpIHtcbiAgICAvLyBXaGVuIGR1cGxpY2F0ZSByYWRpbyBpcyBzZWxlY3RlZCwgc2hvdyBBTEwgaW1hZ2VzIChpbmNsdWRpbmcgZHVwbGljYXRlcykgZXhjZXB0IHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgb25lXG4gICAgY29uc3Qgc2VsZWN0ZWRUZW1wbGQgPSB0aGlzLnNlbGVjdEltYWdlQXJyYXk/LnRlbXBsZDtcblxuICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maWx0ZXIoKGltZzogYW55KSA9PiB7XG4gICAgICByZXR1cm4gaW1nLnRlbXBsZCAhPT0gc2VsZWN0ZWRUZW1wbGQ7XG4gICAgfSk7XG5cbiAgICAvLyBBdXRvLWNoZWNrIGltYWdlcyB0aGF0IGFyZSBhbHJlYWR5IGR1cGxpY2F0ZWQgKGhhdmUgcmV2b3BzVHlwZSA9PT0gXCJkdXBsaWNhdGVcIilcbiAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkuZm9yRWFjaCgoaW1nOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGltZ1R5cGUgPSAoaW1nLnJldm9wc1R5cGUgfHwgXCJcIikudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChpbWdUeXBlID09PSBcImR1cGxpY2F0ZVwiKSB7XG4gICAgICAgIC8vIEF1dG8tY2hlY2sgYWxyZWFkeSBkdXBsaWNhdGVkIGltYWdlc1xuICAgICAgICBpbWcuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICBpbWcuaXNDaGVja2VkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFJlc2V0IG5vbi1kdXBsaWNhdGUgaW1hZ2VzXG4gICAgICAgIGltZy5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICBpbWcuaXNDaGVja2VkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBVcGRhdGUgc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0IHdpdGggYXV0by1jaGVja2VkIGR1cGxpY2F0ZXNcbiAgICB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdCA9IHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheVxuICAgICAgLmZpbHRlcigoaW1nOiBhbnkpID0+IGltZy5zZWxlY3RlZCAmJiAoaW1nLnJldm9wc1R5cGUgfHwgXCJcIikudG9Mb3dlckNhc2UoKSA9PT0gXCJkdXBsaWNhdGVcIilcbiAgICAgIC5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgcGFyZW50OiBpdGVtLnBhcmVudCB8fCB0aGlzLnNlbGVjdEltYWdlQXJyYXk/LnRlbXBsZCxcbiAgICAgICAgaXNDaGVja2VkOiB0cnVlLFxuICAgICAgfSkpO1xuXG4gICAgLy8gUmVidWlsZCByZW1haW5pbmcgaW1hZ2VzIGdyb3VwcyBhZnRlciB1cGRhdGluZ1xuICAgIHRoaXMuYnVpbGRSZW1haW5pbmdJbWFnZXNHcm91cHMoKTtcbiAgICBjb25zb2xlLmxvZygncmVtYWluIGltYWdlIGFycmF5IDo6JywgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5KVxuICB9IGVsc2Uge1xuICAgIC8vIEZvciBub24tZHVwbGljYXRlIHR5cGVzLCBzaG93IGFsbCBpbWFnZXMgZXhjZXB0IGR1cGxpY2F0ZXMgYW5kIGN1cnJlbnRseSBzZWxlY3RlZFxuICAgIGNvbnN0IHNlbGVjdGVkVGVtcGxkID0gdGhpcy5zZWxlY3RJbWFnZUFycmF5Py50ZW1wbGQ7XG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbHRlcigoaW1nOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGltZ1R5cGUgPSAoaW1nLnJldm9wc1R5cGUgfHwgXCJcIikudG9Mb3dlckNhc2UoKTtcbiAgICAgIHJldHVybiBpbWdUeXBlICE9PSBcImR1cGxpY2F0ZVwiICYmIGltZy50ZW1wbGQgIT09IHNlbGVjdGVkVGVtcGxkO1xuICAgIH0pO1xuICAgIFxuICAgIC8vIFJlc2V0IGNoZWNrYm94IHN0YXRlc1xuICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheS5mb3JFYWNoKChpbWc6IGFueSkgPT4ge1xuICAgICAgaW1nLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICBpbWcuaXNDaGVja2VkID0gZmFsc2U7XG4gICAgfSk7XG4gICAgXG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZXNHcm91cHMgPSBbXTtcbiAgICB0aGlzLmJ1aWxkUmVtYWluaW5nSW1hZ2VzR3JvdXBzKCk7XG4gIH1cbn1cblxuXG4gIHR5cGU6IGFueSA9IFwiZm9vdGZhbGxcIjtcbiAgc2VsZWN0UGxhblRyZW5kcyh0eXBlOiBhbnkpIHtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuXG4gICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgfVxuXG4gIGFwcGx5RmlsdGVycygpIHtcbiAgICB0aGlzLmltYWdlRmxvdyA9IGZhbHNlO1xuICAgIHRoaXMuc3BsaXRTY3JlZW5FbmFibGVkID0gZmFsc2U7IC8vIFJlc2V0IHNwbGl0LXNjcmVlbiB3aGVuIGZpbHRlcnMgY2hhbmdlXG4gICAgdGhpcy5zZWxlY3RJbWFnZUFycmF5ID0gbnVsbDtcblxuICAgIC8vIENvbnZlcnQgdHlwZSB0byBsb3dlcmNhc2Ugc2FmZWx5XG4gICAgY29uc3Qgc2VsZWN0ZWRUeXBlID0gdGhpcy50eXBlPy50b0xvd2VyQ2FzZSgpO1xuXG4gICAgaWYgKHNlbGVjdGVkVHlwZSA9PT0gXCJmb290ZmFsbFwiKSB7XG4gICAgICAvLyBGb290ZmFsbCBzaG93cyBhbGwgY3VycmVudFRpbWVSYW5nZURhdGEgKHRpbWUgcmFuZ2UgYmFzZWQpXG4gICAgICB0aGlzLmltYWdlc0FycmF5RGF0YSA9IFsuLi50aGlzLmN1cnJlbnRUaW1lUmFuZ2VEYXRhXTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRm9yIHRhZ2dlZCB0eXBlcyBsaWtlICdkdXBsaWNhdGUnLCAnZW1wbG95ZWUnLCAnaG91c2VLZWVwaW5nJ1xuICAgICAgdGhpcy5pbWFnZXNBcnJheURhdGEgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEuZmlsdGVyKFxuICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnJldm9wc1R5cGU/LnRvTG93ZXJDYXNlKCkgPT09IHNlbGVjdGVkVHlwZVxuICAgICAgKTtcbiAgICB9XG4gICAgLy8gZWxzZSB7XG4gICAgLy8gICAvLyBOb24tdGFnZ2luZyBtZWFucyBubyByZXZvcHNUeXBlIC0gc2hvdyBhbGwgdW5tYXRjaGVkIChubyB0YWcpXG4gICAgLy8gICB0aGlzLmltYWdlc0FycmF5RGF0YSA9IHRoaXMuY3VycmVudFRpbWVSYW5nZURhdGEuZmlsdGVyKChpdGVtOiBhbnkpID0+XG4gICAgLy8gICAgICFpdGVtLnJldm9wc1R5cGVcbiAgICAvLyAgICk7XG4gICAgLy8gfVxuXG4gICAgLy8gU2V0IG5vRGF0YSBiYXNlZCBvbiByZXN1bHRcbiAgICB0aGlzLm5vRGF0YSA9ICF0aGlzLmltYWdlc0FycmF5RGF0YT8ubGVuZ3RoO1xuXG4gICAgdGhpcy5idWlsZExpc3RWaWV3R3JvdXBzKCk7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbiAgc2V0Vmlld01vZGUobW9kZTogXCJncmlkXCIgfCBcImxpc3RcIikge1xuICAgIGlmICh0aGlzLnZpZXdNb2RlICE9PSBtb2RlKSB7XG4gICAgICB0aGlzLnZpZXdNb2RlID0gbW9kZTtcbiAgICB9XG4gIH1cblxuICAvLyBDb252ZXJ0IG1pbnV0ZXMg4oaSIGhyICsgbWluc1xuICAgIGNvbnZlcnRNaW51dGVzKHRvdGFsTWludXRlczogbnVtYmVyKSB7XG4gICAgICBpZiAoIXRvdGFsTWludXRlcyAmJiB0b3RhbE1pbnV0ZXMgIT09IDApIHJldHVybiB7IGhvdXJzOiAwLCBtaW5zOiAwIH07XG4gICAgICBjb25zdCBob3VycyA9IE1hdGguZmxvb3IodG90YWxNaW51dGVzIC8gNjApO1xuICAgICAgY29uc3QgbWlucyA9IHRvdGFsTWludXRlcyAlIDYwO1xuICAgICAgcmV0dXJuIHsgaG91cnMsIG1pbnMgfTtcbiAgICB9XG5cbiAgcmVtYWluaW5nSW1hZ2VzR3JvdXBzOiBBcnJheTx7IHRpbWVSYW5nZTogc3RyaW5nOyBkYXRhOiBhbnlbXSB9PiA9IFtdO1xuXG4gIHByaXZhdGUgYnVpbGRSZW1haW5pbmdJbWFnZXNHcm91cHMoKSB7XG4gICAgaWYgKCF0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgfHwgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5yZW1haW5pbmdJbWFnZXNHcm91cHMgPSBbXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvcmRlcjogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwPHN0cmluZywgYW55W10+KCk7XG5cbiAgICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkuZm9yRWFjaCgoaW1nOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGtleSA9IGltZz8udGltZVJhbmdlIHx8IFwiTkFcIjtcbiAgICAgIGlmICghbWFwLmhhcyhrZXkpKSB7XG4gICAgICAgIG1hcC5zZXQoa2V5LCBbXSk7XG4gICAgICAgIG9yZGVyLnB1c2goa2V5KTtcbiAgICAgIH1cbiAgICAgIG1hcC5nZXQoa2V5KT8ucHVzaChpbWcpO1xuICAgIH0pO1xuICAgIGNvbnNvbGUubG9nKCdyZW1haW5pbmdJbWFnZUFycmF5ID09PicsIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSlcblxuICAgIHRoaXMucmVtYWluaW5nSW1hZ2VzR3JvdXBzID0gb3JkZXIubWFwKChrZXkpID0+ICh7XG4gICAgICB0aW1lUmFuZ2U6IGtleSxcbiAgICAgIGRhdGE6IG1hcC5nZXQoa2V5KSB8fCBbXSxcbiAgICB9KSk7XG5cbiAgICBjb25zb2xlLmxvZygncmVtYWluaW5nSW1hZ2VzR3JvdXBzID0+JywgdGhpcy5yZW1haW5pbmdJbWFnZXNHcm91cHMpXG4gIH1cblxuICBwcml2YXRlIGJ1aWxkTGlzdFZpZXdHcm91cHMoKSB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gXCJmb290ZmFsbFwiKSB7XG4gICAgICB0aGlzLmxpc3RWaWV3R3JvdXBzID0gKHRoaXMuYWxsRm9vdGZhbGxEYXRhIHx8IFtdKVxuICAgICAgICAuZmlsdGVyKChncm91cDogYW55KSA9PiBBcnJheS5pc0FycmF5KGdyb3VwPy5kYXRhKSAmJiBncm91cC5kYXRhLmxlbmd0aClcbiAgICAgICAgLm1hcCgoZ3JvdXA6IGFueSkgPT4gKHtcbiAgICAgICAgICB0aW1lUmFuZ2U6IGdyb3VwPy50aW1lUmFuZ2UgfHwgXCJOQVwiLFxuICAgICAgICAgIGRhdGE6IGdyb3VwPy5kYXRhIHx8IFtdLFxuICAgICAgICB9KSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3JkZXI6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueVtdPigpO1xuXG4gICAgKHRoaXMuaW1hZ2VzQXJyYXlEYXRhIHx8IFtdKS5mb3JFYWNoKChpbWc6IGFueSkgPT4ge1xuICAgICAgY29uc3Qga2V5ID0gaW1nPy50aW1lUmFuZ2UgfHwgXCJOQVwiO1xuICAgICAgaWYgKCFtYXAuaGFzKGtleSkpIHtcbiAgICAgICAgbWFwLnNldChrZXksIFtdKTtcbiAgICAgICAgb3JkZXIucHVzaChrZXkpO1xuICAgICAgfVxuICAgICAgbWFwLmdldChrZXkpPy5wdXNoKGltZyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmxpc3RWaWV3R3JvdXBzID0gb3JkZXIubWFwKChrZXkpID0+ICh7XG4gICAgICB0aW1lUmFuZ2U6IGtleSxcbiAgICAgIGRhdGE6IG1hcC5nZXQoa2V5KSB8fCBbXSxcbiAgICB9KSk7XG4gIH1cbiAgaGFuZGxlSW1hZ2VDbGljayhldnQ6IGFueSwgb2JqOiBhbnkpIHtcbiAgICAvLyBXaGVuIGR1cGxpY2F0ZSBpcyBzZWxlY3RlZCwgY2xpY2tpbmcgb24gaW1hZ2VzIHNob3VsZCBvcGVuIHRoZW0gaW4gem9vbSBtb2RhbFxuICAgIGlmICh0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID09PSBcImR1cGxpY2F0ZVwiICYmIHRoaXMuc3BsaXRTY3JlZW5FbmFibGVkKSB7XG4gICAgICAvLyBPcGVuIGltYWdlIGluIHpvb20gbW9kYWwgd2hlbiBkdXBsaWNhdGUgaXMgc2VsZWN0ZWRcbiAgICAgIC8vIFN0b3JlIHRoZSBjbGlja2VkIGltYWdlIHRlbXBvcmFyaWx5IGZvciBtb2RhbCBkaXNwbGF5XG4gICAgICB0aGlzLm9wZW5JbWFnZVpvb21Nb2RhbCh0aGlzLmltYWdlVXJsLCBvYmopO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICAvLyBGb3Igc3BsaXQtc2NyZWVuIHZpZXcsIGNsaWNraW5nIG9uIHJlbGF0ZWQgaW1hZ2VzIHNob3VsZCBzd2FwIHRvIHRoYXQgaW1hZ2VcbiAgICBpZiAodGhpcy5zcGxpdFNjcmVlbkVuYWJsZWQgJiYgdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSAhPT0gXCJkdXBsaWNhdGVcIikge1xuICAgICAgdGhpcy5zZWxlY3RJbWFnZUZvclNwbGl0VmlldyhvYmopO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZFJhZGlvVHlwZSAhPT0gXCJkdXBsaWNhdGVcIikge1xuICAgICAgdGhpcy5pbWdTd2FwKG9iaik7IC8vIGV4aXN0aW5nIG5vbi1kdXBsaWNhdGUgY2xpY2sgYmVoYXZpb3JcbiAgICB9XG4gIH1cblxuICB0ZW1wTW9kYWxJbWFnZTogYW55ID0gbnVsbDsgLy8gVGVtcG9yYXJ5IHN0b3JhZ2UgZm9yIG1vZGFsIGltYWdlIHdoZW4gZHVwbGljYXRlIGlzIHNlbGVjdGVkXG5cbiAgb3BlbkltYWdlWm9vbU1vZGFsKGltYWdlVXJsOiBhbnksIGltYWdlRGF0YTogYW55KSB7XG4gICAgLy8gU3RvcmUgdGhlIGltYWdlIGRhdGEgdGVtcG9yYXJpbHkgZm9yIG1vZGFsIGRpc3BsYXlcbiAgICB0aGlzLnRlbXBNb2RhbEltYWdlID0gaW1hZ2VEYXRhO1xuICAgIHRoaXMuaXNNb2RhbE9wZW4gPSB0cnVlO1xuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLmltYWdlUG9wdXAsIHtcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxuICAgICAgc2l6ZTogXCJsZ1wiLFxuICAgICAgYmFja2Ryb3A6IFwic3RhdGljXCIsXG4gICAgICBrZXlib2FyZDogZmFsc2UsXG4gICAgfSk7XG4gIH1cbiAgc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0OiBhbnkgPSBbXTtcblxuICB0b2dnbGVEdXBsaWNhdGVTZWxlY3Rpb24oaW1nOiBhbnkpIHtcbiAgICBjb25zb2xlLmxvZygndG9nZ2xlRHVwbGljYXRlU2VsZWN0aW9uIDo6JywgaW1nKVxuICAgIGlmICghaW1nIHx8IGltZy5kdXBsaWNhdGVJbWFnZVBhdGg/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0b3RhbEltYWdlcyA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5sZW5ndGg7XG4gICAgY29uc3QgYWxyZWFkeVRhZ2dlZENvdW50ID0gdGhpcy5jb3VudERhdGE/LmR1cGxpY2F0ZSB8fCAwO1xuICAgIGNvbnN0IG1heFNlbGVjdGFibGUgPSBNYXRoLnJvdW5kKHRvdGFsSW1hZ2VzICogMC4yKTtcbiAgICBjb25zdCBjdXJyZW50bHlTZWxlY3RlZENvdW50ID0gdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5LmZpbHRlcihcbiAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0uc2VsZWN0ZWRcbiAgICApLmxlbmd0aDtcblxuICAgIGNvbnN0IHdpbGxTZWxlY3QgPSAhaW1nLnNlbGVjdGVkO1xuXG4gICAgLy8g4puUIEJsb2NrIHNlbGVjdGlvbiBpZiB0cnlpbmcgdG8gZ28gYmV5b25kIDIwJSBjYXBcbiAgICBpZiAoXG4gICAgICB3aWxsU2VsZWN0ICYmXG4gICAgICBjdXJyZW50bHlTZWxlY3RlZENvdW50ICsgYWxyZWFkeVRhZ2dlZENvdW50ID49IG1heFNlbGVjdGFibGVcbiAgICApIHtcbiAgICAgIHRoaXMudG9hc3QuZ2V0V2FybmluZ1RvYXN0KFxuICAgICAgICBgWW91IGNhbiBzZWxlY3Qgb25seSAke21heFNlbGVjdGFibGV9IGltYWdlcyAoJHtcbiAgICAgICAgICB0aGlzLmdldFJ2cHNMaXN0Py5kYXRhPy5jb25maWc/LmR1cGxpY2F0ZSA/PyBcIjIwJVwiXG4gICAgICAgIH0gb2YgdG90YWwgZm9vdGZhbGwpYFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyDinIUgUHJvY2VlZCB3aXRoIHNlbGVjdGlvbiB0b2dnbGVcbiAgICBpbWcuc2VsZWN0ZWQgPSAhaW1nLnNlbGVjdGVkO1xuICAgIGltZy5pc0NoZWNrZWQgPSBpbWcuc2VsZWN0ZWQ7XG5cbiAgICAvLyDinIUgQWx3YXlzIHJlYnVpbGQgdGhlIHNlbGVjdGVkIGxpc3RcbiAgICB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdCA9IHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheVxuICAgICAgLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLnNlbGVjdGVkKVxuICAgICAgLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAuLi5pdGVtLFxuICAgICAgICBwYXJlbnQ6IGl0ZW0ucGFyZW50IHx8IHRoaXMuc2VsZWN0SW1hZ2VBcnJheT8udGVtcGxkLFxuICAgICAgICBpc0NoZWNrZWQ6IHRydWUsXG4gICAgICB9KSk7XG5cbiAgICAvLyBOb3RlOiBidWlsZFJlbWFpbmluZ0ltYWdlc0dyb3VwcygpIG5vdCBuZWVkZWQgaGVyZSAtIGdyb3VwcyBhcmUgYmFzZWQgb24gdGltZVJhbmdlLFxuICAgIC8vIG5vdCBzZWxlY3RlZCBwcm9wZXJ0eSwgc28gcmVidWlsZGluZyB3b3VsZCBjYXVzZSB1bm5lY2Vzc2FyeSByZS1yZW5kZXIgYW5kIHNjcm9sbCByZXNldFxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgb25JbWFnZUNoZWNrYm94Q2hhbmdlKGV2dDogYW55LCBpbWc6IGFueSwgdHlwZTogc3RyaW5nKSB7XG4gICAgaWYgKHR5cGUgPT09IFwiZHVwbGljYXRlXCIpIHtcbiAgICAgIC8vIFVzZSB0aGUgdG9nZ2xlIG1ldGhvZCBmb3IgZHVwbGljYXRlIHNlbGVjdGlvblxuICAgICAgdGhpcy50b2dnbGVEdXBsaWNhdGVTZWxlY3Rpb24oaW1nKTtcbiAgICAgIC8vIFVwZGF0ZSBjaGVja2JveCBzdGF0ZSB0byBtYXRjaCBzZWxlY3Rpb25cbiAgICAgIGlmIChldnQgJiYgZXZ0LnRhcmdldCkge1xuICAgICAgICBldnQudGFyZ2V0LmNoZWNrZWQgPSBpbWcuc2VsZWN0ZWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2xlYXJWYWx1ZSgpIHtcbiAgICB0aGlzLnNhdmUoXCJub24tdGFnZ2luZ1wiKTtcbiAgICAvLyB0aGlzLnN1Ym1pdFZhbHVlKCdub24tdGFnZ2luZycpXG4gIH1cbiAgY2FuY2VsKCkge1xuICAgIC8vIDEuIENsZWFyIHNlbGVjdGVkIGR1cGxpY2F0ZSBpbWFnZXMgbGlzdFxuICAgIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0ID0gW107XG5cbiAgICAvLyAyLiBSZXNldCBhbGwgY2hlY2tib3hlcyBhbmQgcmFkaW8gYnV0dG9ucyBpbiBvdmVyYWxsIGltYWdlIGxpc3RcbiAgICB0aGlzLm92ZXJhbGxBcnJheURhdGEgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEubWFwKChpbWc6IGFueSkgPT4gKHtcbiAgICAgIC4uLmltZyxcbiAgICAgIGlzQ2hlY2tlZDogZmFsc2UsXG4gICAgICBzZWxlY3RlZDogZmFsc2UsIC8vIGFzc3VtaW5nICdzZWxlY3RlZCcgaXMgY2hlY2tib3ggYmluZFxuICAgICAgcGFyZW50OiBudWxsLCAvLyByZXNldCBwYXJlbnQgaWYgdXNlZFxuICAgICAgLy8gQWRkIG90aGVyIGZsYWdzIGhlcmUgaWYgbmVlZGVkXG4gICAgfSkpO1xuXG4gICAgLy8gMy4gQ2xvc2UgaW1hZ2UgZmxvdy9mdWxsLXZpZXcgaWYgb3BlblxuICAgIHRoaXMuaW1hZ2VGbG93ID0gZmFsc2U7XG5cbiAgICAvLyA0LiBSZXNldCBzcGxpdC1zY3JlZW4gYW5kIHNlbGVjdGVkIGltYWdlXG4gICAgdGhpcy5zcGxpdFNjcmVlbkVuYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnNlbGVjdEltYWdlQXJyYXkgPSBudWxsO1xuICAgIHRoaXMuY3VycmVudEltYWdlSW5kZXggPSAwO1xuICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSA9IFtdO1xuICAgIHRoaXMucmVtYWluaW5nSW1hZ2VzR3JvdXBzID0gW107XG5cbiAgICAvLyA1LiAoT3B0aW9uYWwpIFJlc2V0IHJhZGlvIGJ1dHRvbnMg4oCUIGlmIHlvdSBoYXZlIGFueSBzcGVjaWZpYyBmbGFnXG4gICAgdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNlbGVjdGVkVHlwZSA9IFwiXCI7XG4gICAgdGhpcy5yZXZvcHNUeXBlVmFsdWUgPSBmYWxzZTtcbiAgfVxuICBwb3B1cFR5cGU6IGFueTtcbiAgQFZpZXdDaGlsZChcInpvb21Qb3B1cFwiKSB6b29tUG9wdXA6IEVsZW1lbnRSZWY7XG4gIHNhdmUoY2F0ZWdvcnk6IGFueSkge1xuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLnpvb21Qb3B1cCwge1xuICAgICAgY2VudGVyZWQ6IHRydWUsXG4gICAgICBzaXplOiBcIm1kXCIsXG4gICAgICBiYWNrZHJvcDogXCJzdGF0aWNcIiwgLy8gUHJldmVudCBjbG9zaW5nIG9uIG91dHNpZGUgY2xpY2tcbiAgICAgIGtleWJvYXJkOiBmYWxzZSwgLy8gUHJldmVudCBjbG9zaW5nIG9uIEVTQyBrZXlcbiAgICB9KTtcbiAgICB0aGlzLnBvcHVwVHlwZSA9IGNhdGVnb3J5O1xuICB9XG5cbiAgY2FuY2VsU3VibWl0KCkge1xuICAgIHRoaXMubW9kYWxTZXJ2aWNlLmRpc21pc3NBbGwoKTtcblxuICAgIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0ID0gW107XG4gIH1cbiAgc3VibWl0VmFsdWUoY2F0ZWdvcnk6IGFueSkge1xuICAgIGxldCBkdXBsaWNhdGVJbWFnZXMgPSBbXTtcblxuICAgIGlmIChjYXRlZ29yeSA9PT0gXCJkdXBsaWNhdGVcIikge1xuICAgICAgZHVwbGljYXRlSW1hZ2VzID0gdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5XG4gICAgICAgIC5maWx0ZXIoKGltZzogYW55KSA9PiBpbWcuc2VsZWN0ZWQgPT09IHRydWUpXG4gICAgICAgIC5tYXAoKGltZzogYW55KSA9PiAoe1xuICAgICAgICAgIHRlbXBJZDogaW1nLnRlbXBsZCB8fCBpbWcudGVtcElkIHx8IFwiXCIsXG4gICAgICAgICAgdGltZVJhbmdlOiBpbWcudGltZVJhbmdlIHx8IFwiXCIsXG4gICAgICAgICAgZW50cnlUaW1lOiBpbWcuZW50cnlUaW1lIHx8IGltZy5lbnRyeVRtZSB8fCBcIlwiLFxuICAgICAgICAgIGV4aXRUaW1lOiBpbWcuZXhpdFRpbWUgfHwgXCJcIixcbiAgICAgICAgICBmaWxlUGF0aDogaW1nLmZpbGVQYXRoLFxuICAgICAgICAgIHJldm9wc1R5cGU6IFwiZHVwbGljYXRlXCIsXG4gICAgICAgICAgaXNDaGVja2VkOiB0cnVlLFxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgY29uc3QgaW1nID0gdGhpcy5zZWxlY3RJbWFnZUFycmF5O1xuXG4gICAgY29uc3Qgb2JqID0ge1xuICAgICAgc3RvcmVJZDpcbiAgICAgICAgdGhpcy5zdG9yZUlkYXJyYXkgJiYgdGhpcy5zdG9yZUlkYXJyYXkubGVuZ3RoID4gMFxuICAgICAgICAgID8gdGhpcy5zdG9yZUlkYXJyYXlbMF1cbiAgICAgICAgICA6IG51bGwsXG4gICAgICBkYXRlU3RyaW5nOiB0aGlzLmZvbGRlckRhdGUgfHwgXCJcIixcbiAgICAgIHRlbXBJZDogaW1nPy50ZW1wbGQgfHwgMCxcbiAgICAgIHJldm9wc1R5cGU6IGNhdGVnb3J5LFxuICAgICAgdGltZVJhbmdlOiBpbWc/LnRpbWVSYW5nZSB8fCBcIlwiLFxuICAgICAgaXNDaGVja2VkOiB0cnVlLFxuICAgICAgZHVwbGljYXRlSW1hZ2U6IGR1cGxpY2F0ZUltYWdlcyxcbiAgICAgIHByb2Nlc3NUeXBlOiBpbWc/LnByb2Nlc3NUeXBlIHx8IFwiZm9vdGZhbGxcIixcbiAgICAgIGVudHJ5VGltZTogaW1nPy5lbnRyeVRpbWUgfHwgaW1nPy5lbnRyeVRtZSB8fCBcIlwiLFxuICAgICAgZXhpdFRpbWU6IGltZz8uZXhpdFRpbWUgfHwgXCJcIixcbiAgICAgIGZpbGVQYXRoOiBpbWc/LmZpbGVQYXRoIHx8IFwiXCIsXG4gICAgICBjb21tZW50czogdGhpcy51c2VyQ29tbWVudCB8fCBcIlwiLFxuICAgICAgbW9kZTogJ3dlYidcbiAgICB9O1xuXG4gICAgdGhpcy5ydnBzU2VydmljZVxuICAgICAgLmdldFJ2cHNUYWcob2JqKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xuICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRTdWNjZXNzVG9hc3QoXG4gICAgICAgICAgICAgIHJlcz8ubWVzc2FnZSB8fCBcIlRpY2tldCB1cGRhdGVkIHN1Y2Nlc3NmdWxseVwiXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5pbWFnZUZsb3cgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZ2V0UmV2b3BzKCk7XG4gICAgICAgICAgICB0aGlzLmNhbmNlbFN1Ym1pdCgpO1xuICAgICAgICAgICAgdGhpcy5sb2FkQ2FyZERhdGEoKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSYWRpb1R5cGUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVHlwZSA9IFwiXCI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChcIkZhaWxlZCB0byB1cGRhdGVcIik7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcInN1Ym1pdFZhbHVlIGVycm9yOlwiLCBlcnIpO1xuICAgICAgICAgIGNvbnN0IG1zZyA9XG4gICAgICAgICAgICBlcnIuZXJyb3I/LmVycm9yIHx8IGVyci5lcnJvciB8fCBlcnI/Lm1lc3NhZ2UgfHwgXCJVbmtub3duIGVycm9yXCI7XG4gICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KG1zZyk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgfVxuXG4gIG5vRGF0YU1lc3NhZ2VzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgIGR1cGxpY2F0ZTogXCJObyBkdXBsaWNhdGVzIGZvdW5kXCIsXG4gICAgZW1wbG95ZWU6IFwiTm8gZW1wbG95ZWUvc3RhZmYgZm91bmRcIixcbiAgICBob3VzZUtlZXBpbmc6IFwiTm8gaG91c2Uga2VlcGluZyBmb3VuZFwiLFxuICAgIFwibm9uLXRhZ2dpbmdcIjogXCJObyBub24tdGFnZ2luZyBmb3VuZFwiLFxuICAgIGp1bms6IFwiTm8ganVuayBmb3VuZFwiXG4gIH07XG5cbiAgdGVtcFJhaXNlZFBheWxvYWQ6IGFueSA9IG51bGw7IC8vIGNsYXNzLWxldmVsIHZhcmlhYmxlIGZvciBwcmV2aWV3XG5cbiAgcHJlcGFyZVJhaXNlZFBheWxvYWQoc2hvd09ubHkgPSBmYWxzZSk6IGFueSB7fVxuXG4gIEBWaWV3Q2hpbGQoXCJyYWlzZWRQb3B1cFwiKSByYWlzZWRQb3B1cDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZChcInJlc2V0UmVxdWVzdFBvcHVwXCIpIHJlc2V0UmVxdWVzdFBvcHVwOiBFbGVtZW50UmVmO1xuICBSYWlzZWQoKSB7XG4gICAgY29uc3QgcGF5bG9hZDogYW55ID0ge1xuICAgICAgZGF0ZVN0cmluZzogdGhpcy5mb2xkZXJEYXRlLFxuICAgICAgc3RvcmVJZDogdGhpcy5zdG9yZUlkYXJyYXk/Lmxlbmd0aCA+IDAgPyB0aGlzLnN0b3JlSWRhcnJheVswXSA6IG51bGwsXG4gICAgICB0aWNrZXROYW1lOiBcImZvb3RmYWxsLWRpcmVjdG9yeVwiLFxuICAgICAgZm9vdGZhbGxDb3VudDogMCxcbiAgICAgIGR1cGxpY2F0ZUNvdW50OiAwLFxuICAgICAgZW1wbG95ZWVDb3VudDogMCxcbiAgICAgIGhvdXNlS2VlcGluZ0NvdW50OiAwLFxuICAgICAganVua0NvdW50OjAsXG4gICAgICBjb21tZW50czogdGhpcy5jb21tZW50VGV4dCB8fCBcIlwiLFxuICAgICAgZHVwbGljYXRlSW1hZ2VzOiBbXSxcbiAgICAgIGhvdXNlS2VlcGluZzogW10sXG4gICAgICBlbXBsb3llZTogW10sXG4gICAgICBqdW5rOiBbXSxcbiAgICB9O1xuXG4gICAgbGV0IHRvdGFsQ2hlY2tlZENvdW50ID0gMDtcblxuICAgIHRoaXMub3ZlcmFsbEFycmF5RGF0YS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHR5cGUgPSBpdGVtLnJldm9wc1R5cGU/LnRvTG93ZXJDYXNlKCk/LnRyaW0oKTtcbiAgICAgIGNvbnN0IGlzQ2hlY2tlZCA9IGl0ZW0uaXNDaGVja2VkID09PSB0cnVlO1xuXG4gICAgICAvLyDinIUgQ291bnQgb25seSBpZiBpdGVtIGlzIGNoZWNrZWQgQU5EIHJldm9wc1R5cGUgaXMgJ25vbi10YWdnaW5nJ1xuICAgICAgLy8gY29uc3QgaXNOb3RUYWdnZWQgPSB0eXBlID09PSAnbm9uLXRhZ2dpbmcnO1xuXG4gICAgICAvLyBpZiAoaXNOb3RUYWdnZWQpIHtcbiAgICAgIC8vICAgdG90YWxDaGVja2VkQ291bnQrKztcbiAgICAgIC8vIH1cblxuICAgICAgLy8gRFVQTElDQVRFIFRZUEVcbiAgICAgIGlmICh0eXBlID09PSBcImR1cGxpY2F0ZVwiICYmIEFycmF5LmlzQXJyYXkoaXRlbS5kdXBsaWNhdGVJbWFnZVBhdGgpKSB7XG4gICAgICAgIGNvbnN0IG5lc3RlZERhdGEgPSBpdGVtLmR1cGxpY2F0ZUltYWdlUGF0aFxuICAgICAgICAgIC5maWx0ZXIoKGR1cDogYW55KSA9PiBkdXAuaXNDaGVja2VkKVxuICAgICAgICAgIC5tYXAoKGR1cDogYW55KSA9PiAoe1xuICAgICAgICAgICAgdGVtcElkOiBkdXAudGVtcElkIHx8IGR1cC50ZW1wbGQgfHwgXCJcIixcbiAgICAgICAgICAgIGZpbGVQYXRoOiBkdXAuZmlsZVBhdGgsXG4gICAgICAgICAgICBlbnRyeVRpbWU6IGR1cD8uZW50cnlUaW1lIHx8IGR1cD8uZW50cnlUbWUgfHwgXCJcIixcbiAgICAgICAgICAgIGV4aXRUaW1lOiBkdXAuZXhpdFRpbWUsXG4gICAgICAgICAgICB0aW1lUmFuZ2U6IGR1cC50aW1lUmFuZ2UsXG4gICAgICAgICAgICBpc0NoZWNrZWQ6IGR1cC5pc0NoZWNrZWQsXG4gICAgICAgICAgfSkpO1xuXG4gICAgICAgIGlmIChuZXN0ZWREYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBwYXlsb2FkLmR1cGxpY2F0ZUltYWdlcy5wdXNoKHtcbiAgICAgICAgICAgIHRlbXBJZDogaXRlbS50ZW1wbGQsXG4gICAgICAgICAgICBmaWxlUGF0aDogaXRlbS5maWxlUGF0aCxcbiAgICAgICAgICAgIGVudHJ5VGltZTogaXRlbT8uZW50cnlUaW1lIHx8IGl0ZW0/LmVudHJ5VG1lIHx8IFwiXCIsXG4gICAgICAgICAgICBleGl0VGltZTogaXRlbS5leGl0VGltZSxcbiAgICAgICAgICAgIHRpbWVSYW5nZTogaXRlbS50aW1lUmFuZ2UsXG4gICAgICAgICAgICBpc0NoZWNrZWQ6IGl0ZW0uaXNDaGVja2VkLFxuICAgICAgICAgICAgZGF0YTogbmVzdGVkRGF0YSxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHBheWxvYWQuZHVwbGljYXRlQ291bnQgKz0gbmVzdGVkRGF0YS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gRU1QTE9ZRUVcbiAgICAgIGVsc2UgaWYgKHR5cGUgPT09IFwiZW1wbG95ZWVcIiAmJiBpc0NoZWNrZWQpIHtcbiAgICAgICAgcGF5bG9hZC5lbXBsb3llZS5wdXNoKHtcbiAgICAgICAgICB0ZW1wSWQ6IGl0ZW0udGVtcGxkLFxuICAgICAgICAgIGZpbGVQYXRoOiBpdGVtLmZpbGVQYXRoLFxuICAgICAgICAgIGVudHJ5VGltZTogaXRlbT8uZW50cnlUaW1lIHx8IGl0ZW0/LmVudHJ5VG1lIHx8IFwiXCIsXG4gICAgICAgICAgZXhpdFRpbWU6IGl0ZW0uZXhpdFRpbWUsXG4gICAgICAgICAgdGltZVJhbmdlOiBpdGVtLnRpbWVSYW5nZSxcbiAgICAgICAgICBpc0NoZWNrZWQ6IGl0ZW0uaXNDaGVja2VkLFxuICAgICAgICB9KTtcblxuICAgICAgICBwYXlsb2FkLmVtcGxveWVlQ291bnQrKztcbiAgICAgIH1cblxuICAgICAgLy8gSE9VU0VLRUVQSU5HXG4gICAgICBlbHNlIGlmICh0eXBlID09PSBcImhvdXNlS2VlcGluZ1wiICYmIGlzQ2hlY2tlZCkge1xuICAgICAgICBwYXlsb2FkLmhvdXNlS2VlcGluZy5wdXNoKHtcbiAgICAgICAgICB0ZW1wSWQ6IGl0ZW0udGVtcGxkLFxuICAgICAgICAgIGZpbGVQYXRoOiBpdGVtLmZpbGVQYXRoLFxuICAgICAgICAgIGVudHJ5VGltZTogaXRlbT8uZW50cnlUaW1lIHx8IGl0ZW0/LmVudHJ5VG1lIHx8IFwiXCIsXG4gICAgICAgICAgZXhpdFRpbWU6IGl0ZW0uZXhpdFRpbWUsXG4gICAgICAgICAgdGltZVJhbmdlOiBpdGVtLnRpbWVSYW5nZSxcbiAgICAgICAgICBpc0NoZWNrZWQ6IGl0ZW0uaXNDaGVja2VkLFxuICAgICAgICB9KTtcblxuICAgICAgICBwYXlsb2FkLmhvdXNlS2VlcGluZ0NvdW50Kys7XG4gICAgICB9IFxuICAgICAgZWxzZSBpZiAodHlwZSA9PT0gXCJqdW5rXCIgJiYgaXNDaGVja2VkKSB7XG4gICAgICAgIHBheWxvYWQuanVuay5wdXNoKHtcbiAgICAgICAgICB0ZW1wSWQ6IGl0ZW0udGVtcGxkLFxuICAgICAgICAgIGZpbGVQYXRoOiBpdGVtLmZpbGVQYXRoLFxuICAgICAgICAgIGVudHJ5VGltZSA6IGl0ZW0/LmVudHJ5VGltZSB8fCBpdGVtPy5lbnRyeVRtZSB8fCBcIlwiLFxuICAgICAgICAgIGV4aXRUaW1lIDogaXRlbS5leGl0VGltZSxcbiAgICAgICAgICB0aW1lUmFuZ2UgOiBpdGVtLnRpbWVSYW5nZSxcbiAgICAgICAgICBpc0NoZWNrZWQgOiBpdGVtLmlzQ2hlY2tlZCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcGF5bG9hZC5qdW5rQ291bnQrKztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHBheWxvYWQuZm9vdGZhbGxDb3VudCA9IHRoaXMuY291bnREYXRhPy5mb290ZmFsbENvdW50O1xuXG4gICAgLy8g8J+RhyBSZXR1cm4gb3IgYXNzaWduXG5cbiAgICB0aGlzLnRlbXBSYWlzZWRQYXlsb2FkID0gcGF5bG9hZDtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy5yYWlzZWRQb3B1cCwge1xuICAgICAgY2VudGVyZWQ6IHRydWUsXG4gICAgICBzaXplOiBcIm1kXCIsXG4gICAgICBiYWNrZHJvcDogXCJzdGF0aWNcIixcbiAgICAgIGtleWJvYXJkOiBmYWxzZSxcbiAgICB9KTtcbiAgfVxuXG4gIGNhbmNlbFJhc2llZCgpIHtcbiAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XG4gICAgdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QgPSBbXTtcbiAgfVxuXG4gIGNvbW1lbnRUZXh0OiBhbnk7XG4gIGdldFJhaXNlZERhdGE6IGFueTtcbiAgc3VibWl0UmFpc2VkKCkge1xuICAgIC8vIGNvbnN0IHBheWxvYWQgPSB0aGlzLnRlbXBSYWlzZWRQYXlsb2FkOyAvLyBmcmVzaCBkYXRhIGZvciBBUElcbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgdGlja2V0TmFtZTogXCJmb290ZmFsbC1kaXJlY3RvcnlcIixcbiAgICAgIHN0b3JlSWQ6IHRoaXMudGVtcFJhaXNlZFBheWxvYWQuc3RvcmVJZCxcbiAgICAgIGRhdGVTdHJpbmc6IHRoaXMudGVtcFJhaXNlZFBheWxvYWQuZGF0ZVN0cmluZyxcbiAgICAgIHR5cGU6IFwiY3JlYXRlXCIsXG4gICAgICBtb2RlOiBcIndlYlwiXG4gICAgfVxuICAgIHRoaXMuZ2V0UmFpc2VkRGF0YSA9IHBheWxvYWQ7XG4gICAgY29uc29sZS5sb2coJ3N1Ym1pdCByYWlzZWQgOicsIHBheWxvYWQpXG4gICAgdGhpcy5ydnBzU2VydmljZVxuICAgICAgLmdldENyZWF0ZVJhaXNlZFRhZyhwYXlsb2FkKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xuICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRTdWNjZXNzVG9hc3QoXG4gICAgICAgICAgICAgIHJlcz8ubWVzc2FnZSB8fCBcIlRpY2tldCB1cGRhdGVkIHN1Y2Nlc3NmdWxseVwiXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5pbWFnZUZsb3cgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZ2V0UmV2b3BzKCk7XG4gICAgICAgICAgICB0aGlzLmxvYWRDYXJkRGF0YSgpO1xuICAgICAgICAgICAgdGhpcy5jYW5jZWxSYXNpZWQoKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSYWRpb1R5cGUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVHlwZSA9IFwiXCI7XG4gICAgICAgICAgICB0aGlzLmNvdW50RGF0YSA9IFtdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoXCJGYWlsZWQgdG8gdXBkYXRlXCIpO1xuICAgICAgICAgICAgdGhpcy5jYW5jZWxSYXNpZWQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBtc2cgPVxuICAgICAgICAgICAgZXJyLmVycm9yPy5lcnJvciB8fFxuICAgICAgICAgICAgZXJyLmVycm9yIHx8XG4gICAgICAgICAgICBlcnI/LmVycm9yPy5tZXNzYWdlIHx8XG4gICAgICAgICAgICBlcnIubWVzc2FnZSB8fFxuICAgICAgICAgICAgXCJVbmtub3duIGVycm9yXCI7XG4gICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KG1zZyk7XG4gICAgICAgICAgdGhpcy5jYW5jZWxSYXNpZWQoKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgLy8gb25JbWFnZUNoZWNrYm94Q2hhbmdlKGltZzogYW55LCB0eXBlOiBzdHJpbmcpIHtcbiAgLy8gICBpZiAodHlwZSA9PT0gJ2R1cGxpY2F0ZScpIHtcbiAgLy8gICAgIC8vIENvdW50IG9ubHkgdmFsaWQgZHVwbGljYXRlIGltYWdlcyB3aGVyZSBgZHVwbGljYXRlSW1hZ2VQYXRoLmxlbmd0aCA9PT0gMGBcbiAgLy8gICAgIGNvbnN0IHRvdGFsVmFsaWREdXBsaWNhdGVJbWFnZXMgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEuZmlsdGVyKFxuICAvLyAgICAgICAoaXRlbTogYW55KSA9PlxuICAvLyAgICAgICAgIGl0ZW0ucmV2b3BzVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgKCFpdGVtLmR1cGxpY2F0ZUltYWdlUGF0aCB8fCBpdGVtLmR1cGxpY2F0ZUltYWdlUGF0aC5sZW5ndGggPT09IDApXG4gIC8vICAgICApLmxlbmd0aDtcblxuICAvLyAgICAgY29uc3QgbWF4QWxsb3dlZCA9IE1hdGguZmxvb3IodG90YWxWYWxpZER1cGxpY2F0ZUltYWdlcyAqIDAuMSk7IC8vIDEwJSBsaW1pdFxuXG4gIC8vICAgICBjb25zdCBhbHJlYWR5RXhpc3RzID0gdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3Quc29tZShcbiAgLy8gICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS50ZW1wbGQgPT09IGltZy50ZW1wbGRcbiAgLy8gICAgICk7XG5cbiAgLy8gICAgIGlmIChpbWcuc2VsZWN0ZWQpIHtcbiAgLy8gICAgICAgLy8g4p2MIFJlYWNoZWQgbWF4IGFsbG93ZWQg4oCUIGJsb2NrIGl0XG4gIC8vICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdC5sZW5ndGggPj0gbWF4QWxsb3dlZCkge1xuICAvLyAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChcbiAgLy8gICAgICAgICAgIGBPbmx5ICR7bWF4QWxsb3dlZH0gaW1hZ2VzIGNhbiBiZSBzZWxlY3RlZCBhcyBkdXBsaWNhdGUgKDEwJSBvZiB1bnRhZ2dlZCBkdXBsaWNhdGVzKS5gXG4gIC8vICAgICAgICAgKTtcblxuICAvLyAgICAgICAgIGltZy5zZWxlY3RlZCA9IGZhbHNlO1xuICAvLyAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbmRJbmRleCgoaXRlbTogYW55KSA9PiBpdGVtLnRlbXBsZCA9PT0gaW1nLnRlbXBsZCk7XG4gIC8vICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAvLyAgICAgICAgICAgdGhpcy5vdmVyYWxsQXJyYXlEYXRhW2luZGV4XS5zZWxlY3RlZCA9IGZhbHNlO1xuICAvLyAgICAgICAgIH1cblxuICAvLyAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAvLyAgICAgICAgICAgaW1nLnNlbGVjdGVkID0gZmFsc2U7XG4gIC8vICAgICAgICAgfSk7XG5cbiAgLy8gICAgICAgICByZXR1cm47XG4gIC8vICAgICAgIH1cblxuICAvLyAgICAgICAvLyDinIUgQWRkIGlmIG5vdCBhbHJlYWR5IGluIGxpc3RcbiAgLy8gICAgICAgaWYgKCFhbHJlYWR5RXhpc3RzKSB7XG4gIC8vICAgICAgICAgdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QucHVzaCh7XG4gIC8vICAgICAgICAgICAuLi5pbWcsXG4gIC8vICAgICAgICAgICBpc0NoZWNrZWQ6IHRydWUsXG4gIC8vICAgICAgICAgICBwYXJlbnQ6IGltZy5wYXJlbnQgfHwgbnVsbFxuICAvLyAgICAgICAgIH0pO1xuICAvLyAgICAgICB9XG4gIC8vICAgICB9IGVsc2Uge1xuICAvLyAgICAgICAvLyDinYwgUmVtb3ZhbCBjYXNlXG4gIC8vICAgICAgIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0ID0gdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QuZmlsdGVyKFxuICAvLyAgICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0udGVtcGxkICE9PSBpbWcudGVtcGxkXG4gIC8vICAgICAgICk7XG4gIC8vICAgICB9XG4gIC8vICAgfVxuXG4gIC8vICAgLy8g4pqg77iPIENhbGwgdGhpcyB0byB1cGRhdGUgYnV0dG9uIGVuYWJsZSBzdGF0ZVxuICAvLyAgIHRoaXMuY2hlY2tEdXBsaWNhdGVTYXZlRW5hYmxlKCk7XG4gIC8vIH1cblxuICAvLyBkdXBsaWNhdGVTYXZlRW5hYmxlZCA9IGZhbHNlO1xuXG4gIC8vIGNoZWNrRHVwbGljYXRlU2F2ZUVuYWJsZSgpIHtcbiAgLy8gICB0aGlzLmR1cGxpY2F0ZVNhdmVFbmFibGVkID1cbiAgLy8gICAgIHRoaXMuc2VsZWN0ZWRSYWRpb1R5cGUgPT09ICdkdXBsaWNhdGUnICYmIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0Lmxlbmd0aCA+IDA7XG4gIC8vIH1cblxuICBpc01vZGFsT3BlbiA9IGZhbHNlO1xuICBAVmlld0NoaWxkKFwiaW1hZ2VQb3B1cFwiKSBpbWFnZVBvcHVwOiBFbGVtZW50UmVmO1xuICBzZWxlY3RlZEltYWdlQXJyYXkodXJsOiBhbnksIGRhdGE6IGFueSkge1xuICAgIHRoaXMuaXNNb2RhbE9wZW4gPSB0cnVlO1xuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLmltYWdlUG9wdXAsIHtcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxuICAgICAgc2l6ZTogXCJsZ1wiLFxuICAgICAgYmFja2Ryb3A6IFwic3RhdGljXCIsXG4gICAgICBrZXlib2FyZDogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICBjbG9zZUltYWdlKCkge1xuICAgIHRoaXMuaXNNb2RhbE9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLnRlbXBNb2RhbEltYWdlID0gbnVsbDsgLy8gQ2xlYXIgdGVtcG9yYXJ5IGltYWdlIHdoZW4gY2xvc2luZyBtb2RhbFxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLmRpc21pc3NBbGwoKTtcbiAgfVxuXG4gIGNhbkVuYWJsZUJ1dHRvbigpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuY291bnREYXRhIHx8ICF0aGlzLmZvbGRlckRhdGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgeyBkdXBsaWNhdGUsIGhvdXNlS2VlcGluZywgZW1wbG95ZWUsIGp1bmsgfSA9IHRoaXMuY291bnREYXRhO1xuXG4gICAgLy8gQ2hlY2sgY291bnQgY29uZGl0aW9uXG4gICAgY29uc3QgaGFzQ291bnQgPSBkdXBsaWNhdGUgPiAwIHx8IGhvdXNlS2VlcGluZyA+IDAgfHwgZW1wbG95ZWUgPiAwIHx8IGp1bmsgPiAwO1xuXG4gICAgLy8gQ29udmVydCBmb2xkZXJEYXRlIHRvIERhdGVcbiAgICBjb25zdCBmb2xkZXIgPSBuZXcgRGF0ZSh0aGlzLmZvbGRlckRhdGUpO1xuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcblxuICAgIC8vIE5vcm1hbGl6ZSB0aW1lcyAocmVtb3ZlIGhvdXJzIGZvciBwcm9wZXIgZGF5IGNvbXBhcmlzb24pXG4gICAgZm9sZGVyLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgIHRvZGF5LnNldEhvdXJzKDAsIDAsIDAsIDApO1xuXG4gICAgLy8gQ2FsY3VsYXRlIGRpZmZlcmVuY2UgaW4gZGF5c1xuICAgIGNvbnN0IGRpZmZJblRpbWUgPSB0b2RheS5nZXRUaW1lKCkgLSBmb2xkZXIuZ2V0VGltZSgpO1xuICAgIGNvbnN0IGRpZmZJbkRheXMgPSBkaWZmSW5UaW1lIC8gKDEwMDAgKiAzNjAwICogMjQpO1xuXG4gICAgLy8gV2l0aGluIGxhc3QgNyBkYXlzIOKGkiBkaWZmIGJldHdlZW4gMCBhbmQgN1xuICAgIGNvbnN0IGlzV2l0aGluTGFzdDcgPSBkaWZmSW5EYXlzID49IDAgJiYgZGlmZkluRGF5cyA8PSA3O1xuXG4gICAgcmV0dXJuIGhhc0NvdW50ICYmIGlzV2l0aGluTGFzdDc7XG4gIH1cblxuICBjdXJyZW50SW1hZ2VJbmRleDogbnVtYmVyID0gMDtcbiAgZ2V0IGNhbk5hdmlnYXRlTGVmdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50SW1hZ2VJbmRleCA+IDA7XG4gIH1cblxuICBnZXQgY2FuTmF2aWdhdGVSaWdodCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50SW1hZ2VJbmRleCA8IHRoaXMuaW1hZ2VzQXJyYXlEYXRhLmxlbmd0aCAtIDE7XG4gIH1cblxuICBuYXZpZ2F0ZUltYWdlKGRpcmVjdGlvbjogXCJsZWZ0XCIgfCBcInJpZ2h0XCIpIHtcbiAgICBjb25zdCBsZW5ndGggPSB0aGlzLmltYWdlc0FycmF5RGF0YS5sZW5ndGg7XG5cbiAgICBpZiAoZGlyZWN0aW9uID09PSBcImxlZnRcIiAmJiB0aGlzLmNhbk5hdmlnYXRlTGVmdCkge1xuICAgICAgdGhpcy5jdXJyZW50SW1hZ2VJbmRleC0tO1xuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSBcInJpZ2h0XCIgJiYgdGhpcy5jYW5OYXZpZ2F0ZVJpZ2h0KSB7XG4gICAgICB0aGlzLmN1cnJlbnRJbWFnZUluZGV4Kys7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHNlbGVjdGVkIGltYWdlXG4gICAgdGhpcy5zZWxlY3RJbWFnZUFycmF5ID0gdGhpcy5pbWFnZXNBcnJheURhdGFbdGhpcy5jdXJyZW50SW1hZ2VJbmRleF07XG5cbiAgICAvLyBVcGRhdGUgcmVtYWluaW5nIGltYWdlc1xuICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSA9IHRoaXMuaW1hZ2VzQXJyYXlEYXRhLmZpbHRlcihcbiAgICAgIChfOiBhbnksIGk6IGFueSkgPT4gaSAhPT0gdGhpcy5jdXJyZW50SW1hZ2VJbmRleFxuICAgICk7XG4gIH1cblxuICAvLyBHZXQgY3VycmVudCBmb290ZmFsbCBjb3VudCBmb3Igc2VsZWN0ZWQgZGF0ZVxuICBnZXRDdXJyZW50Rm9vdGZhbGwoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMuZm9sZGVyRGF0ZSkgcmV0dXJuIDA7XG4gICAgY29uc3Qgbm9ybWFsaXplZERhdGUgPSBuZXcgRGF0ZSh0aGlzLmZvbGRlckRhdGUpLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdO1xuICAgIHJldHVybiB0aGlzLmNhcmREYXRhTWFwW25vcm1hbGl6ZWREYXRlXT8uZm9vdGZhbGxDb3VudCB8fCAwO1xuICB9XG5cbiAgLy8gR2V0IHBlcmNlbnRhZ2UgY2hhbmdlIGZyb20gZm9vdGZhbGxDb3VudFRyZW5kXG4gIGdldEZvb3RmYWxsUGVyY2VudGFnZUNoYW5nZSgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5mb2xkZXJEYXRlKSByZXR1cm4gMDtcbiAgICBjb25zdCBub3JtYWxpemVkRGF0ZSA9IG5ldyBEYXRlKHRoaXMuZm9sZGVyRGF0ZSkudG9JU09TdHJpbmcoKS5zcGxpdChcIlRcIilbMF07XG4gICAgcmV0dXJuIHRoaXMuY2FyZERhdGFNYXBbbm9ybWFsaXplZERhdGVdPy5mb290ZmFsbENvdW50VHJlbmQgfHwgMDtcbiAgfVxuXG4gIC8vIEZvcm1hdCBkb3dudGltZSBmcm9tIGRvd250aW1lIGtleSAoaW4gbWludXRlcylcbiAgZ2V0Rm9ybWF0dGVkRG93bnRpbWUoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuZm9sZGVyRGF0ZSkgcmV0dXJuICctJztcbiAgICBjb25zdCBub3JtYWxpemVkRGF0ZSA9IG5ldyBEYXRlKHRoaXMuZm9sZGVyRGF0ZSkudG9JU09TdHJpbmcoKS5zcGxpdChcIlRcIilbMF07XG4gICAgY29uc3QgZG93bnRpbWVNaW51dGVzID0gdGhpcy5jYXJkRGF0YU1hcFtub3JtYWxpemVkRGF0ZV0/LmRvd250aW1lIHx8IDA7XG4gICAgXG4gICAgaWYgKCFkb3dudGltZU1pbnV0ZXMgfHwgZG93bnRpbWVNaW51dGVzID09PSAwKSByZXR1cm4gJy0nO1xuICAgIFxuICAgIGNvbnN0IHsgaG91cnMsIG1pbnMgfSA9IHRoaXMuY29udmVydE1pbnV0ZXMoZG93bnRpbWVNaW51dGVzKTtcbiAgICBpZiAoaG91cnMgPiAwICYmIG1pbnMgPiAwKSB7XG4gICAgICByZXR1cm4gYCR7aG91cnN9aHIgJHttaW5zfSBtaW5zYDtcbiAgICB9IGVsc2UgaWYgKGhvdXJzID4gMCkge1xuICAgICAgcmV0dXJuIGAke2hvdXJzfWhyYDtcbiAgICB9IGVsc2UgaWYgKG1pbnMgPiAwKSB7XG4gICAgICByZXR1cm4gYCR7bWluc30gbWluc2A7XG4gICAgfVxuICAgIHJldHVybiAnLSc7XG4gIH1cblxuICAvLyBHZXQgdGlja2V0IHN0YXR1c1xuICBnZXRUaWNrZXRTdGF0dXMoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuZm9sZGVyRGF0ZSkgcmV0dXJuICctJztcbiAgICBjb25zdCBub3JtYWxpemVkRGF0ZSA9IG5ldyBEYXRlKHRoaXMuZm9sZGVyRGF0ZSkudG9JU09TdHJpbmcoKS5zcGxpdChcIlRcIilbMF07XG4gICAgY29uc3Qgc3RhdHVzID0gdGhpcy5jYXJkRGF0YU1hcFtub3JtYWxpemVkRGF0ZV0/LnRpY2tldFN0YXR1cztcbiAgICByZXR1cm4gc3RhdHVzIHx8ICctJztcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZXJlJ3MgZG93bnRpbWVcbiAgaGFzRG93bnRpbWUoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmZvbGRlckRhdGUpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBub3JtYWxpemVkRGF0ZSA9IG5ldyBEYXRlKHRoaXMuZm9sZGVyRGF0ZSkudG9JU09TdHJpbmcoKS5zcGxpdChcIlRcIilbMF07XG4gICAgY29uc3QgZG93bnRpbWUgPSB0aGlzLmNhcmREYXRhTWFwW25vcm1hbGl6ZWREYXRlXT8uZG93bnRpbWUgfHwgMDtcbiAgICByZXR1cm4gZG93bnRpbWUgPiAwO1xuICB9XG5cbiAgLy8gR2V0IHRhZ2dpbmcgZGF0YSBmcm9tIHRpY2tldFJldmlld1N0YXR1cyB3aGVyZSBhY3Rpb25UeXBlID0gXCJ0YWdnaW5nXCJcbiAgZ2V0VGFnZ2luZ0RhdGEodHlwZTogc3RyaW5nKTogYW55IHtcbiAgICAvLyBjb25zb2xlLmxvZygndGlja2V0UmV2aWV3U3RhdHVzID4+JywgdGhpcy50aWNrZXRSZXZpZXdTdGF0dXMpXG4gICAgaWYgKCF0aGlzLnRpY2tldFJldmlld1N0YXR1cyB8fCAhQXJyYXkuaXNBcnJheSh0aGlzLnRpY2tldFJldmlld1N0YXR1cykgfHwgIXR5cGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy50aWNrZXRSZXZpZXdTdGF0dXMuZmluZCgoaXRlbTogYW55KSA9PiBpdGVtPy5hY3Rpb25UeXBlID09PSB0eXBlKSB8fCBudWxsO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGlja2V0IHN0YXR1cyBpcyByYWlzZWRcbiAgaXNUaWNrZXRSYWlzZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc3RhdHVzID0gdGhpcy5nZXRUaWNrZXRTdGF0dXMoKTtcbiAgICByZXR1cm4gc3RhdHVzICE9PSAnLScgJiYgc3RhdHVzPy50b0xvd2VyQ2FzZSgpID09PSBcInJhaXNlZFwiO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGlja2V0IHN0YXR1cyBpcyBjbG9zZWRcbiAgaXNUaWNrZXRDbG9zZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc3RhdHVzID0gdGhpcy5nZXRUaWNrZXRTdGF0dXMoKTtcbiAgICByZXR1cm4gc3RhdHVzICE9PSAnLScgJiYgc3RhdHVzPy50b0xvd2VyQ2FzZSgpID09PSBcImNsb3NlZFwiO1xuICB9XG5cbiAgLy8gR2V0IGFsbCB0YWdnaW5nIGRhdGEgaXRlbXMgKGZvciBpbml0aWFsIGFuZCBmaW5hbCByZXZpc2lvbnMpXG4gIGdldEFsbFRhZ2dpbmdEYXRhKCk6IGFueVtdIHtcbiAgICBpZiAoIXRoaXMudGlja2V0UmV2aWV3U3RhdHVzIHx8ICFBcnJheS5pc0FycmF5KHRoaXMudGlja2V0UmV2aWV3U3RhdHVzKSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy50aWNrZXRSZXZpZXdTdGF0dXMuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0/LmFjdGlvblR5cGUgPT09IFwidGFnZ2luZ1wiKSB8fCBbXTtcbiAgfVxuXG4gIC8vIEdldCBpbml0aWFsIHJldmlzaW9uIGRhdGEgKGZpcnN0IHRhZ2dpbmcgaXRlbSlcbiAgZ2V0SW5pdGlhbFJldmlzaW9uRGF0YSgpOiBhbnkge1xuICAgIGNvbnN0IGFsbFRhZ2dpbmcgPSB0aGlzLmdldEFsbFRhZ2dpbmdEYXRhKCk7XG4gICAgcmV0dXJuIGFsbFRhZ2dpbmcubGVuZ3RoID4gMCA/IGFsbFRhZ2dpbmdbMF0gOiBudWxsO1xuICB9XG5cbiAgLy8gR2V0IGZpbmFsIHJldmlzaW9uIGRhdGEgKGxhc3QgdGFnZ2luZyBpdGVtLCBvciBzZWNvbmQgaWYgZXhpc3RzKVxuICBnZXRGaW5hbFJldmlzaW9uRGF0YSgpOiBhbnkge1xuICAgIGNvbnN0IGFsbFRhZ2dpbmcgPSB0aGlzLmdldEFsbFRhZ2dpbmdEYXRhKCk7XG4gICAgcmV0dXJuIGFsbFRhZ2dpbmcubGVuZ3RoID4gMSA/IGFsbFRhZ2dpbmdbYWxsVGFnZ2luZy5sZW5ndGggLSAxXSA6IChhbGxUYWdnaW5nLmxlbmd0aCA+IDAgPyBhbGxUYWdnaW5nWzBdIDogbnVsbCk7XG4gIH1cblxuICAvLyBIZWxwZXIgbWV0aG9kIHRvIGdldCBjb3VudCB2YWx1ZSBieSB0eXBlIGZyb20gY291bnQgYXJyYXlcbiAgZ2V0Q291bnRCeVR5cGUoZGF0YTogYW55LCBjb3VudFR5cGU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgaWYgKCFkYXRhIHx8ICFkYXRhLmNvdW50KSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgXG4gICAgLy8gQ2hlY2sgaWYgY291bnQgaXMgYW4gYXJyYXkgKG5ldyBmb3JtYXQpXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YS5jb3VudCkpIHtcbiAgICAgIGNvbnN0IGNvdW50SXRlbSA9IGRhdGEuY291bnQuZmluZCgoaXRlbTogYW55KSA9PiBpdGVtPy50eXBlID09PSBjb3VudFR5cGUpO1xuICAgICAgcmV0dXJuIGNvdW50SXRlbT8udmFsdWUgfHwgMDtcbiAgICB9XG4gICAgXG4gICAgLy8gRmFsbGJhY2sgZm9yIG9sZCBmb3JtYXQgKG9iamVjdClcbiAgICBjb25zdCBrZXlNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICAnZHVwbGljYXRlJzogJ2R1cGxpY2F0ZUNvdW50JyxcbiAgICAgICdlbXBsb3llZSc6ICdlbXBsb3llZUNvdW50JyxcbiAgICAgICdqdW5rJzogJ2p1bmtDb3VudCcsXG4gICAgICAnaG91c2VLZWVwaW5nJzogJ2hvdXNlS2VlcGluZ0NvdW50J1xuICAgIH07XG4gICAgXG4gICAgY29uc3Qga2V5ID0ga2V5TWFwW2NvdW50VHlwZV07XG4gICAgcmV0dXJuIGtleSA/IChkYXRhLmNvdW50W2tleV0gfHwgMCkgOiAwO1xuICB9XG5cbiAgLy8gQ2FsY3VsYXRlIHRvdGFsIHBlcmNlbnRhZ2U6IChzdW0gb2YgYWxsIGNvdW50IHZhbHVlcyAvIHJldmljZWRGb290ZmFsbCkgKiAxMDBcbiAgLy8gdHlwZTogJ3JhaXNlZCcgfCAnZmluYWxyZXZpZXcnXG4gIGdldFJldmlzaW9uQ2FsY3VsYXRpb24odHlwZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMudGlja2V0UmV2aWV3U3RhdHVzIHx8ICFBcnJheS5pc0FycmF5KHRoaXMudGlja2V0UmV2aWV3U3RhdHVzIHx8ICF0eXBlICkpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIC8vIEZpbHRlciBpdGVtcyBiYXNlZCBvbiBhY3Rpb25UeXBlXG4gICAgY29uc3QgdGFnZ2luZ0l0ZW1zID0gdGhpcy50aWNrZXRSZXZpZXdTdGF0dXMuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0/LmFjdGlvblR5cGUgPT09IHR5cGUpO1xuICAgIGlmICh0YWdnaW5nSXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBpZiAoIXRhZ2dpbmdJdGVtc1swXSB8fCAhdGFnZ2luZ0l0ZW1zWzBdLnJldmljZWRGb290ZmFsbCB8fCB0YWdnaW5nSXRlbXNbMF0ucmV2aWNlZEZvb3RmYWxsID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgY291bnQgPSB0YWdnaW5nSXRlbXNbMF0uY291bnQgfHwgW107XG4gICAgLy8gQ2hlY2sgaWYgY291bnQgaXMgYW4gYXJyYXkgKG5ldyBmb3JtYXQpIG9yIG9iamVjdCAob2xkIGZvcm1hdClcbiAgICBsZXQgdG90YWxDb3VudCA9IDA7XG4gICAgXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY291bnQpKSB7XG4gICAgICAvLyBOZXcgZm9ybWF0OiBjb3VudCBpcyBhbiBhcnJheSBvZiBvYmplY3RzIHdpdGggdHlwZSBhbmQgdmFsdWVcbiAgICAgIGNvbnN0IHR5cGVzVG9TdW0gPSBbJ2R1cGxpY2F0ZScsICdlbXBsb3llZScsICdob3VzZUtlZXBpbmcnLCAnanVuayddO1xuICAgICAgdG90YWxDb3VudCA9IGNvdW50XG4gICAgICAgIC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gdHlwZXNUb1N1bS5pbmNsdWRlcyhpdGVtPy50eXBlKSlcbiAgICAgICAgLnJlZHVjZSgoc3VtOiBudW1iZXIsIGl0ZW06IGFueSkgPT4gc3VtICsgKGl0ZW0/LnZhbHVlIHx8IDApLCAwKTtcbiAgICB9IFxuICAgIC8vIGVsc2Uge1xuICAgIC8vICAgLy8gT2xkIGZvcm1hdDogY291bnQgaXMgYW4gb2JqZWN0IHdpdGgga2V5c1xuICAgIC8vICAgdG90YWxDb3VudCA9IChjb3VudC5kdXBsaWNhdGVDb3VudCB8fCAwKSArIFxuICAgIC8vICAgICAgICAgICAgICAgIChjb3VudC5lbXBsb3llZUNvdW50IHx8IDApICsgXG4gICAgLy8gICAgICAgICAgICAgICAgKGNvdW50Lmp1bmtDb3VudCB8fCAwKSArIFxuICAgIC8vICAgICAgICAgICAgICAgIChjb3VudC5ob3VzZUtlZXBpbmdDb3VudCB8fCAwKTtcbiAgICAvLyB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQoKHRvdGFsQ291bnQgLyB0YWdnaW5nSXRlbXNbMF0ucmV2aWNlZEZvb3RmYWxsKSAqIDEwMCk7XG4gIH1cblxuICByZXF1ZXN0UmVzZXQoKTogdm9pZCB7XG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMucmVzZXRSZXF1ZXN0UG9wdXAsIHtcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxuICAgICAgc2l6ZTogXCJtZFwiLFxuICAgICAgYmFja2Ryb3A6IFwic3RhdGljXCIsXG4gICAgICBrZXlib2FyZDogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICBjYW5jZWxSZXNldFJlcXVlc3QoKTogdm9pZCB7XG4gICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xuICB9XG5cbiAgc3VibWl0UmVzZXRSZXF1ZXN0KCk6IHZvaWQge1xuICAgIGxldCBwYXlsb2FkID0ge1xuICAgICAgc3RvcmVJZDogdGhpcy5zdG9yZUlkYXJyYXkgJiYgdGhpcy5zdG9yZUlkYXJyYXkubGVuZ3RoID4gMCA/IHRoaXMuc3RvcmVJZGFycmF5WzBdIDogbnVsbCxcbiAgICAgIGRhdGVTdHJpbmc6IHRoaXMuZm9sZGVyRGF0ZSB8fCBcIlwiXG4gICAgfTtcbiAgICBjb25zb2xlLmxvZygnc3VibWl0UmVzZXRSZXF1ZXN0IFBheWxvYWQ6JywgcGF5bG9hZCk7XG4gICAgLy8gQ2xvc2UgbW9kYWwgYWZ0ZXIgc3VibWlzc2lvblxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLmRpc21pc3NBbGwoKTtcbiAgICB0aGlzLnNlcnZpY2VcbiAgICAgIC5zZW5kVk1TUmVzZXRSZXF1ZXN0KHBheWxvYWQpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICA/LnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xuICAgICAgICAgICAgdGhpcy5sb2FkQ2FyZERhdGEoKTtcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KFwiUmVxdWVzdCByZXNldCBzdWNjZXNzZnVsbHlcIik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChcIkZhaWxlZCB0byByZXNldCByZXF1ZXN0XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICBjb25zdCBtc2cgPVxuICAgICAgICAgICAgZXJyLmVycm9yPy5lcnJvciB8fFxuICAgICAgICAgICAgZXJyLmVycm9yIHx8XG4gICAgICAgICAgICBlcnI/LmVycm9yPy5tZXNzYWdlIHx8XG4gICAgICAgICAgICBlcnIubWVzc2FnZSB8fFxuICAgICAgICAgICAgXCJVbmtub3duIGVycm9yXCI7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW4gc3VibWl0UmVzZXRSZXF1ZXN0IDonLCBlcnIpO1xuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChtc2cgfHwgXCJVbmtub3duIGVycm9yIG9jY3VycmVkXCIpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgXG4gIH1cblxuICAvLyBHZXQgbm9ybWFsaXplZCBkYXRlIGZvciBjdXJyZW50IGZvbGRlckRhdGVcbiAgZ2V0Tm9ybWFsaXplZERhdGUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLmZvbGRlckRhdGUpIHJldHVybiBudWxsO1xuICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLmZvbGRlckRhdGUpLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdO1xuICB9XG5cbiAgLy8gR2V0IHNlbGVjdGVkIGRhdGUncyBjYXJkIGRhdGFcbiAgZ2V0U2VsZWN0ZWREYXRlQ2FyZERhdGEoKTogYW55IHtcbiAgICBjb25zdCBub3JtYWxpemVkRGF0ZSA9IHRoaXMuZ2V0Tm9ybWFsaXplZERhdGUoKTtcbiAgICByZXR1cm4gbm9ybWFsaXplZERhdGUgPyB0aGlzLmNhcmREYXRhTWFwW25vcm1hbGl6ZWREYXRlXSA6IG51bGw7XG4gIH1cbn0iLCI8ZGl2IGNsYXNzPVwiY2FyZCBtdC0zXCI+XG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIG10LTMgcHgtMCBib3JkZXItYm90dG9tLTBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1hY2NvcmRpb25cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tYWNjb3JkaW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8IS0tIGZvciBuZXcgbmF2aWdhdGlvbiBjaGFuZ2VzIC0tPlxuICAgICAgICAgICAgICAgIDwhLS0gb2xkIHZpZXcgd2hpbGUgZm9sZGVyIHZpZXcgLS0+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImZvbGRlclZpZXdcIiBjbGFzcz1cIm1haW5oZWFkaW5nIHBiLTAgY3VzdG9tLWFjY29yZGlvbi1oZWFkZXJcIiAoY2xpY2spPVwidG9nZ2xlQWNjb3JkaW9uKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1nLWRpcmVjXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDQwcHg7XCI+SW1hZ2UgRGlyZWN0b3J5PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFjY29yZGlvbi1hcnJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRG93biBhcnJvdyBmb3IgY29sbGFwc2VkIHN0YXRlLCB1cCBhcnJvdyBmb3IgZXhwYW5kZWQgc3RhdGUgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFpc0FjY29yZGlvbkV4cGFuZGVkXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjZcIiBoZWlnaHQ9XCI2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiA2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xIDFMNSA1TDkgMVwiIHN0cm9rZT1cIiMwNzE0MzdcIiBzdHJva2Utd2lkdGg9XCIxXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImlzQWNjb3JkaW9uRXhwYW5kZWRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNlwiIGhlaWdodD1cIjZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEgNUw1IDFMOSA1XCIgc3Ryb2tlPVwiIzFiODRmZlwiIHN0cm9rZS13aWR0aD1cIjFcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPCEtLSBuZXcgdmlldyB3aGlsZSBub3QgaW4gZm9sZGVyIHZpZXcgdmlldyAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWZvbGRlclZpZXdcIiBjbGFzcz1cImhlYWRlci1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1sZWZ0LXNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYmFja25hdiAmJiAhaW1hZ2VGbG93XCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJiYWNrVG9Gb290ZmFsbCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiB2aWV3Qm94PVwiMCAwIDQwIDQwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGZpbHRlcj1cInVybCgjZmlsdGVyMF9kXzI1ODVfNzAzNilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjFcIiB3aWR0aD1cIjM2XCIgaGVpZ2h0PVwiMzZcIiByeD1cIjhcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjIuNVwiIHk9XCIxLjVcIiB3aWR0aD1cIjM1XCIgaGVpZ2h0PVwiMzVcIiByeD1cIjcuNVwiIHN0cm9rZT1cIiNEMEQ1RERcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yNS44MzI3IDE5SDE0LjE2Nk0xNC4xNjYgMTlMMTkuOTk5MyAyNC44MzM0TTE0LjE2NiAxOUwxOS45OTkzIDEzLjE2NjdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjBfZF8yNTg1XzcwMzZcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVPZmZzZXQgZHk9XCIxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMC4wNjI3NDUxIDAgMCAwIDAgMC4wOTQxMTc2IDAgMCAwIDAgMC4xNTY4NjMgMCAwIDAgMC4wNSAwXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93XzI1ODVfNzAzNlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd18yNTg1XzcwMzZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJzaGFwZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbHRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBiYWNrIGZyb20gaW1hZ2UgZmxvdyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaW1hZ2VGbG93XCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJiYWNrVG9Gb290ZmFsbDEoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgdmlld0JveD1cIjAgMCA0MCA0MFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBmaWx0ZXI9XCJ1cmwoI2ZpbHRlcjBfZF8yNTg1XzcwMzYpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIxXCIgd2lkdGg9XCIzNlwiIGhlaWdodD1cIjM2XCIgcng9XCI4XCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyLjVcIiB5PVwiMS41XCIgd2lkdGg9XCIzNVwiIGhlaWdodD1cIjM1XCIgcng9XCI3LjVcIiBzdHJva2U9XCIjRDBENUREXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjUuODMyNyAxOUgxNC4xNjZNMTQuMTY2IDE5TDE5Ljk5OTMgMjQuODMzNE0xNC4xNjYgMTlMMTkuOTk5MyAxMy4xNjY3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWx0ZXIgaWQ9XCJmaWx0ZXIwX2RfMjU4NV83MDM2XCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PVwiMFwiIHJlc3VsdD1cIkJhY2tncm91bmRJbWFnZUZpeFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlT2Zmc2V0IGR5PVwiMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9XCIwIDAgMCAwIDAuMDYyNzQ1MSAwIDAgMCAwIDAuMDk0MTE3NiAwIDAgMCAwIDAuMTU2ODYzIDAgMCAwIDAuMDUgMFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cIkJhY2tncm91bmRJbWFnZUZpeFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD1cImVmZmVjdDFfZHJvcFNoYWRvd18yNTg1XzcwMzZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbj1cIlNvdXJjZUdyYXBoaWNcIiBpbjI9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMjU4NV83MDM2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwic2hhcGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWx0ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1nLWRpcmVjXCI+SW1hZ2UgRGlyZWN0b3J5IHwge3tmb2xkZXJEYXRlIHwgZGF0ZTonZGQgTU1NLCB5eXl5J319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1yaWdodC1zZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWZvbGRlclZpZXdcIiBjbGFzcz1cImFjY29yZGlvbi10b2dnbGUtYnRuXCIgKGNsaWNrKT1cInRvZ2dsZUFjY29yZGlvbigpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhY2NvcmRpb24tYXJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBEb3duIGFycm93IGZvciBjb2xsYXBzZWQgc3RhdGUsIHVwIGFycm93IGZvciBleHBhbmRlZCBzdGF0ZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFpc0FjY29yZGlvbkV4cGFuZGVkXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjZcIiBoZWlnaHQ9XCI2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEgMUw1IDVMOSAxXCIgc3Ryb2tlPVwiIzA3MTQzN1wiIHN0cm9rZS13aWR0aD1cIjFcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiaXNBY2NvcmRpb25FeHBhbmRlZFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI2XCIgaGVpZ2h0PVwiNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xIDVMNSAxTDkgNVwiIHN0cm9rZT1cIiMxYjg0ZmZcIiBzdHJva2Utd2lkdGg9XCIxXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8c2VjdGlvbiAqbmdJZj1cImlzQWNjb3JkaW9uRXhwYW5kZWRcIj5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZm9sZGVyVmlld1wiIGNsYXNzPVwiY2FyZC1ib2R5IHB4LTBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLWxpc3QtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtbGlzdC1zY3JvbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtY2FyZFwiICpuZ0Zvcj1cImxldCBvYmogb2YgZGF0ZUFycmF5OyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZGF0ZS1jYXJkLWFjdGl2ZSc6IGkgPT09IHNlbGVjdEluZGV4fVwiIChjbGljayk9XCJnZXRpbWFnZXMoaSwgb2JqKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtY2FyZC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBjbGFzcz1cImNhbGVuZGFyLWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIuNjY2NyAyLjY2NjY3SDEyVjJDMTIgMS42MzE4MSAxMS43MDE1IDEuMzMzMzMgMTEuMzMzMyAxLjMzMzMzQzEwLjk2NTEgMS4zMzMzMyAxMC42NjY3IDEuNjMxODEgMTAuNjY2NyAyVjIuNjY2NjdINS4zMzMzM1YyQzUuMzMzMzMgMS42MzE4MSA1LjAzNDg2IDEuMzMzMzMgNC42NjY2NyAxLjMzMzMzQzQuMjk4NDggMS4zMzMzMyA0IDEuNjMxODEgNCAyVjIuNjY2NjdIMy4zMzMzM0MyLjU5Njk1IDIuNjY2NjcgMiAzLjI2MzYyIDIgNFYxMy4zMzMzQzIgMTQuMDY5NyAyLjU5Njk1IDE0LjY2NjcgMy4zMzMzMyAxNC42NjY3SDEyLjY2NjdDMTMuNDAzIDE0LjY2NjcgMTQgMTQuMDY5NyAxNCAxMy4zMzMzVjRDMTQgMy4yNjM2MiAxMy40MDMgMi42NjY2NyAxMi42NjY3IDIuNjY2NjdaTTEyLjY2NjcgMTMuMzMzM0gzLjMzMzMzVjZIMTIuNjY2N1YxMy4zMzMzWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzY2NzA4NVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlLXRleHRcIj57e29iaiB8IGRhdGU6J2RkIE1NTSd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNhcmREYXRhTWFwW29ial0/LnRpY2tldFN0YXR1c0xvd2VyIGFzIHN0YXR1c1wiIGNsYXNzPVwiYmFkZ2UgbXMtMlwiIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWRnZS1saWdodC1zdWNjZXNzJzogc3RhdHVzID09PSAnY2xvc2VkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWRnZS1saWdodC13YXJuaW5nJzogc3RhdHVzID09PSAncmFpc2VkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWRnZS1saWdodC1kZWZhdWx0Jzogc3RhdHVzICE9PSAnY2xvc2VkJyAmJiBzdGF0dXMgIT09ICdyYWlzZWQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzdGF0dXMgPT09ICdjbG9zZWQnID8gJ1RpY2tldCBjbG9zZWQnIDogKHN0YXR1cyA9PT0gJ3JhaXNlZCcgPyAnVGlja2V0IHJhaXNlZCcgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FyZERhdGFNYXBbb2JqXT8udGlja2V0U3RhdHVzIHx8ICcnKSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZmFsbC1jb3VudFwiPnt7IGNhcmREYXRhTWFwW29ial0/LmZvb3RmYWxsQ291bnQgfHwgMCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3RmYWxsLWxhYmVsXCI+VG90YWwgZm9vdGZhbGw8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cblxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhZm9sZGVyVmlld1wiIGNsYXNzPVwiY2FyZC1ib2R5XCI+XG4gICAgICAgICAgICA8c2VjdGlvbiAqbmdJZj1cIiFpbWFnZUZsb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gVGlja2V0IEJsb2NrIEFsZXJ0IC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2V0U2VsZWN0ZWREYXRlQ2FyZERhdGEoKT8ucmFpc2VkU3RhdHVzRW5hYmxlZCA9PT0gJ2Jsb2NrJ1wiIGNsYXNzPVwiY29sLTEyIG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWJsb2NrLWFsZXJ0LWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1ibG9jay1hbGVydC1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTJcIiBmaWxsPVwiI0YwNDQzOFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA4VjEzXCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjE2XCIgcj1cIjFcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWJsb2NrLWFsZXJ0LXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnQtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2Fubm90IHJhaXNlIHRpY2tldCBmb3IgbmV4dCB7eyBnZXRTZWxlY3RlZERhdGVDYXJkRGF0YSgpPy5ub09mQmxvY2tlZERheXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAnMCcgfX0gZGF5c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWJsb2NrLWFsZXJ0LWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXQgbG9va3MgbGlrZSB5b3UgaGF2ZSBhY2hpZXZlZCA5NSUgYWNjdXJhY3kgZm9yIHRoZSB0aHJlZSB0aWNrZXRzIHJhaXNlZCB0aGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGguIFRoaXMgbGltaXRzIHlvdSBmcm9tIHJhaXNpbmcgbW9yZSB0aWNrZXRzIHRvIGF2b2lkIHJlZHVuZGFuY3kuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnQtYWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHN0aWxsIHdhbnQgdG8gcmFpc2UgdGlja2V0cywgPHNwYW4gY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnQtbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXF1ZXN0UmVzZXQoKVwiPnNlbmQgcmVxdWVzdDwvc3Bhbj4gdG8gcmVzZXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gVGlja2V0IFJlcXVlc3QgU3VjY2VzcyBBbGVydCAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdldFNlbGVjdGVkRGF0ZUNhcmREYXRhKCk/LnJhaXNlZFN0YXR1c0VuYWJsZWQgPT09ICdyZXF1ZXN0J1wiIGNsYXNzPVwiY29sLTEyIG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtcmVxdWVzdC1hbGVydFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtcmVxdWVzdC1hbGVydC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtcmVxdWVzdC1hbGVydC1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMiAyMUwyMyAxMkwyIDNWMTBMMTcgMTJMMiAxNFYyMVpcIiBmaWxsPVwiIzEwQjk4MVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtcmVxdWVzdC1hbGVydC10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LXJlcXVlc3QtYWxlcnQtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNldCBSZXF1ZXN0IFNlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1yZXF1ZXN0LWFsZXJ0LWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91ciByZXF1ZXN0IHRvIGVuYWJsZSB0aWNrZXQgcmFpc2luZyBoYXMgYmVlbiBzdWJtaXR0ZWQuIFlvdSdsbCBiZSBub3RpZmllZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uY2UgaXQncyBhcHByb3ZlZC4gUGxlYXNlIGVuc3VyZSBmdXR1cmUgdGlja2V0IGFjY3VyYWN5IHJlbWFpbnMgd2l0aGluIHRoZSA5NSVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlc2hvbGQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gZm9vdGZhbGwgdHJlbmRzIGZlYXR1cmUgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZmFsbFRyZW5kc1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aWNrZXRTdGF0dXNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gZm9vdGZhbGwgdHJlbmRzIGZlYXR1cmUgZW5kIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc2hyaW5rLTAgbXQtMyBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyIHB4LTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4gKm5nSWY9XCJiYWNrbmF2XCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJiYWNrVG9Gb290ZmFsbCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiB2aWV3Qm94PVwiMCAwIDQwIDQwXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGZpbHRlcj1cInVybCgjZmlsdGVyMF9kXzI1ODVfNzAzNilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjFcIiB3aWR0aD1cIjM2XCIgaGVpZ2h0PVwiMzZcIiByeD1cIjhcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjIuNVwiIHk9XCIxLjVcIiB3aWR0aD1cIjM1XCIgaGVpZ2h0PVwiMzVcIiByeD1cIjcuNVwiIHN0cm9rZT1cIiNEMEQ1RERcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yNS44MzI3IDE5SDE0LjE2Nk0xNC4xNjYgMTlMMTkuOTk5MyAyNC44MzM0TTE0LjE2NiAxOUwxOS45OTkzIDEzLjE2NjdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjBfZF8yNTg1XzcwMzZcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVPZmZzZXQgZHk9XCIxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMC4wNjI3NDUxIDAgMCAwIDAgMC4wOTQxMTc2IDAgMCAwIDAgMC4xNTY4NjMgMCAwIDAgMC4wNSAwXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93XzI1ODVfNzAzNlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd18yNTg1XzcwMzZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJzaGFwZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbHRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJpbWctZGlyZWMgbXMtMiBtdC0xXCI+e3tmb2xkZXJEYXRlIHwgZGF0ZTonZGQgTU1NLCB5eXl5J319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC13YXJuaW5nIG14LTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdjbG9zZWQnKSAmJiBnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdvcGVuJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0IFJhaXNlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXN1Y2Nlc3MgbXgtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnY2xvc2VkJylcIj5UaWNrZXQgQ2xvc2VkPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdvcGVuJykgJiYgIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ2Nsb3NlZCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1zLWF1dG8gdGV4dC1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCIhY2FuRW5hYmxlQnV0dG9uKClcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiUmFpc2VkKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmFpc2UgdGlja2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZm9sZGVyVmlld1wiIGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gdy0xMDAgbXktMiBnYXAtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1ncm91cCBiZy13aGl0ZSBib3JkZXItMSBidG4tZ3JvdXAgdy1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEoY291bnREYXRhPy5sZW5ndGggPiAwKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHB4LTYgcHktM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZm9vdGZhbGwnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW5UcmVuZHMoJ2Zvb3RmYWxsJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvdGFsIEZvb3RmYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdmb290ZmFsbCcgPyAnYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1hY3RpdmUnIDogJ2luYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvdW50RGF0YT8uZm9vdGZhbGxDb3VudCB8fCAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ25vbi10YWdnaW5nJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuVHJlbmRzKCdub24tdGFnZ2luZycpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb24tdGFnc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnbm9uLXRhZ2dpbmcnID8gJ2FjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtYWN0aXZlJyA6ICdpbmFjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudERhdGE/Lm5vblRhZ3MgfHwgMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdkdXBsaWNhdGUnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW5UcmVuZHMoJ2R1cGxpY2F0ZScpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEdXBsaWNhdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdkdXBsaWNhdGUnID8gJ2FjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtYWN0aXZlJyA6ICdpbmFjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudERhdGE/LmR1cGxpY2F0ZSB8fCAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2VtcGxveWVlJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuVHJlbmRzKCdlbXBsb3llZScpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXBsb3llZS9TdGFmZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZW1wbG95ZWUnID8gJ2FjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtYWN0aXZlJyA6ICdpbmFjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudERhdGE/LmVtcGxveWVlIHx8IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCIgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2p1bmsnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW5UcmVuZHMoJ2p1bmsnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnVua1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnanVuaycgPyAnYmFkZ2UgYmFkZ2UtYWN0aXZlIGFjdGl2ZVBsYW5CdG4nIDogJyBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0IGluYWN0aXZlUGxhbkJ0bidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudERhdGE/Lmp1bmsgfHwgMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2hvdXNlS2VlcGluZycgPyAnYWN0aXZlUGxhbkJ0bicgOiAnaW5hY3RpdmVQbGFuQnRuJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UGxhblRyZW5kcygnaG91c2VLZWVwaW5nJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvdXNlIEtlZXBpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2hvdXNlS2VlcGluZycgPyAnYmFkZ2UgYmFkZ2UtYWN0aXZlIGFjdGl2ZVBsYW5CdG4nIDogJyBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0IGluYWN0aXZlUGxhbkJ0bidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudERhdGE/LmhvdXNlS2VlcGluZyB8fCAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cCB2aWV3LXRvZ2dsZSBtcy1hdXRvXCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIlRvZ2dsZSB2aWV3XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtMyBweS0yXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiB2aWV3TW9kZSA9PT0gJ2dyaWQnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRWaWV3TW9kZSgnZ3JpZCcpXCIgYXJpYS1sYWJlbD1cIkdyaWQgdmlld1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIzXCIgeT1cIjNcIiB3aWR0aD1cIjRcIiBoZWlnaHQ9XCI0XCIgcng9XCIxXCIgc3Ryb2tlPVwiIzQ3NTQ2N1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZmlsbF09XCJ2aWV3TW9kZSA9PT0gJ2dyaWQnID8gJyNFQUY4RkYnIDogJ25vbmUnXCI+PC9yZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjExXCIgeT1cIjNcIiB3aWR0aD1cIjRcIiBoZWlnaHQ9XCI0XCIgcng9XCIxXCIgc3Ryb2tlPVwiIzQ3NTQ2N1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZmlsbF09XCJ2aWV3TW9kZSA9PT0gJ2dyaWQnID8gJyNFQUY4RkYnIDogJ25vbmUnXCI+PC9yZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjNcIiB5PVwiMTFcIiB3aWR0aD1cIjRcIiBoZWlnaHQ9XCI0XCIgcng9XCIxXCIgc3Ryb2tlPVwiIzQ3NTQ2N1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZmlsbF09XCJ2aWV3TW9kZSA9PT0gJ2dyaWQnID8gJyNFQUY4RkYnIDogJ25vbmUnXCI+PC9yZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjExXCIgeT1cIjExXCIgd2lkdGg9XCI0XCIgaGVpZ2h0PVwiNFwiIHJ4PVwiMVwiIHN0cm9rZT1cIiM0NzU0NjdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmZpbGxdPVwidmlld01vZGUgPT09ICdncmlkJyA/ICcjRUFGOEZGJyA6ICdub25lJ1wiPjwvcmVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtMyBweS0yXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiB2aWV3TW9kZSA9PT0gJ2xpc3QnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRWaWV3TW9kZSgnbGlzdCcpXCIgYXJpYS1sYWJlbD1cIkxpc3Qgdmlld1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMjAgMThcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjNcIiB3aWR0aD1cIjRcIiBoZWlnaHQ9XCI0XCIgcng9XCIxXCIgc3Ryb2tlPVwiIzQ3NTQ2N1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZmlsbF09XCJ2aWV3TW9kZSA9PT0gJ2xpc3QnID8gJyNFQUY4RkYnIDogJ25vbmUnXCI+PC9yZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjhcIiB5PVwiNC41XCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEuNVwiIHJ4PVwiMC43NVwiIGZpbGw9XCIjNDc1NDY3XCI+PC9yZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjhcIiB5PVwiMTIuNVwiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxLjVcIiByeD1cIjAuNzVcIiBmaWxsPVwiIzQ3NTQ2N1wiPjwvcmVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjExXCIgd2lkdGg9XCI0XCIgaGVpZ2h0PVwiNFwiIHJ4PVwiMVwiIHN0cm9rZT1cIiM0NzU0NjdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmZpbGxdPVwidmlld01vZGUgPT09ICdsaXN0JyA/ICcjRUFGOEZGJyA6ICdub25lJ1wiPjwvcmVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaW1hZ2VGbG93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidHlwZSA9PT0gJ2Zvb3RmYWxsJyAmJiB2aWV3TW9kZSA9PT0gJ2dyaWQnXCIgY2xhc3M9XCJkLWZsZXggbXQtMiBtYi0yIHctMTAwIG92ZXJmbG93LXggcHgtMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgdGV4dC1ub3dyYXBcIiAqbmdGb3I9XCJsZXQgb2JqIG9mIG9iamVjdHNBcnJheVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJuYXYgbmF2LXN0cmV0Y2ggbmF2LWxpbmUtdGFiczEgbmF2LWxpbmUtdGFicyBib3JkZXItdHJhbnNwYXJlbnQgZmxleC1ub3dyYXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtIGN1cnNvci1wb2ludGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cInNlbGVjdGVkVGltZXMob2JqLnRpbWVSYW5nZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZFRpbWUgPT09IG9iaj8udGltZVJhbmdlID8gJ2FjdGl2ZScgOiAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmsgY3Vyc29yLXBvaW50ZXIgbm8tYm9yZGVyIG14LTMgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e29iaj8udGltZVJhbmdlfX08c3BhbiBjbGFzcz1cIm14LTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0ZWRUaW1lID09PSBvYmo/LnRpbWVSYW5nZSA/ICdiYWRnZS1udW0tcHJpbWFyeScgOidiYWRnZS1udW0tbXV0ZWQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvYmo/LmNvdW50ID8gb2JqPy5jb3VudCA6IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImxvYWRpbmdcIiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm9EYXRhXCIgY2xhc3M9XCJyb3dcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtYi0zXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtbiBcIiBzdHlsZT1cIm1hcmdpbjogNjRweDtib3JkZXItcmFkaXVzOiA4cHg7XG5iYWNrZ3JvdW5kOiB2YXIoLS1HcmF5LTUwLCAjRjlGQUZCKTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjk0XCIgaGVpZ2h0PVwiOTRcIiB2aWV3Qm94PVwiMCAwIDk0IDk0XCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjdcIiB5PVwiN1wiIHdpZHRoPVwiODBcIiBoZWlnaHQ9XCI4MFwiIHJ4PVwiNDBcIiBmaWxsPVwiI0RBRjFGRlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiN1wiIHk9XCI3XCIgd2lkdGg9XCI4MFwiIGhlaWdodD1cIjgwXCIgcng9XCI0MFwiIHN0cm9rZT1cIiNFQUY4RkZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEzLjMzMzNcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTM1LjMzMiA1MS45OTk5SDMzLjY2NTRDMzIuNzgxMyA1MS45OTk5IDMxLjkzMzUgNTEuNjQ4NyAzMS4zMDgzIDUxLjAyMzZDMzAuNjgzMiA1MC4zOTg1IDMwLjMzMiA0OS41NTA2IDMwLjMzMiA0OC42NjY2VjMzLjY2NjZDMzAuMzMyIDMyLjc4MjUgMzAuNjgzMiAzMS45MzQ3IDMxLjMwODMgMzEuMzA5NkMzMS45MzM1IDMwLjY4NDQgMzIuNzgxMyAzMC4zMzMzIDMzLjY2NTQgMzAuMzMzM0g0OC42NjU0QzQ5LjU0OTQgMzAuMzMzMyA1MC4zOTczIDMwLjY4NDQgNTEuMDIyNCAzMS4zMDk2QzUxLjY0NzUgMzEuOTM0NyA1MS45OTg3IDMyLjc4MjUgNTEuOTk4NyAzMy42NjY2VjM1LjMzMzNNNDUuMzMyIDQxLjk5OTlINjAuMzMyQzYyLjE3MyA0MS45OTk5IDYzLjY2NTQgNDMuNDkyMyA2My42NjU0IDQ1LjMzMzNWNjAuMzMzM0M2My42NjU0IDYyLjE3NDIgNjIuMTczIDYzLjY2NjYgNjAuMzMyIDYzLjY2NjZINDUuMzMyQzQzLjQ5MTEgNjMuNjY2NiA0MS45OTg3IDYyLjE3NDIgNDEuOTk4NyA2MC4zMzMzVjQ1LjMzMzNDNDEuOTk4NyA0My40OTIzIDQzLjQ5MTEgNDEuOTk5OSA0NS4zMzIgNDEuOTk5OVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCI0XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZSBteS0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBub0RhdGFNZXNzYWdlc1t0eXBlPy50b0xvd2VyQ2FzZSgpXSB8fCAnTm8gZGF0YSBmb3VuZCcgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBTcGxpdC1zY3JlZW4gbGF5b3V0IChvbmx5IHNob3duIGFmdGVyIGNsaWNraW5nIGFuIGltYWdlKSAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwbGl0LXNjcmVlbi1jb250YWluZXJcIiAqbmdJZj1cInNwbGl0U2NyZWVuRW5hYmxlZCAmJiAhbm9EYXRhICYmICFsb2FkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIExlZnQgUGFuZWw6IFRodW1ibmFpbCBMaXN0ICsgUmVsYXRlZCBJbWFnZXMgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdC1wYW5lbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gTWFpbiBJbWFnZXMgTGlzdCAoaGlkZGVuIHdoZW4gZHVwbGljYXRlIGlzIHNlbGVjdGVkKSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRSYWRpb1R5cGUgIT09ICdkdXBsaWNhdGUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aHVtYm5haWwtbGlzdC1zZWN0aW9uXCIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGxpc3RWaWV3R3JvdXBzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1yYW5nZS1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWUtcmFuZ2UtdGl0bGVcIj57eyBncm91cD8udGltZVJhbmdlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGltZS1yYW5nZS1jb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjE0OV8yMzQ0MClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIgOS4wMDA3N0g0Ljc1VjkuNjI1NzdDNC43NSA5Ljk5MDQ1IDQuNjA1MTMgMTAuMzQwMiA0LjM0NzI3IDEwLjU5OEM0LjA4OTQxIDEwLjg1NTkgMy43Mzk2NyAxMS4wMDA4IDMuMzc1IDExLjAwMDhDMy4wMTAzMyAxMS4wMDA4IDIuNjYwNTkgMTAuODU1OSAyLjQwMjczIDEwLjU5OEMyLjE0NDg3IDEwLjM0MDIgMiA5Ljk5MDQ1IDIgOS42MjU3N1Y5LjAwMDc3Wk00IDMuMDYwNzdDNSAzLjA2MDc3IDUuNSA0LjUwMDc3IDUuNSA1LjUwMDc3QzUuNSA2LjAwMDc3IDUuMjUgNi41MDA3NyA1IDcuMjUwNzdMNC43NSA4LjAwMDc3SDJDMiA3LjUwMDc3IDEuNzUgNi43NTA3NyAxLjc1IDUuNTAwNzdDMS43NSA0LjI1MDc3IDIuNzQ5IDMuMDYwNzcgNCAzLjA2MDc3Wk0xMC4wMjcgNy4wNDk3N0w5LjkxODUgNy42NjUyN0M5Ljg1MTE3IDguMDIwNTggOS42NDY1NiA4LjMzNTA3IDkuMzQ5MDEgOC41NDA2QzkuMDUxNDYgOC43NDYxMyA4LjY4NDkyIDguODI2MTYgOC4zMjg3OCA4Ljc2MzM3QzcuOTcyNjMgOC43MDA1NyA3LjY1NTU3IDguNDk5OTkgNy40NDYyNiA4LjIwNTA5QzcuMjM2OTUgNy45MTAxOCA3LjE1MjI1IDcuNTQ0NjkgNy4yMTA1IDcuMTg3NzdMNy4zMTg1IDYuNTcyNzdMMTAuMDI3IDcuMDQ5NzdaTTkuMDg5IDAuODUzMjcyQzEwLjMyMSAxLjA3MDI3IDExLjA5OCAyLjQxNTc3IDEwLjg4MSAzLjY0Njc3QzEwLjY2NCA0Ljg3Nzc3IDEwLjI4NzUgNS41NzI3NyAxMC4yMDEgNi4wNjUyN0w3LjQ5MjUgNS41ODc3N0w3LjM3NjUgNC44MDU3N0M3LjI2MDUgNC4wMjM3NyA3LjEwMTUgMy40ODc3NyA3LjE4OCAyLjk5NTc3QzcuMzYxNSAyLjAxMDc3IDguMTA0IDAuNjc5NzcyIDkuMDg5IDAuODUzMjcyWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMDBBM0ZGXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIxNDlfMjM0NDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz57eyBncm91cD8uZGF0YT8ubGVuZ3RoIHx8IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aHVtYm5haWwtZ3JpZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aHVtYm5haWwtaXRlbVwiICpuZ0Zvcj1cImxldCBvYmogb2YgZ3JvdXA/LmRhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3NlbGVjdGVkJzogc2VsZWN0SW1hZ2VBcnJheT8udGVtcGxkID09PSBvYmo/LnRlbXBsZH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0SW1hZ2VGb3JTcGxpdFZpZXcob2JqKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwidGh1bWJuYWlsLWltYWdlXCIgW3NyY109XCJpbWFnZVVybCArIG9iaj8uZmlsZVBhdGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yKT1cIm9iai5maWxlUGF0aCA9IG51bGxcIiBhbHQ9XCJcIiAqbmdJZj1cIm9iaj8uZmlsZVBhdGhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW9iaj8uZmlsZVBhdGhcIiBjbGFzcz1cIm5vLXByZXZpZXdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDEyMHB4OyBwYWRkaW5nOiAyMHB4O1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJjb2xvcjogIzY2NzA4NTsgZm9udC1zaXplOiAxMXB4O1wiPk5vIHByZXZpZXc8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGh1bWJuYWlsLWluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YW5nby1pZFwiPlRhbmdvIElEOiB7eyBvYmo/LnRlbXBsZCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVudHJ5LXRpbWVcIj5FbnRyeSBUaW1lOiB7eyBvYmo/LmVudHJ5VG1lIHx8IG9iaj8uZW50cnlUaW1lfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gbGVmdCBwYW5lbCBpbWFnZSBsb2dvIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01IHRleHQtZW5kIHB5LTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nbm9uLXRhZ2dpbmcnXCIgbmdiVG9vbHRpcD1cIllldCB0byB0YWcgdGhlIGN1c3RvbWVyXCIgcGxhY2VtZW50PVwidG9wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgMTkgMThcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMDIzNDQgNS42MjVINi4wMzA5NE0xNi4yMTU5IDEwLjQzMjVMMTAuODM4NCAxNS44MUMxMC42OTkxIDE1Ljk0OTUgMTAuNTMzNyAxNi4wNjAxIDEwLjM1MTYgMTYuMTM1NkMxMC4xNjk1IDE2LjIxMTEgOS45NzQzMSAxNi4yNDk5IDkuNzc3MTkgMTYuMjQ5OUM5LjU4MDA2IDE2LjI0OTkgOS4zODQ4NyAxNi4yMTExIDkuMjAyNzggMTYuMTM1NkM5LjAyMDY4IDE2LjA2MDEgOC44NTUyNSAxNS45NDk1IDguNzE1OTQgMTUuODFMMi4yNzM0NCA5LjM3NVYxLjg3NUg5Ljc3MzQ0TDE2LjIxNTkgOC4zMTc1QzE2LjQ5NTMgOC41OTg1NCAxNi42NTIxIDguOTc4NzIgMTYuNjUyMSA5LjM3NUMxNi42NTIxIDkuNzcxMjggMTYuNDk1MyAxMC4xNTE1IDE2LjIxNTkgMTAuNDMyNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdkdXBsaWNhdGUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJvYmo/LmlzUGFyZW50XCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgdmlld0JveD1cIjAgMCAxMCAxMFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF81NjhfMTAzNjU3KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi4wODM5OCA2LjI1MDAxSDEuNjY3MzJDMS40NDYzIDYuMjUwMDEgMS4yMzQzNCA2LjE2MjIxIDEuMDc4MDYgNi4wMDU5M0MwLjkyMTc4MiA1Ljg0OTY1IDAuODMzOTg0IDUuNjM3NjkgMC44MzM5ODQgNS40MTY2OFYxLjY2NjY4QzAuODMzOTg0IDEuNDQ1NjYgMC45MjE3ODIgMS4yMzM3IDEuMDc4MDYgMS4wNzc0MkMxLjIzNDM0IDAuOTIxMTQxIDEuNDQ2MyAwLjgzMzM0NCAxLjY2NzMyIDAuODMzMzQ0SDUuNDE3MzJDNS42MzgzMyAwLjgzMzM0NCA1Ljg1MDI5IDAuOTIxMTQxIDYuMDA2NTcgMS4wNzc0MkM2LjE2Mjg1IDEuMjMzNyA2LjI1MDY1IDEuNDQ1NjYgNi4yNTA2NSAxLjY2NjY4VjIuMDgzMzRNNC41ODM5OCAzLjc1MDAxSDguMzMzOThDOC43OTQyMiAzLjc1MDAxIDkuMTY3MzIgNC4xMjMxMSA5LjE2NzMyIDQuNTgzMzRWOC4zMzMzNEM5LjE2NzMyIDguNzkzNTggOC43OTQyMiA5LjE2NjY4IDguMzMzOTggOS4xNjY2OEg0LjU4Mzk4QzQuMTIzNzUgOS4xNjY2OCAzLjc1MDY1IDguNzkzNTggMy43NTA2NSA4LjMzMzM0VjQuNTgzMzRDMy43NTA2NSA0LjEyMzExIDQuMTIzNzUgMy43NTAwMSA0LjU4Mzk4IDMuNzUwMDFaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI1XCIgaGVpZ2h0PVwiNVwiIGZpbGw9XCIjNDc1NDY3XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzU2OF8xMDM2NTdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFvYmo/LmlzUGFyZW50XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM1KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNC4xNjc5NyAxMy4xODU5SDMuMzM0NjRDMi44OTI2MSAxMy4xODU5IDIuNDY4NjggMTMuMDEwMyAyLjE1NjEyIDEyLjY5NzdDMS44NDM1NiAxMi4zODUyIDEuNjY3OTcgMTEuOTYxMiAxLjY2Nzk3IDExLjUxOTJWNC4wMTkyMUMxLjY2Nzk3IDMuNTc3MTggMS44NDM1NiAzLjE1MzI2IDIuMTU2MTIgMi44NDA2OUMyLjQ2ODY4IDIuNTI4MTMgMi44OTI2MSAyLjM1MjU0IDMuMzM0NjQgMi4zNTI1NEgxMC44MzQ2QzExLjI3NjcgMi4zNTI1NCAxMS43MDA2IDIuNTI4MTMgMTIuMDEzMSAyLjg0MDY5QzEyLjMyNTcgMy4xNTMyNiAxMi41MDEzIDMuNTc3MTggMTIuNTAxMyA0LjAxOTIxVjQuODUyNTRNOS4xNjc5NyA4LjE4NTg3SDE2LjY2OEMxNy41ODg0IDguMTg1ODcgMTguMzM0NiA4LjkzMjA2IDE4LjMzNDYgOS44NTI1NFYxNy4zNTI1QzE4LjMzNDYgMTguMjczIDE3LjU4ODQgMTkuMDE5MiAxNi42NjggMTkuMDE5Mkg5LjE2Nzk3QzguMjQ3NDkgMTkuMDE5MiA3LjUwMTMgMTguMjczIDcuNTAxMyAxNy4zNTI1VjkuODUyNTRDNy41MDEzIDguOTMyMDYgOC4yNDc0OSA4LjE4NTg3IDkuMTY3OTcgOC4xODU4N1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM1XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdlbXBsb3llZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xNjU0IDE4LjE4NlYxNi41MTk0QzE0LjE2NTQgMTUuNjM1MyAxMy44MTQyIDE0Ljc4NzUgMTMuMTg5MSAxNC4xNjIzQzEyLjU2MzkgMTMuNTM3MiAxMS43MTYxIDEzLjE4NiAxMC44MzIgMTMuMTg2SDQuMTY1MzZDMy4yODEzMSAxMy4xODYgMi40MzM0NiAxMy41MzcyIDEuODA4MzQgMTQuMTYyM0MxLjE4MzIyIDE0Ljc4NzUgMC44MzIwMzEgMTUuNjM1MyAwLjgzMjAzMSAxNi41MTk0VjE4LjE4Nk0xOS4xNjU0IDE4LjE4NlYxNi41MTk0QzE5LjE2NDggMTUuNzgwOCAxOC45MTkgMTUuMDYzMyAxOC40NjY1IDE0LjQ3OTZDMTguMDE0IDEzLjg5NTkgMTcuMzgwNSAxMy40NzkgMTYuNjY1NCAxMy4yOTQ0TTEzLjMzMiAzLjI5NDM3QzE0LjA0OSAzLjQ3Nzk1IDE0LjY4NDYgMy44OTQ5NSAxNS4xMzg0IDQuNDc5NjNDMTUuNTkyMiA1LjA2NDMgMTUuODM4NiA1Ljc4MzM5IDE1LjgzODYgNi41MjM1NEMxNS44Mzg2IDcuMjYzNjggMTUuNTkyMiA3Ljk4Mjc3IDE1LjEzODQgOC41Njc0NEMxNC42ODQ2IDkuMTUyMTIgMTQuMDQ5IDkuNTY5MTIgMTMuMzMyIDkuNzUyN00xMC44MzIgNi41MTkzN0MxMC44MzIgOC4zNjAzMiA5LjMzOTY1IDkuODUyNyA3LjQ5ODcgOS44NTI3QzUuNjU3NzUgOS44NTI3IDQuMTY1MzYgOC4zNjAzMiA0LjE2NTM2IDYuNTE5MzdDNC4xNjUzNiA0LjY3ODQyIDUuNjU3NzUgMy4xODYwNCA3LjQ5ODcgMy4xODYwNEM5LjMzOTY1IDMuMTg2MDQgMTAuODMyIDQuNjc4NDIgMTAuODMyIDYuNTE5MzdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzOVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0naG91c2VLZWVwaW5nJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiB2aWV3Qm94PVwiMCAwIDIxIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDY0MylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS4yNjIxOSAxLjM2NzIyQzEwLjE3NzcgMC40NTg5NzQgMTEuNjYyIDAuNDU4OTc0IDEyLjU3NzYgMS4zNjcyMkwyMC4zMTMzIDkuMDQxNTNDMjEuMjI4NyA5Ljk0OTggMjEuMjI4NyAxMS40MjIzIDIwLjMxMzMgMTIuMzMwNkwxMi41Nzc2IDIwLjAwNDlDMTEuNjYyIDIwLjkxMzEgMTAuMTc3NyAyMC45MTMxIDkuMjYyMTkgMjAuMDA0OUw3LjA1MTY2IDE3LjgxMTlMNS4wMjUzOCAxOS44MjIxQzQuMTA5ODcgMjAuNzMwMyAyLjYyNTUzIDIwLjczMDMgMS43MTAwMiAxOS44MjIxQzAuNzk0NTEgMTguOTEzOSAwLjc5NDUxIDE3LjQ0MTMgMS43MTAwMiAxNi41MzMxTDMuNzM2MyAxNC41MjI5TDEuNTI2NDggMTIuMzMwNkMwLjYxMDk2NiAxMS40MjIzIDAuNjEwOTY2IDkuOTQ5OCAxLjUyNjQ4IDkuMDQxNTNMOS4yNjIxOSAxLjM2NzIyWk0xMS40NzI0IDIuNDYzNTdDMTEuMTY3MiAyLjE2MDgyIDEwLjY3MjQgMi4xNjA4MiAxMC4zNjcyIDIuNDYzNTdMNC44NDE0NSA3Ljk0NTU2TDEzLjY4MjMgMTYuNzE2M0wxOS4yMDgxIDExLjIzNDJDMTkuNTEzMyAxMC45MzE1IDE5LjUxMzMgMTAuNDQwNiAxOS4yMDgxIDEwLjEzNzlMMTUuMzM5OSA2LjMwMDMyTDE0LjA1MDUgNy41Nzk0QzEzLjc0NTMgNy44ODIxNCAxMy4yNTA2IDcuODgyMTQgMTIuOTQ1NSA3LjU3OTRDMTIuNjQwMyA3LjI3NjY0IDEyLjY0MDMgNi43ODU3OSAxMi45NDU1IDYuNDgzMDVMMTQuMjM0NyA1LjIwMzk3TDEzLjEyOTkgNC4xMDc4Nkw5Ljk5ODcyIDcuMjE0MThDOS42OTM1NCA3LjUxNjkyIDkuMTk4NzMgNy41MTY5MiA4Ljg5MzU2IDcuMjE0MThDOC41ODgzOCA2LjkxMTQzIDguNTg4MzggNi40MjA1OCA4Ljg5MzU2IDYuMTE3ODNMMTIuMDI0NyAzLjAxMTUxTDExLjQ3MjQgMi40NjM1N1pNMTIuNTc3MSAxNy44MTI1TDMuNzM2MzMgOS4wNDE5MUwyLjYzMTYgMTAuMTM3OUMyLjMyNjQyIDEwLjQ0MDYgMi4zMjY0MiAxMC45MzE1IDIuNjMxNiAxMS4yMzQyTDEwLjM2NzIgMTguOTA4NUMxMC42NzI0IDE5LjIxMTMgMTEuMTY3MiAxOS4yMTEzIDExLjQ3MjQgMTguOTA4NUwxMi41NzcxIDE3LjgxMjVaTTQuODQxMzIgMTUuNjE5MkwyLjgxNTE0IDE3LjYyOTRDMi41MDk5NyAxNy45MzIxIDIuNTA5OTcgMTguNDIzIDIuODE1MTQgMTguNzI1OEMzLjEyMDMxIDE5LjAyODUgMy42MTUwOSAxOS4wMjg1IDMuOTIwMjYgMTguNzI1OEw1Ljk0NjQ0IDE2LjcxNTZMNC44NDEzMiAxNS42MTkyWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNDc1NDY3XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2NDNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2p1bmsnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTMgNkg1TTUgNkgyMU01IDZWMjBDNSAyMC41MzA0IDUuMjEwNzEgMjEuMDM5MSA1LjU4NTc5IDIxLjQxNDJDNS45NjA4NiAyMS43ODkzIDYuNDY5NTcgMjIgNyAyMkgxN0MxNy41MzA0IDIyIDE4LjAzOTEgMjEuNzg5MyAxOC40MTQyIDIxLjQxNDJDMTguNzg5MyAyMS4wMzkxIDE5IDIwLjUzMDQgMTkgMjBWNkg1Wk04IDZWNEM4IDMuNDY5NTcgOC4yMTA3MSAyLjk2MDg2IDguNTg1NzkgMi41ODU3OUM4Ljk2MDg2IDIuMjEwNzEgOS40Njk1NyAyIDEwIDJIMTRDMTQuNTMwNCAyIDE1LjAzOTEgMi4yMTA3MSAxNS40MTQyIDIuNTg1NzlDMTUuNzg5MyAyLjk2MDg2IDE2IDMuNDY5NTcgMTYgNFY2TTEwIDExVjE3TTE0IDExVjE3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gbGVmdCBwYW5lbCBJbWFnZXMgU2VjdGlvbiAoT05MWSBzaG93biB3aGVuIGR1cGxpY2F0ZSBpcyBzZWxlY3RlZCkgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRodW1ibmFpbC1saXN0LXNlY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkUmFkaW9UeXBlID09PSAnZHVwbGljYXRlJyAmJiByZW1haW5pbmdJbWFnZXNHcm91cHMgJiYgcmVtYWluaW5nSW1hZ2VzR3JvdXBzLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRodW1ibmFpbC1saXN0LXNlY3Rpb25cIiAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgcmVtYWluaW5nSW1hZ2VzR3JvdXBzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1yYW5nZS1oZWFkZXJcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDE2cHg7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lLXJhbmdlLXRpdGxlXCI+e3sgZ3JvdXA/LnRpbWVSYW5nZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWUtcmFuZ2UtY291bnRcIj48c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjE0OV8yMzQ0MClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIgOS4wMDA3N0g0Ljc1VjkuNjI1NzdDNC43NSA5Ljk5MDQ1IDQuNjA1MTMgMTAuMzQwMiA0LjM0NzI3IDEwLjU5OEM0LjA4OTQxIDEwLjg1NTkgMy43Mzk2NyAxMS4wMDA4IDMuMzc1IDExLjAwMDhDMy4wMTAzMyAxMS4wMDA4IDIuNjYwNTkgMTAuODU1OSAyLjQwMjczIDEwLjU5OEMyLjE0NDg3IDEwLjM0MDIgMiA5Ljk5MDQ1IDIgOS42MjU3N1Y5LjAwMDc3Wk00IDMuMDYwNzdDNSAzLjA2MDc3IDUuNSA0LjUwMDc3IDUuNSA1LjUwMDc3QzUuNSA2LjAwMDc3IDUuMjUgNi41MDA3NyA1IDcuMjUwNzdMNC43NSA4LjAwMDc3SDJDMiA3LjUwMDc3IDEuNzUgNi43NTA3NyAxLjc1IDUuNTAwNzdDMS43NSA0LjI1MDc3IDIuNzQ5IDMuMDYwNzcgNCAzLjA2MDc3Wk0xMC4wMjcgNy4wNDk3N0w5LjkxODUgNy42NjUyN0M5Ljg1MTE3IDguMDIwNTggOS42NDY1NiA4LjMzNTA3IDkuMzQ5MDEgOC41NDA2QzkuMDUxNDYgOC43NDYxMyA4LjY4NDkyIDguODI2MTYgOC4zMjg3OCA4Ljc2MzM3QzcuOTcyNjMgOC43MDA1NyA3LjY1NTU3IDguNDk5OTkgNy40NDYyNiA4LjIwNTA5QzcuMjM2OTUgNy45MTAxOCA3LjE1MjI1IDcuNTQ0NjkgNy4yMTA1IDcuMTg3NzdMNy4zMTg1IDYuNTcyNzdMMTAuMDI3IDcuMDQ5NzdaTTkuMDg5IDAuODUzMjcyQzEwLjMyMSAxLjA3MDI3IDExLjA5OCAyLjQxNTc3IDEwLjg4MSAzLjY0Njc3QzEwLjY2NCA0Ljg3Nzc3IDEwLjI4NzUgNS41NzI3NyAxMC4yMDEgNi4wNjUyN0w3LjQ5MjUgNS41ODc3N0w3LjM3NjUgNC44MDU3N0M3LjI2MDUgNC4wMjM3NyA3LjEwMTUgMy40ODc3NyA3LjE4OCAyLjk5NTc3QzcuMzYxNSAyLjAxMDc3IDguMTA0IDAuNjc5NzcyIDkuMDg5IDAuODUzMjcyWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMDBBM0ZGXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIxNDlfMjM0NDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz57eyBncm91cD8uZGF0YT8ubGVuZ3RoIHx8IDAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aHVtYm5haWwtZ3JpZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aHVtYm5haWwtaXRlbVwiICpuZ0Zvcj1cImxldCBvYmogb2YgZ3JvdXA/LmRhdGFcIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkJzogb2JqLnNlbGVjdGVkfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cIiFyZXZvcHNUeXBlVmFsdWUgJiYgc2VsZWN0ZWRSYWRpb1R5cGUgPT09ICdkdXBsaWNhdGUnXCIgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJvYmouc2VsZWN0ZWRcIiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGFic29sdXRlIGZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwidG9wOiA1cHg7IHJpZ2h0OiA1cHg7IHotaW5kZXg6IDI7XCIgKGNoYW5nZSk9XCJvbkltYWdlQ2hlY2tib3hDaGFuZ2UoJGV2ZW50LCBvYmosICdkdXBsaWNhdGUnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIFtkaXNhYmxlZF09XCJvYmouZHVwbGljYXRlSW1hZ2VQYXRoPy5sZW5ndGggPiAwXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJ0aHVtYm5haWwtaW1hZ2UgY3Vyc29yLXBvaW50ZXJcIiBbc3JjXT1cImltYWdlVXJsICsgb2JqPy5maWxlUGF0aFwiIChlcnJvcik9XCJvYmouZmlsZVBhdGggPSBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIiAqbmdJZj1cIm9iaj8uZmlsZVBhdGhcIiAoY2xpY2spPVwiaGFuZGxlSW1hZ2VDbGljaygkZXZlbnQsIG9iailcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFvYmo/LmZpbGVQYXRoXCIgY2xhc3M9XCJuby1wcmV2aWV3IGN1cnNvci1wb2ludGVyXCIgc3R5bGU9XCJoZWlnaHQ6IDEyMHB4OyBwYWRkaW5nOiAyMHB4O1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUltYWdlQ2xpY2soJGV2ZW50LCBvYmopXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJjb2xvcjogIzY2NzA4NTsgZm9udC1zaXplOiAxMXB4O1wiPk5vIHByZXZpZXc8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aHVtYm5haWwtaW5mb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YW5nby1pZFwiPlRhbmdvIElEOiB7eyBvYmo/LnRlbXBsZCB8fCBvYmo/LnRlbXBJZCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeS10aW1lXCI+RW50cnkgVGltZToge3sgb2JqPy5lbnRyeVRtZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmo/LmVudHJ5VGltZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNSB0ZXh0LWVuZCBweS0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdub24tdGFnZ2luZydcIiBuZ2JUb29sdGlwPVwiWWV0IHRvIHRhZyB0aGUgY3VzdG9tZXJcIiBwbGFjZW1lbnQ9XCJ0b3BcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgMTkgMThcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi4wMjM0NCA1LjYyNUg2LjAzMDk0TTE2LjIxNTkgMTAuNDMyNUwxMC44Mzg0IDE1LjgxQzEwLjY5OTEgMTUuOTQ5NSAxMC41MzM3IDE2LjA2MDEgMTAuMzUxNiAxNi4xMzU2QzEwLjE2OTUgMTYuMjExMSA5Ljk3NDMxIDE2LjI0OTkgOS43NzcxOSAxNi4yNDk5QzkuNTgwMDYgMTYuMjQ5OSA5LjM4NDg3IDE2LjIxMTEgOS4yMDI3OCAxNi4xMzU2QzkuMDIwNjggMTYuMDYwMSA4Ljg1NTI1IDE1Ljk0OTUgOC43MTU5NCAxNS44MUwyLjI3MzQ0IDkuMzc1VjEuODc1SDkuNzczNDRMMTYuMjE1OSA4LjMxNzVDMTYuNDk1MyA4LjU5ODU0IDE2LjY1MjEgOC45Nzg3MiAxNi42NTIxIDkuMzc1QzE2LjY1MjEgOS43NzEyOCAxNi40OTUzIDEwLjE1MTUgMTYuMjE1OSAxMC40MzI1WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdkdXBsaWNhdGUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwib2JqPy5pc1BhcmVudFwiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgMTAgMTBcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfNTY4XzEwMzY1NylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi4wODM5OCA2LjI1MDAxSDEuNjY3MzJDMS40NDYzIDYuMjUwMDEgMS4yMzQzNCA2LjE2MjIxIDEuMDc4MDYgNi4wMDU5M0MwLjkyMTc4MiA1Ljg0OTY1IDAuODMzOTg0IDUuNjM3NjkgMC44MzM5ODQgNS40MTY2OFYxLjY2NjY4QzAuODMzOTg0IDEuNDQ1NjYgMC45MjE3ODIgMS4yMzM3IDEuMDc4MDYgMS4wNzc0MkMxLjIzNDM0IDAuOTIxMTQxIDEuNDQ2MyAwLjgzMzM0NCAxLjY2NzMyIDAuODMzMzQ0SDUuNDE3MzJDNS42MzgzMyAwLjgzMzM0NCA1Ljg1MDI5IDAuOTIxMTQxIDYuMDA2NTcgMS4wNzc0MkM2LjE2Mjg1IDEuMjMzNyA2LjI1MDY1IDEuNDQ1NjYgNi4yNTA2NSAxLjY2NjY4VjIuMDgzMzRNNC41ODM5OCAzLjc1MDAxSDguMzMzOThDOC43OTQyMiAzLjc1MDAxIDkuMTY3MzIgNC4xMjMxMSA5LjE2NzMyIDQuNTgzMzRWOC4zMzMzNEM5LjE2NzMyIDguNzkzNTggOC43OTQyMiA5LjE2NjY4IDguMzMzOTggOS4xNjY2OEg0LjU4Mzk4QzQuMTIzNzUgOS4xNjY2OCAzLjc1MDY1IDguNzkzNTggMy43NTA2NSA4LjMzMzM0VjQuNTgzMzRDMy43NTA2NSA0LjEyMzExIDQuMTIzNzUgMy43NTAwMSA0LjU4Mzk4IDMuNzUwMDFaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI1XCIgaGVpZ2h0PVwiNVwiIGZpbGw9XCIjNDc1NDY3XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfNTY4XzEwMzY1N1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhb2JqPy5pc1BhcmVudFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiB2aWV3Qm94PVwiMCAwIDIwIDIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzNSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNC4xNjc5NyAxMy4xODU5SDMuMzM0NjRDMi44OTI2MSAxMy4xODU5IDIuNDY4NjggMTMuMDEwMyAyLjE1NjEyIDEyLjY5NzdDMS44NDM1NiAxMi4zODUyIDEuNjY3OTcgMTEuOTYxMiAxLjY2Nzk3IDExLjUxOTJWNC4wMTkyMUMxLjY2Nzk3IDMuNTc3MTggMS44NDM1NiAzLjE1MzI2IDIuMTU2MTIgMi44NDA2OUMyLjQ2ODY4IDIuNTI4MTMgMi44OTI2MSAyLjM1MjU0IDMuMzM0NjQgMi4zNTI1NEgxMC44MzQ2QzExLjI3NjcgMi4zNTI1NCAxMS43MDA2IDIuNTI4MTMgMTIuMDEzMSAyLjg0MDY5QzEyLjMyNTcgMy4xNTMyNiAxMi41MDEzIDMuNTc3MTggMTIuNTAxMyA0LjAxOTIxVjQuODUyNTRNOS4xNjc5NyA4LjE4NTg3SDE2LjY2OEMxNy41ODg0IDguMTg1ODcgMTguMzM0NiA4LjkzMjA2IDE4LjMzNDYgOS44NTI1NFYxNy4zNTI1QzE4LjMzNDYgMTguMjczIDE3LjU4ODQgMTkuMDE5MiAxNi42NjggMTkuMDE5Mkg5LjE2Nzk3QzguMjQ3NDkgMTkuMDE5MiA3LjUwMTMgMTguMjczIDcuNTAxMyAxNy4zNTI1VjkuODUyNTRDNy41MDEzIDguOTMyMDYgOC4yNDc0OSA4LjE4NTg3IDkuMTY3OTcgOC4xODU4N1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nZW1wbG95ZWUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjE2NTQgMTguMTg2VjE2LjUxOTRDMTQuMTY1NCAxNS42MzUzIDEzLjgxNDIgMTQuNzg3NSAxMy4xODkxIDE0LjE2MjNDMTIuNTYzOSAxMy41MzcyIDExLjcxNjEgMTMuMTg2IDEwLjgzMiAxMy4xODZINC4xNjUzNkMzLjI4MTMxIDEzLjE4NiAyLjQzMzQ2IDEzLjUzNzIgMS44MDgzNCAxNC4xNjIzQzEuMTgzMjIgMTQuNzg3NSAwLjgzMjAzMSAxNS42MzUzIDAuODMyMDMxIDE2LjUxOTRWMTguMTg2TTE5LjE2NTQgMTguMTg2VjE2LjUxOTRDMTkuMTY0OCAxNS43ODA4IDE4LjkxOSAxNS4wNjMzIDE4LjQ2NjUgMTQuNDc5NkMxOC4wMTQgMTMuODk1OSAxNy4zODA1IDEzLjQ3OSAxNi42NjU0IDEzLjI5NDRNMTMuMzMyIDMuMjk0MzdDMTQuMDQ5IDMuNDc3OTUgMTQuNjg0NiAzLjg5NDk1IDE1LjEzODQgNC40Nzk2M0MxNS41OTIyIDUuMDY0MyAxNS44Mzg2IDUuNzgzMzkgMTUuODM4NiA2LjUyMzU0QzE1LjgzODYgNy4yNjM2OCAxNS41OTIyIDcuOTgyNzcgMTUuMTM4NCA4LjU2NzQ0QzE0LjY4NDYgOS4xNTIxMiAxNC4wNDkgOS41NjkxMiAxMy4zMzIgOS43NTI3TTEwLjgzMiA2LjUxOTM3QzEwLjgzMiA4LjM2MDMyIDkuMzM5NjUgOS44NTI3IDcuNDk4NyA5Ljg1MjdDNS42NTc3NSA5Ljg1MjcgNC4xNjUzNiA4LjM2MDMyIDQuMTY1MzYgNi41MTkzN0M0LjE2NTM2IDQuNjc4NDIgNS42NTc3NSAzLjE4NjA0IDcuNDk4NyAzLjE4NjA0QzkuMzM5NjUgMy4xODYwNCAxMC44MzIgNC42Nzg0MiAxMC44MzIgNi41MTkzN1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzOVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0naG91c2VLZWVwaW5nJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgdmlld0JveD1cIjAgMCAyMSAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjQzKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuMjYyMTkgMS4zNjcyMkMxMC4xNzc3IDAuNDU4OTc0IDExLjY2MiAwLjQ1ODk3NCAxMi41Nzc2IDEuMzY3MjJMMjAuMzEzMyA5LjA0MTUzQzIxLjIyODcgOS45NDk4IDIxLjIyODcgMTEuNDIyMyAyMC4zMTMzIDEyLjMzMDZMMTIuNTc3NiAyMC4wMDQ5QzExLjY2MiAyMC45MTMxIDEwLjE3NzcgMjAuOTEzMSA5LjI2MjE5IDIwLjAwNDlMNy4wNTE2NiAxNy44MTE5TDUuMDI1MzggMTkuODIyMUM0LjEwOTg3IDIwLjczMDMgMi42MjU1MyAyMC43MzAzIDEuNzEwMDIgMTkuODIyMUMwLjc5NDUxIDE4LjkxMzkgMC43OTQ1MSAxNy40NDEzIDEuNzEwMDIgMTYuNTMzMUwzLjczNjMgMTQuNTIyOUwxLjUyNjQ4IDEyLjMzMDZDMC42MTA5NjYgMTEuNDIyMyAwLjYxMDk2NiA5Ljk0OTggMS41MjY0OCA5LjA0MTUzTDkuMjYyMTkgMS4zNjcyMlpNMTEuNDcyNCAyLjQ2MzU3QzExLjE2NzIgMi4xNjA4MiAxMC42NzI0IDIuMTYwODIgMTAuMzY3MiAyLjQ2MzU3TDQuODQxNDUgNy45NDU1NkwxMy42ODIzIDE2LjcxNjNMMTkuMjA4MSAxMS4yMzQyQzE5LjUxMzMgMTAuOTMxNSAxOS41MTMzIDEwLjQ0MDYgMTkuMjA4MSAxMC4xMzc5TDE1LjMzOTkgNi4zMDAzMkwxNC4wNTA1IDcuNTc5NEMxMy43NDUzIDcuODgyMTQgMTMuMjUwNiA3Ljg4MjE0IDEyLjk0NTUgNy41Nzk0QzEyLjY0MDMgNy4yNzY2NCAxMi42NDAzIDYuNzg1NzkgMTIuOTQ1NSA2LjQ4MzA1TDE0LjIzNDcgNS4yMDM5N0wxMy4xMjk5IDQuMTA3ODZMOS45OTg3MiA3LjIxNDE4QzkuNjkzNTQgNy41MTY5MiA5LjE5ODczIDcuNTE2OTIgOC44OTM1NiA3LjIxNDE4QzguNTg4MzggNi45MTE0MyA4LjU4ODM4IDYuNDIwNTggOC44OTM1NiA2LjExNzgzTDEyLjAyNDcgMy4wMTE1MUwxMS40NzI0IDIuNDYzNTdaTTEyLjU3NzEgMTcuODEyNUwzLjczNjMzIDkuMDQxOTFMMi42MzE2IDEwLjEzNzlDMi4zMjY0MiAxMC40NDA2IDIuMzI2NDIgMTAuOTMxNSAyLjYzMTYgMTEuMjM0MkwxMC4zNjcyIDE4LjkwODVDMTAuNjcyNCAxOS4yMTEzIDExLjE2NzIgMTkuMjExMyAxMS40NzI0IDE4LjkwODVMMTIuNTc3MSAxNy44MTI1Wk00Ljg0MTMyIDE1LjYxOTJMMi44MTUxNCAxNy42Mjk0QzIuNTA5OTcgMTcuOTMyMSAyLjUwOTk3IDE4LjQyMyAyLjgxNTE0IDE4LjcyNThDMy4xMjAzMSAxOS4wMjg1IDMuNjE1MDkgMTkuMDI4NSAzLjkyMDI2IDE4LjcyNThMNS45NDY0NCAxNi43MTU2TDQuODQxMzIgMTUuNjE5MlpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM0NzU0NjdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDY0M1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nanVuaydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMyA2SDVNNSA2SDIxTTUgNlYyMEM1IDIwLjUzMDQgNS4yMTA3MSAyMS4wMzkxIDUuNTg1NzkgMjEuNDE0MkM1Ljk2MDg2IDIxLjc4OTMgNi40Njk1NyAyMiA3IDIySDE3QzE3LjUzMDQgMjIgMTguMDM5MSAyMS43ODkzIDE4LjQxNDIgMjEuNDE0MkMxOC43ODkzIDIxLjAzOTEgMTkgMjAuNTMwNCAxOSAyMFY2SDVaTTggNlY0QzggMy40Njk1NyA4LjIxMDcxIDIuOTYwODYgOC41ODU3OSAyLjU4NTc5QzguOTYwODYgMi4yMTA3MSA5LjQ2OTU3IDIgMTAgMkgxNEMxNC41MzA0IDIgMTUuMDM5MSAyLjIxMDcxIDE1LjQxNDIgMi41ODU3OUMxNS43ODkzIDIuOTYwODYgMTYgMy40Njk1NyAxNiA0VjZNMTAgMTFWMTdNMTQgMTFWMTdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUmlnaHQgUGFuZWw6IFNlbGVjdGVkIEltYWdlIERldGFpbHMgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHQtcGFuZWxcIiAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW1hZ2VEZXRhaWxWaWV3OyBjb250ZXh0OiB7ICRpbXBsaWNpdDogc2VsZWN0SW1hZ2VBcnJheSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodC1wYW5lbFwiICpuZ0lmPVwiIXNlbGVjdEltYWdlQXJyYXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGNvbG9yOiB2YXIoLS1HcmF5LTUwMCwgIzY2NzA4NSk7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJmb250LXNpemU6IDE2cHg7IGZvbnQtd2VpZ2h0OiA1MDA7XCI+U2VsZWN0IGFuIGltYWdlIHRvIHZpZXcgZGV0YWlsczwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIEltYWdlIERldGFpbCBWaWV3IFRlbXBsYXRlIGZvciBTcGxpdC1TY3JlZW4gUmlnaHQgUGFuZWwgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaW1hZ2VEZXRhaWxWaWV3IGxldC1vYmo+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLWdyYXkgcC0zIG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmMxXCIgW3NyY109XCJpbWFnZVVybCArIG9iaj8uZmlsZVBhdGhcIiBhbHQ9XCJcIiAqbmdJZj1cIm9iaj8uZmlsZVBhdGhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFpvb20gSWNvbiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInpvb20taWNvbi1idXR0b25cIiAoY2xpY2spPVwib3BlbkltYWdlWm9vbU1vZGFsKGltYWdlVXJsLCBvYmopXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE1XCIgaGVpZ2h0PVwiMTVcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE4LjMzMzMgMTguMzMzM0wxNSAxNU0xNi42NjY3IDkuMTY2NjdDMTYuNjY2NyAxMy4zMDY3IDEzLjMwNjcgMTYuNjY2NyA5LjE2NjY3IDE2LjY2NjdDNS4wMjY2NyAxNi42NjY3IDEuNjY2NjcgMTMuMzA2NyAxLjY2NjY3IDkuMTY2NjdDMS42NjY2NyA1LjAyNjY3IDUuMDI2NjcgMS42NjY2NyA5LjE2NjY3IDEuNjY2NjdDMTMuMzA2NyAxLjY2NjY3IDE2LjY2NjcgNS4wMjY2NyAxNi42NjY3IDkuMTY2NjdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOS4xNjY2NyA2LjY2NjY3VjExLjY2NjdNNi42NjY2NyA5LjE2NjY3SDExLjY2NjdcIiBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhb2JqPy5maWxlUGF0aFwiIGNsYXNzPVwibm8tcHJldmlld1wiIHN0eWxlPVwiaGVpZ2h0OiAzNzVweDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWItNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyM1wiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMyAyMFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIkdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlZlY3RvclwiIGQ9XCJNNi41IDYuMzIyMjdINi41MU0xNi4yNSA5LjMyMjI3SDIxLjVMMTggMTYuMzIyM0wxNC45MSAxMi4wMDIzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlZlY3Rvcl8yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEuNSAxNi4zMjI5SDUuMjZDNS42MzI3MyAxNi4zMjU1IDUuOTk4NzcgMTYuMjIzOSA2LjMxNjgyIDE2LjAyOTVDNi42MzQ4NyAxNS44MzUyIDYuODkyMjggMTUuNTU1OCA3LjA2IDE1LjIyMjlMOC41IDEyLjMyMjlNMS41IDE4LjMyMjlWMTQuMzIyOU0xNy41IDYuODIyOTFMMTMuNSAxNC44MjI5TDMuMTEgOS42MjI5MUMyLjQyMDMzIDkuMjc1NTMgMS44OTYzNSA4LjY2OTEgMS42NTI3MiA3LjkzNjMyQzEuNDA5MDkgNy4yMDM1NCAxLjQ2NTY0IDYuNDA0MSAxLjgxIDUuNzEyOTFMMy4xOSAyLjkyMjkxQzMuMzYyIDIuNTgwMTQgMy41OTk4NCAyLjI3NDYgMy44ODk5NCAyLjAyMzc1QzQuMTgwMDMgMS43NzI5IDQuNTE2NyAxLjU4MTY1IDQuODgwNzIgMS40NjA5M0M1LjI0NDc0IDEuMzQwMjEgNS42Mjg5NyAxLjI5MjM5IDYuMDExNDcgMS4zMjAxOEM2LjM5Mzk4IDEuMzQ3OTcgNi43NjcyNiAxLjQ1MDg0IDcuMTEgMS42MjI5MUwxNy41IDYuODIyOTFaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZGVyIG1iLTUgdGV4dC1jZW50ZXJcIj5QcmV2aWV3IG5vdCBhdmFpbGFibGU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRlc2NyaXB0aW9uIG1iLTUgdGV4dC1jZW50ZXJcIj5UaGUgc2VsZWN0ZWQgY2FtZXJhIGlzIG5vdCBhdmFpbGFibGUgYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbW9tZW50Ljwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBweC0yIG1iLTIgbXQtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS0yIGltZy1kb2MtdGltZVwiPlRhbmdvIElEIDoge3tvYmo/LnRlbXBsZH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnN0YXR1cyA9PT0nYXBwcm92ZWQnXCIgY2xhc3M9XCJtcy0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgc3R5bGU9XCJ3aWR0aDogMjBweDsgaGVpZ2h0OiAyMHB4O1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjExXCIgdmlld0JveD1cIjAgMCAxMCAxMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB5PVwiMC41XCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgcng9XCI1XCIgZmlsbD1cIiNEMUZBREZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNy4xMjIyIDMuNTc5MTlMNC4xMzg4NyA2LjQ1ODM2TDMuMzQ3MiA1LjYxMjUzQzMuMjAxMzcgNS40NzUwMyAyLjk3MjIgNS40NjY2OSAyLjgwNTUzIDUuNTgzMzZDMi42NDMwMyA1LjcwNDE5IDIuNTk3MiA1LjkxNjY5IDIuNjk3MiA2LjA4NzUzTDMuNjM0NyA3LjYxMjUzQzMuNzI2MzcgNy43NTQxOSAzLjg4NDcgNy44NDE2OSA0LjA2Mzg3IDcuODQxNjlDNC4yMzQ3IDcuODQxNjkgNC4zOTcyIDcuNzU0MTkgNC40ODg4NyA3LjYxMjUzQzQuNjM4ODcgNy40MTY2OSA3LjUwMTM3IDQuMDA0MTkgNy41MDEzNyA0LjAwNDE5QzcuODc2MzcgMy42MjA4NiA3LjQyMjIgMy4yODMzNiA3LjEyMjIgMy41NzUwM1YzLjU3OTE5WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMxMkI3NkFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnN0YXR1cyA9PT0ncmVqZWN0ZWQnXCIgY2xhc3M9XCJtcy0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgc3R5bGU9XCJ3aWR0aDogMjBweDsgaGVpZ2h0OiAyMHB4O1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjEzXCIgdmlld0JveD1cIjAgMCAxMyAxM1wiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE0MjhfNTk0ODQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00LjUyOTYxIDEuNUg4LjY2OTYxTDExLjU5OTYgNC40M1Y4LjU3TDguNjY5NjEgMTEuNUg0LjUyOTYxTDEuNTk5NjEgOC41N1Y0LjQzTDQuNTI5NjEgMS41WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRkVFNEUyXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDk5NjEgNUw1LjA5OTYxIDhNNS4wOTk2MSA1TDguMDk5NjEgOE00LjUyOTYxIDEuNUg4LjY2OTYxTDExLjU5OTYgNC40M1Y4LjU3TDguNjY5NjEgMTEuNUg0LjUyOTYxTDEuNTk5NjEgOC41N1Y0LjQzTDQuNTI5NjEgMS41WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTQyOF81OTQ4NFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC41OTk2MDkgMC41KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nLWRvYy12YWx1ZVwiPkVudHJ5IFRpbWUgOiB7e29iaj8uZW50cnlUbWUgfHwgb2JqPy5lbnRyeVRpbWV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01IHRleHQtZW5kIHB5LTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdub24tdGFnZ2luZydcIiBuZ2JUb29sdGlwPVwiWWV0IHRvIHRhZyB0aGUgY3VzdG9tZXJcIiBwbGFjZW1lbnQ9XCJ0b3BcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE5XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE5IDE4XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi4wMjM0NCA1LjYyNUg2LjAzMDk0TTE2LjIxNTkgMTAuNDMyNUwxMC44Mzg0IDE1LjgxQzEwLjY5OTEgMTUuOTQ5NSAxMC41MzM3IDE2LjA2MDEgMTAuMzUxNiAxNi4xMzU2QzEwLjE2OTUgMTYuMjExMSA5Ljk3NDMxIDE2LjI0OTkgOS43NzcxOSAxNi4yNDk5QzkuNTgwMDYgMTYuMjQ5OSA5LjM4NDg3IDE2LjIxMTEgOS4yMDI3OCAxNi4xMzU2QzkuMDIwNjggMTYuMDYwMSA4Ljg1NTI1IDE1Ljk0OTUgOC43MTU5NCAxNS44MUwyLjI3MzQ0IDkuMzc1VjEuODc1SDkuNzczNDRMMTYuMjE1OSA4LjMxNzVDMTYuNDk1MyA4LjU5ODU0IDE2LjY1MjEgOC45Nzg3MiAxNi42NTIxIDkuMzc1QzE2LjY1MjEgOS43NzEyOCAxNi40OTUzIDEwLjE1MTUgMTYuMjE1OSAxMC40MzI1WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nZHVwbGljYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJvYmo/LmlzUGFyZW50XCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAxMCAxMFwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzU2OF8xMDM2NTcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi4wODM5OCA2LjI1MDAxSDEuNjY3MzJDMS40NDYzIDYuMjUwMDEgMS4yMzQzNCA2LjE2MjIxIDEuMDc4MDYgNi4wMDU5M0MwLjkyMTc4MiA1Ljg0OTY1IDAuODMzOTg0IDUuNjM3NjkgMC44MzM5ODQgNS40MTY2OFYxLjY2NjY4QzAuODMzOTg0IDEuNDQ1NjYgMC45MjE3ODIgMS4yMzM3IDEuMDc4MDYgMS4wNzc0MkMxLjIzNDM0IDAuOTIxMTQxIDEuNDQ2MyAwLjgzMzM0NCAxLjY2NzMyIDAuODMzMzQ0SDUuNDE3MzJDNS42MzgzMyAwLjgzMzM0NCA1Ljg1MDI5IDAuOTIxMTQxIDYuMDA2NTcgMS4wNzc0MkM2LjE2Mjg1IDEuMjMzNyA2LjI1MDY1IDEuNDQ1NjYgNi4yNTA2NSAxLjY2NjY4VjIuMDgzMzRNNC41ODM5OCAzLjc1MDAxSDguMzMzOThDOC43OTQyMiAzLjc1MDAxIDkuMTY3MzIgNC4xMjMxMSA5LjE2NzMyIDQuNTgzMzRWOC4zMzMzNEM5LjE2NzMyIDguNzkzNTggOC43OTQyMiA5LjE2NjY4IDguMzMzOTggOS4xNjY2OEg0LjU4Mzk4QzQuMTIzNzUgOS4xNjY2OCAzLjc1MDY1IDguNzkzNTggMy43NTA2NSA4LjMzMzM0VjQuNTgzMzRDMy43NTA2NSA0LjEyMzExIDQuMTIzNzUgMy43NTAwMSA0LjU4Mzk4IDMuNzUwMDFaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI1XCIgaGVpZ2h0PVwiNVwiIGZpbGw9XCIjNDc1NDY3XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF81NjhfMTAzNjU3XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIW9iaj8uaXNQYXJlbnRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzNSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00LjE2Nzk3IDEzLjE4NTlIMy4zMzQ2NEMyLjg5MjYxIDEzLjE4NTkgMi40Njg2OCAxMy4wMTAzIDIuMTU2MTIgMTIuNjk3N0MxLjg0MzU2IDEyLjM4NTIgMS42Njc5NyAxMS45NjEyIDEuNjY3OTcgMTEuNTE5MlY0LjAxOTIxQzEuNjY3OTcgMy41NzcxOCAxLjg0MzU2IDMuMTUzMjYgMi4xNTYxMiAyLjg0MDY5QzIuNDY4NjggMi41MjgxMyAyLjg5MjYxIDIuMzUyNTQgMy4zMzQ2NCAyLjM1MjU0SDEwLjgzNDZDMTEuMjc2NyAyLjM1MjU0IDExLjcwMDYgMi41MjgxMyAxMi4wMTMxIDIuODQwNjlDMTIuMzI1NyAzLjE1MzI2IDEyLjUwMTMgMy41NzcxOCAxMi41MDEzIDQuMDE5MjFWNC44NTI1NE05LjE2Nzk3IDguMTg1ODdIMTYuNjY4QzE3LjU4ODQgOC4xODU4NyAxOC4zMzQ2IDguOTMyMDYgMTguMzM0NiA5Ljg1MjU0VjE3LjM1MjVDMTguMzM0NiAxOC4yNzMgMTcuNTg4NCAxOS4wMTkyIDE2LjY2OCAxOS4wMTkySDkuMTY3OTdDOC4yNDc0OSAxOS4wMTkyIDcuNTAxMyAxOC4yNzMgNy41MDEzIDE3LjM1MjVWOS44NTI1NEM3LjUwMTMgOC45MzIwNiA4LjI0NzQ5IDguMTg1ODcgOS4xNjc5NyA4LjE4NTg3WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nZW1wbG95ZWUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzOSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xNjU0IDE4LjE4NlYxNi41MTk0QzE0LjE2NTQgMTUuNjM1MyAxMy44MTQyIDE0Ljc4NzUgMTMuMTg5MSAxNC4xNjIzQzEyLjU2MzkgMTMuNTM3MiAxMS43MTYxIDEzLjE4NiAxMC44MzIgMTMuMTg2SDQuMTY1MzZDMy4yODEzMSAxMy4xODYgMi40MzM0NiAxMy41MzcyIDEuODA4MzQgMTQuMTYyM0MxLjE4MzIyIDE0Ljc4NzUgMC44MzIwMzEgMTUuNjM1MyAwLjgzMjAzMSAxNi41MTk0VjE4LjE4Nk0xOS4xNjU0IDE4LjE4NlYxNi41MTk0QzE5LjE2NDggMTUuNzgwOCAxOC45MTkgMTUuMDYzMyAxOC40NjY1IDE0LjQ3OTZDMTguMDE0IDEzLjg5NTkgMTcuMzgwNSAxMy40NzkgMTYuNjY1NCAxMy4yOTQ0TTEzLjMzMiAzLjI5NDM3QzE0LjA0OSAzLjQ3Nzk1IDE0LjY4NDYgMy44OTQ5NSAxNS4xMzg0IDQuNDc5NjNDMTUuNTkyMiA1LjA2NDMgMTUuODM4NiA1Ljc4MzM5IDE1LjgzODYgNi41MjM1NEMxNS44Mzg2IDcuMjYzNjggMTUuNTkyMiA3Ljk4Mjc3IDE1LjEzODQgOC41Njc0NEMxNC42ODQ2IDkuMTUyMTIgMTQuMDQ5IDkuNTY5MTIgMTMuMzMyIDkuNzUyN00xMC44MzIgNi41MTkzN0MxMC44MzIgOC4zNjAzMiA5LjMzOTY1IDkuODUyNyA3LjQ5ODcgOS44NTI3QzUuNjU3NzUgOS44NTI3IDQuMTY1MzYgOC4zNjAzMiA0LjE2NTM2IDYuNTE5MzdDNC4xNjUzNiA0LjY3ODQyIDUuNjU3NzUgMy4xODYwNCA3LjQ5ODcgMy4xODYwNEM5LjMzOTY1IDMuMTg2MDQgMTAuODMyIDQuNjc4NDIgMTAuODMyIDYuNTE5MzdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdob3VzZUtlZXBpbmcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAyMSAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDY0MylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuMjYyMTkgMS4zNjcyMkMxMC4xNzc3IDAuNDU4OTc0IDExLjY2MiAwLjQ1ODk3NCAxMi41Nzc2IDEuMzY3MjJMMjAuMzEzMyA5LjA0MTUzQzIxLjIyODcgOS45NDk4IDIxLjIyODcgMTEuNDIyMyAyMC4zMTMzIDEyLjMzMDZMMTIuNTc3NiAyMC4wMDQ5QzExLjY2MiAyMC45MTMxIDEwLjE3NzcgMjAuOTEzMSA5LjI2MjE5IDIwLjAwNDlMNy4wNTE2NiAxNy44MTE5TDUuMDI1MzggMTkuODIyMUM0LjEwOTg3IDIwLjczMDMgMi42MjU1MyAyMC43MzAzIDEuNzEwMDIgMTkuODIyMUMwLjc5NDUxIDE4LjkxMzkgMC43OTQ1MSAxNy40NDEzIDEuNzEwMDIgMTYuNTMzMUwzLjczNjMgMTQuNTIyOUwxLjUyNjQ4IDEyLjMzMDZDMC42MTA5NjYgMTEuNDIyMyAwLjYxMDk2NiA5Ljk0OTggMS41MjY0OCA5LjA0MTUzTDkuMjYyMTkgMS4zNjcyMlpNMTEuNDcyNCAyLjQ2MzU3QzExLjE2NzIgMi4xNjA4MiAxMC42NzI0IDIuMTYwODIgMTAuMzY3MiAyLjQ2MzU3TDQuODQxNDUgNy45NDU1NkwxMy42ODIzIDE2LjcxNjNMMTkuMjA4MSAxMS4yMzQyQzE5LjUxMzMgMTAuOTMxNSAxOS41MTMzIDEwLjQ0MDYgMTkuMjA4MSAxMC4xMzc5TDE1LjMzOTkgNi4zMDAzMkwxNC4wNTA1IDcuNTc5NEMxMy43NDUzIDcuODgyMTQgMTMuMjUwNiA3Ljg4MjE0IDEyLjk0NTUgNy41Nzk0QzEyLjY0MDMgNy4yNzY2NCAxMi42NDAzIDYuNzg1NzkgMTIuOTQ1NSA2LjQ4MzA1TDE0LjIzNDcgNS4yMDM5N0wxMy4xMjk5IDQuMTA3ODZMOS45OTg3MiA3LjIxNDE4QzkuNjkzNTQgNy41MTY5MiA5LjE5ODczIDcuNTE2OTIgOC44OTM1NiA3LjIxNDE4QzguNTg4MzggNi45MTE0MyA4LjU4ODM4IDYuNDIwNTggOC44OTM1NiA2LjExNzgzTDEyLjAyNDcgMy4wMTE1MUwxMS40NzI0IDIuNDYzNTdaTTEyLjU3NzEgMTcuODEyNUwzLjczNjMzIDkuMDQxOTFMMi42MzE2IDEwLjEzNzlDMi4zMjY0MiAxMC40NDA2IDIuMzI2NDIgMTAuOTMxNSAyLjYzMTYgMTEuMjM0MkwxMC4zNjcyIDE4LjkwODVDMTAuNjcyNCAxOS4yMTEzIDExLjE2NzIgMTkuMjExMyAxMS40NzI0IDE4LjkwODVMMTIuNTc3MSAxNy44MTI1Wk00Ljg0MTMyIDE1LjYxOTJMMi44MTUxNCAxNy42Mjk0QzIuNTA5OTcgMTcuOTMyMSAyLjUwOTk3IDE4LjQyMyAyLjgxNTE0IDE4LjcyNThDMy4xMjAzMSAxOS4wMjg1IDMuNjE1MDkgMTkuMDI4NSAzLjkyMDI2IDE4LjcyNThMNS45NDY0NCAxNi43MTU2TDQuODQxMzIgMTUuNjE5MlpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNDc1NDY3XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2NDNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2p1bmsnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTMgNkg1TTUgNkgyMU01IDZWMjBDNSAyMC41MzA0IDUuMjEwNzEgMjEuMDM5MSA1LjU4NTc5IDIxLjQxNDJDNS45NjA4NiAyMS43ODkzIDYuNDY5NTcgMjIgNyAyMkgxN0MxNy41MzA0IDIyIDE4LjAzOTEgMjEuNzg5MyAxOC40MTQyIDIxLjQxNDJDMTguNzg5MyAyMS4wMzkxIDE5IDIwLjUzMDQgMTkgMjBWNkg1Wk04IDZWNEM4IDMuNDY5NTcgOC4yMTA3MSAyLjk2MDg2IDguNTg1NzkgMi41ODU3OUM4Ljk2MDg2IDIuMjEwNzEgOS40Njk1NyAyIDEwIDJIMTRDMTQuNTMwNCAyIDE1LjAzOTEgMi4yMTA3MSAxNS40MTQyIDIuNTg1NzlDMTUuNzg5MyAyLjk2MDg2IDE2IDMuNDY5NTcgMTYgNFY2TTEwIDExVjE3TTE0IDExVjE3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXItZ3JheSBwLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IHRpdGxlLXR5cGVcIj5TZWxlY3Qgbm9uLXNob3BwZXIgdHlwZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiB0ZXh0LWVuZFwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhKHVzZXJzPy5yb2xlID09PSd1c2VyJyAmJiB1c2Vycz8udXNlclR5cGUgPT09J2NsaWVudCcgJiYgc2VsZWN0ZWRSYWRpb1R5cGUgPT09J2p1bmsnKVwiPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiB0ZXh0LWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdvcGVuJykgJiYgIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ2Nsb3NlZCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1iLTMgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBDbGVhciBUYWcgQnV0dG9uICh2aXNpYmxlIHdoZW4gRWRpdCBidXR0b24gT1IgU2F2ZS9DYW5jZWwgYnV0dG9ucyBhcmUgdmlzaWJsZSkgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFyZXZvcHNUeXBlVmFsdWUgfHwgKHJldm9wc1R5cGVWYWx1ZSAmJiBlZGl0QnRuU2hvdylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiKHNlbGVjdGVkUmFkaW9UeXBlID09PSB1bmRlZmluZWQgfHwgc2VsZWN0ZWRSYWRpb1R5cGUgPT09ICcnKSB8fCAoc2VsZWN0ZWRSYWRpb1R5cGUgPT09ICdkdXBsaWNhdGUnICYmIHNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdC5sZW5ndGggPT09IDApXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWNsZWFyLXRhZyBkLWlubGluZS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhclZhbHVlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiB2aWV3Qm94PVwiMCAwIDQ5IDQ5XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBmaWx0ZXI9XCJ1cmwoI2ZpbHRlcjBfZF81MTZfOTY4NDEpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjIuMTY3OTdcIiB5PVwiMS4wODQ0N1wiIHdpZHRoPVwiNDQuMDM0MlwiIGhlaWdodD1cIjQ0LjAyODRcIiByeD1cIjguNjc0NDVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0ZFRjNGMlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjIuNzEwMTJcIiB5PVwiMS42MjY2M1wiIHdpZHRoPVwiNDIuOTQ5OVwiIGhlaWdodD1cIjQyLjk0NDFcIiByeD1cIjguMTMyMjlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRkVGM0YyXCIgc3Ryb2tlLXdpZHRoPVwiMS4wODQzMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zMy40ODkzIDIxLjM2MTNMMzMuNDkxMiAyMS4zNjQzQzM0LjA1MzMgMjEuOTI5NyAzNC4zNjkgMjIuNjk0OSAzNC4zNjkxIDIzLjQ5MjJDMzQuMzY5MSAyNC4yODk1IDM0LjA1MzMgMjUuMDU0NiAzMy40OTEyIDI1LjYyMDFMMjYuNzI1NiAzMi4zODU3QzI2LjQ0NTQgMzIuNjY2MSAyNi4xMTIyIDMyLjg4ODIgMjUuNzQ2MSAzMy4wNEMyNS4zNzk4IDMzLjE5MTkgMjQuOTg3MyAzMy4yNzA1IDI0LjU5MDggMzMuMjcwNUMyNC4xOTQyIDMzLjI3MDUgMjMuODAxIDMzLjE5MTkgMjMuNDM0NiAzMy4wNEMyMy4wNjg2IDMyLjg4ODMgMjIuNzM2MSAzMi42NjU5IDIyLjQ1NjEgMzIuMzg1N0wyMC43Njc2IDMwLjY5OTJMMjIuMzY4MiAyOS4wOTg2TDI0LjA1NTcgMzAuNzg0MkwyNC4wNTY2IDMwLjc4NTJDMjQuMTI2NyAzMC44NTUzIDI0LjIxMDIgMzAuOTExMiAyNC4zMDE4IDMwLjk0OTJDMjQuMzkzMyAzMC45ODcyIDI0LjQ5MTcgMzEuMDA2OCAyNC41OTA4IDMxLjAwNjhDMjQuNjg5OSAzMS4wMDY4IDI0Ljc4ODMgMzAuOTg3MiAyNC44Nzk5IDMwLjk0OTJDMjQuOTcxMyAzMC45MTEzIDI1LjA1NDEgMzAuODU1MiAyNS4xMjQgMzAuNzg1MkgyNS4xMjVMMzEuODg3NyAyNC4wMjE1QzMyLjAyNjcgMjMuODgwNCAzMi4xMDU1IDIzLjY5MDMgMzIuMTA1NSAyMy40OTIyQzMyLjEwNTQgMjMuMjk0MSAzMi4wMjY3IDIzLjEwMzkgMzEuODg3NyAyMi45NjI5TDMwLjE5NjMgMjEuMjcxNUwzMS43OTc5IDE5LjY2OTlMMzMuNDg5MyAyMS4zNjEzWk0yNC42OTgyIDEyLjkzMzZDMjQuOTU3MSAxMi45NTk0IDI1LjIwMTEgMTMuMDczMyAyNS4zODY3IDEzLjI1ODhMMzAuMTk3MyAxOC4wNjkzTDI4LjU5NTcgMTkuNjcwOUwyNC4xMTYyIDE1LjE5MTRIMTYuMjg1MlYyMy4wMjI1TDIwLjc2NjYgMjcuNDk5TDE5LjE2NiAyOS4wOTk2TDE0LjM1MzUgMjQuMjkzQzE0LjE0MTEgMjQuMDgwNyAxNC4wMjE1IDIzLjc5MjUgMTQuMDIxNSAyMy40OTIyVjE0LjA1OTZDMTQuMDIxNyAxMy40MzQ2IDE0LjUyODMgMTIuOTI3NyAxNS4xNTMzIDEyLjkyNzdIMjQuNTg1OUwyNC42OTgyIDEyLjkzMzZaTTE5Ljg3ODkgMTcuNjQzNkMyMC41MDM4IDE3LjY0MzYgMjEuMDEwMyAxOC4xNTA2IDIxLjAxMDcgMTguNzc1NEMyMS4wMTA3IDE5LjQwMDUgMjAuNTA0IDE5LjkwODIgMTkuODc4OSAxOS45MDgySDE5Ljg2OTFDMTkuMjQ0MiAxOS45MDggMTguNzM3MyAxOS40MDA0IDE4LjczNzMgMTguNzc1NEMxOC43Mzc4IDE4LjE1MDggMTkuMjQ0NSAxNy42NDM4IDE5Ljg2OTEgMTcuNjQzNkgxOS44Nzg5WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjQjQyMzE4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMzLjE2OTkgMTQuMDg0NUwxNS4xNjk5IDMyLjA4NDVcIiBzdHJva2U9XCIjQjQyMzE4XCIgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjBfZF81MTZfOTY4NDFcIiB4PVwiLTAuMDAwNjQzMjUzXCIgeT1cIjAuMDAwMTY2NjU1XCIgd2lkdGg9XCI0OC4zNzI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiNDguMzY1NVwiIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVPZmZzZXQgZHk9XCIxLjA4NDMxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjEuMDg0MzFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMC4wNjI3NDUxIDAgMCAwIDAgMC4wOTQxMTc2IDAgMCAwIDAgMC4xNTY4NjMgMCAwIDAgMC4wNSAwXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cIkJhY2tncm91bmRJbWFnZUZpeFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfNTE2Xzk2ODQxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd181MTZfOTY4NDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwic2hhcGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmlsdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIENhbmNlbCBhbmQgU2F2ZSBCdXR0b25zICh3aGVuICFyZXZvcHNUeXBlVmFsdWUpIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhcmV2b3BzVHlwZVZhbHVlXCIgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiAoY2xpY2spPVwiY2FuY2VsKClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIGlkPVwiYWxlcnQtdG9hc3RcIiAoY2xpY2spPVwic2F2ZShzZWxlY3RlZFR5cGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIoc2VsZWN0ZWRSYWRpb1R5cGUgPT09IHVuZGVmaW5lZCB8fCBzZWxlY3RlZFJhZGlvVHlwZSA9PT0gJycpIHx8IChzZWxlY3RlZFJhZGlvVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0Lmxlbmd0aCA9PT0gMClcIj5TYXZlICYgY2xvc2U8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEVkaXQgQnV0dG9uICh3aGVuIHJldm9wc1R5cGVWYWx1ZSAmJiBlZGl0QnRuU2hvdykgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInJldm9wc1R5cGVWYWx1ZSAmJiBlZGl0QnRuU2hvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lXCIgKGNsaWNrKT1cImVkaXRWYWx1ZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTJcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuNjU1NCAxLjcxMDQ3QzE0Ljg5MjcgMS40NzMxNSAxNS4xNzQ1IDEuMjg0OSAxNS40ODQ1IDEuMTU2NDZDMTUuNzk0NiAxLjAyODAyIDE2LjEyNjkgMC45NjE5MTQgMTYuNDYyNiAwLjk2MTkxNEMxNi43OTgyIDAuOTYxOTE0IDE3LjEzMDUgMS4wMjgwMiAxNy40NDA2IDEuMTU2NDZDMTcuNzUwNyAxLjI4NDkgMTguMDMyNCAxLjQ3MzE1IDE4LjI2OTcgMS43MTA0N0MxOC41MDcxIDEuOTQ3NzkgMTguNjk1MyAyLjIyOTUzIDE4LjgyMzggMi41Mzk2MUMxOC45NTIyIDIuODQ5NjkgMTkuMDE4MyAzLjE4MjAyIDE5LjAxODMgMy41MTc2NUMxOS4wMTgzIDMuODUzMjcgMTguOTUyMiA0LjE4NTYxIDE4LjgyMzggNC40OTU2OEMxOC42OTUzIDQuODA1NzYgMTguNTA3MSA1LjA4NzUgMTguMjY5NyA1LjMyNDgyTDYuMDcxMyAxNy41MjMzTDEuMTAxNTYgMTguODc4NkwyLjQ1Njk1IDEzLjkwODlMMTQuNjU1NCAxLjcxMDQ3WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS44MTA3OVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5FZGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG15LTE1XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwiZHVwbGljYXRlXCIgaWQ9XCJkdXBsaWNhdGUtc3BsaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFR5cGVcIiBbdmFsdWVdPVwiJ2R1cGxpY2F0ZSdcIiAoY2hhbmdlKT1cIm9uUmFkaW9DaGFuZ2Uoc2VsZWN0ZWRUeXBlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicmV2b3BzVHlwZVZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJkdXBsaWNhdGUtc3BsaXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMjAgMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNC4xNjc5NyAxMy4xODU5SDMuMzM0NjRDMi44OTI2MSAxMy4xODU5IDIuNDY4NjggMTMuMDEwMyAyLjE1NjEyIDEyLjY5NzdDMS44NDM1NiAxMi4zODUyIDEuNjY3OTcgMTEuOTYxMiAxLjY2Nzk3IDExLjUxOTJWNC4wMTkyMUMxLjY2Nzk3IDMuNTc3MTggMS44NDM1NiAzLjE1MzI2IDIuMTU2MTIgMi44NDA2OUMyLjQ2ODY4IDIuNTI4MTMgMi44OTI2MSAyLjM1MjU0IDMuMzM0NjQgMi4zNTI1NEgxMC44MzQ2QzExLjI3NjcgMi4zNTI1NCAxMS43MDA2IDIuNTI4MTMgMTIuMDEzMSAyLjg0MDY5QzEyLjMyNTcgMy4xNTMyNiAxMi41MDEzIDMuNTc3MTggMTIuNTAxMyA0LjAxOTIxVjQuODUyNTRNOS4xNjc5NyA4LjE4NTg3SDE2LjY2OEMxNy41ODg0IDguMTg1ODcgMTguMzM0NiA4LjkzMjA2IDE4LjMzNDYgOS44NTI1NFYxNy4zNTI1QzE4LjMzNDYgMTguMjczIDE3LjU4ODQgMTkuMDE5MiAxNi42NjggMTkuMDE5Mkg5LjE2Nzk3QzguMjQ3NDkgMTkuMDE5MiA3LjUwMTMgMTguMjczIDcuNTAxMyAxNy4zNTI1VjkuODUyNTRDNy41MDEzIDguOTMyMDYgOC4yNDc0OSA4LjE4NTg3IDkuMTY3OTcgOC4xODU4N1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNSB0YWctY2xhc3NcIj5EdXBsaWNhdGU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbXktMTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJlbXBsb3llZVwiIGlkPVwiZW1wbG95ZWUtc3BsaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFR5cGVcIiBbdmFsdWVdPVwiJ2VtcGxveWVlJ1wiIChjaGFuZ2UpPVwib25SYWRpb0NoYW5nZShzZWxlY3RlZFR5cGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZXZvcHNUeXBlVmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImVtcGxveWVlLXNwbGl0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTVcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDIwIDIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM5KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjE2NTQgMTguMTg2VjE2LjUxOTRDMTQuMTY1NCAxNS42MzUzIDEzLjgxNDIgMTQuNzg3NSAxMy4xODkxIDE0LjE2MjNDMTIuNTYzOSAxMy41MzcyIDExLjcxNjEgMTMuMTg2IDEwLjgzMiAxMy4xODZINC4xNjUzNkMzLjI4MTMxIDEzLjE4NiAyLjQzMzQ2IDEzLjUzNzIgMS44MDgzNCAxNC4xNjIzQzEuMTgzMjIgMTQuNzg3NSAwLjgzMjAzMSAxNS42MzUzIDAuODMyMDMxIDE2LjUxOTRWMTguMTg2TTE5LjE2NTQgMTguMTg2VjE2LjUxOTRDMTkuMTY0OCAxNS43ODA4IDE4LjkxOSAxNS4wNjMzIDE4LjQ2NjUgMTQuNDc5NkMxOC4wMTQgMTMuODk1OSAxNy4zODA1IDEzLjQ3OSAxNi42NjU0IDEzLjI5NDRNMTMuMzMyIDMuMjk0MzdDMTQuMDQ5IDMuNDc3OTUgMTQuNjg0NiAzLjg5NDk1IDE1LjEzODQgNC40Nzk2M0MxNS41OTIyIDUuMDY0MyAxNS44Mzg2IDUuNzgzMzkgMTUuODM4NiA2LjUyMzU0QzE1LjgzODYgNy4yNjM2OCAxNS41OTIyIDcuOTgyNzcgMTUuMTM4NCA4LjU2NzQ0QzE0LjY4NDYgOS4xNTIxMiAxNC4wNDkgOS41NjkxMiAxMy4zMzIgOS43NTI3TTEwLjgzMiA2LjUxOTM3QzEwLjgzMiA4LjM2MDMyIDkuMzM5NjUgOS44NTI3IDcuNDk4NyA5Ljg1MjdDNS42NTc3NSA5Ljg1MjcgNC4xNjUzNiA4LjM2MDMyIDQuMTY1MzYgNi41MTkzN0M0LjE2NTM2IDQuNjc4NDIgNS42NTc3NSAzLjE4NjA0IDcuNDk4NyAzLjE4NjA0QzkuMzM5NjUgMy4xODYwNCAxMC44MzIgNC42Nzg0MiAxMC44MzIgNi41MTkzN1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNSB0YWctY2xhc3NcIj5FbXBsb3llZS9TdGFmZjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBteS0xNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgbmFtZT1cImhvdXNlS2VlcGluZ1wiIGlkPVwiaG91c2Uta2VlcGluZy1zcGxpdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVHlwZVwiIFt2YWx1ZV09XCInaG91c2VLZWVwaW5nJ1wiIChjaGFuZ2UpPVwib25SYWRpb0NoYW5nZShzZWxlY3RlZFR5cGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZXZvcHNUeXBlVmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImhvdXNlLWtlZXBpbmctc3BsaXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMjEgMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2NDMpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05LjI2MjE5IDEuMzY3MjJDMTAuMTc3NyAwLjQ1ODk3NCAxMS42NjIgMC40NTg5NzQgMTIuNTc3NiAxLjM2NzIyTDIwLjMxMzMgOS4wNDE1M0MyMS4yMjg3IDkuOTQ5OCAyMS4yMjg3IDExLjQyMjMgMjAuMzEzMyAxMi4zMzA2TDEyLjU3NzYgMjAuMDA0OUMxMS42NjIgMjAuOTEzMSAxMC4xNzc3IDIwLjkxMzEgOS4yNjIxOSAyMC4wMDQ5TDcuMDUxNjYgMTcuODExOUw1LjAyNTM4IDE5LjgyMjFDNC4xMDk4NyAyMC43MzAzIDIuNjI1NTMgMjAuNzMwMyAxLjcxMDAyIDE5LjgyMjFDMC43OTQ1MSAxOC45MTM5IDAuNzk0NTEgMTcuNDQxMyAxLjcxMDAyIDE2LjUzMzFMMy43MzYzIDE0LjUyMjlMMS41MjY0OCAxMi4zMzA2QzAuNjEwOTY2IDExLjQyMjMgMC42MTA5NjYgOS45NDk4IDEuNTI2NDggOS4wNDE1M0w5LjI2MjE5IDEuMzY3MjJaTTExLjQ3MjQgMi40NjM1N0MxMS4xNjcyIDIuMTYwODIgMTAuNjcyNCAyLjE2MDgyIDEwLjM2NzIgMi40NjM1N0w0Ljg0MTQ1IDcuOTQ1NTZMMTMuNjgyMyAxNi43MTYzTDE5LjIwODEgMTEuMjM0MkMxOS41MTMzIDEwLjkzMTUgMTkuNTEzMyAxMC40NDA2IDE5LjIwODEgMTAuMTM3OUwxNS4zMzk5IDYuMzAwMzJMMTQuMDUwNSA3LjU3OTRDMTMuNzQ1MyA3Ljg4MjE0IDEzLjI1MDYgNy44ODIxNCAxMi45NDU1IDcuNTc5NEMxMi42NDAzIDcuMjc2NjQgMTIuNjQwMyA2Ljc4NTc5IDEyLjk0NTUgNi40ODMwNUwxNC4yMzQ3IDUuMjAzOTdMMTMuMTI5OSA0LjEwNzg2TDkuOTk4NzIgNy4yMTQxOEM5LjY5MzU0IDcuNTE2OTIgOS4xOTg3MyA3LjUxNjkyIDguODkzNTYgNy4yMTQxOEM4LjU4ODM4IDYuOTExNDMgOC41ODgzOCA2LjQyMDU4IDguODkzNTYgNi4xMTc4M0wxMi4wMjQ3IDMuMDExNTFMMTEuNDcyNCAyLjQ2MzU3Wk0xMi41NzcxIDE3LjgxMjVMMy43MzYzMyA5LjA0MTkxTDIuNjMxNiAxMC4xMzc5QzIuMzI2NDIgMTAuNDQwNiAyLjMyNjQyIDEwLjkzMTUgMi42MzE2IDExLjIzNDJMMTAuMzY3MiAxOC45MDg1QzEwLjY3MjQgMTkuMjExMyAxMS4xNjcyIDE5LjIxMTMgMTEuNDcyNCAxOC45MDg1TDEyLjU3NzEgMTcuODEyNVpNNC44NDEzMiAxNS42MTkyTDIuODE1MTQgMTcuNjI5NEMyLjUwOTk3IDE3LjkzMjEgMi41MDk5NyAxOC40MjMgMi44MTUxNCAxOC43MjU4QzMuMTIwMzEgMTkuMDI4NSAzLjYxNTA5IDE5LjAyODUgMy45MjAyNiAxOC43MjU4TDUuOTQ2NDQgMTYuNzE1Nkw0Ljg0MTMyIDE1LjYxOTJaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzQ3NTQ2N1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjQzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTUgdGFnLWNsYXNzXCI+SG91c2UgS2VlcGluZzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBteS0xNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgbmFtZT1cImp1bmtcIiBpZD1cImp1bmstc3BsaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFR5cGVcIiBbdmFsdWVdPVwiJ2p1bmsnXCIgKGNoYW5nZSk9XCJvblJhZGlvQ2hhbmdlKHNlbGVjdGVkVHlwZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJldm9wc1R5cGVWYWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwianVuay1zcGxpdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01XCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTMgNkg1TTUgNkgyMU01IDZWMjBDNSAyMC41MzA0IDUuMjEwNzEgMjEuMDM5MSA1LjU4NTc5IDIxLjQxNDJDNS45NjA4NiAyMS43ODkzIDYuNDY5NTcgMjIgNyAyMkgxN0MxNy41MzA0IDIyIDE4LjAzOTEgMjEuNzg5MyAxOC40MTQyIDIxLjQxNDJDMTguNzg5MyAyMS4wMzkxIDE5IDIwLjUzMDQgMTkgMjBWNkg1Wk04IDZWNEM4IDMuNDY5NTcgOC4yMTA3MSAyLjk2MDg2IDguNTg1NzkgMi41ODU3OUM4Ljk2MDg2IDIuMjEwNzEgOS40Njk1NyAyIDEwIDJIMTRDMTQuNTMwNCAyIDE1LjAzOTEgMi4yMTA3MSAxNS40MTQyIDIuNTg1NzlDMTUuNzg5MyAyLjk2MDg2IDE2IDMuNDY5NTcgMTYgNFY2TTEwIDExVjE3TTE0IDExVjE3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTUgdGFnLWNsYXNzXCI+SnVuazwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+UmVtYXJrcyAoT3B0aW9uYWwpPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcm93cz1cIjNcIiBwbGFjZWhvbGRlcj1cIkNvbW1lbnQgaGVyZVwiIFsobmdNb2RlbCldPVwidXNlckNvbW1lbnRcIj48L3RleHRhcmVhPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBHcmlkL0xpc3QgVmlldyAoc2hvd24gd2hlbiBzcGxpdC1zY3JlZW4gaXMgbm90IGVuYWJsZWQpIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB4LTAgaW1nLXRyYWZmaWMgY29udGFpbiBoaWdoLTQwMHB4IHNjcm9sbC15XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidmlld01vZGUgPT09ICdncmlkJyAmJiAhbm9EYXRhICYmICFsb2FkaW5nICYmICFzcGxpdFNjcmVlbkVuYWJsZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9iaiBvZiBpbWFnZXNBcnJheURhdGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW1hZ2VDYXJkOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogb2JqIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC12aWV3LXdyYXBwZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ2aWV3TW9kZSA9PT0gJ2xpc3QnICYmICFub0RhdGEgJiYgIWxvYWRpbmcgJiYgIXNwbGl0U2NyZWVuRW5hYmxlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtZ3JvdXAgbWItNVwiICpuZ0Zvcj1cImxldCBncm91cCBvZiBsaXN0Vmlld0dyb3Vwc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWdyb3VwLWhlYWRlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwLXRpdGxlXCI+e3sgZ3JvdXA/LnRpbWVSYW5nZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdyb3VwLWNvdW50IGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQgbXMtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMTQ5XzIzNDQwKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yIDkuMDAwNzdINC43NVY5LjYyNTc3QzQuNzUgOS45OTA0NSA0LjYwNTEzIDEwLjM0MDIgNC4zNDcyNyAxMC41OThDNC4wODk0MSAxMC44NTU5IDMuNzM5NjcgMTEuMDAwOCAzLjM3NSAxMS4wMDA4QzMuMDEwMzMgMTEuMDAwOCAyLjY2MDU5IDEwLjg1NTkgMi40MDI3MyAxMC41OThDMi4xNDQ4NyAxMC4zNDAyIDIgOS45OTA0NSAyIDkuNjI1NzdWOS4wMDA3N1pNNCAzLjA2MDc3QzUgMy4wNjA3NyA1LjUgNC41MDA3NyA1LjUgNS41MDA3N0M1LjUgNi4wMDA3NyA1LjI1IDYuNTAwNzcgNSA3LjI1MDc3TDQuNzUgOC4wMDA3N0gyQzIgNy41MDA3NyAxLjc1IDYuNzUwNzcgMS43NSA1LjUwMDc3QzEuNzUgNC4yNTA3NyAyLjc0OSAzLjA2MDc3IDQgMy4wNjA3N1pNMTAuMDI3IDcuMDQ5NzdMOS45MTg1IDcuNjY1MjdDOS44NTExNyA4LjAyMDU4IDkuNjQ2NTYgOC4zMzUwNyA5LjM0OTAxIDguNTQwNkM5LjA1MTQ2IDguNzQ2MTMgOC42ODQ5MiA4LjgyNjE2IDguMzI4NzggOC43NjMzN0M3Ljk3MjYzIDguNzAwNTcgNy42NTU1NyA4LjQ5OTk5IDcuNDQ2MjYgOC4yMDUwOUM3LjIzNjk1IDcuOTEwMTggNy4xNTIyNSA3LjU0NDY5IDcuMjEwNSA3LjE4Nzc3TDcuMzE4NSA2LjU3Mjc3TDEwLjAyNyA3LjA0OTc3Wk05LjA4OSAwLjg1MzI3MkMxMC4zMjEgMS4wNzAyNyAxMS4wOTggMi40MTU3NyAxMC44ODEgMy42NDY3N0MxMC42NjQgNC44Nzc3NyAxMC4yODc1IDUuNTcyNzcgMTAuMjAxIDYuMDY1MjdMNy40OTI1IDUuNTg3NzdMNy4zNzY1IDQuODA1NzdDNy4yNjA1IDQuMDIzNzcgNy4xMDE1IDMuNDg3NzcgNy4xODggMi45OTU3N0M3LjM2MTUgMi4wMTA3NyA4LjEwNCAwLjY3OTc3MiA5LjA4OSAwLjg1MzI3MlpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMwMEEzRkZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjE0OV8yMzQ0MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz57eyBncm91cD8uZGF0YT8ubGVuZ3RoIHx8IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZ3gtNCBsaXN0LWdyb3VwLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvYmogb2YgZ3JvdXA/LmRhdGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImltYWdlQ2FyZDsgY29udGV4dDogeyAkaW1wbGljaXQ6IG9iaiB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaW1hZ2VDYXJkIGxldC1vYmo+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIG1haW4gaW1hZ2UgY2FyZCBzZWxlY3Rpb24gc2VjdGlvbi0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInR5cGUgIT09ICdkdXBsaWNhdGUnIHx8ICh0eXBlID09PSAnZHVwbGljYXRlJyYmIG9iai5yZXZvcHNUeXBlID09PSAnZHVwbGljYXRlJyAmJiBvYmouZHVwbGljYXRlSW1hZ2VQYXRoPy5sZW5ndGggPiAwKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtbWQtMyBib3JkZXItZ3JheSBteC0yIHAtMiBtdC01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBDb25kaXRpb246IE9ubHkgc2hvdyBpZiBub3QgZHVwbGljYXRlIE9SIGR1cGxpY2F0ZSB3aXRoIG5vbi1lbXB0eSBkdXBsaWNhdGVJbWFnZVBhdGggLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmMgY3Vyc29yLXBvaW50ZXJcIiBbc3JjXT1cImltYWdlVXJsICsgb2JqPy5maWxlUGF0aFwiIChlcnJvcik9XCJvYmouZmlsZVBhdGggPSBudWxsXCIgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RJbWFnZUZvclNwbGl0VmlldyhvYmopXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFvYmo/LmZpbGVQYXRoXCIgY2xhc3M9XCJuby1wcmV2aWV3XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWItNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIzXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIzIDIwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJHcm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlZlY3RvclwiIGQ9XCJNNi41IDYuMzIyMjdINi41MU0xNi4yNSA5LjMyMjI3SDIxLjVMMTggMTYuMzIyM0wxNC45MSAxMi4wMDIzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJWZWN0b3JfMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEuNSAxNi4zMjI5SDUuMjZDNS42MzI3MyAxNi4zMjU1IDUuOTk4NzcgMTYuMjIzOSA2LjMxNjgyIDE2LjAyOTVDNi42MzQ4NyAxNS44MzUyIDYuODkyMjggMTUuNTU1OCA3LjA2IDE1LjIyMjlMOC41IDEyLjMyMjlNMS41IDE4LjMyMjlWMTQuMzIyOU0xNy41IDYuODIyOTFMMTMuNSAxNC44MjI5TDMuMTEgOS42MjI5MUMyLjQyMDMzIDkuMjc1NTMgMS44OTYzNSA4LjY2OTEgMS42NTI3MiA3LjkzNjMyQzEuNDA5MDkgNy4yMDM1NCAxLjQ2NTY0IDYuNDA0MSAxLjgxIDUuNzEyOTFMMy4xOSAyLjkyMjkxQzMuMzYyIDIuNTgwMTQgMy41OTk4NCAyLjI3NDYgMy44ODk5NCAyLjAyMzc1QzQuMTgwMDMgMS43NzI5IDQuNTE2NyAxLjU4MTY1IDQuODgwNzIgMS40NjA5M0M1LjI0NDc0IDEuMzQwMjEgNS42Mjg5NyAxLjI5MjM5IDYuMDExNDcgMS4zMjAxOEM2LjM5Mzk4IDEuMzQ3OTcgNi43NjcyNiAxLjQ1MDg0IDcuMTEgMS42MjI5MUwxNy41IDYuODIyOTFaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXIgbWItNSB0ZXh0LWNlbnRlclwiPlByZXZpZXcgbm90IGF2YWlsYWJsZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXNjcmlwdGlvbiBtYi01IHRleHQtY2VudGVyXCI+VGhlIHNlbGVjdGVkIGNhbWVyYSBpcyBub3QgYXZhaWxhYmxlIGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbWVudC48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInR5cGUgIT09ICdkdXBsaWNhdGUnIHx8ICh0eXBlID09PSAnZHVwbGljYXRlJyYmIG9iai5yZXZvcHNUeXBlID09PSAnZHVwbGljYXRlJyAmJiBvYmouZHVwbGljYXRlSW1hZ2VQYXRoPy5sZW5ndGggPiAwKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm93IHB4LTIgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS0yIGltZy1kb2MtdGltZVwiPlRhbmdvIElEIDoge3tvYmo/LnRlbXBsZH19IDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKHR5cGUgPT09ICdkdXBsaWNhdGUnJiYgb2JqLnJldm9wc1R5cGUgPT09ICdkdXBsaWNhdGUnICYmIG9iai5kdXBsaWNhdGVJbWFnZVBhdGg/Lmxlbmd0aCA+IDApXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJteC0yIGJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnlcIj57e29iai5kdXBsaWNhdGVJbWFnZVBhdGg/Lmxlbmd0aH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5zdGF0dXMgPT09J2FwcHJvdmVkJ1wiIGNsYXNzPVwibXMtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHN0eWxlPVwid2lkdGg6IDIwcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjBweDtcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxMVwiIHZpZXdCb3g9XCIwIDAgMTAgMTFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeT1cIjAuNVwiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHJ4PVwiNVwiIGZpbGw9XCIjRDFGQURGXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTcuMTIyMiAzLjU3OTE5TDQuMTM4ODcgNi40NTgzNkwzLjM0NzIgNS42MTI1M0MzLjIwMTM3IDUuNDc1MDMgMi45NzIyIDUuNDY2NjkgMi44MDU1MyA1LjU4MzM2QzIuNjQzMDMgNS43MDQxOSAyLjU5NzIgNS45MTY2OSAyLjY5NzIgNi4wODc1M0wzLjYzNDcgNy42MTI1M0MzLjcyNjM3IDcuNzU0MTkgMy44ODQ3IDcuODQxNjkgNC4wNjM4NyA3Ljg0MTY5QzQuMjM0NyA3Ljg0MTY5IDQuMzk3MiA3Ljc1NDE5IDQuNDg4ODcgNy42MTI1M0M0LjYzODg3IDcuNDE2NjkgNy41MDEzNyA0LjAwNDE5IDcuNTAxMzcgNC4wMDQxOUM3Ljg3NjM3IDMuNjIwODYgNy40MjIyIDMuMjgzMzYgNy4xMjIyIDMuNTc1MDNWMy41NzkxOVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMTJCNzZBXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5zdGF0dXMgPT09J3JlamVjdGVkJ1wiIGNsYXNzPVwibXMtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHN0eWxlPVwid2lkdGg6IDIwcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjBweDtcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxM1wiIHZpZXdCb3g9XCIwIDAgMTMgMTNcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xNDI4XzU5NDg0KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNC41Mjk2MSAxLjVIOC42Njk2MUwxMS41OTk2IDQuNDNWOC41N0w4LjY2OTYxIDExLjVINC41Mjk2MUwxLjU5OTYxIDguNTdWNC40M0w0LjUyOTYxIDEuNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0ZFRTRFMlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjA5OTYxIDVMNS4wOTk2MSA4TTUuMDk5NjEgNUw4LjA5OTYxIDhNNC41Mjk2MSAxLjVIOC42Njk2MUwxMS41OTk2IDQuNDNWOC41N0w4LjY2OTYxIDExLjVINC41Mjk2MUwxLjU5OTYxIDguNTdWNC40M0w0LjUyOTYxIDEuNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE0MjhfNTk0ODRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuNTk5NjA5IDAuNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltZy1kb2MtdmFsdWVcIj5FbnRyeSBUaW1lIDoge3tvYmo/LmVudHJ5VG1lfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNSB0ZXh0LWVuZCBweS0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nbm9uLXRhZ2dpbmcnXCIgbmdiVG9vbHRpcD1cIllldCB0byB0YWcgdGhlIGN1c3RvbWVyXCIgcGxhY2VtZW50PVwidG9wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAxOSAxOFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMDIzNDQgNS42MjVINi4wMzA5NE0xNi4yMTU5IDEwLjQzMjVMMTAuODM4NCAxNS44MUMxMC42OTkxIDE1Ljk0OTUgMTAuNTMzNyAxNi4wNjAxIDEwLjM1MTYgMTYuMTM1NkMxMC4xNjk1IDE2LjIxMTEgOS45NzQzMSAxNi4yNDk5IDkuNzc3MTkgMTYuMjQ5OUM5LjU4MDA2IDE2LjI0OTkgOS4zODQ4NyAxNi4yMTExIDkuMjAyNzggMTYuMTM1NkM5LjAyMDY4IDE2LjA2MDEgOC44NTUyNSAxNS45NDk1IDguNzE1OTQgMTUuODFMMi4yNzM0NCA5LjM3NVYxLjg3NUg5Ljc3MzQ0TDE2LjIxNTkgOC4zMTc1QzE2LjQ5NTMgOC41OTg1NCAxNi42NTIxIDguOTc4NzIgMTYuNjUyMSA5LjM3NUMxNi42NTIxIDkuNzcxMjggMTYuNDk1MyAxMC4xNTE1IDE2LjIxNTkgMTAuNDMyNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2R1cGxpY2F0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwib2JqPy5pc1BhcmVudFwiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMTAgMTBcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF81NjhfMTAzNjU3KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIuMDgzOTggNi4yNTAwMUgxLjY2NzMyQzEuNDQ2MyA2LjI1MDAxIDEuMjM0MzQgNi4xNjIyMSAxLjA3ODA2IDYuMDA1OTNDMC45MjE3ODIgNS44NDk2NSAwLjgzMzk4NCA1LjYzNzY5IDAuODMzOTg0IDUuNDE2NjhWMS42NjY2OEMwLjgzMzk4NCAxLjQ0NTY2IDAuOTIxNzgyIDEuMjMzNyAxLjA3ODA2IDEuMDc3NDJDMS4yMzQzNCAwLjkyMTE0MSAxLjQ0NjMgMC44MzMzNDQgMS42NjczMiAwLjgzMzM0NEg1LjQxNzMyQzUuNjM4MzMgMC44MzMzNDQgNS44NTAyOSAwLjkyMTE0MSA2LjAwNjU3IDEuMDc3NDJDNi4xNjI4NSAxLjIzMzcgNi4yNTA2NSAxLjQ0NTY2IDYuMjUwNjUgMS42NjY2OFYyLjA4MzM0TTQuNTgzOTggMy43NTAwMUg4LjMzMzk4QzguNzk0MjIgMy43NTAwMSA5LjE2NzMyIDQuMTIzMTEgOS4xNjczMiA0LjU4MzM0VjguMzMzMzRDOS4xNjczMiA4Ljc5MzU4IDguNzk0MjIgOS4xNjY2OCA4LjMzMzk4IDkuMTY2NjhINC41ODM5OEM0LjEyMzc1IDkuMTY2NjggMy43NTA2NSA4Ljc5MzU4IDMuNzUwNjUgOC4zMzMzNFY0LjU4MzM0QzMuNzUwNjUgNC4xMjMxMSA0LjEyMzc1IDMuNzUwMDEgNC41ODM5OCAzLjc1MDAxWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNVwiIGhlaWdodD1cIjVcIiBmaWxsPVwiIzQ3NTQ2N1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfNTY4XzEwMzY1N1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFvYmo/LmlzUGFyZW50XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNC4xNjc5NyAxMy4xODU5SDMuMzM0NjRDMi44OTI2MSAxMy4xODU5IDIuNDY4NjggMTMuMDEwMyAyLjE1NjEyIDEyLjY5NzdDMS44NDM1NiAxMi4zODUyIDEuNjY3OTcgMTEuOTYxMiAxLjY2Nzk3IDExLjUxOTJWNC4wMTkyMUMxLjY2Nzk3IDMuNTc3MTggMS44NDM1NiAzLjE1MzI2IDIuMTU2MTIgMi44NDA2OUMyLjQ2ODY4IDIuNTI4MTMgMi44OTI2MSAyLjM1MjU0IDMuMzM0NjQgMi4zNTI1NEgxMC44MzQ2QzExLjI3NjcgMi4zNTI1NCAxMS43MDA2IDIuNTI4MTMgMTIuMDEzMSAyLjg0MDY5QzEyLjMyNTcgMy4xNTMyNiAxMi41MDEzIDMuNTc3MTggMTIuNTAxMyA0LjAxOTIxVjQuODUyNTRNOS4xNjc5NyA4LjE4NTg3SDE2LjY2OEMxNy41ODg0IDguMTg1ODcgMTguMzM0NiA4LjkzMjA2IDE4LjMzNDYgOS44NTI1NFYxNy4zNTI1QzE4LjMzNDYgMTguMjczIDE3LjU4ODQgMTkuMDE5MiAxNi42NjggMTkuMDE5Mkg5LjE2Nzk3QzguMjQ3NDkgMTkuMDE5MiA3LjUwMTMgMTguMjczIDcuNTAxMyAxNy4zNTI1VjkuODUyNTRDNy41MDEzIDguOTMyMDYgOC4yNDc0OSA4LjE4NTg3IDkuMTY3OTcgOC4xODU4N1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2VtcGxveWVlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMTY1NCAxOC4xODZWMTYuNTE5NEMxNC4xNjU0IDE1LjYzNTMgMTMuODE0MiAxNC43ODc1IDEzLjE4OTEgMTQuMTYyM0MxMi41NjM5IDEzLjUzNzIgMTEuNzE2MSAxMy4xODYgMTAuODMyIDEzLjE4Nkg0LjE2NTM2QzMuMjgxMzEgMTMuMTg2IDIuNDMzNDYgMTMuNTM3MiAxLjgwODM0IDE0LjE2MjNDMS4xODMyMiAxNC43ODc1IDAuODMyMDMxIDE1LjYzNTMgMC44MzIwMzEgMTYuNTE5NFYxOC4xODZNMTkuMTY1NCAxOC4xODZWMTYuNTE5NEMxOS4xNjQ4IDE1Ljc4MDggMTguOTE5IDE1LjA2MzMgMTguNDY2NSAxNC40Nzk2QzE4LjAxNCAxMy44OTU5IDE3LjM4MDUgMTMuNDc5IDE2LjY2NTQgMTMuMjk0NE0xMy4zMzIgMy4yOTQzN0MxNC4wNDkgMy40Nzc5NSAxNC42ODQ2IDMuODk0OTUgMTUuMTM4NCA0LjQ3OTYzQzE1LjU5MjIgNS4wNjQzIDE1LjgzODYgNS43ODMzOSAxNS44Mzg2IDYuNTIzNTRDMTUuODM4NiA3LjI2MzY4IDE1LjU5MjIgNy45ODI3NyAxNS4xMzg0IDguNTY3NDRDMTQuNjg0NiA5LjE1MjEyIDE0LjA0OSA5LjU2OTEyIDEzLjMzMiA5Ljc1MjdNMTAuODMyIDYuNTE5MzdDMTAuODMyIDguMzYwMzIgOS4zMzk2NSA5Ljg1MjcgNy40OTg3IDkuODUyN0M1LjY1Nzc1IDkuODUyNyA0LjE2NTM2IDguMzYwMzIgNC4xNjUzNiA2LjUxOTM3QzQuMTY1MzYgNC42Nzg0MiA1LjY1Nzc1IDMuMTg2MDQgNy40OTg3IDMuMTg2MDRDOS4zMzk2NSAzLjE4NjA0IDEwLjgzMiA0LjY3ODQyIDEwLjgzMiA2LjUxOTM3WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzOVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0naG91c2VLZWVwaW5nJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMjEgMjFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2NDMpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05LjI2MjE5IDEuMzY3MjJDMTAuMTc3NyAwLjQ1ODk3NCAxMS42NjIgMC40NTg5NzQgMTIuNTc3NiAxLjM2NzIyTDIwLjMxMzMgOS4wNDE1M0MyMS4yMjg3IDkuOTQ5OCAyMS4yMjg3IDExLjQyMjMgMjAuMzEzMyAxMi4zMzA2TDEyLjU3NzYgMjAuMDA0OUMxMS42NjIgMjAuOTEzMSAxMC4xNzc3IDIwLjkxMzEgOS4yNjIxOSAyMC4wMDQ5TDcuMDUxNjYgMTcuODExOUw1LjAyNTM4IDE5LjgyMjFDNC4xMDk4NyAyMC43MzAzIDIuNjI1NTMgMjAuNzMwMyAxLjcxMDAyIDE5LjgyMjFDMC43OTQ1MSAxOC45MTM5IDAuNzk0NTEgMTcuNDQxMyAxLjcxMDAyIDE2LjUzMzFMMy43MzYzIDE0LjUyMjlMMS41MjY0OCAxMi4zMzA2QzAuNjEwOTY2IDExLjQyMjMgMC42MTA5NjYgOS45NDk4IDEuNTI2NDggOS4wNDE1M0w5LjI2MjE5IDEuMzY3MjJaTTExLjQ3MjQgMi40NjM1N0MxMS4xNjcyIDIuMTYwODIgMTAuNjcyNCAyLjE2MDgyIDEwLjM2NzIgMi40NjM1N0w0Ljg0MTQ1IDcuOTQ1NTZMMTMuNjgyMyAxNi43MTYzTDE5LjIwODEgMTEuMjM0MkMxOS41MTMzIDEwLjkzMTUgMTkuNTEzMyAxMC40NDA2IDE5LjIwODEgMTAuMTM3OUwxNS4zMzk5IDYuMzAwMzJMMTQuMDUwNSA3LjU3OTRDMTMuNzQ1MyA3Ljg4MjE0IDEzLjI1MDYgNy44ODIxNCAxMi45NDU1IDcuNTc5NEMxMi42NDAzIDcuMjc2NjQgMTIuNjQwMyA2Ljc4NTc5IDEyLjk0NTUgNi40ODMwNUwxNC4yMzQ3IDUuMjAzOTdMMTMuMTI5OSA0LjEwNzg2TDkuOTk4NzIgNy4yMTQxOEM5LjY5MzU0IDcuNTE2OTIgOS4xOTg3MyA3LjUxNjkyIDguODkzNTYgNy4yMTQxOEM4LjU4ODM4IDYuOTExNDMgOC41ODgzOCA2LjQyMDU4IDguODkzNTYgNi4xMTc4M0wxMi4wMjQ3IDMuMDExNTFMMTEuNDcyNCAyLjQ2MzU3Wk0xMi41NzcxIDE3LjgxMjVMMy43MzYzMyA5LjA0MTkxTDIuNjMxNiAxMC4xMzc5QzIuMzI2NDIgMTAuNDQwNiAyLjMyNjQyIDEwLjkzMTUgMi42MzE2IDExLjIzNDJMMTAuMzY3MiAxOC45MDg1QzEwLjY3MjQgMTkuMjExMyAxMS4xNjcyIDE5LjIxMTMgMTEuNDcyNCAxOC45MDg1TDEyLjU3NzEgMTcuODEyNVpNNC44NDEzMiAxNS42MTkyTDIuODE1MTQgMTcuNjI5NEMyLjUwOTk3IDE3LjkzMjEgMi41MDk5NyAxOC40MjMgMi44MTUxNCAxOC43MjU4QzMuMTIwMzEgMTkuMDI4NSAzLjYxNTA5IDE5LjAyODUgMy45MjAyNiAxOC43MjU4TDUuOTQ2NDQgMTYuNzE1Nkw0Ljg0MTMyIDE1LjYxOTJaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzQ3NTQ2N1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjQzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdqdW5rJ1wiPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMyA2SDVNNSA2SDIxTTUgNlYyMEM1IDIwLjUzMDQgNS4yMTA3MSAyMS4wMzkxIDUuNTg1NzkgMjEuNDE0MkM1Ljk2MDg2IDIxLjc4OTMgNi40Njk1NyAyMiA3IDIySDE3QzE3LjUzMDQgMjIgMTguMDM5MSAyMS43ODkzIDE4LjQxNDIgMjEuNDE0MkMxOC43ODkzIDIxLjAzOTEgMTkgMjAuNTMwNCAxOSAyMFY2SDVaTTggNlY0QzggMy40Njk1NyA4LjIxMDcxIDIuOTYwODYgOC41ODU3OSAyLjU4NTc5QzguOTYwODYgMi4yMTA3MSA5LjQ2OTU3IDIgMTAgMkgxNEMxNC41MzA0IDIgMTUuMDM5MSAyLjIxMDcxIDE1LjQxNDIgMi41ODU3OUMxNS43ODkzIDIuOTYwODYgMTYgMy40Njk1NyAxNiA0VjZNMTAgMTFWMTdNMTQgMTFWMTdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICAgIDwhLS0gZnVsbCBpbWFnZSBWaWV3IC0tPlxuICAgICAgICAgICAgPHNlY3Rpb24gKm5nSWY9XCJpbWFnZUZsb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gVGlja2V0IEJsb2NrIEFsZXJ0IC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2V0U2VsZWN0ZWREYXRlQ2FyZERhdGEoKT8ucmFpc2VkU3RhdHVzRW5hYmxlZCA9PT0gJ2Jsb2NrJ1wiIGNsYXNzPVwiY29sLTEyIG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWJsb2NrLWFsZXJ0LWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1ibG9jay1hbGVydC1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTJcIiBmaWxsPVwiI0YwNDQzOFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA4VjEzXCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjE2XCIgcj1cIjFcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWJsb2NrLWFsZXJ0LXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnQtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2Fubm90IHJhaXNlIHRpY2tldCBmb3IgbmV4dCB7eyBnZXRTZWxlY3RlZERhdGVDYXJkRGF0YSgpPy5ub09mQmxvY2tlZERheXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAnMCcgfX0gZGF5c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWJsb2NrLWFsZXJ0LWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXQgbG9va3MgbGlrZSB5b3UgaGF2ZSBhY2hpZXZlZCA5NSUgYWNjdXJhY3kgZm9yIHRoZSB0aHJlZSB0aWNrZXRzIHJhaXNlZCB0aGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGguIFRoaXMgbGltaXRzIHlvdSBmcm9tIHJhaXNpbmcgbW9yZSB0aWNrZXRzIHRvIGF2b2lkIHJlZHVuZGFuY3kuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnQtYWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHN0aWxsIHdhbnQgdG8gcmFpc2UgdGlja2V0cywgPHNwYW4gY2xhc3M9XCJ0aWNrZXQtYmxvY2stYWxlcnQtbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXF1ZXN0UmVzZXQoKVwiPnNlbmQgcmVxdWVzdDwvc3Bhbj4gdG8gcmVzZXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gVGlja2V0IFJlcXVlc3QgU3VjY2VzcyBBbGVydCAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdldFNlbGVjdGVkRGF0ZUNhcmREYXRhKCk/LnJhaXNlZFN0YXR1c0VuYWJsZWQgPT09ICdyZXF1ZXN0J1wiIGNsYXNzPVwiY29sLTEyIG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtcmVxdWVzdC1hbGVydFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtcmVxdWVzdC1hbGVydC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtcmVxdWVzdC1hbGVydC1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMiAyMUwyMyAxMkwyIDNWMTBMMTcgMTJMMiAxNFYyMVpcIiBmaWxsPVwiIzEwQjk4MVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aWNrZXQtcmVxdWVzdC1hbGVydC10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LXJlcXVlc3QtYWxlcnQtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNldCBSZXF1ZXN0IFNlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1yZXF1ZXN0LWFsZXJ0LWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91ciByZXF1ZXN0IHRvIGVuYWJsZSB0aWNrZXQgcmFpc2luZyBoYXMgYmVlbiBzdWJtaXR0ZWQuIFlvdSdsbCBiZSBub3RpZmllZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uY2UgaXQncyBhcHByb3ZlZC4gUGxlYXNlIGVuc3VyZSBmdXR1cmUgdGlja2V0IGFjY3VyYWN5IHJlbWFpbnMgd2l0aGluIHRoZSA5NSVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlc2hvbGQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtMiBtYi0yIHctMTAwIG92ZXJmbG93LXggcHgtMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3RmYWxsVHJlbmRzVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aWNrZXRTdGF0dXNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1zaHJpbmstMCBtdC0zIGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1jZW50ZXIgcHgtMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdvcGVuJykgJiYgIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ2Nsb3NlZCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1zLWF1dG8gdGV4dC1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2dldFRpY2tldFN0YXR1cygpfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCIhY2FuRW5hYmxlQnV0dG9uKClcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiUmFpc2VkKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmFpc2UgdGlja2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtZ3JvdXAgYmctd2hpdGUgYm9yZGVyLTEgYnRuLWdyb3VwIHctYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEoY291bnREYXRhPy5sZW5ndGggPiAwKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2Zvb3RmYWxsJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW5UcmVuZHMoJ2Zvb3RmYWxsJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG90YWwgRm9vdGZhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdmb290ZmFsbCcgPyAnYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1hY3RpdmUnIDogJ2luYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnREYXRhPy5mb290ZmFsbENvdW50IHx8IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnbm9uLXRhZ2dpbmcnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UGxhblRyZW5kcygnbm9uLXRhZ2dpbmcnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb24tdGFnc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ25vbi10YWdnaW5nJyA/ICdhY3RpdmVQbGFuQnRuIGJhZGdlIGJhZGdlLWFjdGl2ZScgOiAnaW5hY3RpdmVQbGFuQnRuIGJhZGdlIGJhZGdlLWxpZ2h0LWRlZmF1bHQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudERhdGE/Lm5vblRhZ3MgfHwgMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHB4LTYgcHktM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdkdXBsaWNhdGUnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UGxhblRyZW5kcygnZHVwbGljYXRlJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHVwbGljYXRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2R1cGxpY2F0ZScgPyAnYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1hY3RpdmUnIDogJ2luYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnREYXRhPy5kdXBsaWNhdGUgfHwgMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHB4LTYgcHktM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdlbXBsb3llZScgPyAnYWN0aXZlUGxhbkJ0bicgOiAnaW5hY3RpdmVQbGFuQnRuJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuVHJlbmRzKCdlbXBsb3llZScpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcGxveWVlL1N0YWZmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZW1wbG95ZWUnID8gJ2FjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtYWN0aXZlJyA6ICdpbmFjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvdW50RGF0YT8uZW1wbG95ZWUgfHwgMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnanVuaycgPyAnYWN0aXZlUGxhbkJ0bicgOiAnaW5hY3RpdmVQbGFuQnRuJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuVHJlbmRzKCdqdW5rJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnVua1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2p1bmsnID8gJ2JhZGdlIGJhZGdlLWFjdGl2ZSBhY3RpdmVQbGFuQnRuJyA6ICcgYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCBpbmFjdGl2ZVBsYW5CdG4nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudERhdGE/Lmp1bmsgfHwgMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnaG91c2VLZWVwaW5nJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW5UcmVuZHMoJ2hvdXNlS2VlcGluZycpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvdXNlIEtlZXBpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdob3VzZUtlZXBpbmcnID8gJ2JhZGdlIGJhZGdlLWFjdGl2ZSBhY3RpdmVQbGFuQnRuJyA6ICcgYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCBpbmFjdGl2ZVBsYW5CdG4nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudERhdGE/LmhvdXNlS2VlcGluZyB8fCAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBteC0wIGJvcmRlci1ncmF5IGltZy10cmFmZmljXCIgKm5nSWY9XCIhbm9EYXRhICYmICFsb2FkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgcC0yICBtYi0yIG10LTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgYm9yZGVyLWdyYXkgcC0yIFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIE1haW4gSW1hZ2UgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGltZyBjbGFzcz1cImltZy1zcmMgY3Vyc29yLXBvaW50ZXIgaC00NTBweFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RlZEltYWdlQXJyYXkoaW1hZ2VVcmwsIHNlbGVjdEltYWdlQXJyYXkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpbWFnZVVybCArIHNlbGVjdEltYWdlQXJyYXk/LmZpbGVQYXRoXCIgYXBwTWFnbmlmaWVyIGFsdD1cIlwiPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmMgY3Vyc29yLXBvaW50ZXIgaC00NTBweFwiIChjbGljayk9XCJzZWxlY3RlZEltYWdlQXJyYXkoaW1hZ2VVcmwsIHNlbGVjdEltYWdlQXJyYXkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaW1hZ2VVcmwgKyBzZWxlY3RJbWFnZUFycmF5Py5maWxlUGF0aFwiIGFsdD1cIlwiPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBSaWdodCBhcnJvdyBidXR0b24gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktMiBpbWctZG9jLXRpbWVcIj5UYW5nbyBJRCA6IHt7c2VsZWN0SW1hZ2VBcnJheT8udGVtcGxkfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RJbWFnZUFycmF5Py5zdGF0dXMgPT09J2FwcHJvdmVkJ1wiIGNsYXNzPVwibXMtMlwiPjxzdmcgc3R5bGU9XCJ3aWR0aDogMjBweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjBweDtcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjExXCIgdmlld0JveD1cIjAgMCAxMCAxMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeT1cIjAuNVwiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHJ4PVwiNVwiIGZpbGw9XCIjRDFGQURGXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNy4xMjIyIDMuNTc5MTlMNC4xMzg4NyA2LjQ1ODM2TDMuMzQ3MiA1LjYxMjUzQzMuMjAxMzcgNS40NzUwMyAyLjk3MjIgNS40NjY2OSAyLjgwNTUzIDUuNTgzMzZDMi42NDMwMyA1LjcwNDE5IDIuNTk3MiA1LjkxNjY5IDIuNjk3MiA2LjA4NzUzTDMuNjM0NyA3LjYxMjUzQzMuNzI2MzcgNy43NTQxOSAzLjg4NDcgNy44NDE2OSA0LjA2Mzg3IDcuODQxNjlDNC4yMzQ3IDcuODQxNjkgNC4zOTcyIDcuNzU0MTkgNC40ODg4NyA3LjYxMjUzQzQuNjM4ODcgNy40MTY2OSA3LjUwMTM3IDQuMDA0MTkgNy41MDEzNyA0LjAwNDE5QzcuODc2MzcgMy42MjA4NiA3LjQyMjIgMy4yODMzNiA3LjEyMjIgMy41NzUwM1YzLjU3OTE5WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMTJCNzZBXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RJbWFnZUFycmF5Py5zdGF0dXMgPT09J3JlamVjdGVkJ1wiIGNsYXNzPVwibXMtMlwiPjxzdmcgc3R5bGU9XCJ3aWR0aDogMjBweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjBweDtcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjEzXCIgdmlld0JveD1cIjAgMCAxMyAxM1wiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xNDI4XzU5NDg0KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00LjUyOTYxIDEuNUg4LjY2OTYxTDExLjU5OTYgNC40M1Y4LjU3TDguNjY5NjEgMTEuNUg0LjUyOTYxTDEuNTk5NjEgOC41N1Y0LjQzTDQuNTI5NjEgMS41WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0ZFRTRFMlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDk5NjEgNUw1LjA5OTYxIDhNNS4wOTk2MSA1TDguMDk5NjEgOE00LjUyOTYxIDEuNUg4LjY2OTYxTDExLjU5OTYgNC40M1Y4LjU3TDguNjY5NjEgMTEuNUg0LjUyOTYxTDEuNTk5NjEgOC41N1Y0LjQzTDQuNTI5NjEgMS41WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE0MjhfNTk0ODRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLjU5OTYwOSAwLjUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltZy1kb2MtdmFsdWVcIj5FbnRyeSBUaW1lIDoge3sodGVtcE1vZGFsSW1hZ2UgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0SW1hZ2VBcnJheSk/LmVudHJ5VG1lIHx8ICh0ZW1wTW9kYWxJbWFnZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RJbWFnZUFycmF5KT8uZW50cnlUaW1lfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01IHRleHQtZW5kIHB5LTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIih0ZW1wTW9kYWxJbWFnZSB8fCBzZWxlY3RJbWFnZUFycmF5KT8ucmV2b3BzVHlwZSA9PT0nbm9uLXRhZ2dpbmcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cIllldCB0byB0YWcgdGhlIGN1c3RvbWVyXCIgcGxhY2VtZW50PVwidG9wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTlcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTkgMThcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMDIzNDQgNS42MjVINi4wMzA5NE0xNi4yMTU5IDEwLjQzMjVMMTAuODM4NCAxNS44MUMxMC42OTkxIDE1Ljk0OTUgMTAuNTMzNyAxNi4wNjAxIDEwLjM1MTYgMTYuMTM1NkMxMC4xNjk1IDE2LjIxMTEgOS45NzQzMSAxNi4yNDk5IDkuNzc3MTkgMTYuMjQ5OUM5LjU4MDA2IDE2LjI0OTkgOS4zODQ4NyAxNi4yMTExIDkuMjAyNzggMTYuMTM1NkM5LjAyMDY4IDE2LjA2MDEgOC44NTUyNSAxNS45NDk1IDguNzE1OTQgMTUuODFMMi4yNzM0NCA5LjM3NVYxLjg3NUg5Ljc3MzQ0TDE2LjIxNTkgOC4zMTc1QzE2LjQ5NTMgOC41OTg1NCAxNi42NTIxIDguOTc4NzIgMTYuNjUyMSA5LjM3NUMxNi42NTIxIDkuNzcxMjggMTYuNDk1MyAxMC4xNTE1IDE2LjIxNTkgMTAuNDMyNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0SW1hZ2VBcnJheT8ucmV2b3BzVHlwZSA9PT0nZHVwbGljYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwic2VsZWN0SW1hZ2VBcnJheT8uaXNQYXJlbnRcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDEwIDEwXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF81NjhfMTAzNjU3KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi4wODM5OCA2LjI1MDAxSDEuNjY3MzJDMS40NDYzIDYuMjUwMDEgMS4yMzQzNCA2LjE2MjIxIDEuMDc4MDYgNi4wMDU5M0MwLjkyMTc4MiA1Ljg0OTY1IDAuODMzOTg0IDUuNjM3NjkgMC44MzM5ODQgNS40MTY2OFYxLjY2NjY4QzAuODMzOTg0IDEuNDQ1NjYgMC45MjE3ODIgMS4yMzM3IDEuMDc4MDYgMS4wNzc0MkMxLjIzNDM0IDAuOTIxMTQxIDEuNDQ2MyAwLjgzMzM0NCAxLjY2NzMyIDAuODMzMzQ0SDUuNDE3MzJDNS42MzgzMyAwLjgzMzM0NCA1Ljg1MDI5IDAuOTIxMTQxIDYuMDA2NTcgMS4wNzc0MkM2LjE2Mjg1IDEuMjMzNyA2LjI1MDY1IDEuNDQ1NjYgNi4yNTA2NSAxLjY2NjY4VjIuMDgzMzRNNC41ODM5OCAzLjc1MDAxSDguMzMzOThDOC43OTQyMiAzLjc1MDAxIDkuMTY3MzIgNC4xMjMxMSA5LjE2NzMyIDQuNTgzMzRWOC4zMzMzNEM5LjE2NzMyIDguNzkzNTggOC43OTQyMiA5LjE2NjY4IDguMzMzOTggOS4xNjY2OEg0LjU4Mzk4QzQuMTIzNzUgOS4xNjY2OCAzLjc1MDY1IDguNzkzNTggMy43NTA2NSA4LjMzMzM0VjQuNTgzMzRDMy43NTA2NSA0LjEyMzExIDQuMTIzNzUgMy43NTAwMSA0LjU4Mzk4IDMuNzUwMDFaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI1XCIgaGVpZ2h0PVwiNVwiIGZpbGw9XCIjNDc1NDY3XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzU2OF8xMDM2NTdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFzZWxlY3RJbWFnZUFycmF5Py5pc1BhcmVudFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00LjE2Nzk3IDEzLjE4NTlIMy4zMzQ2NEMyLjg5MjYxIDEzLjE4NTkgMi40Njg2OCAxMy4wMTAzIDIuMTU2MTIgMTIuNjk3N0MxLjg0MzU2IDEyLjM4NTIgMS42Njc5NyAxMS45NjEyIDEuNjY3OTcgMTEuNTE5MlY0LjAxOTIxQzEuNjY3OTcgMy41NzcxOCAxLjg0MzU2IDMuMTUzMjYgMi4xNTYxMiAyLjg0MDY5QzIuNDY4NjggMi41MjgxMyAyLjg5MjYxIDIuMzUyNTQgMy4zMzQ2NCAyLjM1MjU0SDEwLjgzNDZDMTEuMjc2NyAyLjM1MjU0IDExLjcwMDYgMi41MjgxMyAxMi4wMTMxIDIuODQwNjlDMTIuMzI1NyAzLjE1MzI2IDEyLjUwMTMgMy41NzcxOCAxMi41MDEzIDQuMDE5MjFWNC44NTI1NE05LjE2Nzk3IDguMTg1ODdIMTYuNjY4QzE3LjU4ODQgOC4xODU4NyAxOC4zMzQ2IDguOTMyMDYgMTguMzM0NiA5Ljg1MjU0VjE3LjM1MjVDMTguMzM0NiAxOC4yNzMgMTcuNTg4NCAxOS4wMTkyIDE2LjY2OCAxOS4wMTkySDkuMTY3OTdDOC4yNDc0OSAxOS4wMTkyIDcuNTAxMyAxOC4yNzMgNy41MDEzIDE3LjM1MjVWOS44NTI1NEM3LjUwMTMgOC45MzIwNiA4LjI0NzQ5IDguMTg1ODcgOS4xNjc5NyA4LjE4NTg3WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RJbWFnZUFycmF5Py5yZXZvcHNUeXBlID09PSdlbXBsb3llZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xNjU0IDE4LjE4NlYxNi41MTk0QzE0LjE2NTQgMTUuNjM1MyAxMy44MTQyIDE0Ljc4NzUgMTMuMTg5MSAxNC4xNjIzQzEyLjU2MzkgMTMuNTM3MiAxMS43MTYxIDEzLjE4NiAxMC44MzIgMTMuMTg2SDQuMTY1MzZDMy4yODEzMSAxMy4xODYgMi40MzM0NiAxMy41MzcyIDEuODA4MzQgMTQuMTYyM0MxLjE4MzIyIDE0Ljc4NzUgMC44MzIwMzEgMTUuNjM1MyAwLjgzMjAzMSAxNi41MTk0VjE4LjE4Nk0xOS4xNjU0IDE4LjE4NlYxNi41MTk0QzE5LjE2NDggMTUuNzgwOCAxOC45MTkgMTUuMDYzMyAxOC40NjY1IDE0LjQ3OTZDMTguMDE0IDEzLjg5NTkgMTcuMzgwNSAxMy40NzkgMTYuNjY1NCAxMy4yOTQ0TTEzLjMzMiAzLjI5NDM3QzE0LjA0OSAzLjQ3Nzk1IDE0LjY4NDYgMy44OTQ5NSAxNS4xMzg0IDQuNDc5NjNDMTUuNTkyMiA1LjA2NDMgMTUuODM4NiA1Ljc4MzM5IDE1LjgzODYgNi41MjM1NEMxNS44Mzg2IDcuMjYzNjggMTUuNTkyMiA3Ljk4Mjc3IDE1LjEzODQgOC41Njc0NEMxNC42ODQ2IDkuMTUyMTIgMTQuMDQ5IDkuNTY5MTIgMTMuMzMyIDkuNzUyN00xMC44MzIgNi41MTkzN0MxMC44MzIgOC4zNjAzMiA5LjMzOTY1IDkuODUyNyA3LjQ5ODcgOS44NTI3QzUuNjU3NzUgOS44NTI3IDQuMTY1MzYgOC4zNjAzMiA0LjE2NTM2IDYuNTE5MzdDNC4xNjUzNiA0LjY3ODQyIDUuNjU3NzUgMy4xODYwNCA3LjQ5ODcgMy4xODYwNEM5LjMzOTY1IDMuMTg2MDQgMTAuODMyIDQuNjc4NDIgMTAuODMyIDYuNTE5MzdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzOVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXk/LnJldm9wc1R5cGUgPT09J2hvdXNlS2VlcGluZydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAyMSAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2NDMpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuMjYyMTkgMS4zNjcyMkMxMC4xNzc3IDAuNDU4OTc0IDExLjY2MiAwLjQ1ODk3NCAxMi41Nzc2IDEuMzY3MjJMMjAuMzEzMyA5LjA0MTUzQzIxLjIyODcgOS45NDk4IDIxLjIyODcgMTEuNDIyMyAyMC4zMTMzIDEyLjMzMDZMMTIuNTc3NiAyMC4wMDQ5QzExLjY2MiAyMC45MTMxIDEwLjE3NzcgMjAuOTEzMSA5LjI2MjE5IDIwLjAwNDlMNy4wNTE2NiAxNy44MTE5TDUuMDI1MzggMTkuODIyMUM0LjEwOTg3IDIwLjczMDMgMi42MjU1MyAyMC43MzAzIDEuNzEwMDIgMTkuODIyMUMwLjc5NDUxIDE4LjkxMzkgMC43OTQ1MSAxNy40NDEzIDEuNzEwMDIgMTYuNTMzMUwzLjczNjMgMTQuNTIyOUwxLjUyNjQ4IDEyLjMzMDZDMC42MTA5NjYgMTEuNDIyMyAwLjYxMDk2NiA5Ljk0OTggMS41MjY0OCA5LjA0MTUzTDkuMjYyMTkgMS4zNjcyMlpNMTEuNDcyNCAyLjQ2MzU3QzExLjE2NzIgMi4xNjA4MiAxMC42NzI0IDIuMTYwODIgMTAuMzY3MiAyLjQ2MzU3TDQuODQxNDUgNy45NDU1NkwxMy42ODIzIDE2LjcxNjNMMTkuMjA4MSAxMS4yMzQyQzE5LjUxMzMgMTAuOTMxNSAxOS41MTMzIDEwLjQ0MDYgMTkuMjA4MSAxMC4xMzc5TDE1LjMzOTkgNi4zMDAzMkwxNC4wNTA1IDcuNTc5NEMxMy43NDUzIDcuODgyMTQgMTMuMjUwNiA3Ljg4MjE0IDEyLjk0NTUgNy41Nzk0QzEyLjY0MDMgNy4yNzY2NCAxMi42NDAzIDYuNzg1NzkgMTIuOTQ1NSA2LjQ4MzA1TDE0LjIzNDcgNS4yMDM5N0wxMy4xMjk5IDQuMTA3ODZMOS45OTg3MiA3LjIxNDE4QzkuNjkzNTQgNy41MTY5MiA5LjE5ODczIDcuNTE2OTIgOC44OTM1NiA3LjIxNDE4QzguNTg4MzggNi45MTE0MyA4LjU4ODM4IDYuNDIwNTggOC44OTM1NiA2LjExNzgzTDEyLjAyNDcgMy4wMTE1MUwxMS40NzI0IDIuNDYzNTdaTTEyLjU3NzEgMTcuODEyNUwzLjczNjMzIDkuMDQxOTFMMi42MzE2IDEwLjEzNzlDMi4zMjY0MiAxMC40NDA2IDIuMzI2NDIgMTAuOTMxNSAyLjYzMTYgMTEuMjM0MkwxMC4zNjcyIDE4LjkwODVDMTAuNjcyNCAxOS4yMTEzIDExLjE2NzIgMTkuMjExMyAxMS40NzI0IDE4LjkwODVMMTIuNTc3MSAxNy44MTI1Wk00Ljg0MTMyIDE1LjYxOTJMMi44MTUxNCAxNy42Mjk0QzIuNTA5OTcgMTcuOTMyMSAyLjUwOTk3IDE4LjQyMyAyLjgxNTE0IDE4LjcyNThDMy4xMjAzMSAxOS4wMjg1IDMuNjE1MDkgMTkuMDI4NSAzLjkyMDI2IDE4LjcyNThMNS45NDY0NCAxNi43MTU2TDQuODQxMzIgMTUuNjE5MlpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzQ3NTQ2N1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjQzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0SW1hZ2VBcnJheT8ucmV2b3BzVHlwZSA9PT0gJ2p1bmsnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTMgNkg1TTUgNkgyMU01IDZWMjBDNSAyMC41MzA0IDUuMjEwNzEgMjEuMDM5MSA1LjU4NTc5IDIxLjQxNDJDNS45NjA4NiAyMS43ODkzIDYuNDY5NTcgMjIgNyAyMkgxN0MxNy41MzA0IDIyIDE4LjAzOTEgMjEuNzg5MyAxOC40MTQyIDIxLjQxNDJDMTguNzg5MyAyMS4wMzkxIDE5IDIwLjUzMDQgMTkgMjBWNkg1Wk04IDZWNEM4IDMuNDY5NTcgOC4yMTA3MSAyLjk2MDg2IDguNTg1NzkgMi41ODU3OUM4Ljk2MDg2IDIuMjEwNzEgOS40Njk1NyAyIDEwIDJIMTRDMTQuNTMwNCAyIDE1LjAzOTEgMi4yMTA3MSAxNS40MTQyIDIuNTg1NzlDMTUuNzg5MyAyLjk2MDg2IDE2IDMuNDY5NTcgMTYgNFY2TTEwIDExVjE3TTE0IDExVjE3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBwLTIgbWItMiAgbXQtNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0yIFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgdGl0bGUtdHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCBub24tc2hvcHBlciB0eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c2VjdGlvbiBjbGFzcz1cImNvbC1tZC02IHRleHQtZW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiISh1c2Vycz8ucm9sZSA9PT0ndXNlcicgJiYgdXNlcnM/LnVzZXJUeXBlID09PSdjbGllbnQnICYmIHNlbGVjdGVkUmFkaW9UeXBlID09PSdqdW5rJylcIj4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNvbC1tZC02IHRleHQtZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhcmV2b3BzVHlwZVZhbHVlXCIgY2xhc3M9XCJtYi01IHRleHQtZW5kXCIgcm9sZT1cImdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnb3BlbicpICYmICFnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdjbG9zZWQnKVwiPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkUmFkaW9UeXBlID09PSB1bmRlZmluZWQgfHwgc2VsZWN0ZWRSYWRpb1R5cGUgPT09ICcnKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkUmFkaW9UeXBlID09PSAnZHVwbGljYXRlJyAmJiBzZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsZWFyVmFsdWUoKVwiPkNsZWFyPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIG1lLTJcIiAoY2xpY2spPVwiY2FuY2VsKClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBpZD1cImFsZXJ0LXRvYXN0XCIgKGNsaWNrKT1cInNhdmUoc2VsZWN0ZWRUeXBlKVwiIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZFJhZGlvVHlwZSA9PT0gdW5kZWZpbmVkIHx8IHNlbGVjdGVkUmFkaW9UeXBlID09PSAnJykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZFJhZGlvVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0Lmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhdmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwiISh1c2Vycz8ucm9sZSA9PT0ndXNlcicgJiYgdXNlcnM/LnVzZXJUeXBlID09PSdjbGllbnQnICYmIHNlbGVjdGVkUmFkaW9UeXBlID09PSdqdW5rJylcIj4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkUmFkaW9UeXBlID09PSdqdW5rJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWRpdEJ0blNob3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZXZvcHNUeXBlVmFsdWVcIiBjbGFzcz1cIm1iLTUgdGV4dC1lbmRcIiByb2xlPVwiZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ29wZW4nKSAmJiAhZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnY2xvc2VkJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBtZS0yXCIgKGNsaWNrKT1cImVkaXRWYWx1ZSgpXCI+PHNwYW4gY2xhc3M9XCJtZS0yXCI+PHN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuNjU1NCAxLjcxMDQ3QzE0Ljg5MjcgMS40NzMxNSAxNS4xNzQ1IDEuMjg0OSAxNS40ODQ1IDEuMTU2NDZDMTUuNzk0NiAxLjAyODAyIDE2LjEyNjkgMC45NjE5MTQgMTYuNDYyNiAwLjk2MTkxNEMxNi43OTgyIDAuOTYxOTE0IDE3LjEzMDUgMS4wMjgwMiAxNy40NDA2IDEuMTU2NDZDMTcuNzUwNyAxLjI4NDkgMTguMDMyNCAxLjQ3MzE1IDE4LjI2OTcgMS43MTA0N0MxOC41MDcxIDEuOTQ3NzkgMTguNjk1MyAyLjIyOTUzIDE4LjgyMzggMi41Mzk2MUMxOC45NTIyIDIuODQ5NjkgMTkuMDE4MyAzLjE4MjAyIDE5LjAxODMgMy41MTc2NUMxOS4wMTgzIDMuODUzMjcgMTguOTUyMiA0LjE4NTYxIDE4LjgyMzggNC40OTU2OEMxOC42OTUzIDQuODA1NzYgMTguNTA3MSA1LjA4NzUgMTguMjY5NyA1LjMyNDgyTDYuMDcxMyAxNy41MjMzTDEuMTAxNTYgMTguODc4NkwyLjQ1Njk1IDEzLjkwODlMMTQuNjU1NCAxLjcxMDQ3WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjgxMDc5XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5FZGl0PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBteS0xNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJkdXBsaWNhdGVcIiBpZD1cImR1cGxpY2F0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFR5cGVcIiBbdmFsdWVdPVwiJ2R1cGxpY2F0ZSdcIiAoY2hhbmdlKT1cIm9uUmFkaW9DaGFuZ2Uoc2VsZWN0ZWRUeXBlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJldm9wc1R5cGVWYWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImR1cGxpY2F0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzNSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTUgdGFnLWNsYXNzXCI+RHVwbGljYXRlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG15LTE1XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgbmFtZT1cImVtcGxveWVlXCIgaWQ9XCJlbXBsb3llZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFR5cGVcIiBbdmFsdWVdPVwiJ2VtcGxveWVlJ1wiIChjaGFuZ2UpPVwib25SYWRpb0NoYW5nZShzZWxlY3RlZFR5cGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicmV2b3BzVHlwZVZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiZW1wbG95ZWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTVcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xNjU0IDE4LjE4NlYxNi41MTk0QzE0LjE2NTQgMTUuNjM1MyAxMy44MTQyIDE0Ljc4NzUgMTMuMTg5MSAxNC4xNjIzQzEyLjU2MzkgMTMuNTM3MiAxMS43MTYxIDEzLjE4NiAxMC44MzIgMTMuMTg2SDQuMTY1MzZDMy4yODEzMSAxMy4xODYgMi40MzM0NiAxMy41MzcyIDEuODA4MzQgMTQuMTYyM0MxLjE4MzIyIDE0Ljc4NzUgMC44MzIwMzEgMTUuNjM1MyAwLjgzMjAzMSAxNi41MTk0VjE4LjE4Nk0xOS4xNjU0IDE4LjE4NlYxNi41MTk0QzE5LjE2NDggMTUuNzgwOCAxOC45MTkgMTUuMDYzMyAxOC40NjY1IDE0LjQ3OTZDMTguMDE0IDEzLjg5NTkgMTcuMzgwNSAxMy40NzkgMTYuNjY1NCAxMy4yOTQ0TTEzLjMzMiAzLjI5NDM3QzE0LjA0OSAzLjQ3Nzk1IDE0LjY4NDYgMy44OTQ5NSAxNS4xMzg0IDQuNDc5NjNDMTUuNTkyMiA1LjA2NDMgMTUuODM4NiA1Ljc4MzM5IDE1LjgzODYgNi41MjM1NEMxNS44Mzg2IDcuMjYzNjggMTUuNTkyMiA3Ljk4Mjc3IDE1LjEzODQgOC41Njc0NEMxNC42ODQ2IDkuMTUyMTIgMTQuMDQ5IDkuNTY5MTIgMTMuMzMyIDkuNzUyN00xMC44MzIgNi41MTkzN0MxMC44MzIgOC4zNjAzMiA5LjMzOTY1IDkuODUyNyA3LjQ5ODcgOS44NTI3QzUuNjU3NzUgOS44NTI3IDQuMTY1MzYgOC4zNjAzMiA0LjE2NTM2IDYuNTE5MzdDNC4xNjUzNiA0LjY3ODQyIDUuNjU3NzUgMy4xODYwNCA3LjQ5ODcgMy4xODYwNEM5LjMzOTY1IDMuMTg2MDQgMTAuODMyIDQuNjc4NDIgMTAuODMyIDYuNTE5MzdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzOVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTUgdGFnLWNsYXNzXCI+RW1wbG95ZWUvU3RhZmY8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbXktMTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwiaG91c2Uta2VlcGluZ1wiIGlkPVwiaG91c2Uta2VlcGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFR5cGVcIiBbdmFsdWVdPVwiJ2hvdXNlS2VlcGluZydcIiAoY2hhbmdlKT1cIm9uUmFkaW9DaGFuZ2Uoc2VsZWN0ZWRUeXBlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJldm9wc1R5cGVWYWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImhvdXNlLWtlZXBpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTVcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMSAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2NDMpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuMjYyMTkgMS4zNjcyMkMxMC4xNzc3IDAuNDU4OTc0IDExLjY2MiAwLjQ1ODk3NCAxMi41Nzc2IDEuMzY3MjJMMjAuMzEzMyA5LjA0MTUzQzIxLjIyODcgOS45NDk4IDIxLjIyODcgMTEuNDIyMyAyMC4zMTMzIDEyLjMzMDZMMTIuNTc3NiAyMC4wMDQ5QzExLjY2MiAyMC45MTMxIDEwLjE3NzcgMjAuOTEzMSA5LjI2MjE5IDIwLjAwNDlMNy4wNTE2NiAxNy44MTE5TDUuMDI1MzggMTkuODIyMUM0LjEwOTg3IDIwLjczMDMgMi42MjU1MyAyMC43MzAzIDEuNzEwMDIgMTkuODIyMUMwLjc5NDUxIDE4LjkxMzkgMC43OTQ1MSAxNy40NDEzIDEuNzEwMDIgMTYuNTMzMUwzLjczNjMgMTQuNTIyOUwxLjUyNjQ4IDEyLjMzMDZDMC42MTA5NjYgMTEuNDIyMyAwLjYxMDk2NiA5Ljk0OTggMS41MjY0OCA5LjA0MTUzTDkuMjYyMTkgMS4zNjcyMlpNMTEuNDcyNCAyLjQ2MzU3QzExLjE2NzIgMi4xNjA4MiAxMC42NzI0IDIuMTYwODIgMTAuMzY3MiAyLjQ2MzU3TDQuODQxNDUgNy45NDU1NkwxMy42ODIzIDE2LjcxNjNMMTkuMjA4MSAxMS4yMzQyQzE5LjUxMzMgMTAuOTMxNSAxOS41MTMzIDEwLjQ0MDYgMTkuMjA4MSAxMC4xMzc5TDE1LjMzOTkgNi4zMDAzMkwxNC4wNTA1IDcuNTc5NEMxMy43NDUzIDcuODgyMTQgMTMuMjUwNiA3Ljg4MjE0IDEyLjk0NTUgNy41Nzk0QzEyLjY0MDMgNy4yNzY2NCAxMi42NDAzIDYuNzg1NzkgMTIuOTQ1NSA2LjQ4MzA1TDE0LjIzNDcgNS4yMDM5N0wxMy4xMjk5IDQuMTA3ODZMOS45OTg3MiA3LjIxNDE4QzkuNjkzNTQgNy41MTY5MiA5LjE5ODczIDcuNTE2OTIgOC44OTM1NiA3LjIxNDE4QzguNTg4MzggNi45MTE0MyA4LjU4ODM4IDYuNDIwNTggOC44OTM1NiA2LjExNzgzTDEyLjAyNDcgMy4wMTE1MUwxMS40NzI0IDIuNDYzNTdaTTEyLjU3NzEgMTcuODEyNUwzLjczNjMzIDkuMDQxOTFMMi42MzE2IDEwLjEzNzlDMi4zMjY0MiAxMC40NDA2IDIuMzI2NDIgMTAuOTMxNSAyLjYzMTYgMTEuMjM0MkwxMC4zNjcyIDE4LjkwODVDMTAuNjcyNCAxOS4yMTEzIDExLjE2NzIgMTkuMjExMyAxMS40NzI0IDE4LjkwODVMMTIuNTc3MSAxNy44MTI1Wk00Ljg0MTMyIDE1LjYxOTJMMi44MTUxNCAxNy42Mjk0QzIuNTA5OTcgMTcuOTMyMSAyLjUwOTk3IDE4LjQyMyAyLjgxNTE0IDE4LjcyNThDMy4xMjAzMSAxOS4wMjg1IDMuNjE1MDkgMTkuMDI4NSAzLjkyMDI2IDE4LjcyNThMNS45NDY0NCAxNi43MTU2TDQuODQxMzIgMTUuNjE5MlpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzQ3NTQ2N1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjQzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNSB0YWctY2xhc3NcIj4gSG91c2UgS2VlcGluZzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBteS0xNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJqdW5rXCIgaWQ9XCJqdW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVHlwZVwiIFt2YWx1ZV09XCInanVuaydcIiAoY2hhbmdlKT1cIm9uUmFkaW9DaGFuZ2Uoc2VsZWN0ZWRUeXBlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInVzZXJzPy5yb2xlID09PSd1c2VyJyAmJiB0aGlzLnVzZXJzPy51c2VyVHlwZSA9PT0nY2xpZW50JyB8fCByZXZvcHNUeXBlVmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJqdW5rXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01XCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTMgNkg1TTUgNkgyMU01IDZWMjBDNSAyMC41MzA0IDUuMjEwNzEgMjEuMDM5MSA1LjU4NTc5IDIxLjQxNDJDNS45NjA4NiAyMS43ODkzIDYuNDY5NTcgMjIgNyAyMkgxN0MxNy41MzA0IDIyIDE4LjAzOTEgMjEuNzg5MyAxOC40MTQyIDIxLjQxNDJDMTguNzg5MyAyMS4wMzkxIDE5IDIwLjUzMDQgMTkgMjBWNkg1Wk04IDZWNEM4IDMuNDY5NTcgOC4yMTA3MSAyLjk2MDg2IDguNTg1NzkgMi41ODU3OUM4Ljk2MDg2IDIuMjEwNzEgOS40Njk1NyAyIDEwIDJIMTRDMTQuNTMwNCAyIDE1LjAzOTEgMi4yMTA3MSAxNS40MTQyIDIuNTg1NzlDMTUuNzg5MyAyLjk2MDg2IDE2IDMuNDY5NTcgMTYgNFY2TTEwIDExVjE3TTE0IDExVjE3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTUgdGFnLWNsYXNzXCI+IEp1bms8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBweC0wIGltZy10cmFmZmljIG10LTMgaGlnaC00MDBweCBzY3JvbGwteVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIGJvcmRlci1ncmF5IG14LTIgcC0yIG10LTVcIiAqbmdGb3I9XCJsZXQgb2JqIG9mIHJlbWFpbmluZ0ltYWdlQXJyYXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwiIXJldm9wc1R5cGVWYWx1ZSAmJiBzZWxlY3RlZFJhZGlvVHlwZSA9PT0gJ2R1cGxpY2F0ZSdcIiB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwib2JqLnNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgYWJzb2x1dGUgZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uSW1hZ2VDaGVja2JveENoYW5nZSgkZXZlbnQsIG9iaiwgJ2R1cGxpY2F0ZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJvYmouZHVwbGljYXRlSW1hZ2VQYXRoPy5sZW5ndGggPiAwXCIgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXNyY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZFJhZGlvVHlwZSAhPT0gJ2R1cGxpY2F0ZScgPyAnY3Vyc29yLXBvaW50ZXInIDogJ2N1cnNvci1wb2ludGVyJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImltYWdlVXJsICsgb2JqPy5maWxlUGF0aFwiIChlcnJvcik9XCJvYmouZmlsZVBhdGggPSBudWxsXCIgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVJbWFnZUNsaWNrKCRldmVudCwgb2JqKVwiIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFvYmo/LmZpbGVQYXRoXCIgY2xhc3M9XCJuby1wcmV2aWV3XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjNcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjMgMjBcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJHcm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJWZWN0b3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi41IDYuMzIyMjdINi41MU0xNi4yNSA5LjMyMjI3SDIxLjVMMTggMTYuMzIyM0wxNC45MSAxMi4wMDIzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVmVjdG9yXzJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMS41IDE2LjMyMjlINS4yNkM1LjYzMjczIDE2LjMyNTUgNS45OTg3NyAxNi4yMjM5IDYuMzE2ODIgMTYuMDI5NUM2LjYzNDg3IDE1LjgzNTIgNi44OTIyOCAxNS41NTU4IDcuMDYgMTUuMjIyOUw4LjUgMTIuMzIyOU0xLjUgMTguMzIyOVYxNC4zMjI5TTE3LjUgNi44MjI5MUwxMy41IDE0LjgyMjlMMy4xMSA5LjYyMjkxQzIuNDIwMzMgOS4yNzU1MyAxLjg5NjM1IDguNjY5MSAxLjY1MjcyIDcuOTM2MzJDMS40MDkwOSA3LjIwMzU0IDEuNDY1NjQgNi40MDQxIDEuODEgNS43MTI5MUwzLjE5IDIuOTIyOTFDMy4zNjIgMi41ODAxNCAzLjU5OTg0IDIuMjc0NiAzLjg4OTk0IDIuMDIzNzVDNC4xODAwMyAxLjc3MjkgNC41MTY3IDEuNTgxNjUgNC44ODA3MiAxLjQ2MDkzQzUuMjQ0NzQgMS4zNDAyMSA1LjYyODk3IDEuMjkyMzkgNi4wMTE0NyAxLjMyMDE4QzYuMzkzOTggMS4zNDc5NyA2Ljc2NzI2IDEuNDUwODQgNy4xMSAxLjYyMjkxTDE3LjUgNi44MjI5MVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZGVyIG1iLTUgdGV4dC1jZW50ZXJcIj5QcmV2aWV3IG5vdCBhdmFpbGFibGU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRlc2NyaXB0aW9uIG1iLTUgdGV4dC1jZW50ZXJcIj5UaGUgc2VsZWN0ZWQgY2FtZXJhIGlzIG5vdCBhdmFpbGFibGUgYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb21lbnQuPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS0yIGltZy1kb2MtdGltZVwiPlRhbmdvIElEIDoge3tvYmo/LnRlbXBsZCA/IG9iaj8udGVtcGxkIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqPy50ZW1wSWR9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8uc3RhdHVzID09PSdhcHByb3ZlZCdcIiBjbGFzcz1cIm1zLTJcIj48c3ZnIHN0eWxlPVwid2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTFcIiB2aWV3Qm94PVwiMCAwIDEwIDExXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB5PVwiMC41XCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgcng9XCI1XCIgZmlsbD1cIiNEMUZBREZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk03LjEyMjIgMy41NzkxOUw0LjEzODg3IDYuNDU4MzZMMy4zNDcyIDUuNjEyNTNDMy4yMDEzNyA1LjQ3NTAzIDIuOTcyMiA1LjQ2NjY5IDIuODA1NTMgNS41ODMzNkMyLjY0MzAzIDUuNzA0MTkgMi41OTcyIDUuOTE2NjkgMi42OTcyIDYuMDg3NTNMMy42MzQ3IDcuNjEyNTNDMy43MjYzNyA3Ljc1NDE5IDMuODg0NyA3Ljg0MTY5IDQuMDYzODcgNy44NDE2OUM0LjIzNDcgNy44NDE2OSA0LjM5NzIgNy43NTQxOSA0LjQ4ODg3IDcuNjEyNTNDNC42Mzg4NyA3LjQxNjY5IDcuNTAxMzcgNC4wMDQxOSA3LjUwMTM3IDQuMDA0MTlDNy44NzYzNyAzLjYyMDg2IDcuNDIyMiAzLjI4MzM2IDcuMTIyMiAzLjU3NTAzVjMuNTc5MTlaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMxMkI3NkFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8uc3RhdHVzID09PSdyZWplY3RlZCdcIiBjbGFzcz1cIm1zLTJcIj48c3ZnIHN0eWxlPVwid2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiMTNcIiB2aWV3Qm94PVwiMCAwIDEzIDEzXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE0MjhfNTk0ODQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuNTI5NjEgMS41SDguNjY5NjFMMTEuNTk5NiA0LjQzVjguNTdMOC42Njk2MSAxMS41SDQuNTI5NjFMMS41OTk2MSA4LjU3VjQuNDNMNC41Mjk2MSAxLjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRkVFNEUyXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wOTk2MSA1TDUuMDk5NjEgOE01LjA5OTYxIDVMOC4wOTk2MSA4TTQuNTI5NjEgMS41SDguNjY5NjFMMTEuNTk5NiA0LjQzVjguNTdMOC42Njk2MSAxMS41SDQuNTI5NjFMMS41OTk2MSA4LjU3VjQuNDNMNC41Mjk2MSAxLjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE0MjhfNTk0ODRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuNTk5NjA5IDAuNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nLWRvYy12YWx1ZVwiPkVudHJ5IFRpbWUgOiB7e29iaj8uZW50cnlUbWUgPyBvYmo/LmVudHJ5VG1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpvYmo/LmVudHJ5VGltZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNSB0ZXh0LWVuZCBweS0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J25vbi10YWdnaW5nJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJZZXQgdG8gdGFnIHRoZSBjdXN0b21lclwiIHBsYWNlbWVudD1cInRvcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE5XCIgaGVpZ2h0PVwiMThcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOSAxOFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi4wMjM0NCA1LjYyNUg2LjAzMDk0TTE2LjIxNTkgMTAuNDMyNUwxMC44Mzg0IDE1LjgxQzEwLjY5OTEgMTUuOTQ5NSAxMC41MzM3IDE2LjA2MDEgMTAuMzUxNiAxNi4xMzU2QzEwLjE2OTUgMTYuMjExMSA5Ljk3NDMxIDE2LjI0OTkgOS43NzcxOSAxNi4yNDk5QzkuNTgwMDYgMTYuMjQ5OSA5LjM4NDg3IDE2LjIxMTEgOS4yMDI3OCAxNi4xMzU2QzkuMDIwNjggMTYuMDYwMSA4Ljg1NTI1IDE1Ljk0OTUgOC43MTU5NCAxNS44MUwyLjI3MzQ0IDkuMzc1VjEuODc1SDkuNzczNDRMMTYuMjE1OSA4LjMxNzVDMTYuNDk1MyA4LjU5ODU0IDE2LjY1MjEgOC45Nzg3MiAxNi42NTIxIDkuMzc1QzE2LjY1MjEgOS43NzEyOCAxNi40OTUzIDEwLjE1MTUgMTYuMjE1OSAxMC40MzI1WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nZHVwbGljYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwib2JqPy5pc1BhcmVudFwiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMTAgMTBcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzU2OF8xMDM2NTcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjA4Mzk4IDYuMjUwMDFIMS42NjczMkMxLjQ0NjMgNi4yNTAwMSAxLjIzNDM0IDYuMTYyMjEgMS4wNzgwNiA2LjAwNTkzQzAuOTIxNzgyIDUuODQ5NjUgMC44MzM5ODQgNS42Mzc2OSAwLjgzMzk4NCA1LjQxNjY4VjEuNjY2NjhDMC44MzM5ODQgMS40NDU2NiAwLjkyMTc4MiAxLjIzMzcgMS4wNzgwNiAxLjA3NzQyQzEuMjM0MzQgMC45MjExNDEgMS40NDYzIDAuODMzMzQ0IDEuNjY3MzIgMC44MzMzNDRINS40MTczMkM1LjYzODMzIDAuODMzMzQ0IDUuODUwMjkgMC45MjExNDEgNi4wMDY1NyAxLjA3NzQyQzYuMTYyODUgMS4yMzM3IDYuMjUwNjUgMS40NDU2NiA2LjI1MDY1IDEuNjY2NjhWMi4wODMzNE00LjU4Mzk4IDMuNzUwMDFIOC4zMzM5OEM4Ljc5NDIyIDMuNzUwMDEgOS4xNjczMiA0LjEyMzExIDkuMTY3MzIgNC41ODMzNFY4LjMzMzM0QzkuMTY3MzIgOC43OTM1OCA4Ljc5NDIyIDkuMTY2NjggOC4zMzM5OCA5LjE2NjY4SDQuNTgzOThDNC4xMjM3NSA5LjE2NjY4IDMuNzUwNjUgOC43OTM1OCAzLjc1MDY1IDguMzMzMzRWNC41ODMzNEMzLjc1MDY1IDQuMTIzMTEgNC4xMjM3NSAzLjc1MDAxIDQuNTgzOTggMy43NTAwMVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjVcIiBoZWlnaHQ9XCI1XCIgZmlsbD1cIiM0NzU0NjdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfNTY4XzEwMzY1N1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIW9iaj8uaXNQYXJlbnRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAyMCAyMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM1KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNC4xNjc5NyAxMy4xODU5SDMuMzM0NjRDMi44OTI2MSAxMy4xODU5IDIuNDY4NjggMTMuMDEwMyAyLjE1NjEyIDEyLjY5NzdDMS44NDM1NiAxMi4zODUyIDEuNjY3OTcgMTEuOTYxMiAxLjY2Nzk3IDExLjUxOTJWNC4wMTkyMUMxLjY2Nzk3IDMuNTc3MTggMS44NDM1NiAzLjE1MzI2IDIuMTU2MTIgMi44NDA2OUMyLjQ2ODY4IDIuNTI4MTMgMi44OTI2MSAyLjM1MjU0IDMuMzM0NjQgMi4zNTI1NEgxMC44MzQ2QzExLjI3NjcgMi4zNTI1NCAxMS43MDA2IDIuNTI4MTMgMTIuMDEzMSAyLjg0MDY5QzEyLjMyNTcgMy4xNTMyNiAxMi41MDEzIDMuNTc3MTggMTIuNTAxMyA0LjAxOTIxVjQuODUyNTRNOS4xNjc5NyA4LjE4NTg3SDE2LjY2OEMxNy41ODg0IDguMTg1ODcgMTguMzM0NiA4LjkzMjA2IDE4LjMzNDYgOS44NTI1NFYxNy4zNTI1QzE4LjMzNDYgMTguMjczIDE3LjU4ODQgMTkuMDE5MiAxNi42NjggMTkuMDE5Mkg5LjE2Nzk3QzguMjQ3NDkgMTkuMDE5MiA3LjUwMTMgMTguMjczIDcuNTAxMyAxNy4zNTI1VjkuODUyNTRDNy41MDEzIDguOTMyMDYgOC4yNDc0OSA4LjE4NTg3IDkuMTY3OTcgOC4xODU4N1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM1XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdlbXBsb3llZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM5KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMTY1NCAxOC4xODZWMTYuNTE5NEMxNC4xNjU0IDE1LjYzNTMgMTMuODE0MiAxNC43ODc1IDEzLjE4OTEgMTQuMTYyM0MxMi41NjM5IDEzLjUzNzIgMTEuNzE2MSAxMy4xODYgMTAuODMyIDEzLjE4Nkg0LjE2NTM2QzMuMjgxMzEgMTMuMTg2IDIuNDMzNDYgMTMuNTM3MiAxLjgwODM0IDE0LjE2MjNDMS4xODMyMiAxNC43ODc1IDAuODMyMDMxIDE1LjYzNTMgMC44MzIwMzEgMTYuNTE5NFYxOC4xODZNMTkuMTY1NCAxOC4xODZWMTYuNTE5NEMxOS4xNjQ4IDE1Ljc4MDggMTguOTE5IDE1LjA2MzMgMTguNDY2NSAxNC40Nzk2QzE4LjAxNCAxMy44OTU5IDE3LjM4MDUgMTMuNDc5IDE2LjY2NTQgMTMuMjk0NE0xMy4zMzIgMy4yOTQzN0MxNC4wNDkgMy40Nzc5NSAxNC42ODQ2IDMuODk0OTUgMTUuMTM4NCA0LjQ3OTYzQzE1LjU5MjIgNS4wNjQzIDE1LjgzODYgNS43ODMzOSAxNS44Mzg2IDYuNTIzNTRDMTUuODM4NiA3LjI2MzY4IDE1LjU5MjIgNy45ODI3NyAxNS4xMzg0IDguNTY3NDRDMTQuNjg0NiA5LjE1MjEyIDE0LjA0OSA5LjU2OTEyIDEzLjMzMiA5Ljc1MjdNMTAuODMyIDYuNTE5MzdDMTAuODMyIDguMzYwMzIgOS4zMzk2NSA5Ljg1MjcgNy40OTg3IDkuODUyN0M1LjY1Nzc1IDkuODUyNyA0LjE2NTM2IDguMzYwMzIgNC4xNjUzNiA2LjUxOTM3QzQuMTY1MzYgNC42Nzg0MiA1LjY1Nzc1IDMuMTg2MDQgNy40OTg3IDMuMTg2MDRDOS4zMzk2NSAzLjE4NjA0IDEwLjgzMiA0LjY3ODQyIDEwLjgzMiA2LjUxOTM3WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdob3VzZUtlZXBpbmcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIxIDIxXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDY0MylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS4yNjIxOSAxLjM2NzIyQzEwLjE3NzcgMC40NTg5NzQgMTEuNjYyIDAuNDU4OTc0IDEyLjU3NzYgMS4zNjcyMkwyMC4zMTMzIDkuMDQxNTNDMjEuMjI4NyA5Ljk0OTggMjEuMjI4NyAxMS40MjIzIDIwLjMxMzMgMTIuMzMwNkwxMi41Nzc2IDIwLjAwNDlDMTEuNjYyIDIwLjkxMzEgMTAuMTc3NyAyMC45MTMxIDkuMjYyMTkgMjAuMDA0OUw3LjA1MTY2IDE3LjgxMTlMNS4wMjUzOCAxOS44MjIxQzQuMTA5ODcgMjAuNzMwMyAyLjYyNTUzIDIwLjczMDMgMS43MTAwMiAxOS44MjIxQzAuNzk0NTEgMTguOTEzOSAwLjc5NDUxIDE3LjQ0MTMgMS43MTAwMiAxNi41MzMxTDMuNzM2MyAxNC41MjI5TDEuNTI2NDggMTIuMzMwNkMwLjYxMDk2NiAxMS40MjIzIDAuNjEwOTY2IDkuOTQ5OCAxLjUyNjQ4IDkuMDQxNTNMOS4yNjIxOSAxLjM2NzIyWk0xMS40NzI0IDIuNDYzNTdDMTEuMTY3MiAyLjE2MDgyIDEwLjY3MjQgMi4xNjA4MiAxMC4zNjcyIDIuNDYzNTdMNC44NDE0NSA3Ljk0NTU2TDEzLjY4MjMgMTYuNzE2M0wxOS4yMDgxIDExLjIzNDJDMTkuNTEzMyAxMC45MzE1IDE5LjUxMzMgMTAuNDQwNiAxOS4yMDgxIDEwLjEzNzlMMTUuMzM5OSA2LjMwMDMyTDE0LjA1MDUgNy41Nzk0QzEzLjc0NTMgNy44ODIxNCAxMy4yNTA2IDcuODgyMTQgMTIuOTQ1NSA3LjU3OTRDMTIuNjQwMyA3LjI3NjY0IDEyLjY0MDMgNi43ODU3OSAxMi45NDU1IDYuNDgzMDVMMTQuMjM0NyA1LjIwMzk3TDEzLjEyOTkgNC4xMDc4Nkw5Ljk5ODcyIDcuMjE0MThDOS42OTM1NCA3LjUxNjkyIDkuMTk4NzMgNy41MTY5MiA4Ljg5MzU2IDcuMjE0MThDOC41ODgzOCA2LjkxMTQzIDguNTg4MzggNi40MjA1OCA4Ljg5MzU2IDYuMTE3ODNMMTIuMDI0NyAzLjAxMTUxTDExLjQ3MjQgMi40NjM1N1pNMTIuNTc3MSAxNy44MTI1TDMuNzM2MzMgOS4wNDE5MUwyLjYzMTYgMTAuMTM3OUMyLjMyNjQyIDEwLjQ0MDYgMi4zMjY0MiAxMC45MzE1IDIuNjMxNiAxMS4yMzQyTDEwLjM2NzIgMTguOTA4NUMxMC42NzI0IDE5LjIxMTMgMTEuMTY3MiAxOS4yMTEzIDExLjQ3MjQgMTguOTA4NUwxMi41NzcxIDE3LjgxMjVaTTQuODQxMzIgMTUuNjE5MkwyLjgxNTE0IDE3LjYyOTRDMi41MDk5NyAxNy45MzIxIDIuNTA5OTcgMTguNDIzIDIuODE1MTQgMTguNzI1OEMzLjEyMDMxIDE5LjAyODUgMy42MTUwOSAxOS4wMjg1IDMuOTIwMjYgMTguNzI1OEw1Ljk0NjQ0IDE2LjcxNTZMNC44NDEzMiAxNS42MTkyWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNDc1NDY3XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2NDNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdqdW5rJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMyA2SDVNNSA2SDIxTTUgNlYyMEM1IDIwLjUzMDQgNS4yMTA3MSAyMS4wMzkxIDUuNTg1NzkgMjEuNDE0MkM1Ljk2MDg2IDIxLjc4OTMgNi40Njk1NyAyMiA3IDIySDE3QzE3LjUzMDQgMjIgMTguMDM5MSAyMS43ODkzIDE4LjQxNDIgMjEuNDE0MkMxOC43ODkzIDIxLjAzOTEgMTkgMjAuNTMwNCAxOSAyMFY2SDVaTTggNlY0QzggMy40Njk1NyA4LjIxMDcxIDIuOTYwODYgOC41ODU3OSAyLjU4NTc5QzguOTYwODYgMi4yMTA3MSA5LjQ2OTU3IDIgMTAgMkgxNEMxNC41MzA0IDIgMTUuMDM5MSAyLjIxMDcxIDE1LjQxNDIgMi41ODU3OUMxNS43ODkzIDIuOTYwODYgMTYgMy40Njk1NyAxNiA0VjZNMTAgMTFWMTdNMTQgMTFWMTdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuPC9kaXY+XG5cblxuPG5nLXRlbXBsYXRlICN6b29tUG9wdXAgbGV0LW1vZGVsPlxuICAgIDxkaXYgY2xhc3M9XCJwLTQgbS00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgYm9yZGVyLTAgcC0wIHctMTAwIGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLXN0YXJ0XCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ25vbi10YWdnaW5nJ1wiIGNsYXNzPVwibXktM1wiPlxuXG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgdmlld0JveD1cIjAgMCA0MCA0MFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHJ4PVwiMjBcIiBmaWxsPVwiI0RBRjFGRlwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjA4OF85ODMzNylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yOS4xNjkzIDEzLjMzMzNWMTguMzMzM00yOS4xNjkzIDE4LjMzMzNIMjQuMTY5M00yOS4xNjkzIDE4LjMzMzNMMjUuMzAyNiAxNC43QzI0LjQwNyAxMy44MDM5IDIzLjI5OSAxMy4xNDkzIDIyLjA4MTkgMTIuNzk3M0MyMC44NjQ5IDEyLjQ0NTMgMTkuNTc4NSAxMi40MDczIDE4LjM0MjggMTIuNjg2OUMxNy4xMDcyIDEyLjk2NjUgMTUuOTYyNCAxMy41NTQ1IDE1LjAxNTUgMTQuMzk2MkMxNC4wNjg1IDE1LjIzNzggMTMuMzUwMiAxNi4zMDU2IDEyLjkyNzYgMTcuNU0xMC44MzU5IDI2LjY2NjZWMjEuNjY2Nk0xMC44MzU5IDIxLjY2NjZIMTUuODM1OU0xMC44MzU5IDIxLjY2NjZMMTQuNzAyNiAyNS4zQzE1LjU5ODIgMjYuMTk2MSAxNi43MDYyIDI2Ljg1MDYgMTcuOTIzMyAyNy4yMDI3QzE5LjE0MDMgMjcuNTU0NyAyMC40MjY3IDI3LjU5MjcgMjEuNjYyNCAyNy4zMTMxQzIyLjg5OCAyNy4wMzM1IDI0LjA0MjggMjYuNDQ1NSAyNC45ODk3IDI1LjYwMzhDMjUuOTM2NyAyNC43NjIxIDI2LjY1NSAyMy42OTQzIDI3LjA3NzYgMjIuNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjA4OF85ODMzN1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgxMCAxMClcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPCEtLSBIZWFkaW5nIC0tPlxuICAgICAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGUgbWItMlwiPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnZW1wbG95ZWUnXCI+VGFnZ2luZyBhcyBlbXBsb3llZS9zdGFmZiA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdkdXBsaWNhdGUnXCI+VGFnZ2luZyBhcyBkdXBsaWNhdGVzIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ2hvdXNlS2VlcGluZydcIj5UYWdnaW5nIGFzIGhvdXNlIGtlZXBpbmcgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnbm9uLXRhZ2dpbmcnXCI+Q2xlYXIgZHVwbGljYXRlczwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0nanVuaydcIj5UYWdnaW5nIGFzIGp1bms8L3NwYW4+XG5cbiAgICAgICAgICAgIDwvaDU+XG4gICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTNcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ2VtcGxveWVlJ1wiPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byB0YWcgdGhpcyBhcyBlbXBsb3llZS9zdGFmZj88L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdkdXBsaWNhdGUnXCI+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHRhZyB0aGlzIGFzIGR1cGxpY2F0ZXM/IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ2hvdXNlS2VlcGluZydcIj5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gdGFnIHRoaXMgYXMgaG91c2Uga2VlcGluZz8gPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnbm9uLXRhZ2dpbmcnXCI+VGhpcyB3aWxsIHJlbW92ZSB0YWdnZWQgZHVwbGljYXRlcyBhbmQgbW92ZSB0aGVtIHRvXG4gICAgICAgICAgICAgICAgICAgICdOb24tdGFnJy48L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09J2p1bmsnXCI+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHRhZyB0aGlzIGFzIGp1bms/PC9zcGFuPlxuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBtdC01IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIG1lLTJcIiAoY2xpY2spPVwiY2FuY2VsU3VibWl0KClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJwb3B1cFR5cGUgIT09ICdub24tdGFnZ2luZydcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJzdWJtaXRWYWx1ZShwb3B1cFR5cGUpXCI+XG4gICAgICAgICAgICAgICAgWWVzLCBUYWdcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ25vbi10YWdnaW5nJ1wiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cInN1Ym1pdFZhbHVlKHBvcHVwVHlwZSlcIj5cbiAgICAgICAgICAgICAgICBZZXMsIGNsZWFyXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG5cbjxuZy10ZW1wbGF0ZSAjcmFpc2VkUG9wdXAgbGV0LW1vZGVsPlxuICAgIDxkaXYgY2xhc3M9XCJwLTQgbS00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgYm9yZGVyLTAgcC0wIHctMTAwIGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLXN0YXJ0XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm15LTNcIj5cblxuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHZpZXdCb3g9XCIwIDAgNDAgNDBcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiByeD1cIjIwXCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yMS4yNTEgMTEuMDgwNkMyMS43NDA1IDExLjA2OTkgMjIuMjE1MyAxMS4yNDg3IDIyLjU3NjIgMTEuNTc5NkwyMy40OTIyIDEyLjQyMDRDMjMuODA4OSAxMi43MDk3IDIzLjg5MyAxMy4xMDE3IDIzLjg2NTIgMTMuNDI2M1YxMy40MjcyQzIzLjgzNiAxMy43NDc4IDIzLjY5NTQgMTQuMDU5MiAyMy40Nzg1IDE0LjI5NDRDMjMuMzY5OSAxNC40MTMgMjMuMjg2NSAxNC41NTI1IDIzLjIzMTQgMTQuNzAzNkMyMy4xNzY0IDE0Ljg1NDggMjMuMTUxMiAxNS4wMTU1IDIzLjE1ODIgMTUuMTc2M0MyMy4xNjUyIDE1LjMzNyAyMy4yMDM1IDE1LjQ5NTMgMjMuMjcxNSAxNS42NDExQzIzLjMzOTQgMTUuNzg2OSAyMy40MzYyIDE1LjkxNzIgMjMuNTU0NyAxNi4wMjU5QzIzLjY3MzMgMTYuMTM0NiAyMy44MTE3IDE2LjIxOTggMjMuOTYyOSAxNi4yNzQ5QzI0LjExNDEgMTYuMzMgMjQuMjc0OCAxNi4zNTQxIDI0LjQzNTUgMTYuMzQ3MkMyNC41OTYxIDE2LjM0MDIgMjQuNzUzNyAxNi4zMDE3IDI0Ljg5OTQgMTYuMjMzOUMyNS4wMDg5IDE2LjE4MjkgMjUuMTEwNiAxNi4xMTYgMjUuMjAwMiAxNi4wMzU2TDI1LjM3MDEgMTUuODY1N0MyNS41NzU5IDE1LjY3NDggMjUuODM4NSAxNS41NDA4IDI2LjExNTIgMTUuNDkwN0MyNi4yOTcyIDE1LjQ1NDYgMjYuNDg1IDE1LjQ2MTcgMjYuNjY0MSAxNS41MTAzQzI2Ljg0MzkgMTUuNTU5MSAyNy4wMTAzIDE1LjY0OSAyNy4xNDk0IDE1Ljc3MjlMMjcuMTUxNCAxNS43NzQ5TDI4LjI1OTggMTYuNzkwNUMyOC40NDUgMTYuOTYwNSAyOC41OTQ4IDE3LjE2NTggMjguNzAwMiAxNy4zOTRDMjguODA1NiAxNy42MjIzIDI4Ljg2NDggMTcuODY5NCAyOC44NzQgMTguMTIwNkMyOC44ODMyIDE4LjM3MiAyOC44NDIzIDE4LjYyMzQgMjguNzUzOSAxOC44NTg5QzI4LjY2NTUgMTkuMDk0MSAyOC41MzE2IDE5LjMwOTYgMjguMzU5NCAxOS40OTI3TDIwLjExMTMgMjguMjU4M0MxOS45MzcgMjguNDQzNCAxOS43MjY4IDI4LjU5MTIgMTkuNDk0MSAyOC42OTM4QzE5LjI2MTQgMjguNzk2NSAxOS4wMTAyIDI4Ljg1MjIgMTguNzU1OSAyOC44NTZDMTguNTAxNiAyOC44NTk3IDE4LjI0OTMgMjguODExOSAxOC4wMTM3IDI4LjcxNjNDMTcuNzc3OSAyOC42MjA2IDE3LjU2MzYgMjguNDc4NCAxNy4zODM4IDI4LjI5ODNMMTYuMjUzOSAyNy4xNjg1QzE1Ljc1MTEgMjYuNjY1NiAxNS44ODMyIDI1Ljk1NTIgMTYuMTUxNCAyNS41NTQyTDE2LjIwNjEgMjUuNDY0NEMxNi4zMjQxIDI1LjI0ODYgMTYuMzc0MiAyNS4wMDA4IDE2LjM0OTYgMjQuNzU0NEMxNi4zMjE0IDI0LjQ3MzEgMTYuMTk3IDI0LjIxMDIgMTUuOTk3MSAyNC4wMTAzQzE1Ljc5NzEgMjMuODEwMyAxNS41MzQzIDIzLjY4NTkgMTUuMjUyOSAyMy42NTc3QzE0Ljk3MTUgMjMuNjI5NyAxNC42ODg3IDIzLjY5OTUgMTQuNDUzMSAyMy44NTZIMTQuNDUyMUMxNC4wNDk0IDI0LjEyMjIgMTMuMzQwNyAyNC4yNTUyIDEyLjgzNzkgMjMuNzUxNUwxMS42Nzk3IDIyLjU5MzNDMTEuNTAzNCAyMi40MTY5IDExLjM2NCAyMi4yMDc0IDExLjI2ODYgMjEuOTc3MUMxMS4xNzMxIDIxLjc0NjcgMTEuMTIzMSAyMS40OTk5IDExLjEyMyAyMS4yNTA1QzExLjEyMyAyMS4wMDEgMTEuMTczMSAyMC43NTM1IDExLjI2ODYgMjAuNTIyOUMxMS4zNjQgMjAuMjkyNiAxMS41MDM0IDIwLjA4MzEgMTEuNjc5NyAxOS45MDY3TDE5Ljk0OTIgMTEuNjM2MkMyMC4yOTU0IDExLjI5MDIgMjAuNzYxNiAxMS4wOTEyIDIxLjI1MSAxMS4wODA2Wk0yMS4yNzgzIDEyLjM4MDRDMjEuMTIzNyAxMi4zODM4IDIwLjk3NjUgMTIuNDQ2OCAyMC44NjcyIDEyLjU1NjJMMTIuNTk2NyAyMC44MjU3QzEyLjU0MDkgMjAuODgxNCAxMi40OTcgMjAuOTQ4MiAxMi40NjY4IDIxLjAyMUMxMi40MzY3IDIxLjA5MzggMTIuNDIwOSAyMS4xNzE3IDEyLjQyMDkgMjEuMjUwNUMxMi40MjA5IDIxLjMyOTIgMTIuNDM2NyAyMS40MDczIDEyLjQ2NjggMjEuNDhDMTIuNDk3IDIxLjU1MjggMTIuNTQxIDIxLjYxOTYgMTIuNTk2NyAyMS42NzUzTDEzLjcwNjEgMjIuNzgzN0wxMy43MzE0IDIyLjc3MkMxNC4yMTY5IDIyLjQ0ODUgMTQuNzk5MyAyMi4zMDM1IDE1LjM3OTkgMjIuMzYwOEMxNS45NjA4IDIyLjQxODMgMTYuNTA0MiAyMi42NzQ3IDE2LjkxNyAyMy4wODc0QzE3LjMyOTggMjMuNTAwMiAxNy41ODcgMjQuMDQzNiAxNy42NDQ1IDI0LjYyNDVDMTcuNzAyIDI1LjIwNTUgMTcuNTU2NSAyNS43ODkyIDE3LjIzMjQgMjYuMjc0OUwxNy4yMzA1IDI2LjI3NTlDMTcuMjI2MSAyNi4yODIyIDE3LjIyMjYgMjYuMjg5MyAxNy4yMTk3IDI2LjI5NjRMMTguMzAxOCAyNy4zODA0QzE4LjM1ODUgMjcuNDM3MiAxOC40MjY2IDI3LjQ4MiAxOC41MDEgMjcuNTEyMkMxOC41NzU1IDI3LjU0MjUgMTguNjU1OSAyNy41NTc0IDE4LjczNjMgMjcuNTU2MkMxOC44MTY2IDI3LjU1NDkgMTguODk2MyAyNy41Mzc4IDE4Ljk2OTcgMjcuNTA1NEMxOS4wNDMgMjcuNDcyOSAxOS4xMDkxIDI3LjQyNjEgMTkuMTY0MSAyNy4zNjc3TDI3LjQxMzEgMTguNjAyMUMyNy40NjczIDE4LjU0NDIgMjcuNTA5MyAxOC40NzYxIDI3LjUzNzEgMTguNDAxOUMyNy41NjQ5IDE4LjMyNzYgMjcuNTc4MSAxOC4yNDg3IDI3LjU3NTIgMTguMTY5NEMyNy41NzIyIDE4LjA5MDIgMjcuNTUzOCAxOC4wMTE5IDI3LjUyMDUgMTcuOTM5OUMyNy40ODcyIDE3Ljg2NzkgMjcuNDM5NCAxNy44MDMyIDI3LjM4MDkgMTcuNzQ5NUwyNi4zMjIzIDE2Ljc3NzhDMjYuMjkyNSAxNi43ODg1IDI2LjI2NDggMTYuODA1MyAyNi4yNDMyIDE2LjgyODZDMjYuMDIxNyAxNy4wNzg4IDI1Ljc1MjkgMTcuMjgyNyAyNS40NTIxIDE3LjQyODJDMjUuMTUgMTcuNTc0MyAyNC44MjE0IDE3LjY1ODUgMjQuNDg2MyAxNy42NzYzQzI0LjE1MTEgMTcuNjk0IDIzLjgxNSAxNy42NDUyIDIzLjQ5OSAxNy41MzE3QzIzLjE4MzIgMTcuNDE4MyAyMi44OTI4IDE3LjI0MjkgMjIuNjQ1NSAxNy4wMTYxQzIyLjM5ODIgMTYuNzg5MyAyMi4xOTg4IDE2LjUxNTMgMjIuMDU4NiAxNi4yMTA0QzIxLjkxODMgMTUuOTA1NSAyMS44NDA0IDE1LjU3NTIgMjEuODI5MSAxNS4yMzk3QzIxLjgxNzggMTQuOTA0MyAyMS44NzM3IDE0LjU3IDIxLjk5MzIgMTQuMjU2M0MyMi4xMTIxIDEzLjk0NDIgMjIuMjkxNSAxMy42NTg3IDIyLjUyMTUgMTMuNDE2NUwyMi41NTQ3IDEzLjM2NTdDMjIuNTU5NCAxMy4zNTUyIDIyLjU2MDcgMTMuMzQzNyAyMi41NjM1IDEzLjMzMjVMMjEuNjk3MyAxMi41Mzg2VjEyLjUzNzZDMjEuNTgzMyAxMi40MzMxIDIxLjQzMjkgMTIuMzc3IDIxLjI3ODMgMTIuMzgwNFpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMwMEEzRkZcIiBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMC4zXCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwhLS0gSGVhZGluZyAtLT5cbiAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlIG1iLTJcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5SYWlzZSB0aWNrZXRzIGZvciB0aGUgZm9sbG93aW5nPC9zcGFuPlxuXG4gICAgICAgICAgICA8L2g1PlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+UmFpc2luZyBhIHRpY2tldCBmb3IgZm9vdGZhbGwgY291bnQgaXNzdWVzLiBNYWtlIHN1cmUgYWxsIHJlY29yZHMgYXJlIGlkZW50aWZpZWQgZm9yXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb24uPC9zcGFuPlxuXG5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBteS00XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciBib3JkZXItMSByb3VuZGVkIHAtMyBoLTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgZnMtNSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e3RlbXBSYWlzZWRQYXlsb2FkPy5kdXBsaWNhdGVDb3VudCA/IHRlbXBSYWlzZWRQYXlsb2FkPy5kdXBsaWNhdGVDb3VudCA6JzAnfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCB0ZXh0LW11dGVkIGZzLTYgbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgRHVwbGljYXRlc1xuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgbXktNFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgYm9yZGVyLTEgcm91bmRlZCBwLTMgaC0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIGZzLTUgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3t0ZW1wUmFpc2VkUGF5bG9hZD8uZW1wbG95ZWVDb3VudCA/IHRlbXBSYWlzZWRQYXlsb2FkPy5lbXBsb3llZUNvdW50OicwJyB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIHRleHQtbXV0ZWQgZnMtNiBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBFbXBsb3llZVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgbXktNFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgYm9yZGVyLTEgcm91bmRlZCBwLTMgaC0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIGZzLTUgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3t0ZW1wUmFpc2VkUGF5bG9hZD8uaG91c2VLZWVwaW5nQ291bnQgPyB0ZW1wUmFpc2VkUGF5bG9hZD8uaG91c2VLZWVwaW5nQ291bnQgOicwJ319XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgdGV4dC1tdXRlZCBmcy02IG10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEhvdXNlIEtlZXBpbmdcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBteS00XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciBib3JkZXItMSByb3VuZGVkIHAtMyBoLTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgZnMtNSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e3RlbXBSYWlzZWRQYXlsb2FkPy5qdW5rQ291bnQgPyB0ZW1wUmFpc2VkUGF5bG9hZD8uanVua0NvdW50IDonMCd9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIHRleHQtbXV0ZWQgZnMtNiBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBKdW5rXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBMYWJlbCBhbmQgVGV4dGFyZWEgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS0zXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+RGVzY3JpcHRpb24gKE9wdGlvbmFsKTwvbGFiZWw+XG4gICAgICAgICAgICA8dGV4dGFyZWEgcm93cz1cIjNcIiBbKG5nTW9kZWwpXT1cImNvbW1lbnRUZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgZGVzY3JpcHRpb25cIj48L3RleHRhcmVhPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIG10LTUgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cblxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSB3LTUwIG1lLTJcIiAoY2xpY2spPVwiY2FuY2VsUmFzaWVkKClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy01MFwiIChjbGljayk9XCJzdWJtaXRSYWlzZWQoKVwiPlxuICAgICAgICAgICAgICAgIFJhaXNlIFRpY2tldFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuXG48bmctdGVtcGxhdGUgI2ltYWdlUG9wdXAgbGV0LW1vZGVsPlxuICAgIDxkaXYgY2xhc3M9XCJteC00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgcC0yICBtYi0yIG10LTVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNNb2RhbE9wZW5cIiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGJvcmRlci1ncmF5IHAtMiBcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uICpuZ0lmPVwiY2FuTmF2aWdhdGVMZWZ0XCIgKGNsaWNrKT1cIm5hdmlnYXRlSW1hZ2UoJ2xlZnQnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQgcG9zaXRpb24tYWJzb2x1dGUgc3RhcnQtMCB0b3AtNTAgei1pbmRleC0xMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4peAXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIE1haW4gSW1hZ2UgLS0+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGltZyBjbGFzcz1cIiBjdXJzb3ItcG9pbnRlciB3LTEwMCBoLTUyNXB4XCIgXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImltYWdlVXJsICsgKHRlbXBNb2RhbEltYWdlPy5maWxlUGF0aCB8fCBzZWxlY3RJbWFnZUFycmF5Py5maWxlUGF0aClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwTWFnbmlmaWVyIGFsdD1cIlwiPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cIiBjdXJzb3ItcG9pbnRlciB3LTEwMCBoLTUyNXB4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaW1hZ2VVcmwgKyAodGVtcE1vZGFsSW1hZ2U/LmZpbGVQYXRoIHx8IHNlbGVjdEltYWdlQXJyYXk/LmZpbGVQYXRoKVwiIGFsdD1cIlwiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gKm5nSWY9XCJjYW5OYXZpZ2F0ZVJpZ2h0XCIgKGNsaWNrKT1cIm5hdmlnYXRlSW1hZ2UoJ3JpZ2h0JylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IHBvc2l0aW9uLWFic29sdXRlIGVuZC0wIHRvcC01MCB6LWluZGV4LTEwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilrZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+IC0tPlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gUmlnaHQgYXJyb3cgYnV0dG9uIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB4LTIgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTIgaW1nLWRvYy10aW1lXCI+VGFuZ28gSUQgOiB7eyh0ZW1wTW9kYWxJbWFnZSB8fCBzZWxlY3RJbWFnZUFycmF5KT8udGVtcGxkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0ZW1wTW9kYWxJbWFnZSB8fCBzZWxlY3RJbWFnZUFycmF5KT8udGVtcElkfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIodGVtcE1vZGFsSW1hZ2UgfHwgc2VsZWN0SW1hZ2VBcnJheSk/LnN0YXR1cyA9PT0nYXBwcm92ZWQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXMtMlwiPjxzdmcgc3R5bGU9XCJ3aWR0aDogMjBweDtcbiAgICBoZWlnaHQ6IDIwcHg7XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMVwiIHZpZXdCb3g9XCIwIDAgMTAgMTFcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHk9XCIwLjVcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiByeD1cIjVcIiBmaWxsPVwiI0QxRkFERlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTcuMTIyMiAzLjU3OTE5TDQuMTM4ODcgNi40NTgzNkwzLjM0NzIgNS42MTI1M0MzLjIwMTM3IDUuNDc1MDMgMi45NzIyIDUuNDY2NjkgMi44MDU1MyA1LjU4MzM2QzIuNjQzMDMgNS43MDQxOSAyLjU5NzIgNS45MTY2OSAyLjY5NzIgNi4wODc1M0wzLjYzNDcgNy42MTI1M0MzLjcyNjM3IDcuNzU0MTkgMy44ODQ3IDcuODQxNjkgNC4wNjM4NyA3Ljg0MTY5QzQuMjM0NyA3Ljg0MTY5IDQuMzk3MiA3Ljc1NDE5IDQuNDg4ODcgNy42MTI1M0M0LjYzODg3IDcuNDE2NjkgNy41MDEzNyA0LjAwNDE5IDcuNTAxMzcgNC4wMDQxOUM3Ljg3NjM3IDMuNjIwODYgNy40MjIyIDMuMjgzMzYgNy4xMjIyIDMuNTc1MDNWMy41NzkxOVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzEyQjc2QVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiKHRlbXBNb2RhbEltYWdlIHx8IHNlbGVjdEltYWdlQXJyYXkpPy5zdGF0dXMgPT09J3JlamVjdGVkJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1zLTJcIj48c3ZnIHN0eWxlPVwid2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEzXCIgaGVpZ2h0PVwiMTNcIiB2aWV3Qm94PVwiMCAwIDEzIDEzXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE0MjhfNTk0ODQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuNTI5NjEgMS41SDguNjY5NjFMMTEuNTk5NiA0LjQzVjguNTdMOC42Njk2MSAxMS41SDQuNTI5NjFMMS41OTk2MSA4LjU3VjQuNDNMNC41Mjk2MSAxLjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRkVFNEUyXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wOTk2MSA1TDUuMDk5NjEgOE01LjA5OTYxIDVMOC4wOTk2MSA4TTQuNTI5NjEgMS41SDguNjY5NjFMMTEuNTk5NiA0LjQzVjguNTdMOC42Njk2MSAxMS41SDQuNTI5NjFMMS41OTk2MSA4LjU3VjQuNDNMNC41Mjk2MSAxLjVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTQyOF81OTQ4NFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC41OTk2MDkgMC41KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nLWRvYy12YWx1ZVwiPkVudHJ5IFRpbWUgOiB7eyh0ZW1wTW9kYWxJbWFnZSB8fCBzZWxlY3RJbWFnZUFycmF5KT8uZW50cnlUbWUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRlbXBNb2RhbEltYWdlIHx8IHNlbGVjdEltYWdlQXJyYXkpPy5lbnRyeVRpbWV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTUgdGV4dC1lbmQgcHktM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiKHRlbXBNb2RhbEltYWdlIHx8IHNlbGVjdEltYWdlQXJyYXkpPy5yZXZvcHNUeXBlID09PSdub24tdGFnZ2luZydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiWWV0IHRvIHRhZyB0aGUgY3VzdG9tZXJcIiBwbGFjZW1lbnQ9XCJ0b3BcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOVwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOSAxOFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMDIzNDQgNS42MjVINi4wMzA5NE0xNi4yMTU5IDEwLjQzMjVMMTAuODM4NCAxNS44MUMxMC42OTkxIDE1Ljk0OTUgMTAuNTMzNyAxNi4wNjAxIDEwLjM1MTYgMTYuMTM1NkMxMC4xNjk1IDE2LjIxMTEgOS45NzQzMSAxNi4yNDk5IDkuNzc3MTkgMTYuMjQ5OUM5LjU4MDA2IDE2LjI0OTkgOS4zODQ4NyAxNi4yMTExIDkuMjAyNzggMTYuMTM1NkM5LjAyMDY4IDE2LjA2MDEgOC44NTUyNSAxNS45NDk1IDguNzE1OTQgMTUuODFMMi4yNzM0NCA5LjM3NVYxLjg3NUg5Ljc3MzQ0TDE2LjIxNTkgOC4zMTc1QzE2LjQ5NTMgOC41OTg1NCAxNi42NTIxIDguOTc4NzIgMTYuNjUyMSA5LjM3NUMxNi42NTIxIDkuNzcxMjggMTYuNDk1MyAxMC4xNTE1IDE2LjIxNTkgMTAuNDMyNVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIodGVtcE1vZGFsSW1hZ2UgfHwgc2VsZWN0SW1hZ2VBcnJheSk/LnJldm9wc1R5cGUgPT09J2R1cGxpY2F0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIih0ZW1wTW9kYWxJbWFnZSB8fCBzZWxlY3RJbWFnZUFycmF5KT8uaXNQYXJlbnRcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDEwIDEwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzU2OF8xMDM2NTcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjA4Mzk4IDYuMjUwMDFIMS42NjczMkMxLjQ0NjMgNi4yNTAwMSAxLjIzNDM0IDYuMTYyMjEgMS4wNzgwNiA2LjAwNTkzQzAuOTIxNzgyIDUuODQ5NjUgMC44MzM5ODQgNS42Mzc2OSAwLjgzMzk4NCA1LjQxNjY4VjEuNjY2NjhDMC44MzM5ODQgMS40NDU2NiAwLjkyMTc4MiAxLjIzMzcgMS4wNzgwNiAxLjA3NzQyQzEuMjM0MzQgMC45MjExNDEgMS40NDYzIDAuODMzMzQ0IDEuNjY3MzIgMC44MzMzNDRINS40MTczMkM1LjYzODMzIDAuODMzMzQ0IDUuODUwMjkgMC45MjExNDEgNi4wMDY1NyAxLjA3NzQyQzYuMTYyODUgMS4yMzM3IDYuMjUwNjUgMS40NDU2NiA2LjI1MDY1IDEuNjY2NjhWMi4wODMzNE00LjU4Mzk4IDMuNzUwMDFIOC4zMzM5OEM4Ljc5NDIyIDMuNzUwMDEgOS4xNjczMiA0LjEyMzExIDkuMTY3MzIgNC41ODMzNFY4LjMzMzM0QzkuMTY3MzIgOC43OTM1OCA4Ljc5NDIyIDkuMTY2NjggOC4zMzM5OCA5LjE2NjY4SDQuNTgzOThDNC4xMjM3NSA5LjE2NjY4IDMuNzUwNjUgOC43OTM1OCAzLjc1MDY1IDguMzMzMzRWNC41ODMzNEMzLjc1MDY1IDQuMTIzMTEgNC4xMjM3NSAzLjc1MDAxIDQuNTgzOTggMy43NTAwMVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjVcIiBoZWlnaHQ9XCI1XCIgZmlsbD1cIiM0NzU0NjdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfNTY4XzEwMzY1N1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiISh0ZW1wTW9kYWxJbWFnZSB8fCBzZWxlY3RJbWFnZUFycmF5KT8uaXNQYXJlbnRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00LjE2Nzk3IDEzLjE4NTlIMy4zMzQ2NEMyLjg5MjYxIDEzLjE4NTkgMi40Njg2OCAxMy4wMTAzIDIuMTU2MTIgMTIuNjk3N0MxLjg0MzU2IDEyLjM4NTIgMS42Njc5NyAxMS45NjEyIDEuNjY3OTcgMTEuNTE5MlY0LjAxOTIxQzEuNjY3OTcgMy41NzcxOCAxLjg0MzU2IDMuMTUzMjYgMi4xNTYxMiAyLjg0MDY5QzIuNDY4NjggMi41MjgxMyAyLjg5MjYxIDIuMzUyNTQgMy4zMzQ2NCAyLjM1MjU0SDEwLjgzNDZDMTEuMjc2NyAyLjM1MjU0IDExLjcwMDYgMi41MjgxMyAxMi4wMTMxIDIuODQwNjlDMTIuMzI1NyAzLjE1MzI2IDEyLjUwMTMgMy41NzcxOCAxMi41MDEzIDQuMDE5MjFWNC44NTI1NE05LjE2Nzk3IDguMTg1ODdIMTYuNjY4QzE3LjU4ODQgOC4xODU4NyAxOC4zMzQ2IDguOTMyMDYgMTguMzM0NiA5Ljg1MjU0VjE3LjM1MjVDMTguMzM0NiAxOC4yNzMgMTcuNTg4NCAxOS4wMTkyIDE2LjY2OCAxOS4wMTkySDkuMTY3OTdDOC4yNDc0OSAxOS4wMTkyIDcuNTAxMyAxOC4yNzMgNy41MDEzIDE3LjM1MjVWOS44NTI1NEM3LjUwMTMgOC45MzIwNiA4LjI0NzQ5IDguMTg1ODcgOS4xNjc5NyA4LjE4NTg3WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIodGVtcE1vZGFsSW1hZ2UgfHwgc2VsZWN0SW1hZ2VBcnJheSk/LnJldm9wc1R5cGUgPT09J2VtcGxveWVlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIiB2aWV3Qm94PVwiMCAwIDIwIDIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xNjU0IDE4LjE4NlYxNi41MTk0QzE0LjE2NTQgMTUuNjM1MyAxMy44MTQyIDE0Ljc4NzUgMTMuMTg5MSAxNC4xNjIzQzEyLjU2MzkgMTMuNTM3MiAxMS43MTYxIDEzLjE4NiAxMC44MzIgMTMuMTg2SDQuMTY1MzZDMy4yODEzMSAxMy4xODYgMi40MzM0NiAxMy41MzcyIDEuODA4MzQgMTQuMTYyM0MxLjE4MzIyIDE0Ljc4NzUgMC44MzIwMzEgMTUuNjM1MyAwLjgzMjAzMSAxNi41MTk0VjE4LjE4Nk0xOS4xNjU0IDE4LjE4NlYxNi41MTk0QzE5LjE2NDggMTUuNzgwOCAxOC45MTkgMTUuMDYzMyAxOC40NjY1IDE0LjQ3OTZDMTguMDE0IDEzLjg5NTkgMTcuMzgwNSAxMy40NzkgMTYuNjY1NCAxMy4yOTQ0TTEzLjMzMiAzLjI5NDM3QzE0LjA0OSAzLjQ3Nzk1IDE0LjY4NDYgMy44OTQ5NSAxNS4xMzg0IDQuNDc5NjNDMTUuNTkyMiA1LjA2NDMgMTUuODM4NiA1Ljc4MzM5IDE1LjgzODYgNi41MjM1NEMxNS44Mzg2IDcuMjYzNjggMTUuNTkyMiA3Ljk4Mjc3IDE1LjEzODQgOC41Njc0NEMxNC42ODQ2IDkuMTUyMTIgMTQuMDQ5IDkuNTY5MTIgMTMuMzMyIDkuNzUyN00xMC44MzIgNi41MTkzN0MxMC44MzIgOC4zNjAzMiA5LjMzOTY1IDkuODUyNyA3LjQ5ODcgOS44NTI3QzUuNjU3NzUgOS44NTI3IDQuMTY1MzYgOC4zNjAzMiA0LjE2NTM2IDYuNTE5MzdDNC4xNjUzNiA0LjY3ODQyIDUuNjU3NzUgMy4xODYwNCA3LjQ5ODcgMy4xODYwNEM5LjMzOTY1IDMuMTg2MDQgMTAuODMyIDQuNjc4NDIgMTAuODMyIDYuNTE5MzdaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzOVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIodGVtcE1vZGFsSW1hZ2UgfHwgc2VsZWN0SW1hZ2VBcnJheSk/LnJldm9wc1R5cGUgPT09J2hvdXNlS2VlcGluZydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAyMSAyMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjQzKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05LjI2MjE5IDEuMzY3MjJDMTAuMTc3NyAwLjQ1ODk3NCAxMS42NjIgMC40NTg5NzQgMTIuNTc3NiAxLjM2NzIyTDIwLjMxMzMgOS4wNDE1M0MyMS4yMjg3IDkuOTQ5OCAyMS4yMjg3IDExLjQyMjMgMjAuMzEzMyAxMi4zMzA2TDEyLjU3NzYgMjAuMDA0OUMxMS42NjIgMjAuOTEzMSAxMC4xNzc3IDIwLjkxMzEgOS4yNjIxOSAyMC4wMDQ5TDcuMDUxNjYgMTcuODExOUw1LjAyNTM4IDE5LjgyMjFDNC4xMDk4NyAyMC43MzAzIDIuNjI1NTMgMjAuNzMwMyAxLjcxMDAyIDE5LjgyMjFDMC43OTQ1MSAxOC45MTM5IDAuNzk0NTEgMTcuNDQxMyAxLjcxMDAyIDE2LjUzMzFMMy43MzYzIDE0LjUyMjlMMS41MjY0OCAxMi4zMzA2QzAuNjEwOTY2IDExLjQyMjMgMC42MTA5NjYgOS45NDk4IDEuNTI2NDggOS4wNDE1M0w5LjI2MjE5IDEuMzY3MjJaTTExLjQ3MjQgMi40NjM1N0MxMS4xNjcyIDIuMTYwODIgMTAuNjcyNCAyLjE2MDgyIDEwLjM2NzIgMi40NjM1N0w0Ljg0MTQ1IDcuOTQ1NTZMMTMuNjgyMyAxNi43MTYzTDE5LjIwODEgMTEuMjM0MkMxOS41MTMzIDEwLjkzMTUgMTkuNTEzMyAxMC40NDA2IDE5LjIwODEgMTAuMTM3OUwxNS4zMzk5IDYuMzAwMzJMMTQuMDUwNSA3LjU3OTRDMTMuNzQ1MyA3Ljg4MjE0IDEzLjI1MDYgNy44ODIxNCAxMi45NDU1IDcuNTc5NEMxMi42NDAzIDcuMjc2NjQgMTIuNjQwMyA2Ljc4NTc5IDEyLjk0NTUgNi40ODMwNUwxNC4yMzQ3IDUuMjAzOTdMMTMuMTI5OSA0LjEwNzg2TDkuOTk4NzIgNy4yMTQxOEM5LjY5MzU0IDcuNTE2OTIgOS4xOTg3MyA3LjUxNjkyIDguODkzNTYgNy4yMTQxOEM4LjU4ODM4IDYuOTExNDMgOC41ODgzOCA2LjQyMDU4IDguODkzNTYgNi4xMTc4M0wxMi4wMjQ3IDMuMDExNTFMMTEuNDcyNCAyLjQ2MzU3Wk0xMi41NzcxIDE3LjgxMjVMMy43MzYzMyA5LjA0MTkxTDIuNjMxNiAxMC4xMzc5QzIuMzI2NDIgMTAuNDQwNiAyLjMyNjQyIDEwLjkzMTUgMi42MzE2IDExLjIzNDJMMTAuMzY3MiAxOC45MDg1QzEwLjY3MjQgMTkuMjExMyAxMS4xNjcyIDE5LjIxMTMgMTEuNDcyNCAxOC45MDg1TDEyLjU3NzEgMTcuODEyNVpNNC44NDEzMiAxNS42MTkyTDIuODE1MTQgMTcuNjI5NEMyLjUwOTk3IDE3LjkzMjEgMi41MDk5NyAxOC40MjMgMi44MTUxNCAxOC43MjU4QzMuMTIwMzEgMTkuMDI4NSAzLjYxNTA5IDE5LjAyODUgMy45MjAyNiAxOC43MjU4TDUuOTQ2NDQgMTYuNzE1Nkw0Ljg0MTMyIDE1LjYxOTJaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM0NzU0NjdcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDY0M1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIodGVtcE1vZGFsSW1hZ2UgfHwgc2VsZWN0SW1hZ2VBcnJheSk/LnJldm9wc1R5cGUgPT09ICdqdW5rJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zIDZINU01IDZIMjFNNSA2VjIwQzUgMjAuNTMwNCA1LjIxMDcxIDIxLjAzOTEgNS41ODU3OSAyMS40MTQyQzUuOTYwODYgMjEuNzg5MyA2LjQ2OTU3IDIyIDcgMjJIMTdDMTcuNTMwNCAyMiAxOC4wMzkxIDIxLjc4OTMgMTguNDE0MiAyMS40MTQyQzE4Ljc4OTMgMjEuMDM5MSAxOSAyMC41MzA0IDE5IDIwVjZINVpNOCA2VjRDOCAzLjQ2OTU3IDguMjEwNzEgMi45NjA4NiA4LjU4NTc5IDIuNTg1NzlDOC45NjA4NiAyLjIxMDcxIDkuNDY5NTcgMiAxMCAySDE0QzE0LjUzMDQgMiAxNS4wMzkxIDIuMjEwNzEgMTUuNDE0MiAyLjU4NTc5QzE1Ljc4OTMgMi45NjA4NiAxNiAzLjQ2OTU3IDE2IDRWNk0xMCAxMVYxN00xNCAxMVYxN1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyIHB5LTIgcHgtMFwiPiAtLT5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgcHktMiBtYi0yIHB4LTAgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cblxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZVwiIChjbGljayk9XCJjbG9zZUltYWdlKClcIj5DbG9zZTwvYnV0dG9uPlxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIDwvZGl2PiAtLT5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gRm9vdGZhbGwgVHJlbmRzIFRlbXBsYXRlIC0tPlxuPG5nLXRlbXBsYXRlICNmb290ZmFsbFRyZW5kc1RlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJyb3cgdy0xMDAgbWItMSBnLTFcIj5cbiAgICAgICAgPCEtLSBUb3RhbCBGb290ZmFsbCBDYXJkIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldHJpYy10aXRsZVwiPlRvdGFsIEZvb3RmYWxsPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBwbGFjZW1lbnQ9XCJ0b3BcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQgMThIOS41VjE5LjI1QzkuNSAxOS45NzkzIDkuMjEwMjcgMjAuNjc4OCA4LjY5NDU0IDIxLjE5NDVDOC4xNzg4MiAyMS43MTAzIDcuNDc5MzUgMjIgNi43NSAyMkM2LjAyMDY1IDIyIDUuMzIxMTggMjEuNzEwMyA0LjgwNTQ2IDIxLjE5NDVDNC4yODk3MyAyMC42Nzg4IDQgMTkuOTc5MyA0IDE5LjI1VjE4Wk04IDYuMTE5OTlDMTAgNi4xMTk5OSAxMSA4Ljk5OTk5IDExIDExQzExIDEyIDEwLjUgMTMgMTAgMTQuNUw5LjUgMTZINEM0IDE1IDMuNSAxMy41IDMuNSAxMUMzLjUgOC40OTk5OSA1LjQ5OCA2LjExOTk5IDggNi4xMTk5OVpNMjAuMDU0IDE0LjA5OEwxOS44MzcgMTUuMzI5QzE5LjcwMjMgMTYuMDM5NiAxOS4yOTMxIDE2LjY2ODYgMTguNjk4IDE3LjA3OTZDMTguMTAyOSAxNy40OTA3IDE3LjM2OTggMTcuNjUwOCAxNi42NTc2IDE3LjUyNTJDMTUuOTQ1MyAxNy4zOTk2IDE1LjMxMTEgMTYuOTk4NCAxNC44OTI1IDE2LjQwODZDMTQuNDczOSAxNS44MTg4IDE0LjMwNDUgMTUuMDg3OCAxNC40MjEgMTQuMzc0TDE0LjYzNyAxMy4xNDRMMjAuMDU0IDE0LjA5OFpNMTguMTc4IDEuNzA0OTlDMjAuNjQyIDIuMTM4OTkgMjIuMTk2IDQuODI5OTkgMjEuNzYyIDcuMjkxOTlDMjEuMzI4IDkuNzUzOTkgMjAuNTc1IDExLjE0NCAyMC40MDIgMTIuMTI5TDE0Ljk4NSAxMS4xNzRMMTQuNzUzIDkuNjA5OTlDMTQuNTIxIDguMDQ1OTkgMTQuMjAzIDYuOTczOTkgMTQuMzc2IDUuOTg5OTlDMTQuNzIzIDQuMDE5OTkgMTYuMjA4IDEuMzU3OTkgMTguMTc4IDEuNzA0OTlaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMwMEEzRkZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtdmFsdWVcIj57eyBnZXRDdXJyZW50Rm9vdGZhbGwoKSB8fCAwIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgIDwhLS0gW25nQ2xhc3NdPVwiZ2V0Rm9vdGZhbGxQZXJjZW50YWdlQ2hhbmdlKCkgPj0gMCA/ICd1cCcgOiAnZG93bidcIiAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLXRyZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE1LjMzMjcgMy45OTk5OEw4Ljk5OTM1IDEwLjMzMzNMNS42NjYwMiA2Ljk5OTk4TDAuNjY2MDE2IDEyTTE1LjMzMjcgMy45OTk5OEgxMS4zMzI3TTE1LjMzMjcgMy45OTk5OFY3Ljk5OTk4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDM5ODU1XCIgc3Ryb2tlLXdpZHRoPVwiMS4xODY4MVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cImNvbG9yOiAjMTBCOTgxXCI+e3tnZXRGb290ZmFsbFBlcmNlbnRhZ2VDaGFuZ2UoKSB9fSUgPC9zcGFuPjxzcGFuPnZzIFllc3RlcmRheTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSBUb3RhbCBEb3dudGltZSBDYXJkIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldHJpYy10aXRsZVwiPlRvdGFsIERvd250aW1lPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRvd250aW1lLWljb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDFcIiB2aWV3Qm94PVwiMCAwIDQwIDQxXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHk9XCIwLjVcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiByeD1cIjIwXCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yMS45MDA0IDEyLjE2NzVDMjIuOTk1OCAxMi4xNjc1IDI0LjA0MjMgMTIuMzkxOCAyNC45OTc3IDEyLjc5ODdDMjUuOTg4OSAxMy4yMjA3IDI2Ljg4MDkgMTMuODQwMiAyNy42Mjc5IDE0LjYwODdDMjguMzczNCAxNS4zNzU2IDI4Ljk3NTYgMTYuMjkzMSAyOS4zODU3IDE3LjMxNjJDMjkuNzgxMyAxOC4yOTkgMjkuOTk5MyAxOS4zNzU2IDI5Ljk5OTMgMjAuNTAwOEMyOS45OTkzIDIxLjYyNzcgMjkuNzgxMyAyMi43MDQzIDI5LjM4NTcgMjMuNjg3MUMyOC45NzU2IDI0LjcwNjggMjguMzczNCAyNS42MjQ0IDI3LjYyNjMgMjYuMzkyOUMyNi44ODA5IDI3LjE1OTggMjUuOTg4OSAyNy43NzkzIDI0Ljk5NDUgMjguMjAxMkMyNC4wMzkxIDI4LjYwODEgMjIuOTkyNSAyOC44MzI1IDIxLjg5ODggMjguODMyNUMyMC44MDM0IDI4LjgzMjUgMTkuNzU2OCAyOC42MDgxIDE4LjgwMTQgMjguMjAxMkMxNy44MTAyIDI3Ljc3OTMgMTYuOTE4MyAyNy4xNTk4IDE2LjE3MjkgMjYuMzkyOUwxNi4xNzEyIDI2LjM5MTJDMTUuNDI0MiAyNS42MjI3IDE0LjgyMzYgMjQuNzA1MiAxNC40MTM0IDIzLjY4NzFDMTQuMjg2NSAyMy4zNzA3IDE0LjE3NzQgMjMuMDQ1OSAxNC4wODc5IDIyLjcxMjdDMTQuMjU3MiAyMi43Mjk0IDE0LjQyOTcgMjIuNzM3OCAxNC42MDM4IDIyLjczNzhDMTQuOTM0MiAyMi43Mzc4IDE1LjI1NjUgMjIuNzA3NiAxNS41NzA2IDIyLjY0OUMxNS42MjI3IDIyLjgwOTggMTUuNjc5NyAyMi45Njg4IDE1Ljc0MTUgMjMuMTI0NkMxNi4wNzg1IDIzLjk2MTcgMTYuNTczMiAyNC43MTUyIDE3LjE4ODUgMjUuMzQ4MUMxNy44MDM3IDI1Ljk4MSAxOC41Mzc4IDI2LjQ5IDE5LjM0OTkgMjYuODM2NkMyMC4xMzI4IDI3LjE2OTggMjAuOTkzOCAyNy4zNTU3IDIxLjg5ODggMjcuMzU1N0MyMi44MDM3IDI3LjM1NTcgMjMuNjYzMSAyNy4xNzE1IDI0LjQ0NzYgMjYuODM2NkMyNS4yNjE0IDI2LjQ5IDI1Ljk5MzggMjUuOTgxIDI2LjYwOTEgMjUuMzQ4MUMyNy4yMjQzIDI0LjcxNTIgMjcuNzE5MSAyMy45NjAxIDI4LjA1NiAyMy4xMjQ2QzI4LjM3OTkgMjIuMzE5MiAyOC41NjA1IDIxLjQzMzQgMjguNTYwNSAyMC41MDI1QzI4LjU2MDUgMTkuNTcxNSAyOC4zODE1IDE4LjY4NzUgMjguMDU2IDE3Ljg4MDRDMjcuNzE5MSAxNy4wNDMyIDI3LjIyNDMgMTYuMjg5OCAyNi42MDkxIDE1LjY1NjlDMjUuOTkzOCAxNS4wMjQgMjUuMjU5OCAxNC41MTQ5IDI0LjQ0NzYgMTQuMTY4NEMyMy42NjQ3IDEzLjgzNTIgMjIuODAzNyAxMy42NDkzIDIxLjg5ODggMTMuNjQ5M0MyMC45OTM4IDEzLjY0OTMgMjAuMTM0NCAxMy44MzM1IDE5LjM0OTkgMTQuMTY4NEMxOS4yNzk5IDE0LjE5ODUgMTkuMjEgMTQuMjMwMyAxOS4xNDE2IDE0LjI2MjFDMTguODc0NyAxMy44MzAxIDE4LjU1MjQgMTMuNDM4MyAxOC4xODI5IDEzLjA5ODRDMTguMzg0OCAxMi45OTEzIDE4LjU5MTUgMTIuODkyNSAxOC44MDE0IDEyLjgwMjFDMTkuNzYwMSAxMi4zOTE4IDIwLjgwNSAxMi4xNjc1IDIxLjkwMDQgMTIuMTY3NVpNMjAuOTcxIDE2LjUzOTNDMjAuOTcxIDE2LjMzNSAyMS4wNTI0IDE2LjE1MDggMjEuMTgxIDE2LjAxNjlDMjEuMzExMiAxNS44ODI5IDIxLjQ5MDIgMTUuODAwOSAyMS42ODg4IDE1LjgwMDlDMjEuODg3NCAxNS44MDA5IDIyLjA2NjQgMTUuODgyOSAyMi4xOTY2IDE2LjAxNjlDMjIuMzI2OCAxNi4xNTA4IDIyLjQwNjYgMTYuMzM1IDIyLjQwNjYgMTYuNTM5M1YyMC40MjcxTDI1LjIzMDUgMjIuMTUwMUMyNS4zOTk3IDIyLjI1MzkgMjUuNTEzNyAyMi40MTk2IDI1LjU1OTIgMjIuNjAyMUMyNS42MDQ4IDIyLjc4NDcgMjUuNTgzNyAyMi45ODU2IDI1LjQ4MjcgMjMuMTU5N1YyMy4xNjE0QzI1LjM4MTggMjMuMzM1NSAyNS4yMjA3IDIzLjQ1MjcgMjUuMDQzMyAyMy40OTk2QzI0Ljg2NTkgMjMuNTQ2NSAyNC42NzA2IDIzLjUyNDcgMjQuNTAxMyAyMy40MjA5SDI0LjQ5OTdMMjEuMzQwNSAyMS40OTM3QzIxLjIzMTQgMjEuNDMxOCAyMS4xNDE5IDIxLjM0MTMgMjEuMDc2OCAyMS4yMzQyQzIxLjAxMDEgMjEuMTIyIDIwLjk3MSAyMC45ODk3IDIwLjk3MSAyMC44NDkxVjE2LjUzOTNaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNjY3MDg1XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4zOTEzIDEyLjYwOTVDMTYuODE2NCAxMi42MDk1IDE4Ljc4MjYgMTQuNjMyMSAxOC43ODI2IDE3LjEyNjlDMTguNzgyNiAxOS42MjE4IDE2LjgxNjQgMjEuNjQ0NCAxNC4zOTEzIDIxLjY0NDRDMTEuOTY2MSAyMS42NDQ0IDEwIDE5LjYyMTggMTAgMTcuMTI2OUMxMCAxNC42MzIxIDExLjk2NjEgMTIuNjA5NSAxNC4zOTEzIDEyLjYwOTVaTTE0LjM5MTMgMTkuNzE3MkwxNi43NDggMTYuNzIwMUgxNS4yODQ4VjE1LjEyNjFIMTMuNDk3N1YxNi43MjAxSDEyLjAzNDVMMTQuMzkxMyAxOS43MTcyWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0YwNDQzOFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy12YWx1ZVwiPnt7IGdldEZvcm1hdHRlZERvd250aW1lKCkgfHwgJy0nIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy10cmVuZCBtZXRyaWMtdHJlbmQtcGxhY2Vob2xkZXJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJtZXRyaWMtdGFnIHN1Y2Nlc3NcIiAqbmdJZj1cImhhc0Rvd250aW1lKClcIj4gLS0+XG4gICAgICAgICAgICAgICAgPCEtLSA8c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNjY2NyAzLjVMNS4yNSA5LjkxNjY3TDIuMzMzMzQgN1wiIHN0cm9rZT1cIiMxMEI5ODFcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz4gLS0+XG4gICAgICAgICAgICAgICAgPCEtLSA8c3Bhbj5Jc3N1ZSBzdWJtaXR0ZWQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk00LjUgMi41TDcuNSA1LjVMMTAuNSAyLjVcIiBzdHJva2U9XCIjMTBCOTgxXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz4gLS0+XG4gICAgICAgICAgICAgICAgPCEtLSA8L2Rpdj4gLS0+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBUaWNrZXQgU3RhdHVzIENhcmQgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRyaWMtdGl0bGVcIj5UaWNrZXQgc3RhdHVzPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtdmFsdWVcIiBcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgJ3RpY2tldC1zdGF0dXMtcmFpc2VkJzogZ2V0VGlja2V0U3RhdHVzKCk/LnRvTG93ZXJDYXNlKCkgPT09ICdyYWlzZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RpY2tldC1zdGF0dXMtY2xvc2VkJzogZ2V0VGlja2V0U3RhdHVzKCk/LnRvTG93ZXJDYXNlKCkgPT09ICdjbG9zZWQnXG4gICAgICAgICAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICAgICAgICAgICAge3sgZ2V0VGlja2V0U3RhdHVzKCkgPT09ICctJyA/ICctJyA6IChnZXRUaWNrZXRTdGF0dXMoKSB8IHRpdGxlY2FzZSkgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLXRyZW5kIG1ldHJpYy10cmVuZC1wbGFjZWhvbGRlclwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3Jlc2V0UmVxdWVzdFBvcHVwIGxldC1tb2RlbD5cbiAgICA8ZGl2IGNsYXNzPVwicC00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgYm9yZGVyLTAgcC0wIHctMTAwXCI+XG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZSBtYi0zIGZ3LWJvbGRcIj5cbiAgICAgICAgICAgICAgICBSZXNldCByZXF1ZXN0LlxuICAgICAgICAgICAgPC9oNT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHAtMFwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LW11dGVkIG1iLTNcIj5cbiAgICAgICAgICAgICAgICBZb3UncmUgcmVxdWVzdGluZyB0byByZS1lbmFibGUgZm9vdGZhbGwgdGlja2V0cywgZGlzYWJsZWQgYWZ0ZXIgdGhyZWUgaW5zdGFuY2VzIG9mIGV4Y2VlZGluZyA5NSVcbiAgICAgICAgICAgICAgICBhY2N1cmFjeS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1tdXRlZCBtYi0wXCI+XG4gICAgICAgICAgICAgICAgUGxlYXNlIGVuc3VyZSBmdXR1cmUgYWNjdXJhY3kgc3RheXMgb24gb3Igd2l0aGluIDk1JS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXIgYm9yZGVyLTAgcC0wIG10LTQgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgZ2FwLTJcIj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lXCIgKGNsaWNrKT1cImNhbmNlbFJlc2V0UmVxdWVzdCgpXCI+XG4gICAgICAgICAgICAgICAgQ2FuY2VsXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cInN1Ym1pdFJlc2V0UmVxdWVzdCgpXCI+XG4gICAgICAgICAgICAgICAgU2VuZCBSZXF1ZXN0XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RpY2tldFN0YXR1c1RlbXBsYXRlIGxldC1tb2RlbD5cbiAgICA8IS0tIFRpY2tldCBSZXZpZXcgQ2FyZCAoc2hvd24gd2hlbiB0aWNrZXQgc3RhdHVzIGlzIHJhaXNlZCkgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtYi0zXCIgKm5nSWY9XCJpc1RpY2tldFJhaXNlZCgpICYmIGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJylcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1yZXZpZXctY2FyZFwiPlxuICAgICAgICAgICAgPCEtLSBBY3R1YWwgRm9vdGZhbGwgSGVhZGVyIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdHVhbC1mb290ZmFsbC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFjdHVhbC1mb290ZmFsbC1udW1iZXJcIj57eyBnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5mb290ZmFsbCB8fCAwIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWN0dWFsLWZvb3RmYWxsLWxhYmVsXCI+QWN0dWFsIEZvb3RmYWxsPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIFRpY2tldCBDcmVhdGVkIEJ5IFNlY3Rpb24gLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LWNyZWF0b3Itc2VjdGlvblwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5jcmVhdGVkQnlFbWFpbCB8fCBnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5jcmVhdGVkQXRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjcmVhdG9yLWF2YXRhclwiICpuZ0lmPVwiZ2V0VGFnZ2luZ0RhdGEoKT8uY3JlYXRlZEJ5RW1haWw/LnByb2ZpbGVQaWN0dXJlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiZ2V0VGFnZ2luZ0RhdGEoKT8uY3JlYXRlZEJ5RW1haWw/LnByb2ZpbGVQaWN0dXJlXCIgYWx0PVwiUHJvZmlsZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNyZWF0b3ItYXZhdGFyLXBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LmNyZWF0ZWRCeUVtYWlsPy5wcm9maWxlUGljdHVyZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiB2aWV3Qm94PVwiMCAwIDMyIDMyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgcng9XCIxNlwiIGZpbGw9XCIjRUFGOEZGXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2IDEwQzE3LjY1NjkgMTAgMTkgMTEuMzQzMSAxOSAxM0MxOSAxNC42NTY5IDE3LjY1NjkgMTYgMTYgMTZDMTQuMzQzMSAxNiAxMyAxNC42NTY5IDEzIDEzQzEzIDExLjM0MzEgMTQuMzQzMSAxMCAxNiAxMFpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzAwQTNGRlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMSAyMkMxMSAxOS4yMzg2IDEzLjIzODYgMTcgMTYgMTdDMTguNzYxNCAxNyAyMSAxOS4yMzg2IDIxIDIyVjIzSDExVjIyWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMDBBM0ZGXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNyZWF0b3ItaW5mb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNyZWF0b3ItbGFiZWxcIj5UaWNrZXQgY3JlYXRlZCBieTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNyZWF0b3ItZGV0YWlsc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3JlYXRvci1lbWFpbFwiPnt7IGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LmNyZWF0ZWRCeUVtYWlsIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LmNyZWF0ZWRCeUVtYWlsIHx8ICdOL0EnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3JlYXRvci1zZXBhcmF0b3JcIiAqbmdJZj1cImdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LmNyZWF0ZWRBdFwiPuKAojwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNyZWF0b3ItdGltZVwiICpuZ0lmPVwiZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8uY3JlYXRlZEF0XCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8uY3JlYXRlZEF0IHwgZGF0ZTonaDptbTpzcyBhIC0gZCBNTU0geXl5eScgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBUaWNrZXQgUmV2aXNlZCBGb290ZmFsbCBhbmQgTWV0cmljcyAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpc2VkLWZvb3RmYWxsLXNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljcy1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlciBibHVlLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5yZXZpY2VkRm9vdGZhbGwgfHwgMCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWV0cmljLXBlcmNlbnRhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHt7IGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LnJldmljZWRQZXJjIHx8IDAgfX0lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldHJpYy1hcnJvd1wiPuKGkzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1sYWJlbFwiPlJldmlzZWQgZm9vdGZhbGw8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1udW1iZXJcIj4oe3sgZ2V0UmV2aXNpb25DYWxjdWxhdGlvbigndGFnZ2luZycpfX0lKTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1sYWJlbFwiPlRpY2tldCU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtZGl2aWRlclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbnVtYmVyXCI+e3sgZ2V0Q291bnRCeVR5cGUoZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKSwgJ2R1cGxpY2F0ZScpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+RHVwbGljYXRlczwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlclwiPnt7IGdldENvdW50QnlUeXBlKGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyksICdlbXBsb3llZScpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+RW1wbG95ZWUvU3RhZmY8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1udW1iZXJcIj57eyBnZXRDb3VudEJ5VHlwZShnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpLCAnanVuaycpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+SnVuazwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlclwiPnt7IGdldENvdW50QnlUeXBlKGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyksICdob3VzZUtlZXBpbmcnKSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1sYWJlbFwiPkhvdXNlIEtlZXBpbmc8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFRpY2tldCBGaW5hbCByZXZpc2lvbiBDYXJkIChzaG93biB3aGVuIHRpY2tldCBzdGF0dXMgaXMgY2xvc2VkKSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1iLTNcIiAqbmdJZj1cImlzVGlja2V0Q2xvc2VkKCkgJiYgZ2V0VGFnZ2luZ0RhdGEoJ2ZpbmFsUmV2aXNpb24nKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGlja2V0LXJldmlldy1jYXJkXCI+XG4gICAgICAgICAgICA8IS0tIFRpY2tldCBjYXJkIHNlY3Rpb24gaW4gcmV2aXNpb24gc3RhcnQgLS0+XG5cbiAgICAgICAgICAgIDwhLS0gQWN0dWFsIEZvb3RmYWxsIEhlYWRlciAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3R1YWwtZm9vdGZhbGwtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhY3R1YWwtZm9vdGZhbGwtbnVtYmVyXCI+e3sgZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8uZm9vdGZhbGwgfHwgMCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFjdHVhbC1mb290ZmFsbC1sYWJlbFwiPkFjdHVhbCBGb290ZmFsbDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPCEtLSBUaWNrZXQgQ3JlYXRlZCBCeSBTZWN0aW9uIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1jcmVhdG9yLXNlY3Rpb25cIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8uY3JlYXRlZEJ5RW1haWwgfHwgZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8uY3JlYXRlZEF0XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY3JlYXRvci1hdmF0YXJcIiAqbmdJZj1cImdldFRhZ2dpbmdEYXRhKCk/LmNyZWF0ZWRCeUVtYWlsPy5wcm9maWxlUGljdHVyZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImdldFRhZ2dpbmdEYXRhKCk/LmNyZWF0ZWRCeUVtYWlsPy5wcm9maWxlUGljdHVyZVwiIGFsdD1cIlByb2ZpbGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcmVhdG9yLWF2YXRhci1wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5jcmVhdGVkQnlFbWFpbD8ucHJvZmlsZVBpY3R1cmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgdmlld0JveD1cIjAgMCAzMiAzMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHJ4PVwiMTZcIiBmaWxsPVwiI0VBRjhGRlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNiAxMEMxNy42NTY5IDEwIDE5IDExLjM0MzEgMTkgMTNDMTkgMTQuNjU2OSAxNy42NTY5IDE2IDE2IDE2QzE0LjM0MzEgMTYgMTMgMTQuNjU2OSAxMyAxM0MxMyAxMS4zNDMxIDE0LjM0MzEgMTAgMTYgMTBaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMwMEEzRkZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTEgMjJDMTEgMTkuMjM4NiAxMy4yMzg2IDE3IDE2IDE3QzE4Ljc2MTQgMTcgMjEgMTkuMjM4NiAyMSAyMlYyM0gxMVYyMlpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzAwQTNGRlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcmVhdG9yLWluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcmVhdG9yLWxhYmVsXCI+VGlja2V0IGNyZWF0ZWQgYnk8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcmVhdG9yLWRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNyZWF0b3ItZW1haWxcIj57eyBnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5jcmVhdGVkQnlFbWFpbCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5jcmVhdGVkQnlFbWFpbCB8fCAnTi9BJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNyZWF0b3Itc2VwYXJhdG9yXCIgKm5nSWY9XCJnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5jcmVhdGVkQXRcIj7igKI8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcmVhdG9yLXRpbWVcIiAqbmdJZj1cImdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LmNyZWF0ZWRBdFwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyk/LmNyZWF0ZWRBdCB8IGRhdGU6J2g6bW06c3MgYSAtIGQgTU1NIHl5eXknIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gVGlja2V0IFJldmlzZWQgRm9vdGZhbGwgYW5kIE1ldHJpY3MgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aXNlZC1mb290ZmFsbC1zZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpY3Mtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1udW1iZXIgYmx1ZS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKT8ucmV2aWNlZEZvb3RmYWxsIHx8IDAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1ldHJpYy1wZXJjZW50YWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7eyBnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpPy5yZXZpY2VkUGVyYyB8fCAwIH19JSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZXRyaWMtYXJyb3dcIj7ihpM8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbGFiZWxcIj5SZXZpc2VkIGZvb3RmYWxsPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbnVtYmVyXCI+KHt7IGdldFJldmlzaW9uQ2FsY3VsYXRpb24oJ3RhZ2dpbmcnKX19JSk8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbGFiZWxcIj5UaWNrZXQlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbnVtYmVyXCI+e3sgZ2V0Q291bnRCeVR5cGUoZ2V0VGFnZ2luZ0RhdGEoJ3RhZ2dpbmcnKSwgJ2R1cGxpY2F0ZScpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+RHVwbGljYXRlczwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlclwiPnt7IGdldENvdW50QnlUeXBlKGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyksICdlbXBsb3llZScpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+RW1wbG95ZWUvU3RhZmY8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1udW1iZXJcIj57eyBnZXRDb3VudEJ5VHlwZShnZXRUYWdnaW5nRGF0YSgndGFnZ2luZycpLCAnanVuaycpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+SnVuazwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlclwiPnt7IGdldENvdW50QnlUeXBlKGdldFRhZ2dpbmdEYXRhKCd0YWdnaW5nJyksICdob3VzZUtlZXBpbmcnKSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1sYWJlbFwiPkhvdXNlIEtlZXBpbmc8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gVGlja2V0IGNhcmQgc2VjdGlvbiBpbiByZXZpc2lvbiBlbmQgLS0+XG5cbiAgICAgICAgICAgIDwhLS0gRmluYWwgUmV2aXNpb24gU2VjdGlvbiAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpc2lvbi1zZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlzaW9uLXRpdGxlXCI+RmluYWwgcmV2aXNpb248L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmluYWwtcmV2aXNpb24tbm90ZVwiPlxuICAgICAgICAgICAgICAgICAgICBQbGVhc2UgcmVhY2ggPGEgW2hyZWZdPVwiJ21haWx0bzonICsgcmV2aXNpb25NYWlsVG9cIiBjbGFzcz1cImVtYWlsLWxpbmtcIj57eyByZXZpc2lvbk1haWxUbyB9fTwvYT4gZm9yIGFueSBmdXJ0aGVyXG4gICAgICAgICAgICAgICAgICAgIGRpc2NyZXBhbmNpZXNcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aXNlZC1mb290ZmFsbC1zZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWNzLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1udW1iZXIgYmx1ZS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldFRhZ2dpbmdEYXRhKCdmaW5hbFJldmlzaW9uJyk/LnJldmljZWRGb290ZmFsbCB8fCAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWV0cmljLXBlcmNlbnRhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7eyBnZXRUYWdnaW5nRGF0YSgnZmluYWxSZXZpc2lvbicpPy5yZXZpY2VkUGVyYyB8fCAwfX0lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWV0cmljLWFycm93XCI+4oaRPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbGFiZWxcIj5SZXZpc2VkIGZvb3RmYWxsPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbnVtYmVyXCI+KHt7IGdldFJldmlzaW9uQ2FsY3VsYXRpb24oJ2ZpbmFsUmV2aXNpb24nKX19JSk8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+VGlja2V0JTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLW51bWJlclwiPnt7IGdldENvdW50QnlUeXBlKGdldFRhZ2dpbmdEYXRhKCdmaW5hbFJldmlzaW9uJyksICdkdXBsaWNhdGUnKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbGFiZWxcIj5EdXBsaWNhdGVzPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRyaWMtbnVtYmVyXCI+e3sgZ2V0Q291bnRCeVR5cGUoZ2V0VGFnZ2luZ0RhdGEoJ2ZpbmFsUmV2aXNpb24nKSwgJ2VtcGxveWVlJykgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+RW1wbG95ZWUvU3RhZmY8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1udW1iZXJcIj57eyBnZXRDb3VudEJ5VHlwZShnZXRUYWdnaW5nRGF0YSgnZmluYWxSZXZpc2lvbicpLCAnanVuaycpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1sYWJlbFwiPkp1bms8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldHJpYy1udW1iZXJcIj57eyBnZXRDb3VudEJ5VHlwZShnZXRUYWdnaW5nRGF0YSgnZmluYWxSZXZpc2lvbicpLCAnaG91c2VLZWVwaW5nJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0cmljLWxhYmVsXCI+SG91c2UgS2VlcGluZzwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=