tango-app-ui-analyse-traffic 3.8.0-alpha.11 → 3.8.0-alpha.12

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.
@@ -264,6 +264,7 @@ export class ImgRvpsComponent {
264
264
  this.objectsArray = [];
265
265
  this.imagesArrayData = [];
266
266
  this.overallArrayData = [];
267
+ this.countData = [];
267
268
  this.loading = false;
268
269
  this.noData = true;
269
270
  }
@@ -273,6 +274,12 @@ export class ImgRvpsComponent {
273
274
  this.toast.getErrorToast(msg);
274
275
  this.loading = false;
275
276
  this.noData = true;
277
+ this.getRvpsList = [];
278
+ this.getRvpsImageList = [];
279
+ this.objectsArray = [];
280
+ this.imagesArrayData = [];
281
+ this.overallArrayData = [];
282
+ this.countData = [];
276
283
  },
277
284
  });
278
285
  }
@@ -746,6 +753,16 @@ export class ImgRvpsComponent {
746
753
  // this.duplicateSaveEnabled =
747
754
  // this.selectedRadioType === 'duplicate' && this.selectedDuplicateImagesList.length > 0;
748
755
  // }
756
+ imagePopup;
757
+ selectedImageArray(url, data) {
758
+ const modalRef = this.modalService.open(this.imagePopup, { centered: true, size: 'lg',
759
+ backdrop: 'static',
760
+ keyboard: false
761
+ });
762
+ }
763
+ closeImage() {
764
+ this.modalService.dismissAll();
765
+ }
749
766
  currentImageIndex = 0;
750
767
  get canNavigateLeft() {
751
768
  return this.currentImageIndex > 0;
@@ -767,16 +784,19 @@ export class ImgRvpsComponent {
767
784
  this.remainingImageArray = this.imagesArrayData.filter((_, i) => i !== this.currentImageIndex);
768
785
  }
769
786
  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 });
770
- 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 }], ngImport: i0, template: "<div class=\"card mt-3\">\r\n <div class=\"card-header mt-3 px-0 border-bottom-0\">\r\n <div class=\"custom-accordion\">\r\n <div class=\"custom-accordion-item\">\r\n <button class=\"mainheading pb-0 custom-accordion-header\" (click)=\"toggleAccordion()\">\r\n <div class=\"header-row\">\r\n <span class=\"img-direc\">Image Directory</span>\r\n\r\n <span class=\"divider\"></span>\r\n <span class=\"accordion-arrow\">\r\n <!-- Down arrow for collapsed state, up arrow for expanded state -->\r\n <svg *ngIf=\"!isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\r\n viewBox=\"0 0 16 6\" fill=\"none\">\r\n <path d=\"M1 1L5 5L9 1\" stroke=\"#071437\" stroke-width=\"1\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\r\n viewBox=\"0 0 16 6\" fill=\"none\">\r\n <path d=\"M1 5L5 1L9 5\" stroke=\"#1b84ff\" stroke-width=\"1\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <section *ngIf=\"isAccordionExpanded\">\r\n\r\n <div *ngIf=\"folderView\" class=\"card-body px-0\">\r\n <div class=\"scroll-container\">\r\n <div class=\"row\">\r\n <div class=\"col-md-1 mt-5 text-center\" *ngFor=\"let obj of dateArray;let i = index\">\r\n <div (click)=\"getimages(i,obj)\">\r\n <div *ngIf=\"i === selectIndex;\">\r\n <span class=\"cursor-pointer\"><svg width=\"57\" height=\"56\" viewBox=\"0 0 57 56\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"0.154297\" width=\"56\" height=\"56\" rx=\"12\" fill=\"#33B5FF\" />\r\n <path\r\n d=\"M39.8216 36.1667C39.8216 36.7855 39.5758 37.379 39.1382 37.8166C38.7006 38.2542 38.1071 38.5 37.4883 38.5H18.8216C18.2028 38.5 17.6093 38.2542 17.1717 37.8166C16.7341 37.379 16.4883 36.7855 16.4883 36.1667V19.8333C16.4883 19.2145 16.7341 18.621 17.1717 18.1834C17.6093 17.7458 18.2028 17.5 18.8216 17.5H24.6549L26.9883 21H37.4883C38.1071 21 38.7006 21.2458 39.1382 21.6834C39.5758 22.121 39.8216 22.7145 39.8216 23.3333V36.1667Z\"\r\n stroke=\"white\" stroke-width=\"2.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <div class=\"text-center mt-2\">{{obj | date:'dd MMM'}}</div>\r\n </div>\r\n <div *ngIf=\"i !== selectIndex;\">\r\n <span class=\"cursor-pointer\"><svg width=\"57\" height=\"56\" viewBox=\"0 0 57 56\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"0.462891\" width=\"56\" height=\"56\" rx=\"12\" fill=\"#EAF8FF\" />\r\n <path\r\n d=\"M40.1302 36.1667C40.1302 36.7855 39.8844 37.379 39.4468 37.8166C39.0092 38.2542 38.4157 38.5 37.7969 38.5H19.1302C18.5114 38.5 17.9179 38.2542 17.4803 37.8166C17.0427 37.379 16.7969 36.7855 16.7969 36.1667V19.8333C16.7969 19.2145 17.0427 18.621 17.4803 18.1834C17.9179 17.7458 18.5114 17.5 19.1302 17.5H24.9635L27.2969 21H37.7969C38.4157 21 39.0092 21.2458 39.4468 21.6834C39.8844 22.121 40.1302 22.7145 40.1302 23.3333V36.1667Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <div class=\"text-center mt-2\">{{obj | date:'dd MMM'}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div *ngIf=\"!folderView\" class=\"card-body\">\r\n <section *ngIf=\"!imageFlow\">\r\n\r\n\r\n <div class=\"row\">\r\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\r\n <span *ngIf=\"backnav\" class=\"cursor-pointer\" (click)=\"backToFootfall()\">\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_2585_7036)\">\r\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\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\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_2585_7036\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"img-direc ms-2 mt-1\">{{folderDate | date:'dd MMM, yyyy'}} \r\n <span class=\"badge badge-light-warning mx-2\" *ngIf=\"!getTicketStatuses().includes('closed') && getTicketStatuses().includes('open')\">\r\n Ticket Raised\r\n</span>\r\n<span class=\"badge badge-light-success mx-2\" *ngIf=\"getTicketStatuses().includes('closed')\">Ticket Closed</span>\r\n\r\n </span>\r\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\" class=\"ms-auto text-end\">\r\n \r\n <button [disabled]=\"!(countData?.duplicate > 0 || countData?.housekeeping > 0 || countData?.employee > 0)\" class=\"btn btn-primary\" type=\"button\" (click)=\"Raised()\">\r\n Raise ticket for footfall\r\n </button>\r\n</div>\r\n </div>\r\n <div *ngIf=\"!folderView\" class=\"nav-group bg-white border-1 btn-group w-auto my-2\">\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('footfall')\">\r\n Total Footfall\r\n <span\r\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n {{ countData?.footfallCount || 0 }}\r\n </span>\r\n </button>\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('non-tagging')\">\r\n Non-tags\r\n <span\r\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n {{ countData?.nonTags || 0 }}\r\n </span>\r\n </button>\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('duplicate')\">\r\n Duplicated\r\n <span\r\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n {{ countData?.duplicate || 0 }}\r\n </span>\r\n </button>\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'employee' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('employee')\">\r\n Employee/Staff\r\n <span\r\n [ngClass]=\"type === 'employee' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n {{ countData?.employee || 0 }}\r\n </span>\r\n </button>\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'house-keeping' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('house-keeping')\">\r\n House Keeping\r\n <span\r\n [ngClass]=\"type === 'house-keeping' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\r\n {{ countData?.housekeeping || 0 }}\r\n </span>\r\n </button>\r\n\r\n </div>\r\n\r\n <div *ngIf=\"type === 'footfall'\" class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\r\n\r\n <div class=\"col text-nowrap\" *ngFor=\"let obj of objectsArray\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n <li class=\"nav-item cursor-pointer\">\r\n <a (click)=\"selectedTimes(obj.timeRange)\"\r\n [ngClass]=\"selectedTime === obj?.timeRange ? 'active' : ''\"\r\n class=\"nav-link cursor-pointer no-border mx-3 mb-2\">\r\n {{obj?.timeRange}}<span class=\"mx-2\"\r\n [ngClass]=\"selectedTime === obj?.timeRange ? 'badge-num-primary' :'badge-num-muted'\">\r\n {{ obj?.count ? obj?.count : 0 }}\r\n </span>\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n\r\n <div class=\"col-lg-12 mb-3\">\r\n\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column \" style=\"margin: 64px;border-radius: 8px;\r\nbackground: var(--Gray-50, #F9FAFB);\">\r\n <svg width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\" />\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\"\r\n stroke-width=\"13.3333\" />\r\n <path\r\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\"\r\n stroke=\"#00A3FF\" stroke-width=\"4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <div class=\"nodata-title my-3\">\r\n {{ noDataMessages[type?.toLowerCase()] || 'No data found' }}\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"row px-0 img-traffic contain high-400px scroll-y\" *ngIf=\"!noData && !loading\">\r\n <ng-container\r\n\r\n *ngFor=\"let obj of imagesArrayData\"\r\n>\r\n<div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\" class=\"col-md-3 border-gray mx-2 p-2 mt-5\">\r\n <!-- Condition: Only show if not duplicate OR duplicate with non-empty duplicateImagePath -->\r\n <ng-container >\r\n <img\r\n class=\"img-src cursor-pointer\"\r\n [src]=\"imageUrl + obj?.filePath\"\r\n (error)=\"obj.filePath = null\"\r\n alt=\"\"\r\n (click)=\"imgFullView(obj)\"\r\n />\r\n </ng-container>\r\n\r\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\r\n <span class=\"mb-5\">\r\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"Group\">\r\n <path id=\"Vector\"\r\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path id=\"Vector_2\"\r\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\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </svg>\r\n\r\n </span>\r\n <span class=\"header mb-5 text-center\">Preview not available</span>\r\n <span class=\"description mb-5 text-center\">The selected camera is not available at the\r\n moment.</span>\r\n </div>\r\n <div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\" class=\"row px-2 mb-2\">\r\n <div class=\"col-md-7\">\r\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd}} <span *ngIf=\"(type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\" class=\"mx-2 badge badge-light-primary\">{{obj.duplicateImagePath?.length}}</span></div>\r\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme}}</div>\r\n </div>\r\n <div class=\"col-md-5 text-end py-3\">\r\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\"\r\n placement=\"top\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n viewBox=\"0 0 19 18\" fill=\"none\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='employee'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\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\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <!-- full image View -->\r\n <section *ngIf=\"imageFlow\">\r\n <div class=\"row\">\r\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\r\n <span class=\"cursor-pointer\" (click)=\"backToFootfall1()\">\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_2585_7036)\">\r\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\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\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_2585_7036\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"img-direc ms-2 mt-1\">{{folderDate | date:'dd MMM, yyyy'}}</span>\r\n </div>\r\n <div class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\r\n\r\n <!-- <div class=\"col text-nowrap\" *ngFor=\"let obj of objectsArray\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n <li class=\"nav-item cursor-pointer\">\r\n <a (click)=\"selectedTimes(obj.timeRange)\"\r\n [ngClass]=\"selectedTime === obj?.timeRange ? 'active' : ''\"\r\n class=\"nav-link cursor-pointer no-border mx-3 mb-2\">\r\n {{obj?.timeRange}}<span class=\"mx-2\"\r\n [ngClass]=\"selectedTime === obj?.timeRange ? 'badge-num-primary' :'badge-num-muted'\">\r\n {{ obj?.count ? obj?.count : 0 }}\r\n </span>\r\n </a>\r\n </li>\r\n </ul>\r\n </div> -->\r\n\r\n\r\n </div>\r\n\r\n <div class=\"row mx-0 border-gray img-traffic\" *ngIf=\"!noData && !loading\">\r\n <div class=\"col-md-6 p-2 mb-2 mt-5\">\r\n <div class=\"position-relative border-gray p-2 \">\r\n <!-- <button *ngIf=\"canNavigateLeft\" (click)=\"navigateImage('left')\"\r\n class=\"btn btn-light position-absolute start-0 top-50 z-index-10\">\r\n \u25C0\r\n </button> -->\r\n\r\n <!-- Main Image -->\r\n <img class=\"img-src cursor-pointer h-350px\"\r\n [src]=\"imageUrl + selectImageArray?.filePath\" appMagnifier alt=\"\">\r\n <!-- <button *ngIf=\"canNavigateRight\" (click)=\"navigateImage('right')\"\r\n class=\"btn btn-light position-absolute end-0 top-50 z-index-10\">\r\n \u25B6\r\n </button> -->\r\n\r\n <!-- Right arrow button -->\r\n <div class=\"row px-2 mb-2\">\r\n <div class=\"col-md-7\">\r\n <div class=\"py-2 img-doc-time\">Tango ID : {{selectImageArray?.templd}}</div>\r\n <div class=\"img-doc-value\">Entry Time : {{selectImageArray?.entryTme}}</div>\r\n </div>\r\n <div class=\"col-md-5 text-end py-3\">\r\n <span *ngIf=\"selectImageArray?.revopsType ==='non-tagging'\"\r\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n viewBox=\"0 0 19 18\" fill=\"none\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='duplicate'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='employee'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='house-keeping'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\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\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-6 p-2 mb-2 mt-5\">\r\n <div class=\"mx-2 \">\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"title-type\">\r\n Select non-shopper type\r\n </div>\r\n\r\n <div *ngIf=\"!revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\r\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\">\r\n\r\n <button [disabled]=\"\r\n (selectedRadioType === undefined || selectedRadioType === '') ||\r\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\r\n \"\r\n class=\"btn btn-default\" type=\"button\" (click)=\"clearValue()\">Clear</button>\r\n <button class=\"btn btn-outline me-2\" (click)=\"cancel()\">Cancel</button>\r\n <button\r\n class=\"btn btn-primary\"\r\n id=\"alert-toast\"\r\n (click)=\"save(selectedType)\"\r\n [disabled]=\"\r\n (selectedRadioType === undefined || selectedRadioType === '') ||\r\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\r\n \"\r\n >\r\n Save\r\n </button>\r\n </div>\r\n </div>\r\n <div *ngIf=\"revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\r\n <button *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\" class=\"btn btn-outline me-2\" (click)=\"editValue()\"><span\r\n class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\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\"\r\n stroke=\"#344054\" stroke-width=\"1.81079\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>Edit</button>\r\n\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-check my-15\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate\"\r\n id=\"duplicate\" [(ngModel)]=\"selectedType\" [value]=\"'duplicate'\"\r\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\r\n <label class=\"form-check-label\" for=\"duplicate\">\r\n <span class=\"ms-5\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"ms-5 tag-class\">Duplicate</span>\r\n </label>\r\n </div>\r\n <div class=\"form-check my-15\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"employee\"\r\n id=\"employee\" [(ngModel)]=\"selectedType\" [value]=\"'employee'\"\r\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\r\n <label class=\"form-check-label\" for=\"employee\">\r\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"ms-5 tag-class\">Employee/Staff</span>\r\n </label>\r\n </div>\r\n <div class=\"form-check my-15\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"house-keeping\"\r\n id=\"house-keeping\" [(ngModel)]=\"selectedType\" [value]=\"'house-keeping'\"\r\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\r\n <label class=\"form-check-label\" for=\"house-keeping\">\r\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\"\r\n height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\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\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"ms-5 tag-class\"> House Keeping</span>\r\n </label>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n <div class=\"row px-0 img-traffic mt-3 high-400px scroll-y\">\r\n <div class=\"col-md-3 border-gray mx-2 p-2 mt-5\" *ngFor=\"let obj of remainingImageArray\">\r\n <div class=\"position-relative\">\r\n <!-- <input *ngIf=\"selectedRadioType === 'duplicate'\" type=\"checkbox\" \r\n [(ngModel)]=\"obj.selected\" class=\"position-absolute absolute form-check-input\"\r\n (change)=\"onImageCheckboxChange(obj, 'duplicate')\" /> -->\r\n <input\r\n *ngIf=\"selectedRadioType === 'duplicate'\"\r\n type=\"checkbox\"\r\n [checked]=\"obj.selected\"\r\n class=\"position-absolute absolute form-check-input cursor-pointer\"\r\n (change)=\"onImageCheckboxChange($event, obj, 'duplicate')\"\r\n [disabled]=\"obj.duplicateImagePath?.length > 0\"\r\n/>\r\n\r\n<img\r\n class=\"img-src\"\r\n [ngClass]=\"selectedRadioType !== 'duplicate' ? 'cursor-pointer' : 'cursor-pointer'\"\r\n [src]=\"imageUrl + obj?.filePath\"\r\n (error)=\"obj.filePath = null\"\r\n alt=\"\"\r\n (click)=\"handleImageClick($event, obj)\"\r\n/>\r\n\r\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\r\n <span class=\"mb-5\">\r\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"Group\">\r\n <path id=\"Vector\"\r\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path id=\"Vector_2\"\r\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\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </svg>\r\n\r\n </span>\r\n <span class=\"header mb-5 text-center\">Preview not available</span>\r\n <span class=\"description mb-5 text-center\">The selected camera is not available at\r\n the\r\n moment.</span>\r\n </div>\r\n <div class=\"row px-2 mb-2\">\r\n <div class=\"col-md-7\">\r\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd ? obj?.templd : obj?.tempId}}</div>\r\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme ? obj?.entryTme :obj?.entryTime}}</div>\r\n </div>\r\n <div class=\"col-md-5 text-end py-3\">\r\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\"\r\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n viewBox=\"0 0 19 18\" fill=\"none\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='employee'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\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\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </section>\r\n </div>\r\n </section>\r\n</div>\r\n\r\n\r\n<ng-template #zoomPopup let-model>\r\n <div class=\"p-4 m-4\">\r\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\r\n <span *ngIf=\"popupType === 'non-tagging'\" class=\"my-3\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\r\n <g clip-path=\"url(#clip0_2088_98337)\">\r\n <path\r\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\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2088_98337\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(10 10)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <!-- Heading -->\r\n <h5 class=\"modal-title mb-2\">\r\n <span *ngIf=\"popupType === 'employee'\">Tagging as employee/staff </span>\r\n <span *ngIf=\"popupType === 'duplicate'\">Tagging as duplicates </span>\r\n <span *ngIf=\"popupType === 'house-keeping'\">Tagging as house keeping </span>\r\n <span *ngIf=\"popupType === 'non-tagging'\">Clear duplicates</span>\r\n </h5>\r\n <p class=\"mb-3\">\r\n <span *ngIf=\"popupType === 'employee'\">Are you sure you want to tag this as employee/staff?</span>\r\n <span *ngIf=\"popupType === 'duplicate'\">Are you sure you want to tag this as duplicates? </span>\r\n <span *ngIf=\"popupType === 'house-keeping'\">Are you sure you want to tag this as house keeping? </span>\r\n <span *ngIf=\"popupType === 'non-tagging'\">This will remove tagged duplicates and move them to\r\n 'Non-tag'.</span>\r\n\r\n </p>\r\n </div>\r\n\r\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\r\n <button class=\"btn btn-outline me-2\" (click)=\"cancelSubmit()\">Cancel</button>\r\n <button *ngIf=\"popupType !== 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\r\n Yes, Tag\r\n </button>\r\n <button *ngIf=\"popupType === 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\r\n Yes, clear\r\n </button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n<ng-template #raisedPopup let-model>\r\n <div class=\"p-4 m-4\">\r\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\r\n <span class=\"my-3\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\r\n <path\r\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\"\r\n fill=\"#00A3FF\" stroke=\"#00A3FF\" stroke-width=\"0.3\" />\r\n </svg>\r\n </span>\r\n <!-- Heading -->\r\n <h5 class=\"modal-title mb-2\">\r\n <span>Raise tickets for the following</span>\r\n\r\n </h5>\r\n <p class=\"mb-3\">\r\n <span>Raising a ticket for footfall count issues. Make sure all records are identified for\r\n validation.</span>\r\n\r\n\r\n </p>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-4 my-4\">\r\n <div class=\"border border-1 rounded p-3 h-100\">\r\n <div class=\"fw-semibold fs-5 mb-2\">\r\n {{tempRaisedPayload?.duplicateCount ? tempRaisedPayload?.duplicateCount :'0'}}\r\n </div>\r\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\r\n Duplicates\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-4 my-4\">\r\n <div class=\"border border-1 rounded p-3 h-100\">\r\n <div class=\"fw-semibold fs-5 mb-2\">\r\n {{tempRaisedPayload?.employeeCount ? tempRaisedPayload?.employeeCount:'0' }}\r\n </div>\r\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\r\n Employee\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-4 my-4\">\r\n <div class=\"border border-1 rounded p-3 h-100\">\r\n <div class=\"fw-semibold fs-5 mb-2\">\r\n {{tempRaisedPayload?.houseKeepingCount ? tempRaisedPayload?.houseKeepingCount :'0'}}\r\n </div>\r\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\r\n House Keeping\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Label and Textarea -->\r\n <div class=\"my-3\">\r\n <label class=\"form-label\">Description (Optional)</label>\r\n <textarea rows=\"3\" [(ngModel)]=\"commentText\" class=\"form-control\"\r\n placeholder=\"Enter description\"></textarea>\r\n </div>\r\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\r\n\r\n <button class=\"btn btn-outline w-50 me-2\" (click)=\"cancelRasied()\">Cancel</button>\r\n <button class=\"btn btn-primary w-50\" (click)=\"submitRaised()\">\r\n Raise Ticket\r\n </button>\r\n </div>\r\n </div>\r\n</ng-template>", styles: [".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:24%!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}.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}.header-row{display:flex;align-items:center;width:100%;justify-content:space-between}.img-dire{font-size:16px;font-weight:700}.divider{flex-grow:1;height:1px;background-color:#ddd;margin:0 10px}.accordion-arrow{display:flex;align-items:center}.scroll-container{max-height:400px;overflow-y:auto;overflow-x:hidden}.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}.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}.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}\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: 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: "directive", type: i8.MagnifierDirective, selector: "[appMagnifier]" }, { kind: "pipe", type: i6.DatePipe, name: "date" }] });
787
+ 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: "imagePopup", first: true, predicate: ["imagePopup"], descendants: true }], ngImport: i0, template: "<div class=\"card mt-3\">\r\n <div class=\"card-header mt-3 px-0 border-bottom-0\">\r\n <div class=\"custom-accordion\">\r\n <div class=\"custom-accordion-item\">\r\n <button class=\"mainheading pb-0 custom-accordion-header\" (click)=\"toggleAccordion()\">\r\n <div class=\"header-row\">\r\n <span class=\"img-direc\">Image Directory</span>\r\n\r\n <span class=\"divider\"></span>\r\n <span class=\"accordion-arrow\">\r\n <!-- Down arrow for collapsed state, up arrow for expanded state -->\r\n <svg *ngIf=\"!isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\r\n viewBox=\"0 0 16 6\" fill=\"none\">\r\n <path d=\"M1 1L5 5L9 1\" stroke=\"#071437\" stroke-width=\"1\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\r\n viewBox=\"0 0 16 6\" fill=\"none\">\r\n <path d=\"M1 5L5 1L9 5\" stroke=\"#1b84ff\" stroke-width=\"1\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <section *ngIf=\"isAccordionExpanded\">\r\n\r\n <div *ngIf=\"folderView\" class=\"card-body px-0\">\r\n <div class=\"scroll-container\">\r\n <div class=\"row\">\r\n <div class=\"col-md-1 mt-5 text-center\" *ngFor=\"let obj of dateArray;let i = index\">\r\n <div (click)=\"getimages(i,obj)\">\r\n <div *ngIf=\"i === selectIndex;\">\r\n <span class=\"cursor-pointer\"><svg width=\"57\" height=\"56\" viewBox=\"0 0 57 56\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"0.154297\" width=\"56\" height=\"56\" rx=\"12\" fill=\"#33B5FF\" />\r\n <path\r\n d=\"M39.8216 36.1667C39.8216 36.7855 39.5758 37.379 39.1382 37.8166C38.7006 38.2542 38.1071 38.5 37.4883 38.5H18.8216C18.2028 38.5 17.6093 38.2542 17.1717 37.8166C16.7341 37.379 16.4883 36.7855 16.4883 36.1667V19.8333C16.4883 19.2145 16.7341 18.621 17.1717 18.1834C17.6093 17.7458 18.2028 17.5 18.8216 17.5H24.6549L26.9883 21H37.4883C38.1071 21 38.7006 21.2458 39.1382 21.6834C39.5758 22.121 39.8216 22.7145 39.8216 23.3333V36.1667Z\"\r\n stroke=\"white\" stroke-width=\"2.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <div class=\"text-center mt-2\">{{obj | date:'dd MMM'}}</div>\r\n </div>\r\n <div *ngIf=\"i !== selectIndex;\">\r\n <span class=\"cursor-pointer\"><svg width=\"57\" height=\"56\" viewBox=\"0 0 57 56\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"0.462891\" width=\"56\" height=\"56\" rx=\"12\" fill=\"#EAF8FF\" />\r\n <path\r\n d=\"M40.1302 36.1667C40.1302 36.7855 39.8844 37.379 39.4468 37.8166C39.0092 38.2542 38.4157 38.5 37.7969 38.5H19.1302C18.5114 38.5 17.9179 38.2542 17.4803 37.8166C17.0427 37.379 16.7969 36.7855 16.7969 36.1667V19.8333C16.7969 19.2145 17.0427 18.621 17.4803 18.1834C17.9179 17.7458 18.5114 17.5 19.1302 17.5H24.9635L27.2969 21H37.7969C38.4157 21 39.0092 21.2458 39.4468 21.6834C39.8844 22.121 40.1302 22.7145 40.1302 23.3333V36.1667Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <div class=\"text-center mt-2\">{{obj | date:'dd MMM'}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div *ngIf=\"!folderView\" class=\"card-body\">\r\n <section *ngIf=\"!imageFlow\">\r\n\r\n\r\n <div class=\"row\">\r\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\r\n <span *ngIf=\"backnav\" class=\"cursor-pointer\" (click)=\"backToFootfall()\">\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_2585_7036)\">\r\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\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\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_2585_7036\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"img-direc ms-2 mt-1\">{{folderDate | date:'dd MMM, yyyy'}} \r\n <span class=\"badge badge-light-warning mx-2\" *ngIf=\"!getTicketStatuses().includes('closed') && getTicketStatuses().includes('open')\">\r\n Ticket Raised\r\n</span>\r\n<span class=\"badge badge-light-success mx-2\" *ngIf=\"getTicketStatuses().includes('closed')\">Ticket Closed</span>\r\n\r\n </span>\r\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\" class=\"ms-auto text-end\">\r\n \r\n <button [disabled]=\"!(countData?.duplicate > 0 || countData?.housekeeping > 0 || countData?.employee > 0)\" class=\"btn btn-primary\" type=\"button\" (click)=\"Raised()\">\r\n Raise ticket for footfall\r\n </button>\r\n</div>\r\n </div>\r\n <div *ngIf=\"!folderView\" class=\"nav-group bg-white border-1 btn-group w-auto my-2\">\r\n<ng-container *ngIf=\"!(countData?.length > 0)\">\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('footfall')\">\r\n Total Footfall\r\n <span\r\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n {{ countData?.footfallCount || 0 }}\r\n </span>\r\n </button>\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('non-tagging')\">\r\n Non-tags\r\n <span\r\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n {{ countData?.nonTags || 0 }}\r\n </span>\r\n </button>\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('duplicate')\">\r\n Duplicated\r\n <span\r\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n {{ countData?.duplicate || 0 }}\r\n </span>\r\n </button>\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'employee' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('employee')\">\r\n Employee/Staff\r\n <span\r\n [ngClass]=\"type === 'employee' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n {{ countData?.employee || 0 }}\r\n </span>\r\n </button>\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'house-keeping' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('house-keeping')\">\r\n House Keeping\r\n <span\r\n [ngClass]=\"type === 'house-keeping' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\r\n {{ countData?.housekeeping || 0 }}\r\n </span>\r\n </button>\r\n</ng-container>\r\n\r\n </div>\r\n<ng-container *ngIf=\"!imageFlow\">\r\n\r\n <div *ngIf=\"type === 'footfall'\" class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\r\n\r\n <div class=\"col text-nowrap\" *ngFor=\"let obj of objectsArray\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n <li class=\"nav-item cursor-pointer\">\r\n <a (click)=\"selectedTimes(obj.timeRange)\"\r\n [ngClass]=\"selectedTime === obj?.timeRange ? 'active' : ''\"\r\n class=\"nav-link cursor-pointer no-border mx-3 mb-2\">\r\n {{obj?.timeRange}}<span class=\"mx-2\"\r\n [ngClass]=\"selectedTime === obj?.timeRange ? 'badge-num-primary' :'badge-num-muted'\">\r\n {{ obj?.count ? obj?.count : 0 }}\r\n </span>\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n\r\n </div>\r\n</ng-container>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n\r\n <div class=\"col-lg-12 mb-3\">\r\n\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column \" style=\"margin: 64px;border-radius: 8px;\r\nbackground: var(--Gray-50, #F9FAFB);\">\r\n <svg width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\" />\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\"\r\n stroke-width=\"13.3333\" />\r\n <path\r\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\"\r\n stroke=\"#00A3FF\" stroke-width=\"4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <div class=\"nodata-title my-3\">\r\n {{ noDataMessages[type?.toLowerCase()] || 'No data found' }}\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"row px-0 img-traffic contain high-400px scroll-y\" *ngIf=\"!noData && !loading\">\r\n <ng-container\r\n\r\n*ngFor=\"let obj of imagesArrayData\"\r\n>\r\n<div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\" class=\"col-md-3 border-gray mx-2 p-2 mt-5\">\r\n<!-- Condition: Only show if not duplicate OR duplicate with non-empty duplicateImagePath -->\r\n<ng-container >\r\n<img\r\nclass=\"img-src cursor-pointer\"\r\n[src]=\"imageUrl + obj?.filePath\"\r\n(error)=\"obj.filePath = null\"\r\nalt=\"\"\r\n(click)=\"imgFullView(obj)\"\r\n/>\r\n</ng-container>\r\n\r\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\r\n <span class=\"mb-5\">\r\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"Group\">\r\n <path id=\"Vector\"\r\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path id=\"Vector_2\"\r\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\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </svg>\r\n\r\n </span>\r\n <span class=\"header mb-5 text-center\">Preview not available</span>\r\n <span class=\"description mb-5 text-center\">The selected camera is not available at the\r\n moment.</span>\r\n </div>\r\n <div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\" class=\"row px-2 mb-2\">\r\n <div class=\"col-md-7\">\r\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd}} <span *ngIf=\"(type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\" class=\"mx-2 badge badge-light-primary\">{{obj.duplicateImagePath?.length}}</span></div>\r\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme}}</div>\r\n </div>\r\n <div class=\"col-md-5 text-end py-3\">\r\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\"\r\n placement=\"top\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n viewBox=\"0 0 19 18\" fill=\"none\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='employee'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\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\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n\r\n </div>\r\n </section>\r\n\r\n <!-- full image View -->\r\n <section *ngIf=\"imageFlow\">\r\n <div class=\"row\">\r\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\r\n <span class=\"cursor-pointer\" (click)=\"backToFootfall1()\">\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_2585_7036)\">\r\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\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\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_2585_7036\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"img-direc ms-2 mt-1\">{{folderDate | date:'dd MMM, yyyy'}}</span>\r\n </div>\r\n <div class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\r\n\r\n <!-- <div class=\"col text-nowrap\" *ngFor=\"let obj of objectsArray\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n <li class=\"nav-item cursor-pointer\">\r\n <a (click)=\"selectedTimes(obj.timeRange)\"\r\n [ngClass]=\"selectedTime === obj?.timeRange ? 'active' : ''\"\r\n class=\"nav-link cursor-pointer no-border mx-3 mb-2\">\r\n {{obj?.timeRange}}<span class=\"mx-2\"\r\n [ngClass]=\"selectedTime === obj?.timeRange ? 'badge-num-primary' :'badge-num-muted'\">\r\n {{ obj?.count ? obj?.count : 0 }}\r\n </span>\r\n </a>\r\n </li>\r\n </ul>\r\n </div> -->\r\n\r\n\r\n </div>\r\n\r\n <div class=\"row mx-0 border-gray img-traffic\" *ngIf=\"!noData && !loading\">\r\n <div class=\"col-md-6 p-2 mb-2 mt-5\">\r\n <div class=\"position-relative border-gray p-2 \">\r\n <!-- <button *ngIf=\"canNavigateLeft\" (click)=\"navigateImage('left')\"\r\n class=\"btn btn-light position-absolute start-0 top-50 z-index-10\">\r\n \u25C0\r\n </button> -->\r\n\r\n <!-- Main Image -->\r\n <img class=\"img-src cursor-pointer h-450px\" (click)=\"selectedImageArray(imageUrl, selectImageArray)\"\r\n [src]=\"imageUrl + selectImageArray?.filePath\" appMagnifier alt=\"\">\r\n <!-- <button *ngIf=\"canNavigateRight\" (click)=\"navigateImage('right')\"\r\n class=\"btn btn-light position-absolute end-0 top-50 z-index-10\">\r\n \u25B6\r\n </button> -->\r\n\r\n <!-- Right arrow button -->\r\n <div class=\"row px-2 mb-2\">\r\n <div class=\"col-md-7\">\r\n <div class=\"py-2 img-doc-time\">Tango ID : {{selectImageArray?.templd}}</div>\r\n <div class=\"img-doc-value\">Entry Time : {{selectImageArray?.entryTme}}</div>\r\n </div>\r\n <div class=\"col-md-5 text-end py-3\">\r\n <span *ngIf=\"selectImageArray?.revopsType ==='non-tagging'\"\r\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n viewBox=\"0 0 19 18\" fill=\"none\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='duplicate'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='employee'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='house-keeping'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\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\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-6 p-2 mb-2 mt-5\">\r\n <div class=\"mx-2 \">\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"title-type\">\r\n Select non-shopper type\r\n </div>\r\n\r\n <div *ngIf=\"!revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\r\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\">\r\n\r\n <button [disabled]=\"\r\n (selectedRadioType === undefined || selectedRadioType === '') ||\r\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\r\n \"\r\n class=\"btn btn-default\" type=\"button\" (click)=\"clearValue()\">Clear</button>\r\n <button class=\"btn btn-outline me-2\" (click)=\"cancel()\">Cancel</button>\r\n <button\r\n class=\"btn btn-primary\"\r\n id=\"alert-toast\"\r\n (click)=\"save(selectedType)\"\r\n [disabled]=\"\r\n (selectedRadioType === undefined || selectedRadioType === '') ||\r\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\r\n \"\r\n >\r\n Save\r\n </button>\r\n </div>\r\n </div>\r\n <div *ngIf=\"revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\r\n <button *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\" class=\"btn btn-outline me-2\" (click)=\"editValue()\"><span\r\n class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\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\"\r\n stroke=\"#344054\" stroke-width=\"1.81079\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>Edit</button>\r\n\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-check my-15\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate\"\r\n id=\"duplicate\" [(ngModel)]=\"selectedType\" [value]=\"'duplicate'\"\r\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\r\n <label class=\"form-check-label\" for=\"duplicate\">\r\n <span class=\"ms-5\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"ms-5 tag-class\">Duplicate</span>\r\n </label>\r\n </div>\r\n <div class=\"form-check my-15\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"employee\"\r\n id=\"employee\" [(ngModel)]=\"selectedType\" [value]=\"'employee'\"\r\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\r\n <label class=\"form-check-label\" for=\"employee\">\r\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"ms-5 tag-class\">Employee/Staff</span>\r\n </label>\r\n </div>\r\n <div class=\"form-check my-15\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"house-keeping\"\r\n id=\"house-keeping\" [(ngModel)]=\"selectedType\" [value]=\"'house-keeping'\"\r\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\r\n <label class=\"form-check-label\" for=\"house-keeping\">\r\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\"\r\n height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\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\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"ms-5 tag-class\"> House Keeping</span>\r\n </label>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n \r\n <div class=\"row px-0 img-traffic mt-3 high-400px scroll-y\">\r\n <div class=\"col-md-3 border-gray mx-2 p-2 mt-5\" *ngFor=\"let obj of remainingImageArray\">\r\n <div class=\"position-relative\">\r\n <!-- <input *ngIf=\"selectedRadioType === 'duplicate'\" type=\"checkbox\" \r\n [(ngModel)]=\"obj.selected\" class=\"position-absolute absolute form-check-input\"\r\n (change)=\"onImageCheckboxChange(obj, 'duplicate')\" /> -->\r\n <input \r\n *ngIf=\"!revopsTypeValue && selectedRadioType === 'duplicate'\"\r\n type=\"checkbox\"\r\n [checked]=\"obj.selected\"\r\n class=\"position-absolute absolute form-check-input cursor-pointer\"\r\n (change)=\"onImageCheckboxChange($event, obj, 'duplicate')\"\r\n [disabled]=\"obj.duplicateImagePath?.length > 0\"\r\n/>\r\n\r\n<img\r\n class=\"img-src\"\r\n [ngClass]=\"selectedRadioType !== 'duplicate' ? 'cursor-pointer' : 'cursor-pointer'\"\r\n [src]=\"imageUrl + obj?.filePath\"\r\n (error)=\"obj.filePath = null\"\r\n alt=\"\"\r\n (click)=\"handleImageClick($event, obj)\"\r\n/>\r\n\r\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\r\n <span class=\"mb-5\">\r\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"Group\">\r\n <path id=\"Vector\"\r\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path id=\"Vector_2\"\r\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\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </svg>\r\n\r\n </span>\r\n <span class=\"header mb-5 text-center\">Preview not available</span>\r\n <span class=\"description mb-5 text-center\">The selected camera is not available at\r\n the\r\n moment.</span>\r\n </div>\r\n <div class=\"row px-2 mb-2\">\r\n <div class=\"col-md-7\">\r\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd ? obj?.templd : obj?.tempId}}</div>\r\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme ? obj?.entryTme :obj?.entryTime}}</div>\r\n </div>\r\n <div class=\"col-md-5 text-end py-3\">\r\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\"\r\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n viewBox=\"0 0 19 18\" fill=\"none\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='employee'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\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\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </section>\r\n </div>\r\n </section>\r\n</div>\r\n\r\n\r\n<ng-template #zoomPopup let-model>\r\n <div class=\"p-4 m-4\">\r\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\r\n <span *ngIf=\"popupType === 'non-tagging'\" class=\"my-3\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\r\n <g clip-path=\"url(#clip0_2088_98337)\">\r\n <path\r\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\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2088_98337\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(10 10)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <!-- Heading -->\r\n <h5 class=\"modal-title mb-2\">\r\n <span *ngIf=\"popupType === 'employee'\">Tagging as employee/staff </span>\r\n <span *ngIf=\"popupType === 'duplicate'\">Tagging as duplicates </span>\r\n <span *ngIf=\"popupType === 'house-keeping'\">Tagging as house keeping </span>\r\n <span *ngIf=\"popupType === 'non-tagging'\">Clear duplicates</span>\r\n </h5>\r\n <p class=\"mb-3\">\r\n <span *ngIf=\"popupType === 'employee'\">Are you sure you want to tag this as employee/staff?</span>\r\n <span *ngIf=\"popupType === 'duplicate'\">Are you sure you want to tag this as duplicates? </span>\r\n <span *ngIf=\"popupType === 'house-keeping'\">Are you sure you want to tag this as house keeping? </span>\r\n <span *ngIf=\"popupType === 'non-tagging'\">This will remove tagged duplicates and move them to\r\n 'Non-tag'.</span>\r\n\r\n </p>\r\n </div>\r\n\r\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\r\n <button class=\"btn btn-outline me-2\" (click)=\"cancelSubmit()\">Cancel</button>\r\n <button *ngIf=\"popupType !== 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\r\n Yes, Tag\r\n </button>\r\n <button *ngIf=\"popupType === 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\r\n Yes, clear\r\n </button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n<ng-template #raisedPopup let-model>\r\n <div class=\"p-4 m-4\">\r\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\r\n <span class=\"my-3\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\r\n <path\r\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\"\r\n fill=\"#00A3FF\" stroke=\"#00A3FF\" stroke-width=\"0.3\" />\r\n </svg>\r\n </span>\r\n <!-- Heading -->\r\n <h5 class=\"modal-title mb-2\">\r\n <span>Raise tickets for the following</span>\r\n\r\n </h5>\r\n <p class=\"mb-3\">\r\n <span>Raising a ticket for footfall count issues. Make sure all records are identified for\r\n validation.</span>\r\n\r\n\r\n </p>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-4 my-4\">\r\n <div class=\"border border-1 rounded p-3 h-100\">\r\n <div class=\"fw-semibold fs-5 mb-2\">\r\n {{tempRaisedPayload?.duplicateCount ? tempRaisedPayload?.duplicateCount :'0'}}\r\n </div>\r\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\r\n Duplicates\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-4 my-4\">\r\n <div class=\"border border-1 rounded p-3 h-100\">\r\n <div class=\"fw-semibold fs-5 mb-2\">\r\n {{tempRaisedPayload?.employeeCount ? tempRaisedPayload?.employeeCount:'0' }}\r\n </div>\r\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\r\n Employee\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-4 my-4\">\r\n <div class=\"border border-1 rounded p-3 h-100\">\r\n <div class=\"fw-semibold fs-5 mb-2\">\r\n {{tempRaisedPayload?.houseKeepingCount ? tempRaisedPayload?.houseKeepingCount :'0'}}\r\n </div>\r\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\r\n House Keeping\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Label and Textarea -->\r\n <div class=\"my-3\">\r\n <label class=\"form-label\">Description (Optional)</label>\r\n <textarea rows=\"3\" [(ngModel)]=\"commentText\" class=\"form-control\"\r\n placeholder=\"Enter description\"></textarea>\r\n </div>\r\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\r\n\r\n <button class=\"btn btn-outline w-50 me-2\" (click)=\"cancelRasied()\">Cancel</button>\r\n <button class=\"btn btn-primary w-50\" (click)=\"submitRaised()\">\r\n Raise Ticket\r\n </button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n<ng-template #imagePopup let-model>\r\n <div class=\"mx-4\">\r\n <div class=\"row\">\r\n <div class=\" p-2 mb-2 mt-5\">\r\n <div class=\"position-relative border-gray p-2 \">\r\n <!-- <button *ngIf=\"canNavigateLeft\" (click)=\"navigateImage('left')\"\r\n class=\"btn btn-light position-absolute start-0 top-50 z-index-10\">\r\n \u25C0\r\n </button> -->\r\n\r\n <!-- Main Image -->\r\n <img class=\" cursor-pointer w-100 h-525px\"\r\n [src]=\"imageUrl + selectImageArray?.filePath\" appMagnifier alt=\"\">\r\n <!-- <button *ngIf=\"canNavigateRight\" (click)=\"navigateImage('right')\"\r\n class=\"btn btn-light position-absolute end-0 top-50 z-index-10\">\r\n \u25B6\r\n </button> -->\r\n\r\n <!-- Right arrow button -->\r\n <div class=\"row px-2 mb-2\">\r\n <div class=\"col-md-7\">\r\n <div class=\"py-2 img-doc-time\">Tango ID : {{selectImageArray?.templd}}</div>\r\n <div class=\"img-doc-value\">Entry Time : {{selectImageArray?.entryTme}}</div>\r\n </div>\r\n <div class=\"col-md-5 text-end py-3\">\r\n <span *ngIf=\"selectImageArray?.revopsType ==='non-tagging'\"\r\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n viewBox=\"0 0 19 18\" fill=\"none\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='duplicate'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='employee'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='house-keeping'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\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\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"modal-footer py-2 px-0\"> -->\r\n\r\n <div class=\"w-100 py-2 mb-2 px-0 d-flex justify-content-end\">\r\n \r\n <button class=\"btn btn-outline\" (click)=\"closeImage()\">Close</button>\r\n \r\n </div>\r\n <!-- </div> -->\r\n </div>\r\n</ng-template>", styles: [".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:24%!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}.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}.header-row{display:flex;align-items:center;width:100%;justify-content:space-between}.img-dire{font-size:16px;font-weight:700}.divider{flex-grow:1;height:1px;background-color:#ddd;margin:0 10px}.accordion-arrow{display:flex;align-items:center}.scroll-container{max-height:400px;overflow-y:auto;overflow-x:hidden}.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}.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}.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}\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: 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: "directive", type: i8.MagnifierDirective, selector: "[appMagnifier]" }, { kind: "pipe", type: i6.DatePipe, name: "date" }] });
771
788
  }
772
789
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImgRvpsComponent, decorators: [{
773
790
  type: Component,
774
- args: [{ selector: "lib-img-rvps", template: "<div class=\"card mt-3\">\r\n <div class=\"card-header mt-3 px-0 border-bottom-0\">\r\n <div class=\"custom-accordion\">\r\n <div class=\"custom-accordion-item\">\r\n <button class=\"mainheading pb-0 custom-accordion-header\" (click)=\"toggleAccordion()\">\r\n <div class=\"header-row\">\r\n <span class=\"img-direc\">Image Directory</span>\r\n\r\n <span class=\"divider\"></span>\r\n <span class=\"accordion-arrow\">\r\n <!-- Down arrow for collapsed state, up arrow for expanded state -->\r\n <svg *ngIf=\"!isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\r\n viewBox=\"0 0 16 6\" fill=\"none\">\r\n <path d=\"M1 1L5 5L9 1\" stroke=\"#071437\" stroke-width=\"1\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\r\n viewBox=\"0 0 16 6\" fill=\"none\">\r\n <path d=\"M1 5L5 1L9 5\" stroke=\"#1b84ff\" stroke-width=\"1\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <section *ngIf=\"isAccordionExpanded\">\r\n\r\n <div *ngIf=\"folderView\" class=\"card-body px-0\">\r\n <div class=\"scroll-container\">\r\n <div class=\"row\">\r\n <div class=\"col-md-1 mt-5 text-center\" *ngFor=\"let obj of dateArray;let i = index\">\r\n <div (click)=\"getimages(i,obj)\">\r\n <div *ngIf=\"i === selectIndex;\">\r\n <span class=\"cursor-pointer\"><svg width=\"57\" height=\"56\" viewBox=\"0 0 57 56\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"0.154297\" width=\"56\" height=\"56\" rx=\"12\" fill=\"#33B5FF\" />\r\n <path\r\n d=\"M39.8216 36.1667C39.8216 36.7855 39.5758 37.379 39.1382 37.8166C38.7006 38.2542 38.1071 38.5 37.4883 38.5H18.8216C18.2028 38.5 17.6093 38.2542 17.1717 37.8166C16.7341 37.379 16.4883 36.7855 16.4883 36.1667V19.8333C16.4883 19.2145 16.7341 18.621 17.1717 18.1834C17.6093 17.7458 18.2028 17.5 18.8216 17.5H24.6549L26.9883 21H37.4883C38.1071 21 38.7006 21.2458 39.1382 21.6834C39.5758 22.121 39.8216 22.7145 39.8216 23.3333V36.1667Z\"\r\n stroke=\"white\" stroke-width=\"2.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <div class=\"text-center mt-2\">{{obj | date:'dd MMM'}}</div>\r\n </div>\r\n <div *ngIf=\"i !== selectIndex;\">\r\n <span class=\"cursor-pointer\"><svg width=\"57\" height=\"56\" viewBox=\"0 0 57 56\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"0.462891\" width=\"56\" height=\"56\" rx=\"12\" fill=\"#EAF8FF\" />\r\n <path\r\n d=\"M40.1302 36.1667C40.1302 36.7855 39.8844 37.379 39.4468 37.8166C39.0092 38.2542 38.4157 38.5 37.7969 38.5H19.1302C18.5114 38.5 17.9179 38.2542 17.4803 37.8166C17.0427 37.379 16.7969 36.7855 16.7969 36.1667V19.8333C16.7969 19.2145 17.0427 18.621 17.4803 18.1834C17.9179 17.7458 18.5114 17.5 19.1302 17.5H24.9635L27.2969 21H37.7969C38.4157 21 39.0092 21.2458 39.4468 21.6834C39.8844 22.121 40.1302 22.7145 40.1302 23.3333V36.1667Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <div class=\"text-center mt-2\">{{obj | date:'dd MMM'}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div *ngIf=\"!folderView\" class=\"card-body\">\r\n <section *ngIf=\"!imageFlow\">\r\n\r\n\r\n <div class=\"row\">\r\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\r\n <span *ngIf=\"backnav\" class=\"cursor-pointer\" (click)=\"backToFootfall()\">\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_2585_7036)\">\r\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\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\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_2585_7036\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"img-direc ms-2 mt-1\">{{folderDate | date:'dd MMM, yyyy'}} \r\n <span class=\"badge badge-light-warning mx-2\" *ngIf=\"!getTicketStatuses().includes('closed') && getTicketStatuses().includes('open')\">\r\n Ticket Raised\r\n</span>\r\n<span class=\"badge badge-light-success mx-2\" *ngIf=\"getTicketStatuses().includes('closed')\">Ticket Closed</span>\r\n\r\n </span>\r\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\" class=\"ms-auto text-end\">\r\n \r\n <button [disabled]=\"!(countData?.duplicate > 0 || countData?.housekeeping > 0 || countData?.employee > 0)\" class=\"btn btn-primary\" type=\"button\" (click)=\"Raised()\">\r\n Raise ticket for footfall\r\n </button>\r\n</div>\r\n </div>\r\n <div *ngIf=\"!folderView\" class=\"nav-group bg-white border-1 btn-group w-auto my-2\">\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('footfall')\">\r\n Total Footfall\r\n <span\r\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n {{ countData?.footfallCount || 0 }}\r\n </span>\r\n </button>\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('non-tagging')\">\r\n Non-tags\r\n <span\r\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n {{ countData?.nonTags || 0 }}\r\n </span>\r\n </button>\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('duplicate')\">\r\n Duplicated\r\n <span\r\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n {{ countData?.duplicate || 0 }}\r\n </span>\r\n </button>\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'employee' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('employee')\">\r\n Employee/Staff\r\n <span\r\n [ngClass]=\"type === 'employee' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n {{ countData?.employee || 0 }}\r\n </span>\r\n </button>\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'house-keeping' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('house-keeping')\">\r\n House Keeping\r\n <span\r\n [ngClass]=\"type === 'house-keeping' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\r\n {{ countData?.housekeeping || 0 }}\r\n </span>\r\n </button>\r\n\r\n </div>\r\n\r\n <div *ngIf=\"type === 'footfall'\" class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\r\n\r\n <div class=\"col text-nowrap\" *ngFor=\"let obj of objectsArray\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n <li class=\"nav-item cursor-pointer\">\r\n <a (click)=\"selectedTimes(obj.timeRange)\"\r\n [ngClass]=\"selectedTime === obj?.timeRange ? 'active' : ''\"\r\n class=\"nav-link cursor-pointer no-border mx-3 mb-2\">\r\n {{obj?.timeRange}}<span class=\"mx-2\"\r\n [ngClass]=\"selectedTime === obj?.timeRange ? 'badge-num-primary' :'badge-num-muted'\">\r\n {{ obj?.count ? obj?.count : 0 }}\r\n </span>\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n\r\n <div class=\"col-lg-12 mb-3\">\r\n\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column \" style=\"margin: 64px;border-radius: 8px;\r\nbackground: var(--Gray-50, #F9FAFB);\">\r\n <svg width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\" />\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\"\r\n stroke-width=\"13.3333\" />\r\n <path\r\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\"\r\n stroke=\"#00A3FF\" stroke-width=\"4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <div class=\"nodata-title my-3\">\r\n {{ noDataMessages[type?.toLowerCase()] || 'No data found' }}\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"row px-0 img-traffic contain high-400px scroll-y\" *ngIf=\"!noData && !loading\">\r\n <ng-container\r\n\r\n *ngFor=\"let obj of imagesArrayData\"\r\n>\r\n<div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\" class=\"col-md-3 border-gray mx-2 p-2 mt-5\">\r\n <!-- Condition: Only show if not duplicate OR duplicate with non-empty duplicateImagePath -->\r\n <ng-container >\r\n <img\r\n class=\"img-src cursor-pointer\"\r\n [src]=\"imageUrl + obj?.filePath\"\r\n (error)=\"obj.filePath = null\"\r\n alt=\"\"\r\n (click)=\"imgFullView(obj)\"\r\n />\r\n </ng-container>\r\n\r\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\r\n <span class=\"mb-5\">\r\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"Group\">\r\n <path id=\"Vector\"\r\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path id=\"Vector_2\"\r\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\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </svg>\r\n\r\n </span>\r\n <span class=\"header mb-5 text-center\">Preview not available</span>\r\n <span class=\"description mb-5 text-center\">The selected camera is not available at the\r\n moment.</span>\r\n </div>\r\n <div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\" class=\"row px-2 mb-2\">\r\n <div class=\"col-md-7\">\r\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd}} <span *ngIf=\"(type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\" class=\"mx-2 badge badge-light-primary\">{{obj.duplicateImagePath?.length}}</span></div>\r\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme}}</div>\r\n </div>\r\n <div class=\"col-md-5 text-end py-3\">\r\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\"\r\n placement=\"top\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n viewBox=\"0 0 19 18\" fill=\"none\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='employee'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\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\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <!-- full image View -->\r\n <section *ngIf=\"imageFlow\">\r\n <div class=\"row\">\r\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\r\n <span class=\"cursor-pointer\" (click)=\"backToFootfall1()\">\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_2585_7036)\">\r\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\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\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_2585_7036\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"img-direc ms-2 mt-1\">{{folderDate | date:'dd MMM, yyyy'}}</span>\r\n </div>\r\n <div class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\r\n\r\n <!-- <div class=\"col text-nowrap\" *ngFor=\"let obj of objectsArray\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n <li class=\"nav-item cursor-pointer\">\r\n <a (click)=\"selectedTimes(obj.timeRange)\"\r\n [ngClass]=\"selectedTime === obj?.timeRange ? 'active' : ''\"\r\n class=\"nav-link cursor-pointer no-border mx-3 mb-2\">\r\n {{obj?.timeRange}}<span class=\"mx-2\"\r\n [ngClass]=\"selectedTime === obj?.timeRange ? 'badge-num-primary' :'badge-num-muted'\">\r\n {{ obj?.count ? obj?.count : 0 }}\r\n </span>\r\n </a>\r\n </li>\r\n </ul>\r\n </div> -->\r\n\r\n\r\n </div>\r\n\r\n <div class=\"row mx-0 border-gray img-traffic\" *ngIf=\"!noData && !loading\">\r\n <div class=\"col-md-6 p-2 mb-2 mt-5\">\r\n <div class=\"position-relative border-gray p-2 \">\r\n <!-- <button *ngIf=\"canNavigateLeft\" (click)=\"navigateImage('left')\"\r\n class=\"btn btn-light position-absolute start-0 top-50 z-index-10\">\r\n \u25C0\r\n </button> -->\r\n\r\n <!-- Main Image -->\r\n <img class=\"img-src cursor-pointer h-350px\"\r\n [src]=\"imageUrl + selectImageArray?.filePath\" appMagnifier alt=\"\">\r\n <!-- <button *ngIf=\"canNavigateRight\" (click)=\"navigateImage('right')\"\r\n class=\"btn btn-light position-absolute end-0 top-50 z-index-10\">\r\n \u25B6\r\n </button> -->\r\n\r\n <!-- Right arrow button -->\r\n <div class=\"row px-2 mb-2\">\r\n <div class=\"col-md-7\">\r\n <div class=\"py-2 img-doc-time\">Tango ID : {{selectImageArray?.templd}}</div>\r\n <div class=\"img-doc-value\">Entry Time : {{selectImageArray?.entryTme}}</div>\r\n </div>\r\n <div class=\"col-md-5 text-end py-3\">\r\n <span *ngIf=\"selectImageArray?.revopsType ==='non-tagging'\"\r\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n viewBox=\"0 0 19 18\" fill=\"none\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='duplicate'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='employee'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='house-keeping'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\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\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-6 p-2 mb-2 mt-5\">\r\n <div class=\"mx-2 \">\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"title-type\">\r\n Select non-shopper type\r\n </div>\r\n\r\n <div *ngIf=\"!revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\r\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\">\r\n\r\n <button [disabled]=\"\r\n (selectedRadioType === undefined || selectedRadioType === '') ||\r\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\r\n \"\r\n class=\"btn btn-default\" type=\"button\" (click)=\"clearValue()\">Clear</button>\r\n <button class=\"btn btn-outline me-2\" (click)=\"cancel()\">Cancel</button>\r\n <button\r\n class=\"btn btn-primary\"\r\n id=\"alert-toast\"\r\n (click)=\"save(selectedType)\"\r\n [disabled]=\"\r\n (selectedRadioType === undefined || selectedRadioType === '') ||\r\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\r\n \"\r\n >\r\n Save\r\n </button>\r\n </div>\r\n </div>\r\n <div *ngIf=\"revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\r\n <button *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\" class=\"btn btn-outline me-2\" (click)=\"editValue()\"><span\r\n class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\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\"\r\n stroke=\"#344054\" stroke-width=\"1.81079\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>Edit</button>\r\n\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-check my-15\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate\"\r\n id=\"duplicate\" [(ngModel)]=\"selectedType\" [value]=\"'duplicate'\"\r\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\r\n <label class=\"form-check-label\" for=\"duplicate\">\r\n <span class=\"ms-5\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"ms-5 tag-class\">Duplicate</span>\r\n </label>\r\n </div>\r\n <div class=\"form-check my-15\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"employee\"\r\n id=\"employee\" [(ngModel)]=\"selectedType\" [value]=\"'employee'\"\r\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\r\n <label class=\"form-check-label\" for=\"employee\">\r\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"ms-5 tag-class\">Employee/Staff</span>\r\n </label>\r\n </div>\r\n <div class=\"form-check my-15\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"house-keeping\"\r\n id=\"house-keeping\" [(ngModel)]=\"selectedType\" [value]=\"'house-keeping'\"\r\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\r\n <label class=\"form-check-label\" for=\"house-keeping\">\r\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\"\r\n height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\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\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"ms-5 tag-class\"> House Keeping</span>\r\n </label>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n <div class=\"row px-0 img-traffic mt-3 high-400px scroll-y\">\r\n <div class=\"col-md-3 border-gray mx-2 p-2 mt-5\" *ngFor=\"let obj of remainingImageArray\">\r\n <div class=\"position-relative\">\r\n <!-- <input *ngIf=\"selectedRadioType === 'duplicate'\" type=\"checkbox\" \r\n [(ngModel)]=\"obj.selected\" class=\"position-absolute absolute form-check-input\"\r\n (change)=\"onImageCheckboxChange(obj, 'duplicate')\" /> -->\r\n <input\r\n *ngIf=\"selectedRadioType === 'duplicate'\"\r\n type=\"checkbox\"\r\n [checked]=\"obj.selected\"\r\n class=\"position-absolute absolute form-check-input cursor-pointer\"\r\n (change)=\"onImageCheckboxChange($event, obj, 'duplicate')\"\r\n [disabled]=\"obj.duplicateImagePath?.length > 0\"\r\n/>\r\n\r\n<img\r\n class=\"img-src\"\r\n [ngClass]=\"selectedRadioType !== 'duplicate' ? 'cursor-pointer' : 'cursor-pointer'\"\r\n [src]=\"imageUrl + obj?.filePath\"\r\n (error)=\"obj.filePath = null\"\r\n alt=\"\"\r\n (click)=\"handleImageClick($event, obj)\"\r\n/>\r\n\r\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\r\n <span class=\"mb-5\">\r\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"Group\">\r\n <path id=\"Vector\"\r\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path id=\"Vector_2\"\r\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\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </svg>\r\n\r\n </span>\r\n <span class=\"header mb-5 text-center\">Preview not available</span>\r\n <span class=\"description mb-5 text-center\">The selected camera is not available at\r\n the\r\n moment.</span>\r\n </div>\r\n <div class=\"row px-2 mb-2\">\r\n <div class=\"col-md-7\">\r\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd ? obj?.templd : obj?.tempId}}</div>\r\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme ? obj?.entryTme :obj?.entryTime}}</div>\r\n </div>\r\n <div class=\"col-md-5 text-end py-3\">\r\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\"\r\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n viewBox=\"0 0 19 18\" fill=\"none\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='employee'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\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\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </section>\r\n </div>\r\n </section>\r\n</div>\r\n\r\n\r\n<ng-template #zoomPopup let-model>\r\n <div class=\"p-4 m-4\">\r\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\r\n <span *ngIf=\"popupType === 'non-tagging'\" class=\"my-3\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\r\n <g clip-path=\"url(#clip0_2088_98337)\">\r\n <path\r\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\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2088_98337\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(10 10)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <!-- Heading -->\r\n <h5 class=\"modal-title mb-2\">\r\n <span *ngIf=\"popupType === 'employee'\">Tagging as employee/staff </span>\r\n <span *ngIf=\"popupType === 'duplicate'\">Tagging as duplicates </span>\r\n <span *ngIf=\"popupType === 'house-keeping'\">Tagging as house keeping </span>\r\n <span *ngIf=\"popupType === 'non-tagging'\">Clear duplicates</span>\r\n </h5>\r\n <p class=\"mb-3\">\r\n <span *ngIf=\"popupType === 'employee'\">Are you sure you want to tag this as employee/staff?</span>\r\n <span *ngIf=\"popupType === 'duplicate'\">Are you sure you want to tag this as duplicates? </span>\r\n <span *ngIf=\"popupType === 'house-keeping'\">Are you sure you want to tag this as house keeping? </span>\r\n <span *ngIf=\"popupType === 'non-tagging'\">This will remove tagged duplicates and move them to\r\n 'Non-tag'.</span>\r\n\r\n </p>\r\n </div>\r\n\r\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\r\n <button class=\"btn btn-outline me-2\" (click)=\"cancelSubmit()\">Cancel</button>\r\n <button *ngIf=\"popupType !== 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\r\n Yes, Tag\r\n </button>\r\n <button *ngIf=\"popupType === 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\r\n Yes, clear\r\n </button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n<ng-template #raisedPopup let-model>\r\n <div class=\"p-4 m-4\">\r\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\r\n <span class=\"my-3\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\r\n <path\r\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\"\r\n fill=\"#00A3FF\" stroke=\"#00A3FF\" stroke-width=\"0.3\" />\r\n </svg>\r\n </span>\r\n <!-- Heading -->\r\n <h5 class=\"modal-title mb-2\">\r\n <span>Raise tickets for the following</span>\r\n\r\n </h5>\r\n <p class=\"mb-3\">\r\n <span>Raising a ticket for footfall count issues. Make sure all records are identified for\r\n validation.</span>\r\n\r\n\r\n </p>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-4 my-4\">\r\n <div class=\"border border-1 rounded p-3 h-100\">\r\n <div class=\"fw-semibold fs-5 mb-2\">\r\n {{tempRaisedPayload?.duplicateCount ? tempRaisedPayload?.duplicateCount :'0'}}\r\n </div>\r\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\r\n Duplicates\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-4 my-4\">\r\n <div class=\"border border-1 rounded p-3 h-100\">\r\n <div class=\"fw-semibold fs-5 mb-2\">\r\n {{tempRaisedPayload?.employeeCount ? tempRaisedPayload?.employeeCount:'0' }}\r\n </div>\r\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\r\n Employee\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-4 my-4\">\r\n <div class=\"border border-1 rounded p-3 h-100\">\r\n <div class=\"fw-semibold fs-5 mb-2\">\r\n {{tempRaisedPayload?.houseKeepingCount ? tempRaisedPayload?.houseKeepingCount :'0'}}\r\n </div>\r\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\r\n House Keeping\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Label and Textarea -->\r\n <div class=\"my-3\">\r\n <label class=\"form-label\">Description (Optional)</label>\r\n <textarea rows=\"3\" [(ngModel)]=\"commentText\" class=\"form-control\"\r\n placeholder=\"Enter description\"></textarea>\r\n </div>\r\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\r\n\r\n <button class=\"btn btn-outline w-50 me-2\" (click)=\"cancelRasied()\">Cancel</button>\r\n <button class=\"btn btn-primary w-50\" (click)=\"submitRaised()\">\r\n Raise Ticket\r\n </button>\r\n </div>\r\n </div>\r\n</ng-template>", styles: [".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:24%!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}.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}.header-row{display:flex;align-items:center;width:100%;justify-content:space-between}.img-dire{font-size:16px;font-weight:700}.divider{flex-grow:1;height:1px;background-color:#ddd;margin:0 10px}.accordion-arrow{display:flex;align-items:center}.scroll-container{max-height:400px;overflow-y:auto;overflow-x:hidden}.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}.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}.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}\n"] }]
791
+ args: [{ selector: "lib-img-rvps", template: "<div class=\"card mt-3\">\r\n <div class=\"card-header mt-3 px-0 border-bottom-0\">\r\n <div class=\"custom-accordion\">\r\n <div class=\"custom-accordion-item\">\r\n <button class=\"mainheading pb-0 custom-accordion-header\" (click)=\"toggleAccordion()\">\r\n <div class=\"header-row\">\r\n <span class=\"img-direc\">Image Directory</span>\r\n\r\n <span class=\"divider\"></span>\r\n <span class=\"accordion-arrow\">\r\n <!-- Down arrow for collapsed state, up arrow for expanded state -->\r\n <svg *ngIf=\"!isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\r\n viewBox=\"0 0 16 6\" fill=\"none\">\r\n <path d=\"M1 1L5 5L9 1\" stroke=\"#071437\" stroke-width=\"1\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\r\n viewBox=\"0 0 16 6\" fill=\"none\">\r\n <path d=\"M1 5L5 1L9 5\" stroke=\"#1b84ff\" stroke-width=\"1\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <section *ngIf=\"isAccordionExpanded\">\r\n\r\n <div *ngIf=\"folderView\" class=\"card-body px-0\">\r\n <div class=\"scroll-container\">\r\n <div class=\"row\">\r\n <div class=\"col-md-1 mt-5 text-center\" *ngFor=\"let obj of dateArray;let i = index\">\r\n <div (click)=\"getimages(i,obj)\">\r\n <div *ngIf=\"i === selectIndex;\">\r\n <span class=\"cursor-pointer\"><svg width=\"57\" height=\"56\" viewBox=\"0 0 57 56\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"0.154297\" width=\"56\" height=\"56\" rx=\"12\" fill=\"#33B5FF\" />\r\n <path\r\n d=\"M39.8216 36.1667C39.8216 36.7855 39.5758 37.379 39.1382 37.8166C38.7006 38.2542 38.1071 38.5 37.4883 38.5H18.8216C18.2028 38.5 17.6093 38.2542 17.1717 37.8166C16.7341 37.379 16.4883 36.7855 16.4883 36.1667V19.8333C16.4883 19.2145 16.7341 18.621 17.1717 18.1834C17.6093 17.7458 18.2028 17.5 18.8216 17.5H24.6549L26.9883 21H37.4883C38.1071 21 38.7006 21.2458 39.1382 21.6834C39.5758 22.121 39.8216 22.7145 39.8216 23.3333V36.1667Z\"\r\n stroke=\"white\" stroke-width=\"2.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <div class=\"text-center mt-2\">{{obj | date:'dd MMM'}}</div>\r\n </div>\r\n <div *ngIf=\"i !== selectIndex;\">\r\n <span class=\"cursor-pointer\"><svg width=\"57\" height=\"56\" viewBox=\"0 0 57 56\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"0.462891\" width=\"56\" height=\"56\" rx=\"12\" fill=\"#EAF8FF\" />\r\n <path\r\n d=\"M40.1302 36.1667C40.1302 36.7855 39.8844 37.379 39.4468 37.8166C39.0092 38.2542 38.4157 38.5 37.7969 38.5H19.1302C18.5114 38.5 17.9179 38.2542 17.4803 37.8166C17.0427 37.379 16.7969 36.7855 16.7969 36.1667V19.8333C16.7969 19.2145 17.0427 18.621 17.4803 18.1834C17.9179 17.7458 18.5114 17.5 19.1302 17.5H24.9635L27.2969 21H37.7969C38.4157 21 39.0092 21.2458 39.4468 21.6834C39.8844 22.121 40.1302 22.7145 40.1302 23.3333V36.1667Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <div class=\"text-center mt-2\">{{obj | date:'dd MMM'}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div *ngIf=\"!folderView\" class=\"card-body\">\r\n <section *ngIf=\"!imageFlow\">\r\n\r\n\r\n <div class=\"row\">\r\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\r\n <span *ngIf=\"backnav\" class=\"cursor-pointer\" (click)=\"backToFootfall()\">\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_2585_7036)\">\r\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\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\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_2585_7036\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"img-direc ms-2 mt-1\">{{folderDate | date:'dd MMM, yyyy'}} \r\n <span class=\"badge badge-light-warning mx-2\" *ngIf=\"!getTicketStatuses().includes('closed') && getTicketStatuses().includes('open')\">\r\n Ticket Raised\r\n</span>\r\n<span class=\"badge badge-light-success mx-2\" *ngIf=\"getTicketStatuses().includes('closed')\">Ticket Closed</span>\r\n\r\n </span>\r\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\" class=\"ms-auto text-end\">\r\n \r\n <button [disabled]=\"!(countData?.duplicate > 0 || countData?.housekeeping > 0 || countData?.employee > 0)\" class=\"btn btn-primary\" type=\"button\" (click)=\"Raised()\">\r\n Raise ticket for footfall\r\n </button>\r\n</div>\r\n </div>\r\n <div *ngIf=\"!folderView\" class=\"nav-group bg-white border-1 btn-group w-auto my-2\">\r\n<ng-container *ngIf=\"!(countData?.length > 0)\">\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('footfall')\">\r\n Total Footfall\r\n <span\r\n [ngClass]=\"type === 'footfall' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n {{ countData?.footfallCount || 0 }}\r\n </span>\r\n </button>\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('non-tagging')\">\r\n Non-tags\r\n <span\r\n [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n {{ countData?.nonTags || 0 }}\r\n </span>\r\n </button>\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('duplicate')\">\r\n Duplicated\r\n <span\r\n [ngClass]=\"type === 'duplicate' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n {{ countData?.duplicate || 0 }}\r\n </span>\r\n </button>\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'employee' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('employee')\">\r\n Employee/Staff\r\n <span\r\n [ngClass]=\"type === 'employee' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n {{ countData?.employee || 0 }}\r\n </span>\r\n </button>\r\n\r\n <button class=\"btn btn-outline px-6 py-3\"\r\n [ngClass]=\"type === 'house-keeping' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n (click)=\"selectPlanTrends('house-keeping')\">\r\n House Keeping\r\n <span\r\n [ngClass]=\"type === 'house-keeping' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\r\n {{ countData?.housekeeping || 0 }}\r\n </span>\r\n </button>\r\n</ng-container>\r\n\r\n </div>\r\n<ng-container *ngIf=\"!imageFlow\">\r\n\r\n <div *ngIf=\"type === 'footfall'\" class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\r\n\r\n <div class=\"col text-nowrap\" *ngFor=\"let obj of objectsArray\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n <li class=\"nav-item cursor-pointer\">\r\n <a (click)=\"selectedTimes(obj.timeRange)\"\r\n [ngClass]=\"selectedTime === obj?.timeRange ? 'active' : ''\"\r\n class=\"nav-link cursor-pointer no-border mx-3 mb-2\">\r\n {{obj?.timeRange}}<span class=\"mx-2\"\r\n [ngClass]=\"selectedTime === obj?.timeRange ? 'badge-num-primary' :'badge-num-muted'\">\r\n {{ obj?.count ? obj?.count : 0 }}\r\n </span>\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n\r\n </div>\r\n</ng-container>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n\r\n <div class=\"col-lg-12 mb-3\">\r\n\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column \" style=\"margin: 64px;border-radius: 8px;\r\nbackground: var(--Gray-50, #F9FAFB);\">\r\n <svg width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\" />\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\"\r\n stroke-width=\"13.3333\" />\r\n <path\r\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\"\r\n stroke=\"#00A3FF\" stroke-width=\"4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <div class=\"nodata-title my-3\">\r\n {{ noDataMessages[type?.toLowerCase()] || 'No data found' }}\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"row px-0 img-traffic contain high-400px scroll-y\" *ngIf=\"!noData && !loading\">\r\n <ng-container\r\n\r\n*ngFor=\"let obj of imagesArrayData\"\r\n>\r\n<div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\" class=\"col-md-3 border-gray mx-2 p-2 mt-5\">\r\n<!-- Condition: Only show if not duplicate OR duplicate with non-empty duplicateImagePath -->\r\n<ng-container >\r\n<img\r\nclass=\"img-src cursor-pointer\"\r\n[src]=\"imageUrl + obj?.filePath\"\r\n(error)=\"obj.filePath = null\"\r\nalt=\"\"\r\n(click)=\"imgFullView(obj)\"\r\n/>\r\n</ng-container>\r\n\r\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\r\n <span class=\"mb-5\">\r\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"Group\">\r\n <path id=\"Vector\"\r\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path id=\"Vector_2\"\r\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\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </svg>\r\n\r\n </span>\r\n <span class=\"header mb-5 text-center\">Preview not available</span>\r\n <span class=\"description mb-5 text-center\">The selected camera is not available at the\r\n moment.</span>\r\n </div>\r\n <div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\" class=\"row px-2 mb-2\">\r\n <div class=\"col-md-7\">\r\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd}} <span *ngIf=\"(type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\" class=\"mx-2 badge badge-light-primary\">{{obj.duplicateImagePath?.length}}</span></div>\r\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme}}</div>\r\n </div>\r\n <div class=\"col-md-5 text-end py-3\">\r\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\"\r\n placement=\"top\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n viewBox=\"0 0 19 18\" fill=\"none\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='employee'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\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\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n\r\n </div>\r\n </section>\r\n\r\n <!-- full image View -->\r\n <section *ngIf=\"imageFlow\">\r\n <div class=\"row\">\r\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\r\n <span class=\"cursor-pointer\" (click)=\"backToFootfall1()\">\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_2585_7036)\">\r\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\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\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_2585_7036\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"img-direc ms-2 mt-1\">{{folderDate | date:'dd MMM, yyyy'}}</span>\r\n </div>\r\n <div class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\r\n\r\n <!-- <div class=\"col text-nowrap\" *ngFor=\"let obj of objectsArray\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n <li class=\"nav-item cursor-pointer\">\r\n <a (click)=\"selectedTimes(obj.timeRange)\"\r\n [ngClass]=\"selectedTime === obj?.timeRange ? 'active' : ''\"\r\n class=\"nav-link cursor-pointer no-border mx-3 mb-2\">\r\n {{obj?.timeRange}}<span class=\"mx-2\"\r\n [ngClass]=\"selectedTime === obj?.timeRange ? 'badge-num-primary' :'badge-num-muted'\">\r\n {{ obj?.count ? obj?.count : 0 }}\r\n </span>\r\n </a>\r\n </li>\r\n </ul>\r\n </div> -->\r\n\r\n\r\n </div>\r\n\r\n <div class=\"row mx-0 border-gray img-traffic\" *ngIf=\"!noData && !loading\">\r\n <div class=\"col-md-6 p-2 mb-2 mt-5\">\r\n <div class=\"position-relative border-gray p-2 \">\r\n <!-- <button *ngIf=\"canNavigateLeft\" (click)=\"navigateImage('left')\"\r\n class=\"btn btn-light position-absolute start-0 top-50 z-index-10\">\r\n \u25C0\r\n </button> -->\r\n\r\n <!-- Main Image -->\r\n <img class=\"img-src cursor-pointer h-450px\" (click)=\"selectedImageArray(imageUrl, selectImageArray)\"\r\n [src]=\"imageUrl + selectImageArray?.filePath\" appMagnifier alt=\"\">\r\n <!-- <button *ngIf=\"canNavigateRight\" (click)=\"navigateImage('right')\"\r\n class=\"btn btn-light position-absolute end-0 top-50 z-index-10\">\r\n \u25B6\r\n </button> -->\r\n\r\n <!-- Right arrow button -->\r\n <div class=\"row px-2 mb-2\">\r\n <div class=\"col-md-7\">\r\n <div class=\"py-2 img-doc-time\">Tango ID : {{selectImageArray?.templd}}</div>\r\n <div class=\"img-doc-value\">Entry Time : {{selectImageArray?.entryTme}}</div>\r\n </div>\r\n <div class=\"col-md-5 text-end py-3\">\r\n <span *ngIf=\"selectImageArray?.revopsType ==='non-tagging'\"\r\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n viewBox=\"0 0 19 18\" fill=\"none\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='duplicate'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='employee'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='house-keeping'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\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\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-6 p-2 mb-2 mt-5\">\r\n <div class=\"mx-2 \">\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"title-type\">\r\n Select non-shopper type\r\n </div>\r\n\r\n <div *ngIf=\"!revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\r\n <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\">\r\n\r\n <button [disabled]=\"\r\n (selectedRadioType === undefined || selectedRadioType === '') ||\r\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\r\n \"\r\n class=\"btn btn-default\" type=\"button\" (click)=\"clearValue()\">Clear</button>\r\n <button class=\"btn btn-outline me-2\" (click)=\"cancel()\">Cancel</button>\r\n <button\r\n class=\"btn btn-primary\"\r\n id=\"alert-toast\"\r\n (click)=\"save(selectedType)\"\r\n [disabled]=\"\r\n (selectedRadioType === undefined || selectedRadioType === '') ||\r\n (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\r\n \"\r\n >\r\n Save\r\n </button>\r\n </div>\r\n </div>\r\n <div *ngIf=\"revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\r\n <button *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\" class=\"btn btn-outline me-2\" (click)=\"editValue()\"><span\r\n class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\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\"\r\n stroke=\"#344054\" stroke-width=\"1.81079\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>Edit</button>\r\n\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-check my-15\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate\"\r\n id=\"duplicate\" [(ngModel)]=\"selectedType\" [value]=\"'duplicate'\"\r\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\r\n <label class=\"form-check-label\" for=\"duplicate\">\r\n <span class=\"ms-5\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"ms-5 tag-class\">Duplicate</span>\r\n </label>\r\n </div>\r\n <div class=\"form-check my-15\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"employee\"\r\n id=\"employee\" [(ngModel)]=\"selectedType\" [value]=\"'employee'\"\r\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\r\n <label class=\"form-check-label\" for=\"employee\">\r\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"ms-5 tag-class\">Employee/Staff</span>\r\n </label>\r\n </div>\r\n <div class=\"form-check my-15\">\r\n <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"house-keeping\"\r\n id=\"house-keeping\" [(ngModel)]=\"selectedType\" [value]=\"'house-keeping'\"\r\n (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\r\n <label class=\"form-check-label\" for=\"house-keeping\">\r\n <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\"\r\n height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\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\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"ms-5 tag-class\"> House Keeping</span>\r\n </label>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n \r\n <div class=\"row px-0 img-traffic mt-3 high-400px scroll-y\">\r\n <div class=\"col-md-3 border-gray mx-2 p-2 mt-5\" *ngFor=\"let obj of remainingImageArray\">\r\n <div class=\"position-relative\">\r\n <!-- <input *ngIf=\"selectedRadioType === 'duplicate'\" type=\"checkbox\" \r\n [(ngModel)]=\"obj.selected\" class=\"position-absolute absolute form-check-input\"\r\n (change)=\"onImageCheckboxChange(obj, 'duplicate')\" /> -->\r\n <input \r\n *ngIf=\"!revopsTypeValue && selectedRadioType === 'duplicate'\"\r\n type=\"checkbox\"\r\n [checked]=\"obj.selected\"\r\n class=\"position-absolute absolute form-check-input cursor-pointer\"\r\n (change)=\"onImageCheckboxChange($event, obj, 'duplicate')\"\r\n [disabled]=\"obj.duplicateImagePath?.length > 0\"\r\n/>\r\n\r\n<img\r\n class=\"img-src\"\r\n [ngClass]=\"selectedRadioType !== 'duplicate' ? 'cursor-pointer' : 'cursor-pointer'\"\r\n [src]=\"imageUrl + obj?.filePath\"\r\n (error)=\"obj.filePath = null\"\r\n alt=\"\"\r\n (click)=\"handleImageClick($event, obj)\"\r\n/>\r\n\r\n <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\r\n <span class=\"mb-5\">\r\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"Group\">\r\n <path id=\"Vector\"\r\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path id=\"Vector_2\"\r\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\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </svg>\r\n\r\n </span>\r\n <span class=\"header mb-5 text-center\">Preview not available</span>\r\n <span class=\"description mb-5 text-center\">The selected camera is not available at\r\n the\r\n moment.</span>\r\n </div>\r\n <div class=\"row px-2 mb-2\">\r\n <div class=\"col-md-7\">\r\n <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd ? obj?.templd : obj?.tempId}}</div>\r\n <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme ? obj?.entryTme :obj?.entryTime}}</div>\r\n </div>\r\n <div class=\"col-md-5 text-end py-3\">\r\n <span *ngIf=\"obj?.revopsType ==='non-tagging'\"\r\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n viewBox=\"0 0 19 18\" fill=\"none\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='duplicate'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='employee'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"obj?.revopsType ==='house-keeping'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\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\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </section>\r\n </div>\r\n </section>\r\n</div>\r\n\r\n\r\n<ng-template #zoomPopup let-model>\r\n <div class=\"p-4 m-4\">\r\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\r\n <span *ngIf=\"popupType === 'non-tagging'\" class=\"my-3\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\r\n <g clip-path=\"url(#clip0_2088_98337)\">\r\n <path\r\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\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2088_98337\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(10 10)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <!-- Heading -->\r\n <h5 class=\"modal-title mb-2\">\r\n <span *ngIf=\"popupType === 'employee'\">Tagging as employee/staff </span>\r\n <span *ngIf=\"popupType === 'duplicate'\">Tagging as duplicates </span>\r\n <span *ngIf=\"popupType === 'house-keeping'\">Tagging as house keeping </span>\r\n <span *ngIf=\"popupType === 'non-tagging'\">Clear duplicates</span>\r\n </h5>\r\n <p class=\"mb-3\">\r\n <span *ngIf=\"popupType === 'employee'\">Are you sure you want to tag this as employee/staff?</span>\r\n <span *ngIf=\"popupType === 'duplicate'\">Are you sure you want to tag this as duplicates? </span>\r\n <span *ngIf=\"popupType === 'house-keeping'\">Are you sure you want to tag this as house keeping? </span>\r\n <span *ngIf=\"popupType === 'non-tagging'\">This will remove tagged duplicates and move them to\r\n 'Non-tag'.</span>\r\n\r\n </p>\r\n </div>\r\n\r\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\r\n <button class=\"btn btn-outline me-2\" (click)=\"cancelSubmit()\">Cancel</button>\r\n <button *ngIf=\"popupType !== 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\r\n Yes, Tag\r\n </button>\r\n <button *ngIf=\"popupType === 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\r\n Yes, clear\r\n </button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n<ng-template #raisedPopup let-model>\r\n <div class=\"p-4 m-4\">\r\n <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\r\n <span class=\"my-3\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\r\n <path\r\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\"\r\n fill=\"#00A3FF\" stroke=\"#00A3FF\" stroke-width=\"0.3\" />\r\n </svg>\r\n </span>\r\n <!-- Heading -->\r\n <h5 class=\"modal-title mb-2\">\r\n <span>Raise tickets for the following</span>\r\n\r\n </h5>\r\n <p class=\"mb-3\">\r\n <span>Raising a ticket for footfall count issues. Make sure all records are identified for\r\n validation.</span>\r\n\r\n\r\n </p>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-4 my-4\">\r\n <div class=\"border border-1 rounded p-3 h-100\">\r\n <div class=\"fw-semibold fs-5 mb-2\">\r\n {{tempRaisedPayload?.duplicateCount ? tempRaisedPayload?.duplicateCount :'0'}}\r\n </div>\r\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\r\n Duplicates\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-4 my-4\">\r\n <div class=\"border border-1 rounded p-3 h-100\">\r\n <div class=\"fw-semibold fs-5 mb-2\">\r\n {{tempRaisedPayload?.employeeCount ? tempRaisedPayload?.employeeCount:'0' }}\r\n </div>\r\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\r\n Employee\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-4 my-4\">\r\n <div class=\"border border-1 rounded p-3 h-100\">\r\n <div class=\"fw-semibold fs-5 mb-2\">\r\n {{tempRaisedPayload?.houseKeepingCount ? tempRaisedPayload?.houseKeepingCount :'0'}}\r\n </div>\r\n <div class=\"fw-semibold text-muted fs-6 mt-2\">\r\n House Keeping\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Label and Textarea -->\r\n <div class=\"my-3\">\r\n <label class=\"form-label\">Description (Optional)</label>\r\n <textarea rows=\"3\" [(ngModel)]=\"commentText\" class=\"form-control\"\r\n placeholder=\"Enter description\"></textarea>\r\n </div>\r\n <div class=\"w-100 mt-5 d-flex justify-content-end\">\r\n\r\n <button class=\"btn btn-outline w-50 me-2\" (click)=\"cancelRasied()\">Cancel</button>\r\n <button class=\"btn btn-primary w-50\" (click)=\"submitRaised()\">\r\n Raise Ticket\r\n </button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n<ng-template #imagePopup let-model>\r\n <div class=\"mx-4\">\r\n <div class=\"row\">\r\n <div class=\" p-2 mb-2 mt-5\">\r\n <div class=\"position-relative border-gray p-2 \">\r\n <!-- <button *ngIf=\"canNavigateLeft\" (click)=\"navigateImage('left')\"\r\n class=\"btn btn-light position-absolute start-0 top-50 z-index-10\">\r\n \u25C0\r\n </button> -->\r\n\r\n <!-- Main Image -->\r\n <img class=\" cursor-pointer w-100 h-525px\"\r\n [src]=\"imageUrl + selectImageArray?.filePath\" appMagnifier alt=\"\">\r\n <!-- <button *ngIf=\"canNavigateRight\" (click)=\"navigateImage('right')\"\r\n class=\"btn btn-light position-absolute end-0 top-50 z-index-10\">\r\n \u25B6\r\n </button> -->\r\n\r\n <!-- Right arrow button -->\r\n <div class=\"row px-2 mb-2\">\r\n <div class=\"col-md-7\">\r\n <div class=\"py-2 img-doc-time\">Tango ID : {{selectImageArray?.templd}}</div>\r\n <div class=\"img-doc-value\">Entry Time : {{selectImageArray?.entryTme}}</div>\r\n </div>\r\n <div class=\"col-md-5 text-end py-3\">\r\n <span *ngIf=\"selectImageArray?.revopsType ==='non-tagging'\"\r\n ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n viewBox=\"0 0 19 18\" fill=\"none\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='duplicate'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94635)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94635\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='employee'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n viewBox=\"0 0 20 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94639)\">\r\n <path\r\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\"\r\n stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94639\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"selectImageArray?.revopsType ==='house-keeping'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n viewBox=\"0 0 21 21\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2012_94643)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\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\"\r\n fill=\"#475467\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2012_94643\">\r\n <rect width=\"21\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0 0.686035)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"modal-footer py-2 px-0\"> -->\r\n\r\n <div class=\"w-100 py-2 mb-2 px-0 d-flex justify-content-end\">\r\n \r\n <button class=\"btn btn-outline\" (click)=\"closeImage()\">Close</button>\r\n \r\n </div>\r\n <!-- </div> -->\r\n </div>\r\n</ng-template>", styles: [".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:24%!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}.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}.header-row{display:flex;align-items:center;width:100%;justify-content:space-between}.img-dire{font-size:16px;font-weight:700}.divider{flex-grow:1;height:1px;background-color:#ddd;margin:0 10px}.accordion-arrow{display:flex;align-items:center}.scroll-container{max-height:400px;overflow-y:auto;overflow-x:hidden}.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}.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}.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}\n"] }]
775
792
  }], ctorParameters: () => [{ type: i1.TrafficService }, { type: i2.GlobalStateService }, { type: i0.ChangeDetectorRef }, { type: i3.NgbModal }, { type: i4.ToastService }, { type: i5.TrafficRvpsService }], propDecorators: { zoomPopup: [{
776
793
  type: ViewChild,
777
794
  args: ['zoomPopup']
778
795
  }], raisedPopup: [{
779
796
  type: ViewChild,
780
797
  args: ['raisedPopup']
798
+ }], imagePopup: [{
799
+ type: ViewChild,
800
+ args: ['imagePopup']
781
801
  }] } });
782
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1nLXJ2cHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmFmZmljL3NyYy9saWIvY29tcG9uZW50cy9pbWctcnZwcy9pbWctcnZwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYWZmaWMvc3JjL2xpYi9jb21wb25lbnRzL2ltZy1ydnBzL2ltZy1ydnBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBR1MsU0FBUyxFQUM1QixNQUFNLGVBQWUsQ0FBQztBQUt2QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFPOUMsTUFBTSxPQUFPLGdCQUFnQjtJQU9qQjtJQUNEO0lBQ0M7SUFDQTtJQUNBO0lBQ0E7SUFYVixVQUFVLENBQU07SUFDaEIsWUFBWSxDQUFNO0lBQ2xCLE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDeEIsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUNmLFNBQVMsQ0FBTTtJQUNmLFlBQ1UsT0FBdUIsRUFDeEIsRUFBc0IsRUFDckIsRUFBcUIsRUFDckIsWUFBc0IsRUFDdEIsS0FBbUIsRUFDbkIsV0FBK0I7UUFML0IsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDeEIsT0FBRSxHQUFGLEVBQUUsQ0FBb0I7UUFDckIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsaUJBQVksR0FBWixZQUFZLENBQVU7UUFDdEIsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNuQixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7SUFDdEMsQ0FBQztJQUNhLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQzFDLFdBQVc7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QUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFckUsMEJBQTBCO1FBQzFCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FDcEQsQ0FBQyxDQUFNLEVBQUUsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLGlCQUFpQixDQUNqRCxDQUFDO0lBQ0osQ0FBQzt3R0FyNUJVLGdCQUFnQjs0RkFBaEIsZ0JBQWdCLHlQQ3BCN0Isa2p4RUE4MEJjOzs0RkQxekJELGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxjQUFjO3VPQW1sQkYsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQXVGSSxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LEVsZW1lbnRSZWYsVmlld0NoaWxkXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgVHJhZmZpY1J2cHNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3RyYWZmaWMtcnZwcy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktZ2xvYmFsXCI7XHJcbmltcG9ydCB7IFRyYWZmaWNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3RyYWZmaWMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tIFwidGFuZ28tYXBwLXVpLXNoYXJlZFwiO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImxpYi1pbWctcnZwc1wiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vaW1nLXJ2cHMuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL2ltZy1ydnBzLmNvbXBvbmVudC5zY3NzXCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbWdSdnBzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIGhlYWRlckRhdGE6IGFueTtcclxuICBzdG9yZUlkYXJyYXk6IGFueTtcclxuICBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBub0RhdGEgPSBmYWxzZTtcclxuICBub3JtYWxpemU6IGFueTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgc2VydmljZTogVHJhZmZpY1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxyXG4gICAgcHJpdmF0ZSB0b2FzdDogVG9hc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBydnBzU2VydmljZTogVHJhZmZpY1J2cHNTZXJ2aWNlXHJcbiAgKSB7fVxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuICBpc0FjY29yZGlvbkV4cGFuZGVkID0gdHJ1ZTtcclxuICB0b2dnbGVBY2NvcmRpb24oKSB7XHJcbiAgICB0aGlzLmlzQWNjb3JkaW9uRXhwYW5kZWQgPSAhdGhpcy5pc0FjY29yZGlvbkV4cGFuZGVkO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ2V0SW5pdGFsKCk7XHJcbiAgfVxyXG4gIGdldEluaXRhbCgpIHtcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWVcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLCBkZWJvdW5jZVRpbWUoMTAwKSlcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEgIT09IG51bGwgfHwgZGF0YT8uY2xpZW50ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLmhlYWRlckRhdGEgPSBkYXRhO1xyXG4gICAgICAgICAgdGhpcy5zdG9yZUlkYXJyYXkgPSB0aGlzLmhlYWRlckRhdGE/LnN0b3Jlc1xyXG4gICAgICAgICAgICAuZmlsdGVyKChzdG9yZTogYW55KSA9PiBzdG9yZS5jaGVja2VkKVxyXG4gICAgICAgICAgICAubWFwKChzdG9yZTogYW55KSA9PiBzdG9yZS5zdG9yZUlkKTtcclxuICAgICAgICAgIHRoaXMuYmFja1RvRm9vdGZhbGwoKTtcclxuICAgICAgICAgIHRoaXMuZGlzcGxheURhdGVSYW5nZSgpO1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB0aGlzLmhlYWRlckRhdGE/LmRhdGU/LnN0YXJ0RGF0ZSA9PT0gdGhpcy5oZWFkZXJEYXRhPy5kYXRlPy5lbmREYXRlXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5iYWNrbmF2ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheURhdGVSYW5nZSgpO1xyXG4gICAgICAgICAgICB0aGlzLmdldGltYWdlcygwLCB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9sZGVyVmlldyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuYmFja25hdiA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGJhY2tUb0Zvb3RmYWxsKCkge1xyXG4gICAgdGhpcy5mb2xkZXJWaWV3ID0gdHJ1ZTtcclxuICAgIHRoaXMuZ2V0UnZwc0xpc3QgPSBbXTtcclxuICAgIHRoaXMuZ2V0UnZwc0ltYWdlTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5vYmplY3RzQXJyYXkgPSBbXTtcclxuICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgdGhpcy50eXBlID0nZm9vdGZhbGwnO1xyXG4gICAgdGhpcy5zZWxlY3RlZFRpbWUgPScnO1xyXG4gIH1cclxuICBmb2xkZXJWaWV3OiBib29sZWFuO1xyXG4gIGJhY2tuYXY6IGJvb2xlYW47XHJcbiAgZGF0ZUFycmF5OiBhbnk7XHJcbiAgZGlzcGxheURhdGVSYW5nZSgpIHtcclxuICAgIGNvbnN0IGRhdGVzID0gdGhpcy5nZXREYXRlUmFuZ2VBcnJheShcclxuICAgICAgdGhpcy5oZWFkZXJEYXRhLmRhdGUuc3RhcnREYXRlLFxyXG4gICAgICB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlXHJcbiAgICApO1xyXG4gICAgdGhpcy5kYXRlQXJyYXkgPSBkYXRlcztcclxuICB9XHJcblxyXG4gIGdldERhdGVSYW5nZUFycmF5KGZyb21EYXRlOiBzdHJpbmcsIHRvRGF0ZTogc3RyaW5nKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZShmcm9tRGF0ZSk7IC8vIENvbnZlcnQgc3RyaW5nIHRvIERhdGUgb2JqZWN0XHJcbiAgICBjb25zdCBlbmQgPSBuZXcgRGF0ZSh0b0RhdGUpOyAvLyBDb252ZXJ0IHN0cmluZyB0byBEYXRlIG9iamVjdFxyXG4gICAgY29uc3QgZGF0ZUFycmF5OiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIC8vIENoZWNrIGlmIHRoZSBkYXRlcyBhcmUgdmFsaWRcclxuICAgIGlmIChpc05hTihzdGFydC5nZXRUaW1lKCkpIHx8IGlzTmFOKGVuZC5nZXRUaW1lKCkpKSB7XHJcbiAgICAgIHJldHVybiBkYXRlQXJyYXk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTG9vcCBmcm9tIHN0YXJ0IGRhdGUgdG8gZW5kIGRhdGVcclxuICAgIGxldCBjdXJyZW50RGF0ZSA9IHN0YXJ0O1xyXG4gICAgd2hpbGUgKGN1cnJlbnREYXRlIDw9IGVuZCkge1xyXG4gICAgICBkYXRlQXJyYXkucHVzaChjdXJyZW50RGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXSk7IC8vIEZvcm1hdCBZWVlZLU1NLUREXHJcbiAgICAgIGN1cnJlbnREYXRlLnNldERhdGUoY3VycmVudERhdGUuZ2V0RGF0ZSgpICsgMSk7IC8vIEluY3JlbWVudCB0aGUgZGF0ZSBieSAxIGRheVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkYXRlQXJyYXk7XHJcbiAgfVxyXG4gIHNlbGVjdGVkVGltZTogYW55O1xyXG4gIGZvbGRlck5hbWU6IGFueTtcclxuICBzZWxlY3RlZFRpbWVzKHZhbDogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkVGltZSA9IHZhbDtcclxuICAgIHRoaXMuZm9sZGVyTmFtZSA9IHZhbDtcclxuICAgIHRoaXMuZm9sZGVyVmlldyA9IGZhbHNlO1xyXG4gICAgdGhpcy50eXBlID0gdGhpcy50eXBlO1xyXG4gICAgIHRoaXMuZ2V0UmV2b3BzKCk7XHJcbiAgfVxyXG4gIGZvbGRlckRhdGU6IGFueTtcclxuICBpbWFnZUZsb3cgPSBmYWxzZTtcclxuICAvLyBnZXQgUmV2b3BzIEFwaVxyXG4gIGdldFJ2cHNMaXN0OiBhbnk7XHJcbiAgZ2V0UnZwc0ltYWdlTGlzdDogYW55O1xyXG4gIG9iamVjdHNBcnJheTogYW55O1xyXG4gIGltYWdlc0FycmF5RGF0YTogYW55O1xyXG4gIHNlbGVjdEluZGV4OiBhbnkgPSAwO1xyXG4gIGZvb3RmYWxsRGF0ZTogYW55O1xyXG4gIGxlbmd0aFZhbHVlOiBib29sZWFuO1xyXG4gIGdldGltYWdlcyhpbmRleDogYW55LCBvYmo6IGFueSkge1xyXG50aGlzLm9iamVjdHNBcnJheSA9W107XHJcbiAgICB0aGlzLnNlbGVjdEluZGV4ID0gaW5kZXg7XHJcbiAgICB0aGlzLmZvbGRlckRhdGUgPSBvYmo7XHJcbiAgICAodGhpcy5mb290ZmFsbERhdGUgPSBvYmopLCAodGhpcy5mb2xkZXJWaWV3ID0gZmFsc2UpO1xyXG4gICAgdGhpcy5zZXJ2aWNlPy5pc25vcm1hbGl6ZVNvdXJjZVxyXG4gICAgICA/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLCBkZWJvdW5jZVRpbWUoMzAwKSlcclxuICAgICAgPy5zdWJzY3JpYmUoKG5vcm1hbGl6ZTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5ub3JtYWxpemUgPSBub3JtYWxpemU7XHJcbiAgICAgICAgaWYgKCFub3JtYWxpemUpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0UnZwc0xpc3QgPSBbXTtcclxuICAgICAgICAgIHRoaXMuZ2V0UnZwc0ltYWdlTGlzdCA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5vYmplY3RzQXJyYXkgPSBbXTtcclxuICAgICAgICAgIHRoaXMuZ2V0UmV2b3BzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRUb3RhbCgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmxlbmd0aFZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm9iamVjdHNBcnJheSA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIGNvdW50RGF0YTogYW55PVtdO1xyXG4gIGdldFRvdGFsKCkge1xyXG4gICAgdGhpcy5jb3VudERhdGEgPVtdO1xyXG4gICAgY29uc3Qgc3RvcmVJZCA9XHJcbiAgICAgIHRoaXMuc3RvcmVJZGFycmF5ICYmIHRoaXMuc3RvcmVJZGFycmF5Lmxlbmd0aCA+IDBcclxuICAgICAgICA/IHRoaXMuc3RvcmVJZGFycmF5WzBdXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgZGF0ZVN0cmluZyA9IHRoaXMuZm9sZGVyRGF0ZSB8fCBcIlwiO1xyXG4gICAgdGhpcy5ydnBzU2VydmljZVxyXG4gICAgICAuZ2V0VG90YWxWYWwoc3RvcmVJZCwgZGF0ZVN0cmluZylcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICA/LnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgaWYodGhpcy5nZXRSdnBzTGlzdD8ubGVuZ3RoKVxyXG4gICAgICAgICAgICB0aGlzLmNvdW50RGF0YSA9IHJlcy5kYXRhO1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmNvdW50RGF0YSlcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY291bnREYXRhID0gW107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge30sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBpbWFnZVVybDogYW55O1xyXG4gIHJldm9wc1R5cGVDb3VudDogYW55O1xyXG4gIGN1cnJlbnRUaW1lUmFuZ2VEYXRhIDphbnk9W107XHJcbiAgb3ZlcmFsbEFycmF5RGF0YTphbnk9W107YWxsRm9vdGZhbGxEYXRhOmFueSA9W107XHJcbmdldFRpY2tldFN0YXR1c2VzKCk6IHN0cmluZ1tdIHtcclxuICBjb25zdCBzdGF0dXNMaXN0ID0gdGhpcy5nZXRSdnBzTGlzdD8udGlja2V0U3RhdHVzO1xyXG4gIGlmIChBcnJheS5pc0FycmF5KHN0YXR1c0xpc3QpKSB7XHJcbiAgICByZXR1cm4gc3RhdHVzTGlzdFxyXG4gICAgICAubWFwKChzKSA9PiBzPy5zdGF0dXM/LnRvTG93ZXJDYXNlKCkpXHJcbiAgICAgIC5maWx0ZXIoQm9vbGVhbik7IC8vIFJlbW92ZXMgbnVsbC91bmRlZmluZWRcclxuICB9XHJcbiAgcmV0dXJuIFtdO1xyXG59XHJcbmdldFJldm9wcygpIHtcclxuICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbi8vIHRoaXMub2JqZWN0c0FycmF5ID1bXTtcclxuLy8gdGhpcy5vdmVyYWxsQXJyYXlEYXRhID1bXTtcclxuLy8gdGhpcy5nZXRSdnBzTGlzdCA9W107XHJcbi8vIHRoaXMuZ2V0UnZwc0ltYWdlTGlzdD1bXTtcclxuLy8gdGhpcy5hbGxGb290ZmFsbERhdGEgPVtdXHJcbiAgY29uc3Qgc3RvcmVJZCA9XHJcbiAgICB0aGlzLnN0b3JlSWRhcnJheSAmJiB0aGlzLnN0b3JlSWRhcnJheS5sZW5ndGggPiAwXHJcbiAgICAgID8gdGhpcy5zdG9yZUlkYXJyYXlbMF1cclxuICAgICAgOiBudWxsO1xyXG4gIGNvbnN0IGRhdGVTdHJpbmcgPSB0aGlzLmZvbGRlckRhdGUgfHwgJyc7XHJcbiAgY29uc3QgZ3JvdXBCeUtleSA9ICd0aW1lJztcclxuICBjb25zdCB0eXBlID0gdGhpcy50eXBlID09PSdmb290ZmFsbCcgPyAnJyA6IHRoaXMudHlwZSB8fCAnJztcclxuICBjb25zdCBwcm9jZXNzVHlwZSA9ICdmb290ZmFsbCc7XHJcblxyXG4gIHRoaXMucnZwc1NlcnZpY2VcclxuICAgIC5nZXRSdnBzTGlzdEFwaShzdG9yZUlkLCBkYXRlU3RyaW5nLCBncm91cEJ5S2V5LCB0eXBlLCBwcm9jZXNzVHlwZSlcclxuICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgXHJcbiAgICAgICAgICB0aGlzLmdldFJ2cHNMaXN0ID0gcmVzPy5kYXRhO1xyXG4gICAgICAgICAgdGhpcy5pbWFnZVVybCA9IHRoaXMucnZwc1NlcnZpY2U/LmZvb3RmYWxsQ0ROO1xyXG4gICAgICAgICAgdGhpcy5nZXRSdnBzSW1hZ2VMaXN0ID0gcmVzPy5kYXRhPy5yZXN1bHQ7XHJcblxyXG4gICAgICAgICAgLy8gU2F2ZSB0aGUgZnVsbCBmb290ZmFsbCBkYXRhIChncm91cGVkIGJ5IHRpbWVSYW5nZSlcclxuICAgICAgICAgIHRoaXMuYWxsRm9vdGZhbGxEYXRhID0gcmVzPy5kYXRhPy5yZXN1bHQ/LmZvb3RmYWxsRGF0YSB8fCBbXTtcclxuXHJcbiAgICAgICAgICAvLyBDcmVhdGUgdGltZVJhbmdlICsgY291bnQgb2JqZWN0XHJcbiAgICAgICBjb25zdCB0aW1lUmFuZ2VzID0gdGhpcy5hbGxGb290ZmFsbERhdGEubWFwKChpdGVtOiBhbnkpID0+IGl0ZW0udGltZVJhbmdlKTtcclxudGhpcy5vYmplY3RzQXJyYXkgPSB0aW1lUmFuZ2VzLm1hcCgodGltZVJhbmdlOmFueSkgPT4gKHtcclxuICB0aW1lUmFuZ2UsXHJcbiAgY291bnQ6IHRoaXMuYWxsRm9vdGZhbGxEYXRhLmZpbmQoKGQ6YW55KSA9PiBkLnRpbWVSYW5nZSA9PT0gdGltZVJhbmdlKT8uZGF0YT8ubGVuZ3RoIHx8IDAsXHJcbn0pKTsgICAgXHJcbi8vIE9ubHkgcmVzZXQgaWYgcHJldmlvdXMgc2VsZWN0ZWQgdGltZSBpcyBOT1QgaW4gdGhlIG5ldyBsaXN0XHJcbmlmICghdGltZVJhbmdlcy5pbmNsdWRlcyh0aGlzLnNlbGVjdGVkVGltZSkpIHtcclxuICB0aGlzLnNlbGVjdGVkVGltZXModGhpcy5vYmplY3RzQXJyYXlbMF0udGltZVJhbmdlKTtcclxufVxyXG5cclxuICAgICAgICAgIC8vIEdldCBkYXRhIGZvciB0aGUgc2VsZWN0ZWQgdGltZVJhbmdlXHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRUaW1lUmFuZ2VEYXRhID1cclxuICAgICAgICAgICAgdGhpcy5hbGxGb290ZmFsbERhdGEuZmluZChcclxuICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnRpbWVSYW5nZSA9PT0gdGhpcy5zZWxlY3RlZFRpbWVcclxuICAgICAgICAgICAgKT8uZGF0YSB8fCBbXTtcclxuXHJcbiAgICAgICAgICAvLyBDb3VudCByZXZvcHNUeXBlc1xyXG4gICAgICAgICAgY29uc3QgcmV2b3BzVHlwZUNvdW50OiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge1xyXG4gICAgICAgICAgICAnbm9uLXRhZ2dpbmcnOiAwLFxyXG4gICAgICAgICAgICBkdXBsaWNhdGU6IDAsXHJcbiAgICAgICAgICAgIGVtcGxveWVlOiAwLFxyXG4gICAgICAgICAgICAnaG91c2Uta2VlcGluZyc6IDAsXHJcbiAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgIGxldCB0b3RhbENvdW50ID0gMDtcclxuICAgICAgICAgIHRoaXMub3ZlcmFsbEFycmF5RGF0YSA9IFtdO1xyXG5cclxuICAgICAgdGhpcy5hbGxGb290ZmFsbERhdGEuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgaXRlbS5kYXRhPy5mb3JFYWNoKChpbWFnZTogYW55KSA9PiB7XHJcbiAgICB0aGlzLm92ZXJhbGxBcnJheURhdGEucHVzaChpbWFnZSk7XHJcbiAgICB0b3RhbENvdW50Kys7XHJcblxyXG4gICAgY29uc3QgdHlwZSA9IGltYWdlLnJldm9wc1R5cGU/LnRyaW0oKS50b0xvd2VyQ2FzZSgpIHx8ICd1bmtub3duJztcclxuXHJcbiAgICBpZiAodHlwZSA9PT0gJ25vbi10YWdnaW5nJykge1xyXG4gICAgICByZXZvcHNUeXBlQ291bnRbJ25vbi10YWdnaW5nJ10rKztcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2VtcGxveWVlJykge1xyXG4gICAgICByZXZvcHNUeXBlQ291bnRbJ2VtcGxveWVlJ10rKztcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2hvdXNlLWtlZXBpbmcnKSB7XHJcbiAgICAgIHJldm9wc1R5cGVDb3VudFsnaG91c2Uta2VlcGluZyddKys7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g4pyFIENvdW50IGR1cGxpY2F0ZXMgb25seSBmcm9tIGR1cGxpY2F0ZUltYWdlUGF0aFxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaW1hZ2UuZHVwbGljYXRlSW1hZ2VQYXRoKSkge1xyXG4gICAgICByZXZvcHNUeXBlQ291bnRbJ2R1cGxpY2F0ZSddICs9IGltYWdlLmR1cGxpY2F0ZUltYWdlUGF0aC5sZW5ndGg7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn0pO1xyXG5cclxuICAgICAgICAgIHRoaXMuY291bnREYXRhID0ge1xyXG4gICAgICAgICAgICBmb290ZmFsbENvdW50OiB0b3RhbENvdW50LFxyXG4gICAgICAgICAgICBub25UYWdzOiByZXZvcHNUeXBlQ291bnRbJ25vbi10YWdnaW5nJ10sXHJcbiAgICAgICAgICAgIGR1cGxpY2F0ZTogcmV2b3BzVHlwZUNvdW50WydkdXBsaWNhdGUnXSxcclxuICAgICAgICAgICAgZW1wbG95ZWU6IHJldm9wc1R5cGVDb3VudFsnZW1wbG95ZWUnXSxcclxuICAgICAgICAgICAgaG91c2VrZWVwaW5nOiByZXZvcHNUeXBlQ291bnRbJ2hvdXNlLWtlZXBpbmcnXSxcclxuICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgLy8gQXBwbHkgdHlwZSBmaWx0ZXIgYWZ0ZXIgbG9hZGluZyB0aW1lUmFuZ2UgZGF0YVxyXG4gICAgICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcclxudGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIC8vIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIEluIGNhc2Ugb2YgZmFpbHVyZVxyXG4gICAgICAgICAgdGhpcy5nZXRSdnBzTGlzdCA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5nZXRSdnBzSW1hZ2VMaXN0ID0gW107XHJcbiAgICAgICAgICB0aGlzLm9iamVjdHNBcnJheSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5pbWFnZXNBcnJheURhdGEgPSBbXTtcclxuICAgICAgICAgIHRoaXMub3ZlcmFsbEFycmF5RGF0YSA9W107XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbXNnID0gZXJyLmVycm9yLmVycm9yIHx8IGVyci5lcnJvciB8fCBlcnI/LmVycm9yPy5tZXNzYWdlIHx8IGVyci5tZXNzYWdlIHx8ICdVbmtub3duIGVycm9yJztcclxuICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QobXNnKTtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxufVxyXG5cclxub3JpZ2luYWxDaGVja2VkRHVwbGljYXRlSWRzOmFueTtcclxuZWRpdFZhbHVlKCkge1xyXG4gIGNvbnN0IHR5cGUgPSAodGhpcy5zZWxlY3RlZFR5cGUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XHJcbiAgdGhpcy5yZXZvcHNUeXBlVmFsdWUgPSBmYWxzZTtcclxuXHJcbiAgY29uc3Qgc2VsZWN0ZWRJbWFnZSA9IHRoaXMuc2VsZWN0SW1hZ2VBcnJheTtcclxuICBjb25zdCBzZWxlY3RlZFRlbXBsZCA9IHNlbGVjdGVkSW1hZ2U/LnRlbXBsZDtcclxuXHJcbiAgaWYgKHR5cGUgPT09ICdkdXBsaWNhdGUnICYmIEFycmF5LmlzQXJyYXkoc2VsZWN0ZWRJbWFnZS5kdXBsaWNhdGVJbWFnZVBhdGgpKSB7XHJcbiAgICAvLyAxLiBDb252ZXJ0IGR1cGxpY2F0ZSBjaGlsZHJlbiBpbnRvIGNvbnNpc3RlbnQgb2JqZWN0cyB3aXRoIHBhcmVudCByZWZlcmVuY2VcclxuICAgIGNvbnN0IGR1cGxpY2F0ZUNoaWxkcmVuID0gc2VsZWN0ZWRJbWFnZS5kdXBsaWNhdGVJbWFnZVBhdGgubWFwKChjaGlsZDogYW55KSA9PiAoe1xyXG4gICAgICAuLi5jaGlsZCxcclxuICAgICAgcGFyZW50OiBzZWxlY3RlZFRlbXBsZCxcclxuICAgICAgc2VsZWN0ZWQ6IHRydWVcclxuICAgIH0pKTtcclxuXHJcbiAgICAvLyAyLiBDb2xsZWN0IHRoZSB0ZW1wbGQgdmFsdWVzIG9mIGR1cGxpY2F0ZSBjaGlsZHJlblxyXG4gICAgY29uc3QgZHVwbGljYXRlQ2hpbGRJZHMgPSBkdXBsaWNhdGVDaGlsZHJlbi5tYXAoKGNoaWxkOiBhbnkpID0+IGNoaWxkLnRlbXBJZCk7XHJcblxyXG4gICAgLy8gMy4gRmlsdGVyIG91dCBub24tdGFnZ2luZyBpbWFnZXMgZXhjZXB0IHRoZSBzZWxlY3RlZCBwYXJlbnQgJiBpdHMgY2hpbGRyZW5cclxuICAgIGNvbnN0IG5vblRhZ2dpbmdJbWFnZXMgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEuZmlsdGVyKChpbWc6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBpc05vblRhZ2dpbmcgPSAoaW1nLnJldm9wc1R5cGUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICdub24tdGFnZ2luZyc7XHJcbiAgICAgIGNvbnN0IGlzTm90U2VsZWN0ZWQgPSBpbWcudGVtcGxkICE9PSBzZWxlY3RlZFRlbXBsZCAmJiAhZHVwbGljYXRlQ2hpbGRJZHMuaW5jbHVkZXMoaW1nLnRlbXBsZCk7XHJcbiAgICAgIHJldHVybiBpc05vblRhZ2dpbmcgJiYgaXNOb3RTZWxlY3RlZDtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIDQuIE1lcmdlIGR1cGxpY2F0ZSBjaGlsZHJlbiArIG90aGVyIG5vbi10YWdnaW5nIGltYWdlc1xyXG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gWy4uLmR1cGxpY2F0ZUNoaWxkcmVuLCAuLi5ub25UYWdnaW5nSW1hZ2VzXTtcclxuXHJcbiAgICAvLyA1LiBNYXJrIHNlbGVjdGVkOiBvbmx5IGR1cGxpY2F0ZSBpbWFnZXMgdGhhdCB3ZXJlIG1hcmtlZCBpc0NoZWNrZWRcclxuICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheS5mb3JFYWNoKChpbWc6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBpc0R1cGxpY2F0ZSA9IChpbWcucmV2b3BzVHlwZSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ2R1cGxpY2F0ZSc7XHJcbiAgICAgIGltZy5zZWxlY3RlZCA9IGlzRHVwbGljYXRlICYmIGltZy5pc0NoZWNrZWQgPT09IHRydWU7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyA2LiBTdG9yZSBvcmlnaW5hbCBjaGVja2VkIElEcyB0byBjb21wYXJlIGxhdGVyIGR1cmluZyBzdWJtaXRcclxuICAgIHRoaXMub3JpZ2luYWxDaGVja2VkRHVwbGljYXRlSWRzID0gdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5XHJcbiAgICAgIC5maWx0ZXIoKGltZzogYW55KSA9PiBpbWcuaXNDaGVja2VkID09PSB0cnVlKVxyXG4gICAgICAubWFwKChpbWc6IGFueSkgPT4gaW1nLnRlbXBsZCk7XHJcblxyXG4gICAgLy8g4pyFIDcuIEZpbGwgc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0IHdpdGggcHJlLXNlbGVjdGVkIGR1cGxpY2F0ZXNcclxuICAgIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0ID0gdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5LmZpbHRlcihcclxuICAgICAgKGltZzogYW55KSA9PlxyXG4gICAgICAgIChpbWcucmV2b3BzVHlwZSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ2R1cGxpY2F0ZScgJiZcclxuICAgICAgICBpbWcuaXNDaGVja2VkID09PSB0cnVlXHJcbiAgICApLm1hcCgoaW1nOiBhbnkpID0+ICh7XHJcbiAgICAgIC4uLmltZyxcclxuICAgICAgcGFyZW50OiBpbWcucGFyZW50IHx8IHNlbGVjdGVkVGVtcGxkLFxyXG4gICAgICBpc0NoZWNrZWQ6IHRydWVcclxuICAgIH0pKTtcclxuXHJcbiAgfSBlbHNlIHtcclxuICAgIC8vIE5vdCBkdXBsaWNhdGUgdHlwZSDihpIgc2hvdyBvbmx5IHNlbGVjdGVkIHR5cGUgKGV4Y2x1ZGluZyB0aGUgY3VycmVudCBzZWxlY3RlZCBpbWFnZSlcclxuICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maWx0ZXIoKGltZzogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGltZ1R5cGUgPSAoaW1nLnJldm9wc1R5cGUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIHJldHVybiBpbWdUeXBlID09PSB0eXBlICYmIGltZy50ZW1wbGQgIT09IHNlbGVjdGVkVGVtcGxkO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuICBiYWNrVG9Gb290ZmFsbDEoKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5pbWFnZUZsb3cgPSBmYWxzZTtcclxuICB9XHJcbiAgc2VsZWN0SW1hZ2VBcnJheTogYW55O1xyXG4gIHJlbWFpbmluZ0ltYWdlQXJyYXk6IGFueTtcclxuICByZXZvcHNUeXBlVmFsdWUgPWZhbHNlO1xyXG5cclxuXHJcbmltZ0Z1bGxWaWV3KG9iajogYW55KSB7XHJcbiAgdGhpcy5zZWxlY3RJbWFnZUFycmF5ID0gb2JqO1xyXG4gIHRoaXMuaW1hZ2VGbG93ID0gdHJ1ZTtcclxuICB0aGlzLnJldm9wc1R5cGVWYWx1ZSA9IGZhbHNlO1xyXG4gIHRoaXMuc2VsZWN0ZWRUeXBlID0gJyc7XHJcbiAgdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSA9IHVuZGVmaW5lZDtcclxuXHJcbiAgbGV0IGZpbHRlcmVkQnlUeXBlOiBhbnlbXSA9IFtdO1xyXG5cclxuICAvLyDinIUgMS4gU3BlY2lhbCBjYXNlIGZvciBkdXBsaWNhdGUgdHlwZSB3aXRoIGNoaWxkIGltYWdlc1xyXG4gIGlmIChvYmoucmV2b3BzVHlwZT8udG9Mb3dlckNhc2UoKSA9PT0gJ2R1cGxpY2F0ZScgJiYgQXJyYXkuaXNBcnJheShvYmouZHVwbGljYXRlSW1hZ2VQYXRoKSkge1xyXG4gICAgLy8gRXh0cmFjdCBjaGlsZHJlblxyXG4gICAgY29uc3QgY2hpbGRyZW4gPSBvYmouZHVwbGljYXRlSW1hZ2VQYXRoLm1hcCgoY2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgICAvLyBUcnkgdG8gZmluZCBtYXRjaGluZyBpdGVtIGZyb20gb3ZlcmFsbEFycmF5RGF0YSAoYnkgdGVtcElkKVxyXG4gICAgICBjb25zdCBtYXRjaGVkID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbmQoKGltZzogYW55KSA9PiBpbWcudGVtcGxkID09PSBjaGlsZC50ZW1wSWQpO1xyXG5cclxuICAgICAgLy8gUHJlZmVyIG1hdGNoZWQgaXRlbSBpZiBmb3VuZCwgb3RoZXJ3aXNlIHVzZSBvcmlnaW5hbCBjaGlsZFxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLmNoaWxkLFxyXG4gICAgICAgIC4uLihtYXRjaGVkIHx8IHt9KSxcclxuICAgICAgICBwYXJlbnQ6IG9iai50ZW1wbGQgIC8vIFRhZyB3aXRoIHBhcmVudCBJRFxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8g4pyFIE1lcmdlIHBhcmVudCBhbmQgY2hpbGRyZW4gZm9yIGRpc3BsYXlcclxuICAgIGZpbHRlcmVkQnlUeXBlID0gW29iaiwgLi4uY2hpbGRyZW5dO1xyXG4gIH0gZWxzZSB7XHJcbiAgICAvLyDinIUgMi4gRGVmYXVsdCBsb2dpYyBmb3Igb3RoZXIgdHlwZXNcclxuICAgIGNvbnN0IHNlbGVjdGVkVHlwZSA9IG9iai5yZXZvcHNUeXBlPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgZmlsdGVyZWRCeVR5cGUgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEuZmlsdGVyKFxyXG4gICAgICAoaW1nOiBhbnkpID0+IGltZy5yZXZvcHNUeXBlPy50b0xvd2VyQ2FzZSgpID09PSBzZWxlY3RlZFR5cGVcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyDinIUgMy4gRGV0ZXJtaW5lIHNlbGVjdGVkIGltYWdlIGluZGV4XHJcbiAgdGhpcy5jdXJyZW50SW1hZ2VJbmRleCA9IGZpbHRlcmVkQnlUeXBlLmZpbmRJbmRleCgoaW1nOiBhbnkpID0+IGltZy50ZW1wbGQgPT09IG9iai50ZW1wbGQpO1xyXG5cclxuICAvLyDinIUgNC4gUmVtYWluaW5nIGltYWdlcyB0byBzaG93L2VkaXRcclxuICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSBmaWx0ZXJlZEJ5VHlwZS5maWx0ZXIoXHJcbiAgICAoXzogYW55LCBpOiBudW1iZXIpID0+IGkgIT09IHRoaXMuY3VycmVudEltYWdlSW5kZXhcclxuICApO1xyXG5cclxuICAvLyDinIUgNS4gSGFuZGxlIHJldm9wcyB0eXBlIGZvciByYWRpbyBVSVxyXG4gIGlmIChcclxuICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gJ2R1cGxpY2F0ZScgfHxcclxuICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gJ2VtcGxveWVlJyB8fFxyXG4gICAgb2JqPy5yZXZvcHNUeXBlID09PSAnaG91c2Uta2VlcGluZydcclxuICApIHtcclxuICAgIHRoaXMucmV2b3BzVHlwZVZhbHVlID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gb2JqPy5yZXZvcHNUeXBlO1xyXG4gICAgdGhpcy5vblJhZGlvQ2hhbmdlKG9iaj8ucmV2b3BzVHlwZSk7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuXHJcblxyXG5pbWdTd2FwKG9iajogYW55KSB7XHJcbiAgaWYgKHRoaXMuc2VsZWN0SW1hZ2VBcnJheSkge1xyXG4gICAgLy8gRmluZCB3aGVyZSB0aGUgbmV3IHNlbGVjdGVkIGltYWdlIGlzIGluIHRoZSBsaXN0XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheS5maW5kSW5kZXgoXHJcbiAgICAgIChpbWc6IGFueSkgPT4gaW1nLnRlbXBsZCA9PT0gb2JqLnRlbXBsZFxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBSZXBsYWNlIHNlbGVjdGVkSW1hZ2VBcnJheSBiYWNrIGludG8gaXRzIG9yaWdpbmFsIHBvc2l0aW9uXHJcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheVtpbmRleF0gPSB0aGlzLnNlbGVjdEltYWdlQXJyYXk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBmYWxsYmFjayBpZiBub3QgZm91bmRcclxuICAgICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5LnB1c2godGhpcy5zZWxlY3RJbWFnZUFycmF5KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFVwZGF0ZSBzZWxlY3RlZCBpbWFnZVxyXG4gIHRoaXMuc2VsZWN0SW1hZ2VBcnJheSA9IG9iajtcclxuXHJcbiAgLy8gUmVtb3ZlIHNlbGVjdGVkIGZyb20gcmVtYWluaW5nIGxpc3RcclxuICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkuZmlsdGVyKFxyXG4gICAgKGltZzogYW55KSA9PiBpbWcudGVtcGxkICE9PSBvYmoudGVtcGxkXHJcbiAgKTtcclxuXHJcbiAgdGhpcy5pbWFnZUZsb3cgPSB0cnVlO1xyXG59XHJcblxyXG4gIFxyXG4gIHNlbGVjdGVkVHlwZTogYW55ID0gXCJcIjsgLy8gZGVmYXVsdCBzZWxlY3RlZFxyXG5zZWxlY3RlZFJhZGlvVHlwZTphbnk7XHJcbm9uUmFkaW9DaGFuZ2UodmFsOiBhbnkpIHtcclxuICB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID0gdmFsO1xyXG4gIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0ID0gW107XHJcblxyXG4gIGNvbnN0IHR5cGUgPSAodmFsIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICBpZiAodHlwZSA9PT0gJ2R1cGxpY2F0ZScpIHtcclxuICAgIC8vIOKchSBTaG93IG9ubHkgbm9uLXRhZ2dpbmcgaW1hZ2VzIChleGNsdWRpbmcgdGhlIGN1cnJlbnQgc2VsZWN0ZWRJbWFnZSlcclxuICAgIGNvbnN0IHNlbGVjdGVkVGVtcGxkID0gdGhpcy5zZWxlY3RJbWFnZUFycmF5Py50ZW1wbGQ7XHJcblxyXG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbHRlcigoaW1nOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgaW1nVHlwZSA9IChpbWcucmV2b3BzVHlwZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcclxuICAgICAgcmV0dXJuIGltZ1R5cGUgPT09ICdub24tdGFnZ2luZycgJiYgaW1nLnRlbXBsZCAhPT0gc2VsZWN0ZWRUZW1wbGQ7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyDinIUgT3B0aW9uYWw6IHNldCBhbGwgYXMgdW5zZWxlY3RlZCBpbml0aWFsbHlcclxuICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheS5mb3JFYWNoKChpbWc6IGFueSkgPT4ge1xyXG4gICAgICBpbWcuc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgaW1nLmlzQ2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfSBcclxuXHJcbiAgLy8g4pyFIERlYnVnXHJcbiAgLy8gY29uc29sZS5sb2coJ1JlbWFpbmluZyBpbWFnZSBsaXN0IGFmdGVyIHJhZGlvIGNoYW5nZTonLCB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkpO1xyXG59XHJcblxyXG5cclxuICB0eXBlOiBhbnkgPSBcImZvb3RmYWxsXCI7XHJcbnNlbGVjdFBsYW5UcmVuZHModHlwZTogYW55KSB7XHJcbiAgdGhpcy50eXBlID0gdHlwZTtcclxuXHJcbiAgdGhpcy5hcHBseUZpbHRlcnMoKTtcclxufVxyXG5hcHBseUZpbHRlcnMoKSB7XHJcbiAgdGhpcy5pbWFnZUZsb3cgPSBmYWxzZTtcclxuXHJcbiAgLy8gQ29udmVydCB0eXBlIHRvIGxvd2VyY2FzZSBzYWZlbHlcclxuICBjb25zdCBzZWxlY3RlZFR5cGUgPSB0aGlzLnR5cGU/LnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gIGlmIChzZWxlY3RlZFR5cGUgPT09ICdmb290ZmFsbCcpIHtcclxuICAgIC8vIEZvb3RmYWxsIHNob3dzIGFsbCBjdXJyZW50VGltZVJhbmdlRGF0YSAodGltZSByYW5nZSBiYXNlZClcclxuICAgIHRoaXMuaW1hZ2VzQXJyYXlEYXRhID0gWy4uLnRoaXMuY3VycmVudFRpbWVSYW5nZURhdGFdO1xyXG4gIH0gZWxzZSAge1xyXG4gICAgLy8gRm9yIHRhZ2dlZCB0eXBlcyBsaWtlICdkdXBsaWNhdGUnLCAnZW1wbG95ZWUnLCAnaG91c2VrZWVwaW5nJ1xyXG4gICAgdGhpcy5pbWFnZXNBcnJheURhdGEgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEuZmlsdGVyKChpdGVtOiBhbnkpID0+XHJcbiAgICAgIGl0ZW0ucmV2b3BzVHlwZT8udG9Mb3dlckNhc2UoKSA9PT0gc2VsZWN0ZWRUeXBlXHJcbiAgICApO1xyXG4gIH0gXHJcbiAgLy8gZWxzZSB7XHJcbiAgLy8gICAvLyBOb24tdGFnZ2luZyBtZWFucyBubyByZXZvcHNUeXBlIC0gc2hvdyBhbGwgdW5tYXRjaGVkIChubyB0YWcpXHJcbiAgLy8gICB0aGlzLmltYWdlc0FycmF5RGF0YSA9IHRoaXMuY3VycmVudFRpbWVSYW5nZURhdGEuZmlsdGVyKChpdGVtOiBhbnkpID0+XHJcbiAgLy8gICAgICFpdGVtLnJldm9wc1R5cGVcclxuICAvLyAgICk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBTZXQgbm9EYXRhIGJhc2VkIG9uIHJlc3VsdFxyXG4gIHRoaXMubm9EYXRhID0gIXRoaXMuaW1hZ2VzQXJyYXlEYXRhPy5sZW5ndGg7XHJcblxyXG4gIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG59XHJcbmhhbmRsZUltYWdlQ2xpY2soZXZ0OiBhbnksIG9iajogYW55KSB7XHJcbiAgLy8gT25seSB0b2dnbGUgY2hlY2tib3ggaWYgcmFkaW8gaXMgJ2R1cGxpY2F0ZScgYW5kIGltYWdlIGlzIG5vdCBhbHJlYWR5IHRhZ2dlZFxyXG4gIGlmICh0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID09PSAnZHVwbGljYXRlJyAmJiAhKG9iai5kdXBsaWNhdGVJbWFnZVBhdGg/Lmxlbmd0aCA+IDApKSB7XHJcbiAgICB0aGlzLm9uSW1hZ2VDaGVja2JveENoYW5nZShldnQsIG9iaiwgJ2R1cGxpY2F0ZScpO1xyXG4gIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZFJhZGlvVHlwZSAhPT0gJ2R1cGxpY2F0ZScpIHtcclxuICAgIHRoaXMuaW1nU3dhcChvYmopOyAvLyBleGlzdGluZyBub24tZHVwbGljYXRlIGNsaWNrIGJlaGF2aW9yXHJcbiAgfVxyXG59XHJcbnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdDphbnk9W107XHJcblxyXG5vbkltYWdlQ2hlY2tib3hDaGFuZ2UoZXZ0OiBhbnksIGltZzogYW55LCB0eXBlOiBzdHJpbmcpIHtcclxuICBpZiAodHlwZSA9PT0gJ2R1cGxpY2F0ZScpIHtcclxuICAgIGNvbnN0IHRvdGFsSW1hZ2VzID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmxlbmd0aDtcclxuICAgIGNvbnN0IGFscmVhZHlUYWdnZWRDb3VudCA9IHRoaXMuY291bnREYXRhPy5kdXBsaWNhdGUgfHwgMDtcclxuLy8gY29uc29sZS5sb2codG90YWxJbWFnZXMpXHJcbi8vIGNvbnNvbGUubG9nKGFscmVhZHlUYWdnZWRDb3VudClcclxuICAgIC8vIFRvdGFsIHRhZ2dhYmxlIGNvdW50ID0gYWxyZWFkeSB0YWdnZWQgKyBzZWxlY3RlZCBub3dcclxuICAgIGNvbnN0IG1heFNlbGVjdGFibGUgPSBNYXRoLnJvdW5kKCh0b3RhbEltYWdlcykgKiAwLjIpO1xyXG4vLyBjb25zb2xlLmxvZyhtYXhTZWxlY3RhYmxlKVxyXG4gICAgLy8gQ291bnQgc2VsZWN0ZWQgbm93IChpbiBVSSlcclxuICAgIGNvbnN0IGN1cnJlbnRseVNlbGVjdGVkQ291bnQgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0uc2VsZWN0ZWQpLmxlbmd0aDtcclxuXHJcbiAgICBjb25zdCB3aWxsU2VsZWN0ID0gIWltZy5zZWxlY3RlZDtcclxuXHJcbiAgICAvLyDim5QgQmxvY2sgc2VsZWN0aW9uIGlmIHRyeWluZyB0byBnbyBiZXlvbmQgMTAlIGNhcFxyXG4gICAgaWYgKHdpbGxTZWxlY3QgJiYgKGN1cnJlbnRseVNlbGVjdGVkQ291bnQgKyBhbHJlYWR5VGFnZ2VkQ291bnQpID49IG1heFNlbGVjdGFibGUpIHtcclxuICAgICAgdGhpcy50b2FzdC5nZXRXYXJuaW5nVG9hc3QoXHJcbiAgICAgICAgYFlvdSBjYW4gc2VsZWN0IG9ubHkgJHttYXhTZWxlY3RhYmxlfSBpbWFnZXMgKCR7dGhpcy5nZXRSdnBzTGlzdD8uZGF0YT8uY29uZmlnPy5kdXBsaWNhdGUgPz8gJzIwJSd9IG9mIHRvdGFsIGZvb3RmYWxsKWBcclxuICAgICAgKTtcclxuICAgICAgZXZ0LnRhcmdldC5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8g4pyFIFByb2NlZWQgd2l0aCBzZWxlY3Rpb24gdG9nZ2xlXHJcbiAgICBpbWcuc2VsZWN0ZWQgPSAhaW1nLnNlbGVjdGVkO1xyXG4gICAgaW1nLmlzQ2hlY2tlZCA9IGltZy5zZWxlY3RlZDtcclxuXHJcbiAgICAvLyDinIUgQWx3YXlzIHJlYnVpbGQgdGhlIHNlbGVjdGVkIGxpc3RcclxuICAgIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0ID0gdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5XHJcbiAgICAgIC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbS5zZWxlY3RlZClcclxuICAgICAgLm1hcCgoaXRlbTogYW55KSA9PiAoe1xyXG4gICAgICAgIC4uLml0ZW0sXHJcbiAgICAgICAgcGFyZW50OiBpdGVtLnBhcmVudCB8fCB0aGlzLnNlbGVjdEltYWdlQXJyYXk/LnRlbXBsZCxcclxuICAgICAgICBpc0NoZWNrZWQ6IHRydWVcclxuICAgICAgfSkpO1xyXG5cclxuICAgIC8vIGNvbnNvbGUubG9nKCfinIUgc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0OicsIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0KTtcclxuICB9XHJcbn1cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5jbGVhclZhbHVlKCl7XHJcbiAgdGhpcy5zYXZlKCdub24tdGFnZ2luZycpO1xyXG4vLyB0aGlzLnN1Ym1pdFZhbHVlKCdub24tdGFnZ2luZycpXHJcbn1cclxuY2FuY2VsKCkge1xyXG4gIC8vIDEuIENsZWFyIHNlbGVjdGVkIGR1cGxpY2F0ZSBpbWFnZXMgbGlzdFxyXG4gIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0ID0gW107XHJcblxyXG4gIC8vIDIuIFJlc2V0IGFsbCBjaGVja2JveGVzIGFuZCByYWRpbyBidXR0b25zIGluIG92ZXJhbGwgaW1hZ2UgbGlzdFxyXG4gIHRoaXMub3ZlcmFsbEFycmF5RGF0YSA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5tYXAoKGltZzogYW55KSA9PiAoe1xyXG4gICAgLi4uaW1nLFxyXG4gICAgaXNDaGVja2VkOiBmYWxzZSxcclxuICAgIHNlbGVjdGVkOiBmYWxzZSwgICAgLy8gYXNzdW1pbmcgJ3NlbGVjdGVkJyBpcyBjaGVja2JveCBiaW5kXHJcbiAgICBwYXJlbnQ6IG51bGwsICAgICAgIC8vIHJlc2V0IHBhcmVudCBpZiB1c2VkXHJcbiAgICAvLyBBZGQgb3RoZXIgZmxhZ3MgaGVyZSBpZiBuZWVkZWRcclxuICB9KSk7XHJcblxyXG4gIC8vIDMuIENsb3NlIGltYWdlIGZsb3cvZnVsbC12aWV3IGlmIG9wZW5cclxuICB0aGlzLmltYWdlRmxvdyA9IGZhbHNlO1xyXG5cclxuICAvLyA0LiBSZXNldCBjdXJyZW50bHkgc2VsZWN0ZWQgaW1hZ2VcclxuICB0aGlzLnNlbGVjdEltYWdlQXJyYXkgPSBudWxsO1xyXG4gIHRoaXMuY3VycmVudEltYWdlSW5kZXggPSAwO1xyXG4gIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSA9IFtdO1xyXG5cclxuICAvLyA1LiAoT3B0aW9uYWwpIFJlc2V0IHJhZGlvIGJ1dHRvbnMg4oCUIGlmIHlvdSBoYXZlIGFueSBzcGVjaWZpYyBmbGFnXHJcbiB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID0gdW5kZWZpbmVkO1xyXG59XHJcbnBvcHVwVHlwZTphbnk7XHJcbkBWaWV3Q2hpbGQoJ3pvb21Qb3B1cCcpIHpvb21Qb3B1cDogRWxlbWVudFJlZjtcclxuc2F2ZShjYXRlZ29yeTogYW55KSB7XHJcbiAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLnpvb21Qb3B1cCwgeyBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ21kJyxcclxuICAgIGJhY2tkcm9wOiAnc3RhdGljJywgICAvLyBQcmV2ZW50IGNsb3Npbmcgb24gb3V0c2lkZSBjbGlja1xyXG4gIGtleWJvYXJkOiBmYWxzZSAgICAgICAvLyBQcmV2ZW50IGNsb3Npbmcgb24gRVNDIGtleVxyXG4gIH0pO1xyXG4gICAgdGhpcy5wb3B1cFR5cGUgPSBjYXRlZ29yeTtcclxufVxyXG5cclxuY2FuY2VsU3VibWl0KCl7XHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLmRpc21pc3NBbGwoKTtcclxuXHJcbiAgdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QgPSBbXTtcclxufVxyXG5zdWJtaXRWYWx1ZShjYXRlZ29yeTogYW55KSB7XHJcbiAgbGV0IGR1cGxpY2F0ZUltYWdlcyA9IFtdO1xyXG5cclxuICBpZiAoY2F0ZWdvcnkgPT09ICdkdXBsaWNhdGUnKSB7XHJcbiAgICBkdXBsaWNhdGVJbWFnZXMgPSB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXlcclxuICAgICAgLmZpbHRlcigoaW1nOiBhbnkpID0+IGltZy5zZWxlY3RlZCA9PT0gdHJ1ZSlcclxuICAgICAgLm1hcCgoaW1nOiBhbnkpID0+ICh7XHJcbiAgICAgICAgdGVtcElkOiBpbWcudGVtcGxkIHx8IGltZy50ZW1wSWQgfHwgJycsXHJcbiAgICAgICAgdGltZVJhbmdlOiBpbWcudGltZVJhbmdlIHx8ICcnLFxyXG4gICAgICAgIGVudHJ5VGltZTogaW1nLmVudHJ5VGltZSB8fCBpbWcuZW50cnlUbWUgfHwgJycsXHJcbiAgICAgICAgZXhpdFRpbWU6IGltZy5leGl0VGltZSB8fCAnJyxcclxuICAgICAgICBmaWxlUGF0aDogaW1nLmZpbGVQYXRoLFxyXG4gICAgICAgIHJldm9wc1R5cGU6ICdkdXBsaWNhdGUnLFxyXG4gICAgICAgIGlzQ2hlY2tlZDogdHJ1ZVxyXG4gICAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBjb25zdCBpbWcgPSB0aGlzLnNlbGVjdEltYWdlQXJyYXk7XHJcblxyXG4gIGNvbnN0IG9iaiA9IHtcclxuICAgIHN0b3JlSWQ6IHRoaXMuc3RvcmVJZGFycmF5ICYmIHRoaXMuc3RvcmVJZGFycmF5Lmxlbmd0aCA+IDBcclxuICAgICAgPyB0aGlzLnN0b3JlSWRhcnJheVswXVxyXG4gICAgICA6IG51bGwsXHJcbiAgICBkYXRlU3RyaW5nOiB0aGlzLmZvbGRlckRhdGUgfHwgJycsXHJcbiAgICB0ZW1wSWQ6IGltZz8udGVtcGxkIHx8IDAsXHJcbiAgICByZXZvcHNUeXBlOiBjYXRlZ29yeSxcclxuICAgIHRpbWVSYW5nZTogaW1nPy50aW1lUmFuZ2UgfHwgJycsXHJcbiAgICBpc0NoZWNrZWQ6IHRydWUsXHJcbiAgICBkdXBsaWNhdGVJbWFnZTogZHVwbGljYXRlSW1hZ2VzLFxyXG4gICAgcHJvY2Vzc1R5cGU6IGltZz8ucHJvY2Vzc1R5cGUgfHwgJ2Zvb3RmYWxsJyxcclxuICAgIGVudHJ5VGltZTogaW1nPy5lbnRyeVRpbWUgfHwgaW1nPy5lbnRyeVRtZSB8fCAnJyxcclxuICAgIGV4aXRUaW1lOiBpbWc/LmV4aXRUaW1lIHx8ICcnLFxyXG4gICAgZmlsZVBhdGg6IGltZz8uZmlsZVBhdGggfHwgJydcclxuICB9O1xyXG5cclxuICB0aGlzLnJ2cHNTZXJ2aWNlLmdldFJ2cHNUYWcob2JqKVxyXG4gICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy50b2FzdC5nZXRTdWNjZXNzVG9hc3QocmVzPy5tZXNzYWdlIHx8ICdUaWNrZXQgdXBkYXRlZCBzdWNjZXNzZnVsbHknKTtcclxuICAgICAgICAgIHRoaXMuaW1hZ2VGbG93ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmdldFJldm9wcygpO1xyXG4gICAgICAgICAgdGhpcy5jYW5jZWxTdWJtaXQoKTsgXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID0gdW5kZWZpbmVkOyAgICBcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gJyc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnRmFpbGVkIHRvIHVwZGF0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG1zZyA9IGVyci5lcnJvcj8uZXJyb3IgfHwgZXJyLmVycm9yIHx8IGVycj8ubWVzc2FnZSB8fCAnVW5rbm93biBlcnJvcic7XHJcbiAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KG1zZyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG59XHJcblxyXG5cclxuXHJcblxyXG4gIG5vRGF0YU1lc3NhZ2VzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xyXG4gIGR1cGxpY2F0ZTogJ05vIGR1cGxpY2F0ZXMgZm91bmQnLFxyXG4gIGVtcGxveWVlOiAnTm8gZW1wbG95ZWUvc3RhZmYgZm91bmQnLFxyXG4gICdob3VzZS1rZWVwaW5nJzogJ05vIGhvdXNlIGtlZXBpbmcgZm91bmQnLFxyXG4gICdub24tdGFnZ2luZyc6ICdObyBub24tdGFnZ2luZyBmb3VuZCdcclxufTtcclxuXHJcbnRlbXBSYWlzZWRQYXlsb2FkOiBhbnkgPSBudWxsOyAvLyBjbGFzcy1sZXZlbCB2YXJpYWJsZSBmb3IgcHJldmlld1xyXG5cclxucHJlcGFyZVJhaXNlZFBheWxvYWQoc2hvd09ubHkgPSBmYWxzZSk6IGFueSB7XHJcbiBcclxufVxyXG5cclxuQFZpZXdDaGlsZCgncmFpc2VkUG9wdXAnKSByYWlzZWRQb3B1cDogRWxlbWVudFJlZjtcclxuUmFpc2VkKCl7XHJcblxyXG4gICBjb25zdCBwYXlsb2FkOiBhbnkgPSB7XHJcbiAgICBkYXRlU3RyaW5nOiB0aGlzLmZvbGRlckRhdGUsXHJcbiAgICBzdG9yZUlkOiB0aGlzLnN0b3JlSWRhcnJheT8ubGVuZ3RoID4gMCA/IHRoaXMuc3RvcmVJZGFycmF5WzBdIDogbnVsbCxcclxuICAgIHRpY2tldE5hbWU6ICdmb290ZmFsbC1kaXJlY3RvcnknLFxyXG4gICAgZm9vdGZhbGxDb3VudDogMCxcclxuICAgIGR1cGxpY2F0ZUNvdW50OiAwLFxyXG4gICAgZW1wbG95ZWVDb3VudDogMCxcclxuICAgIGhvdXNlS2VlcGluZ0NvdW50OiAwLFxyXG4gICAgY29tbWVudHM6IHRoaXMuY29tbWVudFRleHQgfHwgJycsXHJcbiAgICBkdXBsaWNhdGVJbWFnZXM6IFtdLFxyXG4gICAgaG91c2VLZWVwaW5nOiBbXSxcclxuICAgIGVtcGxveWVlOiBbXSxcclxuICB9O1xyXG5cclxubGV0IHRvdGFsQ2hlY2tlZENvdW50ID0gMDtcclxuXHJcbnRoaXMub3ZlcmFsbEFycmF5RGF0YS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICBjb25zdCB0eXBlID0gaXRlbS5yZXZvcHNUeXBlPy50b0xvd2VyQ2FzZSgpPy50cmltKCk7XHJcbiAgY29uc3QgaXNDaGVja2VkID0gaXRlbS5pc0NoZWNrZWQgPT09IHRydWU7XHJcblxyXG4gIC8vIOKchSBDb3VudCBvbmx5IGlmIGl0ZW0gaXMgY2hlY2tlZCBBTkQgcmV2b3BzVHlwZSBpcyAnbm9uLXRhZ2dpbmcnXHJcbiAgLy8gY29uc3QgaXNOb3RUYWdnZWQgPSB0eXBlID09PSAnbm9uLXRhZ2dpbmcnO1xyXG5cclxuICAvLyBpZiAoaXNOb3RUYWdnZWQpIHtcclxuICAvLyAgIHRvdGFsQ2hlY2tlZENvdW50Kys7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBEVVBMSUNBVEUgVFlQRVxyXG4gIGlmICh0eXBlID09PSAnZHVwbGljYXRlJyAmJiBpdGVtLnBhcmVudCA9PSBudWxsICYmIEFycmF5LmlzQXJyYXkoaXRlbS5kdXBsaWNhdGVJbWFnZVBhdGgpKSB7XHJcbiAgICBjb25zdCBuZXN0ZWREYXRhID0gaXRlbS5kdXBsaWNhdGVJbWFnZVBhdGhcclxuICAgICAgLmZpbHRlcigoZHVwOiBhbnkpID0+IGR1cC5pc0NoZWNrZWQpXHJcbiAgICAgIC5tYXAoKGR1cDogYW55KSA9PiAoe1xyXG4gICAgICAgIHRlbXBJZDogZHVwLnRlbXBJZCB8fCBkdXAudGVtcGxkIHx8ICcnLFxyXG4gICAgICAgIGZpbGVQYXRoOiBkdXAuZmlsZVBhdGgsXHJcbiAgICAgICAgZW50cnlUaW1lOiBkdXA/LmVudHJ5VGltZSB8fCBkdXA/LmVudHJ5VG1lIHx8ICcnLFxyXG4gICAgICAgIGV4aXRUaW1lOiBkdXAuZXhpdFRpbWUsXHJcbiAgICAgICAgdGltZVJhbmdlOiBkdXAudGltZVJhbmdlLFxyXG4gICAgICAgIGlzQ2hlY2tlZDogZHVwLmlzQ2hlY2tlZFxyXG4gICAgICB9KSk7XHJcblxyXG4gICAgaWYgKG5lc3RlZERhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICBwYXlsb2FkLmR1cGxpY2F0ZUltYWdlcy5wdXNoKHtcclxuICAgICAgICB0ZW1wSWQ6IGl0ZW0udGVtcGxkLFxyXG4gICAgICAgIGZpbGVQYXRoOiBpdGVtLmZpbGVQYXRoLFxyXG4gICAgICAgIGVudHJ5VGltZTogaXRlbT8uZW50cnlUaW1lIHx8IGl0ZW0/LmVudHJ5VG1lIHx8ICcnLFxyXG4gICAgICAgIGV4aXRUaW1lOiBpdGVtLmV4aXRUaW1lLFxyXG4gICAgICAgIHRpbWVSYW5nZTogaXRlbS50aW1lUmFuZ2UsXHJcbiAgICAgICAgaXNDaGVja2VkOiBpdGVtLmlzQ2hlY2tlZCxcclxuICAgICAgICBkYXRhOiBuZXN0ZWREYXRhLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHBheWxvYWQuZHVwbGljYXRlQ291bnQgKz0gbmVzdGVkRGF0YS5sZW5ndGg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBFTVBMT1lFRVxyXG4gIGVsc2UgaWYgKHR5cGUgPT09ICdlbXBsb3llZScgJiYgaXNDaGVja2VkKSB7XHJcbiAgICBwYXlsb2FkLmVtcGxveWVlLnB1c2goe1xyXG4gICAgICB0ZW1wSWQ6IGl0ZW0udGVtcGxkLFxyXG4gICAgICBmaWxlUGF0aDogaXRlbS5maWxlUGF0aCxcclxuICAgICAgZW50cnlUaW1lOiBpdGVtPy5lbnRyeVRpbWUgfHwgaXRlbT8uZW50cnlUbWUgfHwgJycsXHJcbiAgICAgIGV4aXRUaW1lOiBpdGVtLmV4aXRUaW1lLFxyXG4gICAgICB0aW1lUmFuZ2U6IGl0ZW0udGltZVJhbmdlLFxyXG4gICAgICBpc0NoZWNrZWQ6IGl0ZW0uaXNDaGVja2VkXHJcbiAgICB9KTtcclxuXHJcbiAgICBwYXlsb2FkLmVtcGxveWVlQ291bnQrKztcclxuICB9XHJcblxyXG4gIC8vIEhPVVNFS0VFUElOR1xyXG4gIGVsc2UgaWYgKHR5cGUgPT09ICdob3VzZS1rZWVwaW5nJyAmJiBpc0NoZWNrZWQpIHtcclxuICAgIHBheWxvYWQuaG91c2VLZWVwaW5nLnB1c2goe1xyXG4gICAgICB0ZW1wSWQ6IGl0ZW0udGVtcGxkLFxyXG4gICAgICBmaWxlUGF0aDogaXRlbS5maWxlUGF0aCxcclxuICAgICAgZW50cnlUaW1lOiBpdGVtPy5lbnRyeVRpbWUgfHwgaXRlbT8uZW50cnlUbWUgfHwnJyxcclxuICAgICAgZXhpdFRpbWU6IGl0ZW0uZXhpdFRpbWUsXHJcbiAgICAgIHRpbWVSYW5nZTogaXRlbS50aW1lUmFuZ2UsXHJcbiAgICAgIGlzQ2hlY2tlZDogaXRlbS5pc0NoZWNrZWRcclxuICAgIH0pO1xyXG5cclxuICAgIHBheWxvYWQuaG91c2VLZWVwaW5nQ291bnQrKztcclxuICB9XHJcbn0pO1xyXG5cclxucGF5bG9hZC5mb290ZmFsbENvdW50ID0gdGhpcy5jb3VudERhdGE/LmZvb3RmYWxsQ291bnQ7XHJcblxyXG5cclxuICAvLyDwn5GHIFJldHVybiBvciBhc3NpZ25cclxuXHJcbiAgICB0aGlzLnRlbXBSYWlzZWRQYXlsb2FkID0gcGF5bG9hZDtcclxuXHJcbiAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLnJhaXNlZFBvcHVwLCB7IGNlbnRlcmVkOiB0cnVlLCBzaXplOiAnbWQnLFxyXG4gICAgYmFja2Ryb3A6ICdzdGF0aWMnLCBcclxuICBrZXlib2FyZDogZmFsc2UgICAgICBcclxuICB9KTtcclxufVxyXG5cclxuY2FuY2VsUmFzaWVkKCl7XHJcbiB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XHJcbiAgdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QgPSBbXTtcclxufVxyXG5cclxuY29tbWVudFRleHQ6YW55XHJcbmdldFJhaXNlZERhdGE6YW55O1xyXG5zdWJtaXRSYWlzZWQoKSB7XHJcbiAgY29uc3QgcGF5bG9hZCA9IHRoaXMudGVtcFJhaXNlZFBheWxvYWQ7IC8vIGZyZXNoIGRhdGEgZm9yIEFQSVxyXG5cclxuICB0aGlzLmdldFJhaXNlZERhdGEgPSBwYXlsb2FkO1xyXG5cclxuICB0aGlzLnJ2cHNTZXJ2aWNlLmdldENyZWF0ZVJhaXNlZFRhZyhwYXlsb2FkKVxyXG4gICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy50b2FzdC5nZXRTdWNjZXNzVG9hc3QocmVzPy5tZXNzYWdlIHx8ICdUaWNrZXQgdXBkYXRlZCBzdWNjZXNzZnVsbHknKTtcclxuICAgICAgICAgIHRoaXMuaW1hZ2VGbG93ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmdldFJldm9wcygpO1xyXG4gICAgICAgICAgdGhpcy5jYW5jZWxSYXNpZWQoKTsgXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFR5cGUgPSAnJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdGYWlsZWQgdG8gdXBkYXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgbXNnID0gZXJyLmVycm9yPy5lcnJvciB8fCBlcnIuZXJyb3IgfHwgZXJyPy5lcnJvcj8ubWVzc2FnZSB8fCBlcnIubWVzc2FnZSB8fCAnVW5rbm93biBlcnJvcic7XHJcbiAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KG1zZyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG59XHJcblxyXG5cclxuXHJcbi8vIG9uSW1hZ2VDaGVja2JveENoYW5nZShpbWc6IGFueSwgdHlwZTogc3RyaW5nKSB7XHJcbi8vICAgaWYgKHR5cGUgPT09ICdkdXBsaWNhdGUnKSB7XHJcbi8vICAgICAvLyBDb3VudCBvbmx5IHZhbGlkIGR1cGxpY2F0ZSBpbWFnZXMgd2hlcmUgYGR1cGxpY2F0ZUltYWdlUGF0aC5sZW5ndGggPT09IDBgXHJcbi8vICAgICBjb25zdCB0b3RhbFZhbGlkRHVwbGljYXRlSW1hZ2VzID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbHRlcihcclxuLy8gICAgICAgKGl0ZW06IGFueSkgPT5cclxuLy8gICAgICAgICBpdGVtLnJldm9wc1R5cGUgPT09ICdkdXBsaWNhdGUnICYmICghaXRlbS5kdXBsaWNhdGVJbWFnZVBhdGggfHwgaXRlbS5kdXBsaWNhdGVJbWFnZVBhdGgubGVuZ3RoID09PSAwKVxyXG4vLyAgICAgKS5sZW5ndGg7XHJcblxyXG4vLyAgICAgY29uc3QgbWF4QWxsb3dlZCA9IE1hdGguZmxvb3IodG90YWxWYWxpZER1cGxpY2F0ZUltYWdlcyAqIDAuMSk7IC8vIDEwJSBsaW1pdFxyXG5cclxuLy8gICAgIGNvbnN0IGFscmVhZHlFeGlzdHMgPSB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdC5zb21lKFxyXG4vLyAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnRlbXBsZCA9PT0gaW1nLnRlbXBsZFxyXG4vLyAgICAgKTtcclxuXHJcbi8vICAgICBpZiAoaW1nLnNlbGVjdGVkKSB7XHJcbi8vICAgICAgIC8vIOKdjCBSZWFjaGVkIG1heCBhbGxvd2VkIOKAlCBibG9jayBpdFxyXG4vLyAgICAgICBpZiAodGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QubGVuZ3RoID49IG1heEFsbG93ZWQpIHtcclxuLy8gICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoXHJcbi8vICAgICAgICAgICBgT25seSAke21heEFsbG93ZWR9IGltYWdlcyBjYW4gYmUgc2VsZWN0ZWQgYXMgZHVwbGljYXRlICgxMCUgb2YgdW50YWdnZWQgZHVwbGljYXRlcykuYFxyXG4vLyAgICAgICAgICk7XHJcblxyXG4vLyAgICAgICAgIGltZy5zZWxlY3RlZCA9IGZhbHNlO1xyXG4vLyAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbmRJbmRleCgoaXRlbTogYW55KSA9PiBpdGVtLnRlbXBsZCA9PT0gaW1nLnRlbXBsZCk7XHJcbi8vICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xyXG4vLyAgICAgICAgICAgdGhpcy5vdmVyYWxsQXJyYXlEYXRhW2luZGV4XS5zZWxlY3RlZCA9IGZhbHNlO1xyXG4vLyAgICAgICAgIH1cclxuXHJcbi8vICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbi8vICAgICAgICAgICBpbWcuc2VsZWN0ZWQgPSBmYWxzZTtcclxuLy8gICAgICAgICB9KTtcclxuXHJcbi8vICAgICAgICAgcmV0dXJuO1xyXG4vLyAgICAgICB9XHJcblxyXG4vLyAgICAgICAvLyDinIUgQWRkIGlmIG5vdCBhbHJlYWR5IGluIGxpc3RcclxuLy8gICAgICAgaWYgKCFhbHJlYWR5RXhpc3RzKSB7XHJcbi8vICAgICAgICAgdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QucHVzaCh7XHJcbi8vICAgICAgICAgICAuLi5pbWcsXHJcbi8vICAgICAgICAgICBpc0NoZWNrZWQ6IHRydWUsXHJcbi8vICAgICAgICAgICBwYXJlbnQ6IGltZy5wYXJlbnQgfHwgbnVsbFxyXG4vLyAgICAgICAgIH0pO1xyXG4vLyAgICAgICB9XHJcbi8vICAgICB9IGVsc2Uge1xyXG4vLyAgICAgICAvLyDinYwgUmVtb3ZhbCBjYXNlXHJcbi8vICAgICAgIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0ID0gdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QuZmlsdGVyKFxyXG4vLyAgICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0udGVtcGxkICE9PSBpbWcudGVtcGxkXHJcbi8vICAgICAgICk7XHJcbi8vICAgICB9XHJcbi8vICAgfVxyXG5cclxuLy8gICAvLyDimqDvuI8gQ2FsbCB0aGlzIHRvIHVwZGF0ZSBidXR0b24gZW5hYmxlIHN0YXRlXHJcbi8vICAgdGhpcy5jaGVja0R1cGxpY2F0ZVNhdmVFbmFibGUoKTtcclxuLy8gfVxyXG5cclxuXHJcbi8vIGR1cGxpY2F0ZVNhdmVFbmFibGVkID0gZmFsc2U7XHJcblxyXG4vLyBjaGVja0R1cGxpY2F0ZVNhdmVFbmFibGUoKSB7XHJcbi8vICAgdGhpcy5kdXBsaWNhdGVTYXZlRW5hYmxlZCA9XHJcbi8vICAgICB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID09PSAnZHVwbGljYXRlJyAmJiB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdC5sZW5ndGggPiAwO1xyXG4vLyB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIGN1cnJlbnRJbWFnZUluZGV4OiBudW1iZXIgPSAwO1xyXG4gIGdldCBjYW5OYXZpZ2F0ZUxlZnQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50SW1hZ2VJbmRleCA+IDA7XHJcbiAgfVxyXG4gIFxyXG4gIGdldCBjYW5OYXZpZ2F0ZVJpZ2h0KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEltYWdlSW5kZXggPCB0aGlzLmltYWdlc0FycmF5RGF0YS5sZW5ndGggLSAxO1xyXG4gIH1cclxuICBcclxuICBuYXZpZ2F0ZUltYWdlKGRpcmVjdGlvbjogXCJsZWZ0XCIgfCBcInJpZ2h0XCIpIHtcclxuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMuaW1hZ2VzQXJyYXlEYXRhLmxlbmd0aDtcclxuICBcclxuICAgIGlmIChkaXJlY3Rpb24gPT09IFwibGVmdFwiICYmIHRoaXMuY2FuTmF2aWdhdGVMZWZ0KSB7XHJcbiAgICAgIHRoaXMuY3VycmVudEltYWdlSW5kZXgtLTtcclxuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSBcInJpZ2h0XCIgJiYgdGhpcy5jYW5OYXZpZ2F0ZVJpZ2h0KSB7XHJcbiAgICAgIHRoaXMuY3VycmVudEltYWdlSW5kZXgrKztcclxuICAgIH1cclxuICBcclxuICAgIC8vIFVwZGF0ZSBzZWxlY3RlZCBpbWFnZVxyXG4gICAgdGhpcy5zZWxlY3RJbWFnZUFycmF5ID0gdGhpcy5pbWFnZXNBcnJheURhdGFbdGhpcy5jdXJyZW50SW1hZ2VJbmRleF07XHJcbiAgXHJcbiAgICAvLyBVcGRhdGUgcmVtYWluaW5nIGltYWdlc1xyXG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gdGhpcy5pbWFnZXNBcnJheURhdGEuZmlsdGVyKFxyXG4gICAgICAoXzogYW55LCBpOiBhbnkpID0+IGkgIT09IHRoaXMuY3VycmVudEltYWdlSW5kZXhcclxuICAgICk7XHJcbiAgfVxyXG59IiwiPGRpdiBjbGFzcz1cImNhcmQgbXQtM1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIG10LTMgcHgtMCBib3JkZXItYm90dG9tLTBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWFjY29yZGlvblwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWFjY29yZGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmcgcGItMCBjdXN0b20tYWNjb3JkaW9uLWhlYWRlclwiIChjbGljayk9XCJ0b2dnbGVBY2NvcmRpb24oKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1nLWRpcmVjXCI+SW1hZ2UgRGlyZWN0b3J5PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFjY29yZGlvbi1hcnJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBEb3duIGFycm93IGZvciBjb2xsYXBzZWQgc3RhdGUsIHVwIGFycm93IGZvciBleHBhbmRlZCBzdGF0ZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCIhaXNBY2NvcmRpb25FeHBhbmRlZFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI2XCIgaGVpZ2h0PVwiNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiA2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEgMUw1IDVMOSAxXCIgc3Ryb2tlPVwiIzA3MTQzN1wiIHN0cm9rZS13aWR0aD1cIjFcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiaXNBY2NvcmRpb25FeHBhbmRlZFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI2XCIgaGVpZ2h0PVwiNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiA2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEgNUw1IDFMOSA1XCIgc3Ryb2tlPVwiIzFiODRmZlwiIHN0cm9rZS13aWR0aD1cIjFcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPC9kaXY+XHJcbiAgICA8c2VjdGlvbiAqbmdJZj1cImlzQWNjb3JkaW9uRXhwYW5kZWRcIj5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImZvbGRlclZpZXdcIiBjbGFzcz1cImNhcmQtYm9keSBweC0wXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGwtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xIG10LTUgdGV4dC1jZW50ZXJcIiAqbmdGb3I9XCJsZXQgb2JqIG9mIGRhdGVBcnJheTtsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cImdldGltYWdlcyhpLG9iailcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpID09PSBzZWxlY3RJbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+PHN2ZyB3aWR0aD1cIjU3XCIgaGVpZ2h0PVwiNTZcIiB2aWV3Qm94PVwiMCAwIDU3IDU2XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjAuMTU0Mjk3XCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgcng9XCIxMlwiIGZpbGw9XCIjMzNCNUZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zOS44MjE2IDM2LjE2NjdDMzkuODIxNiAzNi43ODU1IDM5LjU3NTggMzcuMzc5IDM5LjEzODIgMzcuODE2NkMzOC43MDA2IDM4LjI1NDIgMzguMTA3MSAzOC41IDM3LjQ4ODMgMzguNUgxOC44MjE2QzE4LjIwMjggMzguNSAxNy42MDkzIDM4LjI1NDIgMTcuMTcxNyAzNy44MTY2QzE2LjczNDEgMzcuMzc5IDE2LjQ4ODMgMzYuNzg1NSAxNi40ODgzIDM2LjE2NjdWMTkuODMzM0MxNi40ODgzIDE5LjIxNDUgMTYuNzM0MSAxOC42MjEgMTcuMTcxNyAxOC4xODM0QzE3LjYwOTMgMTcuNzQ1OCAxOC4yMDI4IDE3LjUgMTguODIxNiAxNy41SDI0LjY1NDlMMjYuOTg4MyAyMUgzNy40ODgzQzM4LjEwNzEgMjEgMzguNzAwNiAyMS4yNDU4IDM5LjEzODIgMjEuNjgzNEMzOS41NzU4IDIyLjEyMSAzOS44MjE2IDIyLjcxNDUgMzkuODIxNiAyMy4zMzMzVjM2LjE2NjdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjIuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbXQtMlwiPnt7b2JqIHwgZGF0ZTonZGQgTU1NJ319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpICE9PSBzZWxlY3RJbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+PHN2ZyB3aWR0aD1cIjU3XCIgaGVpZ2h0PVwiNTZcIiB2aWV3Qm94PVwiMCAwIDU3IDU2XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjAuNDYyODkxXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgcng9XCIxMlwiIGZpbGw9XCIjRUFGOEZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00MC4xMzAyIDM2LjE2NjdDNDAuMTMwMiAzNi43ODU1IDM5Ljg4NDQgMzcuMzc5IDM5LjQ0NjggMzcuODE2NkMzOS4wMDkyIDM4LjI1NDIgMzguNDE1NyAzOC41IDM3Ljc5NjkgMzguNUgxOS4xMzAyQzE4LjUxMTQgMzguNSAxNy45MTc5IDM4LjI1NDIgMTcuNDgwMyAzNy44MTY2QzE3LjA0MjcgMzcuMzc5IDE2Ljc5NjkgMzYuNzg1NSAxNi43OTY5IDM2LjE2NjdWMTkuODMzM0MxNi43OTY5IDE5LjIxNDUgMTcuMDQyNyAxOC42MjEgMTcuNDgwMyAxOC4xODM0QzE3LjkxNzkgMTcuNzQ1OCAxOC41MTE0IDE3LjUgMTkuMTMwMiAxNy41SDI0Ljk2MzVMMjcuMjk2OSAyMUgzNy43OTY5QzM4LjQxNTcgMjEgMzkuMDA5MiAyMS4yNDU4IDM5LjQ0NjggMjEuNjgzNEMzOS44ODQ0IDIyLjEyMSA0MC4xMzAyIDIyLjcxNDUgNDAuMTMwMiAyMy4zMzMzVjM2LjE2NjdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMi4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtdC0yXCI+e3tvYmogfCBkYXRlOidkZCBNTU0nfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWZvbGRlclZpZXdcIiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICA8c2VjdGlvbiAqbmdJZj1cIiFpbWFnZUZsb3dcIj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1zaHJpbmstMCBtdC0zIGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1jZW50ZXIgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImJhY2tuYXZcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImJhY2tUb0Zvb3RmYWxsKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgdmlld0JveD1cIjAgMCA0MCA0MFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgZmlsdGVyPVwidXJsKCNmaWx0ZXIwX2RfMjU4NV83MDM2KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIxXCIgd2lkdGg9XCIzNlwiIGhlaWdodD1cIjM2XCIgcng9XCI4XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjIuNVwiIHk9XCIxLjVcIiB3aWR0aD1cIjM1XCIgaGVpZ2h0PVwiMzVcIiByeD1cIjcuNVwiIHN0cm9rZT1cIiNEMEQ1RERcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTI1LjgzMjcgMTlIMTQuMTY2TTE0LjE2NiAxOUwxOS45OTkzIDI0LjgzMzRNMTQuMTY2IDE5TDE5Ljk5OTMgMTMuMTY2N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjBfZF8yNTg1XzcwMzZcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PVwiMFwiIHJlc3VsdD1cIkJhY2tncm91bmRJbWFnZUZpeFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlT2Zmc2V0IGR5PVwiMVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9XCIwIDAgMCAwIDAuMDYyNzQ1MSAwIDAgMCAwIDAuMDk0MTE3NiAwIDAgMCAwIDAuMTU2ODYzIDAgMCAwIDAuMDUgMFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMjU4NV83MDM2XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbj1cIlNvdXJjZUdyYXBoaWNcIiBpbjI9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMjU4NV83MDM2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJzaGFwZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmlsdGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1nLWRpcmVjIG1zLTIgbXQtMVwiPnt7Zm9sZGVyRGF0ZSB8IGRhdGU6J2RkIE1NTSwgeXl5eSd9fSAgXHJcbiAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC13YXJuaW5nIG14LTJcIiAqbmdJZj1cIiFnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdjbG9zZWQnKSAmJiBnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdvcGVuJylcIj5cclxuICBUaWNrZXQgUmFpc2VkXHJcbjwvc3Bhbj5cclxuPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzIG14LTJcIiAqbmdJZj1cImdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ2Nsb3NlZCcpXCI+VGlja2V0IENsb3NlZDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ29wZW4nKSAmJiAhZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnY2xvc2VkJylcIiAgY2xhc3M9XCJtcy1hdXRvIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgIFxyXG4gIDxidXR0b24gW2Rpc2FibGVkXT1cIiEoY291bnREYXRhPy5kdXBsaWNhdGUgPiAwIHx8IGNvdW50RGF0YT8uaG91c2VrZWVwaW5nID4gMCB8fCBjb3VudERhdGE/LmVtcGxveWVlID4gMClcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiUmFpc2VkKClcIj5cclxuICAgIFJhaXNlIHRpY2tldCBmb3IgZm9vdGZhbGxcclxuICA8L2J1dHRvbj5cclxuPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFmb2xkZXJWaWV3XCIgY2xhc3M9XCJuYXYtZ3JvdXAgYmctd2hpdGUgYm9yZGVyLTEgYnRuLWdyb3VwIHctYXV0byBteS0yXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHB4LTYgcHktM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZm9vdGZhbGwnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW5UcmVuZHMoJ2Zvb3RmYWxsJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvdGFsIEZvb3RmYWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdmb290ZmFsbCcgPyAnYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1hY3RpdmUnIDogJ2luYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvdW50RGF0YT8uZm9vdGZhbGxDb3VudCB8fCAwIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ25vbi10YWdnaW5nJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuVHJlbmRzKCdub24tdGFnZ2luZycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb24tdGFnc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnbm9uLXRhZ2dpbmcnID8gJ2FjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtYWN0aXZlJyA6ICdpbmFjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudERhdGE/Lm5vblRhZ3MgfHwgMCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdkdXBsaWNhdGUnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW5UcmVuZHMoJ2R1cGxpY2F0ZScpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEdXBsaWNhdGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdkdXBsaWNhdGUnID8gJ2FjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtYWN0aXZlJyA6ICdpbmFjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudERhdGE/LmR1cGxpY2F0ZSB8fCAwIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2VtcGxveWVlJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuVHJlbmRzKCdlbXBsb3llZScpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXBsb3llZS9TdGFmZlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZW1wbG95ZWUnID8gJ2FjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtYWN0aXZlJyA6ICdpbmFjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudERhdGE/LmVtcGxveWVlIHx8IDAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHB4LTYgcHktM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnaG91c2Uta2VlcGluZycgPyAnYWN0aXZlUGxhbkJ0bicgOiAnaW5hY3RpdmVQbGFuQnRuJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UGxhblRyZW5kcygnaG91c2Uta2VlcGluZycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEhvdXNlIEtlZXBpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2hvdXNlLWtlZXBpbmcnID8gJ2JhZGdlIGJhZGdlLWFjdGl2ZSBhY3RpdmVQbGFuQnRuJyA6ICcgYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCBpbmFjdGl2ZVBsYW5CdG4nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnREYXRhPy5ob3VzZWtlZXBpbmcgfHwgMCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0eXBlID09PSAnZm9vdGZhbGwnXCIgY2xhc3M9XCJkLWZsZXggbXQtMiBtYi0yIHctMTAwIG92ZXJmbG93LXggcHgtMFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgdGV4dC1ub3dyYXBcIiAqbmdGb3I9XCJsZXQgb2JqIG9mIG9iamVjdHNBcnJheVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5hdiBuYXYtc3RyZXRjaCBuYXYtbGluZS10YWJzMSBuYXYtbGluZS10YWJzIGJvcmRlci10cmFuc3BhcmVudCBmbGV4LW5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbSBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cInNlbGVjdGVkVGltZXMob2JqLnRpbWVSYW5nZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdGVkVGltZSA9PT0gb2JqPy50aW1lUmFuZ2UgPyAnYWN0aXZlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIGN1cnNvci1wb2ludGVyIG5vLWJvcmRlciBteC0zIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e29iaj8udGltZVJhbmdlfX08c3BhbiBjbGFzcz1cIm14LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZFRpbWUgPT09IG9iaj8udGltZVJhbmdlID8gJ2JhZGdlLW51bS1wcmltYXJ5JyA6J2JhZGdlLW51bS1tdXRlZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb2JqPy5jb3VudCA/IG9iaj8uY291bnQgOiAwIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJsb2FkaW5nXCIgY2xhc3M9XCJyb3cgbG9hZGVyICBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm9EYXRhXCIgY2xhc3M9XCJyb3dcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uIFwiIHN0eWxlPVwibWFyZ2luOiA2NHB4O2JvcmRlci1yYWRpdXM6IDhweDtcclxuYmFja2dyb3VuZDogdmFyKC0tR3JheS01MCwgI0Y5RkFGQik7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjk0XCIgaGVpZ2h0PVwiOTRcIiB2aWV3Qm94PVwiMCAwIDk0IDk0XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI3XCIgeT1cIjdcIiB3aWR0aD1cIjgwXCIgaGVpZ2h0PVwiODBcIiByeD1cIjQwXCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiN1wiIHk9XCI3XCIgd2lkdGg9XCI4MFwiIGhlaWdodD1cIjgwXCIgcng9XCI0MFwiIHN0cm9rZT1cIiNFQUY4RkZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMTMuMzMzM1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTM1LjMzMiA1MS45OTk5SDMzLjY2NTRDMzIuNzgxMyA1MS45OTk5IDMxLjkzMzUgNTEuNjQ4NyAzMS4zMDgzIDUxLjAyMzZDMzAuNjgzMiA1MC4zOTg1IDMwLjMzMiA0OS41NTA2IDMwLjMzMiA0OC42NjY2VjMzLjY2NjZDMzAuMzMyIDMyLjc4MjUgMzAuNjgzMiAzMS45MzQ3IDMxLjMwODMgMzEuMzA5NkMzMS45MzM1IDMwLjY4NDQgMzIuNzgxMyAzMC4zMzMzIDMzLjY2NTQgMzAuMzMzM0g0OC42NjU0QzQ5LjU0OTQgMzAuMzMzMyA1MC4zOTczIDMwLjY4NDQgNTEuMDIyNCAzMS4zMDk2QzUxLjY0NzUgMzEuOTM0NyA1MS45OTg3IDMyLjc4MjUgNTEuOTk4NyAzMy42NjY2VjM1LjMzMzNNNDUuMzMyIDQxLjk5OTlINjAuMzMyQzYyLjE3MyA0MS45OTk5IDYzLjY2NTQgNDMuNDkyMyA2My42NjU0IDQ1LjMzMzNWNjAuMzMzM0M2My42NjU0IDYyLjE3NDIgNjIuMTczIDYzLjY2NjYgNjAuMzMyIDYzLjY2NjZINDUuMzMyQzQzLjQ5MTEgNjMuNjY2NiA0MS45OTg3IDYyLjE3NDIgNDEuOTk4NyA2MC4zMzMzVjQ1LjMzMzNDNDEuOTk4NyA0My40OTIzIDQzLjQ5MTEgNDEuOTk5OSA0NS4zMzIgNDEuOTk5OVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXRpdGxlIG15LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbm9EYXRhTWVzc2FnZXNbdHlwZT8udG9Mb3dlckNhc2UoKV0gfHwgJ05vIGRhdGEgZm91bmQnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBweC0wIGltZy10cmFmZmljIGNvbnRhaW4gaGlnaC00MDBweCBzY3JvbGwteVwiICpuZ0lmPVwiIW5vRGF0YSAmJiAhbG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuXHJcbiAgKm5nRm9yPVwibGV0IG9iaiBvZiBpbWFnZXNBcnJheURhdGFcIlxyXG4+XHJcbjxkaXYgICpuZ0lmPVwidHlwZSAhPT0gJ2R1cGxpY2F0ZScgfHwgKHR5cGUgPT09ICdkdXBsaWNhdGUnJiYgb2JqLnJldm9wc1R5cGUgPT09ICdkdXBsaWNhdGUnICYmIG9iai5kdXBsaWNhdGVJbWFnZVBhdGg/Lmxlbmd0aCA+IDApXCIgIGNsYXNzPVwiY29sLW1kLTMgYm9yZGVyLWdyYXkgbXgtMiBwLTIgbXQtNVwiPlxyXG4gIDwhLS0gQ29uZGl0aW9uOiBPbmx5IHNob3cgaWYgbm90IGR1cGxpY2F0ZSBPUiBkdXBsaWNhdGUgd2l0aCBub24tZW1wdHkgZHVwbGljYXRlSW1hZ2VQYXRoIC0tPlxyXG4gPG5nLWNvbnRhaW5lciA+XHJcbiAgICA8aW1nXHJcbiAgICAgIGNsYXNzPVwiaW1nLXNyYyBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgIFtzcmNdPVwiaW1hZ2VVcmwgKyBvYmo/LmZpbGVQYXRoXCJcclxuICAgICAgKGVycm9yKT1cIm9iai5maWxlUGF0aCA9IG51bGxcIlxyXG4gICAgICBhbHQ9XCJcIlxyXG4gICAgICAoY2xpY2spPVwiaW1nRnVsbFZpZXcob2JqKVwiXHJcbiAgICAvPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhb2JqPy5maWxlUGF0aFwiIGNsYXNzPVwibm8tcHJldmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjNcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjMgMjBcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIkdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJWZWN0b3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuNSA2LjMyMjI3SDYuNTFNMTYuMjUgOS4zMjIyN0gyMS41TDE4IDE2LjMyMjNMMTQuOTEgMTIuMDAyM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlZlY3Rvcl8yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xLjUgMTYuMzIyOUg1LjI2QzUuNjMyNzMgMTYuMzI1NSA1Ljk5ODc3IDE2LjIyMzkgNi4zMTY4MiAxNi4wMjk1QzYuNjM0ODcgMTUuODM1MiA2Ljg5MjI4IDE1LjU1NTggNy4wNiAxNS4yMjI5TDguNSAxMi4zMjI5TTEuNSAxOC4zMjI5VjE0LjMyMjlNMTcuNSA2LjgyMjkxTDEzLjUgMTQuODIyOUwzLjExIDkuNjIyOTFDMi40MjAzMyA5LjI3NTUzIDEuODk2MzUgOC42NjkxIDEuNjUyNzIgNy45MzYzMkMxLjQwOTA5IDcuMjAzNTQgMS40NjU2NCA2LjQwNDEgMS44MSA1LjcxMjkxTDMuMTkgMi45MjI5MUMzLjM2MiAyLjU4MDE0IDMuNTk5ODQgMi4yNzQ2IDMuODg5OTQgMi4wMjM3NUM0LjE4MDAzIDEuNzcyOSA0LjUxNjcgMS41ODE2NSA0Ljg4MDcyIDEuNDYwOTNDNS4yNDQ3NCAxLjM0MDIxIDUuNjI4OTcgMS4yOTIzOSA2LjAxMTQ3IDEuMzIwMThDNi4zOTM5OCAxLjM0Nzk3IDYuNzY3MjYgMS40NTA4NCA3LjExIDEuNjIyOTFMMTcuNSA2LjgyMjkxWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhlYWRlciBtYi01IHRleHQtY2VudGVyXCI+UHJldmlldyBub3QgYXZhaWxhYmxlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGVzY3JpcHRpb24gbWItNSB0ZXh0LWNlbnRlclwiPlRoZSBzZWxlY3RlZCBjYW1lcmEgaXMgbm90IGF2YWlsYWJsZSBhdCB0aGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9tZW50Ljwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInR5cGUgIT09ICdkdXBsaWNhdGUnIHx8ICh0eXBlID09PSAnZHVwbGljYXRlJyYmIG9iai5yZXZvcHNUeXBlID09PSAnZHVwbGljYXRlJyAmJiBvYmouZHVwbGljYXRlSW1hZ2VQYXRoPy5sZW5ndGggPiAwKVwiIGNsYXNzPVwicm93IHB4LTIgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktMiBpbWctZG9jLXRpbWVcIj5UYW5nbyBJRCA6IHt7b2JqPy50ZW1wbGR9fSA8c3BhbiAqbmdJZj1cIih0eXBlID09PSAnZHVwbGljYXRlJyYmIG9iai5yZXZvcHNUeXBlID09PSAnZHVwbGljYXRlJyAmJiBvYmouZHVwbGljYXRlSW1hZ2VQYXRoPy5sZW5ndGggPiAwKVwiIGNsYXNzPVwibXgtMiBiYWRnZSBiYWRnZS1saWdodC1wcmltYXJ5XCI+e3tvYmouZHVwbGljYXRlSW1hZ2VQYXRoPy5sZW5ndGh9fTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltZy1kb2MtdmFsdWVcIj5FbnRyeSBUaW1lIDoge3tvYmo/LmVudHJ5VG1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTUgdGV4dC1lbmQgcHktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nbm9uLXRhZ2dpbmcnXCIgbmdiVG9vbHRpcD1cIllldCB0byB0YWcgdGhlIGN1c3RvbWVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOVwiIGhlaWdodD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE5IDE4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMDIzNDQgNS42MjVINi4wMzA5NE0xNi4yMTU5IDEwLjQzMjVMMTAuODM4NCAxNS44MUMxMC42OTkxIDE1Ljk0OTUgMTAuNTMzNyAxNi4wNjAxIDEwLjM1MTYgMTYuMTM1NkMxMC4xNjk1IDE2LjIxMTEgOS45NzQzMSAxNi4yNDk5IDkuNzc3MTkgMTYuMjQ5OUM5LjU4MDA2IDE2LjI0OTkgOS4zODQ4NyAxNi4yMTExIDkuMjAyNzggMTYuMTM1NkM5LjAyMDY4IDE2LjA2MDEgOC44NTUyNSAxNS45NDk1IDguNzE1OTQgMTUuODFMMi4yNzM0NCA5LjM3NVYxLjg3NUg5Ljc3MzQ0TDE2LjIxNTkgOC4zMTc1QzE2LjQ5NTMgOC41OTg1NCAxNi42NTIxIDguOTc4NzIgMTYuNjUyMSA5LjM3NUMxNi42NTIxIDkuNzcxMjggMTYuNDk1MyAxMC4xNTE1IDE2LjIxNTkgMTAuNDMyNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nZHVwbGljYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2VtcGxveWVlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjE2NTQgMTguMTg2VjE2LjUxOTRDMTQuMTY1NCAxNS42MzUzIDEzLjgxNDIgMTQuNzg3NSAxMy4xODkxIDE0LjE2MjNDMTIuNTYzOSAxMy41MzcyIDExLjcxNjEgMTMuMTg2IDEwLjgzMiAxMy4xODZINC4xNjUzNkMzLjI4MTMxIDEzLjE4NiAyLjQzMzQ2IDEzLjUzNzIgMS44MDgzNCAxNC4xNjIzQzEuMTgzMjIgMTQuNzg3NSAwLjgzMjAzMSAxNS42MzUzIDAuODMyMDMxIDE2LjUxOTRWMTguMTg2TTE5LjE2NTQgMTguMTg2VjE2LjUxOTRDMTkuMTY0OCAxNS43ODA4IDE4LjkxOSAxNS4wNjMzIDE4LjQ2NjUgMTQuNDc5NkMxOC4wMTQgMTMuODk1OSAxNy4zODA1IDEzLjQ3OSAxNi42NjU0IDEzLjI5NDRNMTMuMzMyIDMuMjk0MzdDMTQuMDQ5IDMuNDc3OTUgMTQuNjg0NiAzLjg5NDk1IDE1LjEzODQgNC40Nzk2M0MxNS41OTIyIDUuMDY0MyAxNS44Mzg2IDUuNzgzMzkgMTUuODM4NiA2LjUyMzU0QzE1LjgzODYgNy4yNjM2OCAxNS41OTIyIDcuOTgyNzcgMTUuMTM4NCA4LjU2NzQ0QzE0LjY4NDYgOS4xNTIxMiAxNC4wNDkgOS41NjkxMiAxMy4zMzIgOS43NTI3TTEwLjgzMiA2LjUxOTM3QzEwLjgzMiA4LjM2MDMyIDkuMzM5NjUgOS44NTI3IDcuNDk4NyA5Ljg1MjdDNS42NTc3NSA5Ljg1MjcgNC4xNjUzNiA4LjM2MDMyIDQuMTY1MzYgNi41MTkzN0M0LjE2NTM2IDQuNjc4NDIgNS42NTc3NSAzLjE4NjA0IDcuNDk4NyAzLjE4NjA0QzkuMzM5NjUgMy4xODYwNCAxMC44MzIgNC42Nzg0MiAxMC44MzIgNi41MTkzN1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0naG91c2Uta2VlcGluZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMSAyMVwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjQzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuMjYyMTkgMS4zNjcyMkMxMC4xNzc3IDAuNDU4OTc0IDExLjY2MiAwLjQ1ODk3NCAxMi41Nzc2IDEuMzY3MjJMMjAuMzEzMyA5LjA0MTUzQzIxLjIyODcgOS45NDk4IDIxLjIyODcgMTEuNDIyMyAyMC4zMTMzIDEyLjMzMDZMMTIuNTc3NiAyMC4wMDQ5QzExLjY2MiAyMC45MTMxIDEwLjE3NzcgMjAuOTEzMSA5LjI2MjE5IDIwLjAwNDlMNy4wNTE2NiAxNy44MTE5TDUuMDI1MzggMTkuODIyMUM0LjEwOTg3IDIwLjczMDMgMi42MjU1MyAyMC43MzAzIDEuNzEwMDIgMTkuODIyMUMwLjc5NDUxIDE4LjkxMzkgMC43OTQ1MSAxNy40NDEzIDEuNzEwMDIgMTYuNTMzMUwzLjczNjMgMTQuNTIyOUwxLjUyNjQ4IDEyLjMzMDZDMC42MTA5NjYgMTEuNDIyMyAwLjYxMDk2NiA5Ljk0OTggMS41MjY0OCA5LjA0MTUzTDkuMjYyMTkgMS4zNjcyMlpNMTEuNDcyNCAyLjQ2MzU3QzExLjE2NzIgMi4xNjA4MiAxMC42NzI0IDIuMTYwODIgMTAuMzY3MiAyLjQ2MzU3TDQuODQxNDUgNy45NDU1NkwxMy42ODIzIDE2LjcxNjNMMTkuMjA4MSAxMS4yMzQyQzE5LjUxMzMgMTAuOTMxNSAxOS41MTMzIDEwLjQ0MDYgMTkuMjA4MSAxMC4xMzc5TDE1LjMzOTkgNi4zMDAzMkwxNC4wNTA1IDcuNTc5NEMxMy43NDUzIDcuODgyMTQgMTMuMjUwNiA3Ljg4MjE0IDEyLjk0NTUgNy41Nzk0QzEyLjY0MDMgNy4yNzY2NCAxMi42NDAzIDYuNzg1NzkgMTIuOTQ1NSA2LjQ4MzA1TDE0LjIzNDcgNS4yMDM5N0wxMy4xMjk5IDQuMTA3ODZMOS45OTg3MiA3LjIxNDE4QzkuNjkzNTQgNy41MTY5MiA5LjE5ODczIDcuNTE2OTIgOC44OTM1NiA3LjIxNDE4QzguNTg4MzggNi45MTE0MyA4LjU4ODM4IDYuNDIwNTggOC44OTM1NiA2LjExNzgzTDEyLjAyNDcgMy4wMTE1MUwxMS40NzI0IDIuNDYzNTdaTTEyLjU3NzEgMTcuODEyNUwzLjczNjMzIDkuMDQxOTFMMi42MzE2IDEwLjEzNzlDMi4zMjY0MiAxMC40NDA2IDIuMzI2NDIgMTAuOTMxNSAyLjYzMTYgMTEuMjM0MkwxMC4zNjcyIDE4LjkwODVDMTAuNjcyNCAxOS4yMTEzIDExLjE2NzIgMTkuMjExMyAxMS40NzI0IDE4LjkwODVMMTIuNTc3MSAxNy44MTI1Wk00Ljg0MTMyIDE1LjYxOTJMMi44MTUxNCAxNy42Mjk0QzIuNTA5OTcgMTcuOTMyMSAyLjUwOTk3IDE4LjQyMyAyLjgxNTE0IDE4LjcyNThDMy4xMjAzMSAxOS4wMjg1IDMuNjE1MDkgMTkuMDI4NSAzLjkyMDI2IDE4LjcyNThMNS45NDY0NCAxNi43MTU2TDQuODQxMzIgMTUuNjE5MlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM0NzU0NjdcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDY0M1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3NlY3Rpb24+XHJcblxyXG4gICAgICAgICAgICA8IS0tIGZ1bGwgaW1hZ2UgVmlldyAtLT5cclxuICAgICAgICAgICAgPHNlY3Rpb24gKm5nSWY9XCJpbWFnZUZsb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc2hyaW5rLTAgbXQtMyBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyIHB4LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJiYWNrVG9Gb290ZmFsbDEoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiB2aWV3Qm94PVwiMCAwIDQwIDQwXCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBmaWx0ZXI9XCJ1cmwoI2ZpbHRlcjBfZF8yNTg1XzcwMzYpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjFcIiB3aWR0aD1cIjM2XCIgaGVpZ2h0PVwiMzZcIiByeD1cIjhcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMi41XCIgeT1cIjEuNVwiIHdpZHRoPVwiMzVcIiBoZWlnaHQ9XCIzNVwiIHJ4PVwiNy41XCIgc3Ryb2tlPVwiI0QwRDVERFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjUuODMyNyAxOUgxNC4xNjZNMTQuMTY2IDE5TDE5Ljk5OTMgMjQuODMzNE0xNC4xNjYgMTlMMTkuOTk5MyAxMy4xNjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMF9kXzI1ODVfNzAzNlwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVPZmZzZXQgZHk9XCIxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMC4wNjI3NDUxIDAgMCAwIDAgMC4wOTQxMTc2IDAgMCAwIDAgMC4xNTY4NjMgMCAwIDAgMC4wNSAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD1cImVmZmVjdDFfZHJvcFNoYWRvd18yNTg1XzcwMzZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd18yNTg1XzcwMzZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD1cInNoYXBlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWx0ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbWctZGlyZWMgbXMtMiBtdC0xXCI+e3tmb2xkZXJEYXRlIHwgZGF0ZTonZGQgTU1NLCB5eXl5J319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtMiBtYi0yIHctMTAwIG92ZXJmbG93LXggcHgtMFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY29sIHRleHQtbm93cmFwXCIgKm5nRm9yPVwibGV0IG9iaiBvZiBvYmplY3RzQXJyYXlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5hdiBuYXYtc3RyZXRjaCBuYXYtbGluZS10YWJzMSBuYXYtbGluZS10YWJzIGJvcmRlci10cmFuc3BhcmVudCBmbGV4LW5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJzZWxlY3RlZFRpbWVzKG9iai50aW1lUmFuZ2UpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdGVkVGltZSA9PT0gb2JqPy50aW1lUmFuZ2UgPyAnYWN0aXZlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmsgY3Vyc29yLXBvaW50ZXIgbm8tYm9yZGVyIG14LTMgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tvYmo/LnRpbWVSYW5nZX19PHNwYW4gY2xhc3M9XCJteC0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZFRpbWUgPT09IG9iaj8udGltZVJhbmdlID8gJ2JhZGdlLW51bS1wcmltYXJ5JyA6J2JhZGdlLW51bS1tdXRlZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvYmo/LmNvdW50ID8gb2JqPy5jb3VudCA6IDAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBteC0wIGJvcmRlci1ncmF5IGltZy10cmFmZmljXCIgKm5nSWY9XCIhbm9EYXRhICYmICFsb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBwLTIgIG1iLTIgbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGJvcmRlci1ncmF5IHAtMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gKm5nSWY9XCJjYW5OYXZpZ2F0ZUxlZnRcIiAoY2xpY2spPVwibmF2aWdhdGVJbWFnZSgnbGVmdCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IHBvc2l0aW9uLWFic29sdXRlIHN0YXJ0LTAgdG9wLTUwIHotaW5kZXgtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4peAXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIE1haW4gSW1hZ2UgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmMgY3Vyc29yLXBvaW50ZXIgaC0zNTBweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaW1hZ2VVcmwgKyBzZWxlY3RJbWFnZUFycmF5Py5maWxlUGF0aFwiIGFwcE1hZ25pZmllciBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gKm5nSWY9XCJjYW5OYXZpZ2F0ZVJpZ2h0XCIgKGNsaWNrKT1cIm5hdmlnYXRlSW1hZ2UoJ3JpZ2h0JylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQgcG9zaXRpb24tYWJzb2x1dGUgZW5kLTAgdG9wLTUwIHotaW5kZXgtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pa2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFJpZ2h0IGFycm93IGJ1dHRvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB4LTIgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS0yIGltZy1kb2MtdGltZVwiPlRhbmdvIElEIDoge3tzZWxlY3RJbWFnZUFycmF5Py50ZW1wbGR9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltZy1kb2MtdmFsdWVcIj5FbnRyeSBUaW1lIDoge3tzZWxlY3RJbWFnZUFycmF5Py5lbnRyeVRtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTUgdGV4dC1lbmQgcHktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RJbWFnZUFycmF5Py5yZXZvcHNUeXBlID09PSdub24tdGFnZ2luZydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJZZXQgdG8gdGFnIHRoZSBjdXN0b21lclwiIHBsYWNlbWVudD1cInRvcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTlcIiBoZWlnaHQ9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTkgMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02LjAyMzQ0IDUuNjI1SDYuMDMwOTRNMTYuMjE1OSAxMC40MzI1TDEwLjgzODQgMTUuODFDMTAuNjk5MSAxNS45NDk1IDEwLjUzMzcgMTYuMDYwMSAxMC4zNTE2IDE2LjEzNTZDMTAuMTY5NSAxNi4yMTExIDkuOTc0MzEgMTYuMjQ5OSA5Ljc3NzE5IDE2LjI0OTlDOS41ODAwNiAxNi4yNDk5IDkuMzg0ODcgMTYuMjExMSA5LjIwMjc4IDE2LjEzNTZDOS4wMjA2OCAxNi4wNjAxIDguODU1MjUgMTUuOTQ5NSA4LjcxNTk0IDE1LjgxTDIuMjczNDQgOS4zNzVWMS44NzVIOS43NzM0NEwxNi4yMTU5IDguMzE3NUMxNi40OTUzIDguNTk4NTQgMTYuNjUyMSA4Ljk3ODcyIDE2LjY1MjEgOS4zNzVDMTYuNjUyMSA5Ljc3MTI4IDE2LjQ5NTMgMTAuMTUxNSAxNi4yMTU5IDEwLjQzMjVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXk/LnJldm9wc1R5cGUgPT09J2R1cGxpY2F0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM1KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RJbWFnZUFycmF5Py5yZXZvcHNUeXBlID09PSdlbXBsb3llZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjE2NTQgMTguMTg2VjE2LjUxOTRDMTQuMTY1NCAxNS42MzUzIDEzLjgxNDIgMTQuNzg3NSAxMy4xODkxIDE0LjE2MjNDMTIuNTYzOSAxMy41MzcyIDExLjcxNjEgMTMuMTg2IDEwLjgzMiAxMy4xODZINC4xNjUzNkMzLjI4MTMxIDEzLjE4NiAyLjQzMzQ2IDEzLjUzNzIgMS44MDgzNCAxNC4xNjIzQzEuMTgzMjIgMTQuNzg3NSAwLjgzMjAzMSAxNS42MzUzIDAuODMyMDMxIDE2LjUxOTRWMTguMTg2TTE5LjE2NTQgMTguMTg2VjE2LjUxOTRDMTkuMTY0OCAxNS43ODA4IDE4LjkxOSAxNS4wNjMzIDE4LjQ2NjUgMTQuNDc5NkMxOC4wMTQgMTMuODk1OSAxNy4zODA1IDEzLjQ3OSAxNi42NjU0IDEzLjI5NDRNMTMuMzMyIDMuMjk0MzdDMTQuMDQ5IDMuNDc3OTUgMTQuNjg0NiAzLjg5NDk1IDE1LjEzODQgNC40Nzk2M0MxNS41OTIyIDUuMDY0MyAxNS44Mzg2IDUuNzgzMzkgMTUuODM4NiA2LjUyMzU0QzE1LjgzODYgNy4yNjM2OCAxNS41OTIyIDcuOTgyNzcgMTUuMTM4NCA4LjU2NzQ0QzE0LjY4NDYgOS4xNTIxMiAxNC4wNDkgOS41NjkxMiAxMy4zMzIgOS43NTI3TTEwLjgzMiA2LjUxOTM3QzEwLjgzMiA4LjM2MDMyIDkuMzM5NjUgOS44NTI3IDcuNDk4NyA5Ljg1MjdDNS42NTc3NSA5Ljg1MjcgNC4xNjUzNiA4LjM2MDMyIDQuMTY1MzYgNi41MTkzN0M0LjE2NTM2IDQuNjc4NDIgNS42NTc3NSAzLjE4NjA0IDcuNDk4NyAzLjE4NjA0QzkuMzM5NjUgMy4xODYwNCAxMC44MzIgNC42Nzg0MiAxMC44MzIgNi41MTkzN1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXk/LnJldm9wc1R5cGUgPT09J2hvdXNlLWtlZXBpbmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMSAyMVwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDY0MylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuMjYyMTkgMS4zNjcyMkMxMC4xNzc3IDAuNDU4OTc0IDExLjY2MiAwLjQ1ODk3NCAxMi41Nzc2IDEuMzY3MjJMMjAuMzEzMyA5LjA0MTUzQzIxLjIyODcgOS45NDk4IDIxLjIyODcgMTEuNDIyMyAyMC4zMTMzIDEyLjMzMDZMMTIuNTc3NiAyMC4wMDQ5QzExLjY2MiAyMC45MTMxIDEwLjE3NzcgMjAuOTEzMSA5LjI2MjE5IDIwLjAwNDlMNy4wNTE2NiAxNy44MTE5TDUuMDI1MzggMTkuODIyMUM0LjEwOTg3IDIwLjczMDMgMi42MjU1MyAyMC43MzAzIDEuNzEwMDIgMTkuODIyMUMwLjc5NDUxIDE4LjkxMzkgMC43OTQ1MSAxNy40NDEzIDEuNzEwMDIgMTYuNTMzMUwzLjczNjMgMTQuNTIyOUwxLjUyNjQ4IDEyLjMzMDZDMC42MTA5NjYgMTEuNDIyMyAwLjYxMDk2NiA5Ljk0OTggMS41MjY0OCA5LjA0MTUzTDkuMjYyMTkgMS4zNjcyMlpNMTEuNDcyNCAyLjQ2MzU3QzExLjE2NzIgMi4xNjA4MiAxMC42NzI0IDIuMTYwODIgMTAuMzY3MiAyLjQ2MzU3TDQuODQxNDUgNy45NDU1NkwxMy42ODIzIDE2LjcxNjNMMTkuMjA4MSAxMS4yMzQyQzE5LjUxMzMgMTAuOTMxNSAxOS41MTMzIDEwLjQ0MDYgMTkuMjA4MSAxMC4xMzc5TDE1LjMzOTkgNi4zMDAzMkwxNC4wNTA1IDcuNTc5NEMxMy43NDUzIDcuODgyMTQgMTMuMjUwNiA3Ljg4MjE0IDEyLjk0NTUgNy41Nzk0QzEyLjY0MDMgNy4yNzY2NCAxMi42NDAzIDYuNzg1NzkgMTIuOTQ1NSA2LjQ4MzA1TDE0LjIzNDcgNS4yMDM5N0wxMy4xMjk5IDQuMTA3ODZMOS45OTg3MiA3LjIxNDE4QzkuNjkzNTQgNy41MTY5MiA5LjE5ODczIDcuNTE2OTIgOC44OTM1NiA3LjIxNDE4QzguNTg4MzggNi45MTE0MyA4LjU4ODM4IDYuNDIwNTggOC44OTM1NiA2LjExNzgzTDEyLjAyNDcgMy4wMTE1MUwxMS40NzI0IDIuNDYzNTdaTTEyLjU3NzEgMTcuODEyNUwzLjczNjMzIDkuMDQxOTFMMi42MzE2IDEwLjEzNzlDMi4zMjY0MiAxMC40NDA2IDIuMzI2NDIgMTAuOTMxNSAyLjYzMTYgMTEuMjM0MkwxMC4zNjcyIDE4LjkwODVDMTAuNjcyNCAxOS4yMTEzIDExLjE2NzIgMTkuMjExMyAxMS40NzI0IDE4LjkwODVMMTIuNTc3MSAxNy44MTI1Wk00Ljg0MTMyIDE1LjYxOTJMMi44MTUxNCAxNy42Mjk0QzIuNTA5OTcgMTcuOTMyMSAyLjUwOTk3IDE4LjQyMyAyLjgxNTE0IDE4LjcyNThDMy4xMjAzMSAxOS4wMjg1IDMuNjE1MDkgMTkuMDI4NSAzLjkyMDI2IDE4LjcyNThMNS45NDY0NCAxNi43MTU2TDQuODQxMzIgMTUuNjE5MlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNDc1NDY3XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2NDNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBwLTIgbWItMiAgbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTIgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtdHlwZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IG5vbi1zaG9wcGVyIHR5cGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXJldm9wc1R5cGVWYWx1ZVwiIGNsYXNzPVwibWItNSB0ZXh0LWVuZFwiIHJvbGU9XCJncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdvcGVuJykgJiYgIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ2Nsb3NlZCcpXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cIlxyXG4gICAgICAgIChzZWxlY3RlZFJhZGlvVHlwZSA9PT0gdW5kZWZpbmVkIHx8IHNlbGVjdGVkUmFkaW9UeXBlID09PSAnJykgfHxcclxuICAgICAgICAoc2VsZWN0ZWRSYWRpb1R5cGUgPT09ICdkdXBsaWNhdGUnICYmIHNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdC5sZW5ndGggPT09IDApXHJcbiAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbGVhclZhbHVlKClcIj5DbGVhcjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgbWUtMlwiIChjbGljayk9XCJjYW5jZWwoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXHJcbiAgICAgIGlkPVwiYWxlcnQtdG9hc3RcIlxyXG4gICAgICAoY2xpY2spPVwic2F2ZShzZWxlY3RlZFR5cGUpXCJcclxuICAgICAgW2Rpc2FibGVkXT1cIlxyXG4gICAgICAgIChzZWxlY3RlZFJhZGlvVHlwZSA9PT0gdW5kZWZpbmVkIHx8IHNlbGVjdGVkUmFkaW9UeXBlID09PSAnJykgfHxcclxuICAgICAgICAoc2VsZWN0ZWRSYWRpb1R5cGUgPT09ICdkdXBsaWNhdGUnICYmIHNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdC5sZW5ndGggPT09IDApXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIFNhdmVcclxuICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicmV2b3BzVHlwZVZhbHVlXCIgY2xhc3M9XCJtYi01IHRleHQtZW5kXCIgcm9sZT1cImdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ29wZW4nKSAmJiAhZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnY2xvc2VkJylcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBtZS0yXCIgKGNsaWNrKT1cImVkaXRWYWx1ZSgpXCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjY1NTQgMS43MTA0N0MxNC44OTI3IDEuNDczMTUgMTUuMTc0NSAxLjI4NDkgMTUuNDg0NSAxLjE1NjQ2QzE1Ljc5NDYgMS4wMjgwMiAxNi4xMjY5IDAuOTYxOTE0IDE2LjQ2MjYgMC45NjE5MTRDMTYuNzk4MiAwLjk2MTkxNCAxNy4xMzA1IDEuMDI4MDIgMTcuNDQwNiAxLjE1NjQ2QzE3Ljc1MDcgMS4yODQ5IDE4LjAzMjQgMS40NzMxNSAxOC4yNjk3IDEuNzEwNDdDMTguNTA3MSAxLjk0Nzc5IDE4LjY5NTMgMi4yMjk1MyAxOC44MjM4IDIuNTM5NjFDMTguOTUyMiAyLjg0OTY5IDE5LjAxODMgMy4xODIwMiAxOS4wMTgzIDMuNTE3NjVDMTkuMDE4MyAzLjg1MzI3IDE4Ljk1MjIgNC4xODU2MSAxOC44MjM4IDQuNDk1NjhDMTguNjk1MyA0LjgwNTc2IDE4LjUwNzEgNS4wODc1IDE4LjI2OTcgNS4zMjQ4Mkw2LjA3MTMgMTcuNTIzM0wxLjEwMTU2IDE4Ljg3ODZMMi40NTY5NSAxMy45MDg5TDE0LjY1NTQgMS43MTA0N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjgxMDc5XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+RWRpdDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgIGNsYXNzPVwiZm9ybS1jaGVjayBteS0xNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgbmFtZT1cImR1cGxpY2F0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImR1cGxpY2F0ZVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUeXBlXCIgW3ZhbHVlXT1cIidkdXBsaWNhdGUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25SYWRpb0NoYW5nZShzZWxlY3RlZFR5cGUpXCIgW2Rpc2FibGVkXT1cInJldm9wc1R5cGVWYWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiZHVwbGljYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM1KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01IHRhZy1jbGFzc1wiPkR1cGxpY2F0ZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBteS0xNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgbmFtZT1cImVtcGxveWVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZW1wbG95ZWVcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVHlwZVwiIFt2YWx1ZV09XCInZW1wbG95ZWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25SYWRpb0NoYW5nZShzZWxlY3RlZFR5cGUpXCIgW2Rpc2FibGVkXT1cInJldm9wc1R5cGVWYWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiZW1wbG95ZWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMTY1NCAxOC4xODZWMTYuNTE5NEMxNC4xNjU0IDE1LjYzNTMgMTMuODE0MiAxNC43ODc1IDEzLjE4OTEgMTQuMTYyM0MxMi41NjM5IDEzLjUzNzIgMTEuNzE2MSAxMy4xODYgMTAuODMyIDEzLjE4Nkg0LjE2NTM2QzMuMjgxMzEgMTMuMTg2IDIuNDMzNDYgMTMuNTM3MiAxLjgwODM0IDE0LjE2MjNDMS4xODMyMiAxNC43ODc1IDAuODMyMDMxIDE1LjYzNTMgMC44MzIwMzEgMTYuNTE5NFYxOC4xODZNMTkuMTY1NCAxOC4xODZWMTYuNTE5NEMxOS4xNjQ4IDE1Ljc4MDggMTguOTE5IDE1LjA2MzMgMTguNDY2NSAxNC40Nzk2QzE4LjAxNCAxMy44OTU5IDE3LjM4MDUgMTMuNDc5IDE2LjY2NTQgMTMuMjk0NE0xMy4zMzIgMy4yOTQzN0MxNC4wNDkgMy40Nzc5NSAxNC42ODQ2IDMuODk0OTUgMTUuMTM4NCA0LjQ3OTYzQzE1LjU5MjIgNS4wNjQzIDE1LjgzODYgNS43ODMzOSAxNS44Mzg2IDYuNTIzNTRDMTUuODM4NiA3LjI2MzY4IDE1LjU5MjIgNy45ODI3NyAxNS4xMzg0IDguNTY3NDRDMTQuNjg0NiA5LjE1MjEyIDE0LjA0OSA5LjU2OTEyIDEzLjMzMiA5Ljc1MjdNMTAuODMyIDYuNTE5MzdDMTAuODMyIDguMzYwMzIgOS4zMzk2NSA5Ljg1MjcgNy40OTg3IDkuODUyN0M1LjY1Nzc1IDkuODUyNyA0LjE2NTM2IDguMzYwMzIgNC4xNjUzNiA2LjUxOTM3QzQuMTY1MzYgNC42Nzg0MiA1LjY1Nzc1IDMuMTg2MDQgNy40OTg3IDMuMTg2MDRDOS4zMzk2NSAzLjE4NjA0IDEwLjgzMiA0LjY3ODQyIDEwLjgzMiA2LjUxOTM3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTUgdGFnLWNsYXNzXCI+RW1wbG95ZWUvU3RhZmY8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbXktMTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJob3VzZS1rZWVwaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiaG91c2Uta2VlcGluZ1wiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUeXBlXCIgW3ZhbHVlXT1cIidob3VzZS1rZWVwaW5nJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uUmFkaW9DaGFuZ2Uoc2VsZWN0ZWRUeXBlKVwiIFtkaXNhYmxlZF09XCJyZXZvcHNUeXBlVmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImhvdXNlLWtlZXBpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMjEgMjFcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2NDMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05LjI2MjE5IDEuMzY3MjJDMTAuMTc3NyAwLjQ1ODk3NCAxMS42NjIgMC40NTg5NzQgMTIuNTc3NiAxLjM2NzIyTDIwLjMxMzMgOS4wNDE1M0MyMS4yMjg3IDkuOTQ5OCAyMS4yMjg3IDExLjQyMjMgMjAuMzEzMyAxMi4zMzA2TDEyLjU3NzYgMjAuMDA0OUMxMS42NjIgMjAuOTEzMSAxMC4xNzc3IDIwLjkxMzEgOS4yNjIxOSAyMC4wMDQ5TDcuMDUxNjYgMTcuODExOUw1LjAyNTM4IDE5LjgyMjFDNC4xMDk4NyAyMC43MzAzIDIuNjI1NTMgMjAuNzMwMyAxLjcxMDAyIDE5LjgyMjFDMC43OTQ1MSAxOC45MTM5IDAuNzk0NTEgMTcuNDQxMyAxLjcxMDAyIDE2LjUzMzFMMy43MzYzIDE0LjUyMjlMMS41MjY0OCAxMi4zMzA2QzAuNjEwOTY2IDExLjQyMjMgMC42MTA5NjYgOS45NDk4IDEuNTI2NDggOS4wNDE1M0w5LjI2MjE5IDEuMzY3MjJaTTExLjQ3MjQgMi40NjM1N0MxMS4xNjcyIDIuMTYwODIgMTAuNjcyNCAyLjE2MDgyIDEwLjM2NzIgMi40NjM1N0w0Ljg0MTQ1IDcuOTQ1NTZMMTMuNjgyMyAxNi43MTYzTDE5LjIwODEgMTEuMjM0MkMxOS41MTMzIDEwLjkzMTUgMTkuNTEzMyAxMC40NDA2IDE5LjIwODEgMTAuMTM3OUwxNS4zMzk5IDYuMzAwMzJMMTQuMDUwNSA3LjU3OTRDMTMuNzQ1MyA3Ljg4MjE0IDEzLjI1MDYgNy44ODIxNCAxMi45NDU1IDcuNTc5NEMxMi42NDAzIDcuMjc2NjQgMTIuNjQwMyA2Ljc4NTc5IDEyLjk0NTUgNi40ODMwNUwxNC4yMzQ3IDUuMjAzOTdMMTMuMTI5OSA0LjEwNzg2TDkuOTk4NzIgNy4yMTQxOEM5LjY5MzU0IDcuNTE2OTIgOS4xOTg3MyA3LjUxNjkyIDguODkzNTYgNy4yMTQxOEM4LjU4ODM4IDYuOTExNDMgOC41ODgzOCA2LjQyMDU4IDguODkzNTYgNi4xMTc4M0wxMi4wMjQ3IDMuMDExNTFMMTEuNDcyNCAyLjQ2MzU3Wk0xMi41NzcxIDE3LjgxMjVMMy43MzYzMyA5LjA0MTkxTDIuNjMxNiAxMC4xMzc5QzIuMzI2NDIgMTAuNDQwNiAyLjMyNjQyIDEwLjkzMTUgMi42MzE2IDExLjIzNDJMMTAuMzY3MiAxOC45MDg1QzEwLjY3MjQgMTkuMjExMyAxMS4xNjcyIDE5LjIxMTMgMTEuNDcyNCAxOC45MDg1TDEyLjU3NzEgMTcuODEyNVpNNC44NDEzMiAxNS42MTkyTDIuODE1MTQgMTcuNjI5NEMyLjUwOTk3IDE3LjkzMjEgMi41MDk5NyAxOC40MjMgMi44MTUxNCAxOC43MjU4QzMuMTIwMzEgMTkuMDI4NSAzLjYxNTA5IDE5LjAyODUgMy45MjAyNiAxOC43MjU4TDUuOTQ2NDQgMTYuNzE1Nkw0Ljg0MTMyIDE1LjYxOTJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzQ3NTQ2N1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjQzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTUgdGFnLWNsYXNzXCI+IEhvdXNlIEtlZXBpbmc8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB4LTAgaW1nLXRyYWZmaWMgbXQtMyBoaWdoLTQwMHB4IHNjcm9sbC15XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBib3JkZXItZ3JheSBteC0yIHAtMiBtdC01XCIgKm5nRm9yPVwibGV0IG9iaiBvZiByZW1haW5pbmdJbWFnZUFycmF5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxpbnB1dCAqbmdJZj1cInNlbGVjdGVkUmFkaW9UeXBlID09PSAnZHVwbGljYXRlJ1wiIHR5cGU9XCJjaGVja2JveFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm9iai5zZWxlY3RlZFwiIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgYWJzb2x1dGUgZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25JbWFnZUNoZWNrYm94Q2hhbmdlKG9iaiwgJ2R1cGxpY2F0ZScpXCIgLz4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAqbmdJZj1cInNlbGVjdGVkUmFkaW9UeXBlID09PSAnZHVwbGljYXRlJ1wiXHJcbiAgdHlwZT1cImNoZWNrYm94XCJcclxuICBbY2hlY2tlZF09XCJvYmouc2VsZWN0ZWRcIlxyXG4gIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgYWJzb2x1dGUgZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgKGNoYW5nZSk9XCJvbkltYWdlQ2hlY2tib3hDaGFuZ2UoJGV2ZW50LCBvYmosICdkdXBsaWNhdGUnKVwiXHJcbiAgW2Rpc2FibGVkXT1cIm9iai5kdXBsaWNhdGVJbWFnZVBhdGg/Lmxlbmd0aCA+IDBcIlxyXG4vPlxyXG5cclxuPGltZ1xyXG4gIGNsYXNzPVwiaW1nLXNyY1wiXHJcbiAgW25nQ2xhc3NdPVwic2VsZWN0ZWRSYWRpb1R5cGUgIT09ICdkdXBsaWNhdGUnID8gJ2N1cnNvci1wb2ludGVyJyA6ICdjdXJzb3ItcG9pbnRlcidcIlxyXG4gIFtzcmNdPVwiaW1hZ2VVcmwgKyBvYmo/LmZpbGVQYXRoXCJcclxuICAoZXJyb3IpPVwib2JqLmZpbGVQYXRoID0gbnVsbFwiXHJcbiAgYWx0PVwiXCJcclxuICAoY2xpY2spPVwiaGFuZGxlSW1hZ2VDbGljaygkZXZlbnQsIG9iailcIlxyXG4vPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW9iaj8uZmlsZVBhdGhcIiBjbGFzcz1cIm5vLXByZXZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjNcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjMgMjBcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiR3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJWZWN0b3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02LjUgNi4zMjIyN0g2LjUxTTE2LjI1IDkuMzIyMjdIMjEuNUwxOCAxNi4zMjIzTDE0LjkxIDEyLjAwMjNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJWZWN0b3JfMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEuNSAxNi4zMjI5SDUuMjZDNS42MzI3MyAxNi4zMjU1IDUuOTk4NzcgMTYuMjIzOSA2LjMxNjgyIDE2LjAyOTVDNi42MzQ4NyAxNS44MzUyIDYuODkyMjggMTUuNTU1OCA3LjA2IDE1LjIyMjlMOC41IDEyLjMyMjlNMS41IDE4LjMyMjlWMTQuMzIyOU0xNy41IDYuODIyOTFMMTMuNSAxNC44MjI5TDMuMTEgOS42MjI5MUMyLjQyMDMzIDkuMjc1NTMgMS44OTYzNSA4LjY2OTEgMS42NTI3MiA3LjkzNjMyQzEuNDA5MDkgNy4yMDM1NCAxLjQ2NTY0IDYuNDA0MSAxLjgxIDUuNzEyOTFMMy4xOSAyLjkyMjkxQzMuMzYyIDIuNTgwMTQgMy41OTk4NCAyLjI3NDYgMy44ODk5NCAyLjAyMzc1QzQuMTgwMDMgMS43NzI5IDQuNTE2NyAxLjU4MTY1IDQuODgwNzIgMS40NjA5M0M1LjI0NDc0IDEuMzQwMjEgNS42Mjg5NyAxLjI5MjM5IDYuMDExNDcgMS4zMjAxOEM2LjM5Mzk4IDEuMzQ3OTcgNi43NjcyNiAxLjQ1MDg0IDcuMTEgMS42MjI5MUwxNy41IDYuODIyOTFaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZGVyIG1iLTUgdGV4dC1jZW50ZXJcIj5QcmV2aWV3IG5vdCBhdmFpbGFibGU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGVzY3JpcHRpb24gbWItNSB0ZXh0LWNlbnRlclwiPlRoZSBzZWxlY3RlZCBjYW1lcmEgaXMgbm90IGF2YWlsYWJsZSBhdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb21lbnQuPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMiBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTIgaW1nLWRvYy10aW1lXCI+VGFuZ28gSUQgOiB7e29iaj8udGVtcGxkID8gb2JqPy50ZW1wbGQgOiBvYmo/LnRlbXBJZH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nLWRvYy12YWx1ZVwiPkVudHJ5IFRpbWUgOiB7e29iaj8uZW50cnlUbWUgPyBvYmo/LmVudHJ5VG1lIDpvYmo/LmVudHJ5VGltZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTUgdGV4dC1lbmQgcHktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J25vbi10YWdnaW5nJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cIllldCB0byB0YWcgdGhlIGN1c3RvbWVyXCIgcGxhY2VtZW50PVwidG9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOVwiIGhlaWdodD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOSAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMDIzNDQgNS42MjVINi4wMzA5NE0xNi4yMTU5IDEwLjQzMjVMMTAuODM4NCAxNS44MUMxMC42OTkxIDE1Ljk0OTUgMTAuNTMzNyAxNi4wNjAxIDEwLjM1MTYgMTYuMTM1NkMxMC4xNjk1IDE2LjIxMTEgOS45NzQzMSAxNi4yNDk5IDkuNzc3MTkgMTYuMjQ5OUM5LjU4MDA2IDE2LjI0OTkgOS4zODQ4NyAxNi4yMTExIDkuMjAyNzggMTYuMTM1NkM5LjAyMDY4IDE2LjA2MDEgOC44NTUyNSAxNS45NDk1IDguNzE1OTQgMTUuODFMMi4yNzM0NCA5LjM3NVYxLjg3NUg5Ljc3MzQ0TDE2LjIxNTkgOC4zMTc1QzE2LjQ5NTMgOC41OTg1NCAxNi42NTIxIDguOTc4NzIgMTYuNjUyMSA5LjM3NUMxNi42NTIxIDkuNzcxMjggMTYuNDk1MyAxMC4xNTE1IDE2LjIxNTkgMTAuNDMyNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdkdXBsaWNhdGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzNSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00LjE2Nzk3IDEzLjE4NTlIMy4zMzQ2NEMyLjg5MjYxIDEzLjE4NTkgMi40Njg2OCAxMy4wMTAzIDIuMTU2MTIgMTIuNjk3N0MxLjg0MzU2IDEyLjM4NTIgMS42Njc5NyAxMS45NjEyIDEuNjY3OTcgMTEuNTE5MlY0LjAxOTIxQzEuNjY3OTcgMy41NzcxOCAxLjg0MzU2IDMuMTUzMjYgMi4xNTYxMiAyLjg0MDY5QzIuNDY4NjggMi41MjgxMyAyLjg5MjYxIDIuMzUyNTQgMy4zMzQ2NCAyLjM1MjU0SDEwLjgzNDZDMTEuMjc2NyAyLjM1MjU0IDExLjcwMDYgMi41MjgxMyAxMi4wMTMxIDIuODQwNjlDMTIuMzI1NyAzLjE1MzI2IDEyLjUwMTMgMy41NzcxOCAxMi41MDEzIDQuMDE5MjFWNC44NTI1NE05LjE2Nzk3IDguMTg1ODdIMTYuNjY4QzE3LjU4ODQgOC4xODU4NyAxOC4zMzQ2IDguOTMyMDYgMTguMzM0NiA5Ljg1MjU0VjE3LjM1MjVDMTguMzM0NiAxOC4yNzMgMTcuNTg4NCAxOS4wMTkyIDE2LjY2OCAxOS4wMTkySDkuMTY3OTdDOC4yNDc0OSAxOS4wMTkyIDcuNTAxMyAxOC4yNzMgNy41MDEzIDE3LjM1MjVWOS44NTI1NEM3LjUwMTMgOC45MzIwNiA4LjI0NzQ5IDguMTg1ODcgOS4xNjc5NyA4LjE4NTg3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdlbXBsb3llZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjE2NTQgMTguMTg2VjE2LjUxOTRDMTQuMTY1NCAxNS42MzUzIDEzLjgxNDIgMTQuNzg3NSAxMy4xODkxIDE0LjE2MjNDMTIuNTYzOSAxMy41MzcyIDExLjcxNjEgMTMuMTg2IDEwLjgzMiAxMy4xODZINC4xNjUzNkMzLjI4MTMxIDEzLjE4NiAyLjQzMzQ2IDEzLjUzNzIgMS44MDgzNCAxNC4xNjIzQzEuMTgzMjIgMTQuNzg3NSAwLjgzMjAzMSAxNS42MzUzIDAuODMyMDMxIDE2LjUxOTRWMTguMTg2TTE5LjE2NTQgMTguMTg2VjE2LjUxOTRDMTkuMTY0OCAxNS43ODA4IDE4LjkxOSAxNS4wNjMzIDE4LjQ2NjUgMTQuNDc5NkMxOC4wMTQgMTMuODk1OSAxNy4zODA1IDEzLjQ3OSAxNi42NjU0IDEzLjI5NDRNMTMuMzMyIDMuMjk0MzdDMTQuMDQ5IDMuNDc3OTUgMTQuNjg0NiAzLjg5NDk1IDE1LjEzODQgNC40Nzk2M0MxNS41OTIyIDUuMDY0MyAxNS44Mzg2IDUuNzgzMzkgMTUuODM4NiA2LjUyMzU0QzE1LjgzODYgNy4yNjM2OCAxNS41OTIyIDcuOTgyNzcgMTUuMTM4NCA4LjU2NzQ0QzE0LjY4NDYgOS4xNTIxMiAxNC4wNDkgOS41NjkxMiAxMy4zMzIgOS43NTI3TTEwLjgzMiA2LjUxOTM3QzEwLjgzMiA4LjM2MDMyIDkuMzM5NjUgOS44NTI3IDcuNDk4NyA5Ljg1MjdDNS42NTc3NSA5Ljg1MjcgNC4xNjUzNiA4LjM2MDMyIDQuMTY1MzYgNi41MTkzN0M0LjE2NTM2IDQuNjc4NDIgNS42NTc3NSAzLjE4NjA0IDcuNDk4NyAzLjE4NjA0QzkuMzM5NjUgMy4xODYwNCAxMC44MzIgNC42Nzg0MiAxMC44MzIgNi41MTkzN1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0naG91c2Uta2VlcGluZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIxIDIxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjQzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS4yNjIxOSAxLjM2NzIyQzEwLjE3NzcgMC40NTg5NzQgMTEuNjYyIDAuNDU4OTc0IDEyLjU3NzYgMS4zNjcyMkwyMC4zMTMzIDkuMDQxNTNDMjEuMjI4NyA5Ljk0OTggMjEuMjI4NyAxMS40MjIzIDIwLjMxMzMgMTIuMzMwNkwxMi41Nzc2IDIwLjAwNDlDMTEuNjYyIDIwLjkxMzEgMTAuMTc3NyAyMC45MTMxIDkuMjYyMTkgMjAuMDA0OUw3LjA1MTY2IDE3LjgxMTlMNS4wMjUzOCAxOS44MjIxQzQuMTA5ODcgMjAuNzMwMyAyLjYyNTUzIDIwLjczMDMgMS43MTAwMiAxOS44MjIxQzAuNzk0NTEgMTguOTEzOSAwLjc5NDUxIDE3LjQ0MTMgMS43MTAwMiAxNi41MzMxTDMuNzM2MyAxNC41MjI5TDEuNTI2NDggMTIuMzMwNkMwLjYxMDk2NiAxMS40MjIzIDAuNjEwOTY2IDkuOTQ5OCAxLjUyNjQ4IDkuMDQxNTNMOS4yNjIxOSAxLjM2NzIyWk0xMS40NzI0IDIuNDYzNTdDMTEuMTY3MiAyLjE2MDgyIDEwLjY3MjQgMi4xNjA4MiAxMC4zNjcyIDIuNDYzNTdMNC44NDE0NSA3Ljk0NTU2TDEzLjY4MjMgMTYuNzE2M0wxOS4yMDgxIDExLjIzNDJDMTkuNTEzMyAxMC45MzE1IDE5LjUxMzMgMTAuNDQwNiAxOS4yMDgxIDEwLjEzNzlMMTUuMzM5OSA2LjMwMDMyTDE0LjA1MDUgNy41Nzk0QzEzLjc0NTMgNy44ODIxNCAxMy4yNTA2IDcuODgyMTQgMTIuOTQ1NSA3LjU3OTRDMTIuNjQwMyA3LjI3NjY0IDEyLjY0MDMgNi43ODU3OSAxMi45NDU1IDYuNDgzMDVMMTQuMjM0NyA1LjIwMzk3TDEzLjEyOTkgNC4xMDc4Nkw5Ljk5ODcyIDcuMjE0MThDOS42OTM1NCA3LjUxNjkyIDkuMTk4NzMgNy41MTY5MiA4Ljg5MzU2IDcuMjE0MThDOC41ODgzOCA2LjkxMTQzIDguNTg4MzggNi40MjA1OCA4Ljg5MzU2IDYuMTE3ODNMMTIuMDI0NyAzLjAxMTUxTDExLjQ3MjQgMi40NjM1N1pNMTIuNTc3MSAxNy44MTI1TDMuNzM2MzMgOS4wNDE5MUwyLjYzMTYgMTAuMTM3OUMyLjMyNjQyIDEwLjQ0MDYgMi4zMjY0MiAxMC45MzE1IDIuNjMxNiAxMS4yMzQyTDEwLjM2NzIgMTguOTA4NUMxMC42NzI0IDE5LjIxMTMgMTEuMTY3MiAxOS4yMTEzIDExLjQ3MjQgMTguOTA4NUwxMi41NzcxIDE3LjgxMjVaTTQuODQxMzIgMTUuNjE5MkwyLjgxNTE0IDE3LjYyOTRDMi41MDk5NyAxNy45MzIxIDIuNTA5OTcgMTguNDIzIDIuODE1MTQgMTguNzI1OEMzLjEyMDMxIDE5LjAyODUgMy42MTUwOSAxOS4wMjg1IDMuOTIwMjYgMTguNzI1OEw1Ljk0NjQ0IDE2LjcxNTZMNC44NDEzMiAxNS42MTkyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM0NzU0NjdcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDY0M1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L3NlY3Rpb24+XHJcbjwvZGl2PlxyXG5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjem9vbVBvcHVwIGxldC1tb2RlbD5cclxuICAgIDxkaXYgY2xhc3M9XCJwLTQgbS00XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBib3JkZXItMCBwLTAgdy0xMDAgZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtc3RhcnRcIj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdub24tdGFnZ2luZydcIiBjbGFzcz1cIm15LTNcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiB2aWV3Qm94PVwiMCAwIDQwIDQwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiByeD1cIjIwXCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjA4OF85ODMzNylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjkuMTY5MyAxMy4zMzMzVjE4LjMzMzNNMjkuMTY5MyAxOC4zMzMzSDI0LjE2OTNNMjkuMTY5MyAxOC4zMzMzTDI1LjMwMjYgMTQuN0MyNC40MDcgMTMuODAzOSAyMy4yOTkgMTMuMTQ5MyAyMi4wODE5IDEyLjc5NzNDMjAuODY0OSAxMi40NDUzIDE5LjU3ODUgMTIuNDA3MyAxOC4zNDI4IDEyLjY4NjlDMTcuMTA3MiAxMi45NjY1IDE1Ljk2MjQgMTMuNTU0NSAxNS4wMTU1IDE0LjM5NjJDMTQuMDY4NSAxNS4yMzc4IDEzLjM1MDIgMTYuMzA1NiAxMi45Mjc2IDE3LjVNMTAuODM1OSAyNi42NjY2VjIxLjY2NjZNMTAuODM1OSAyMS42NjY2SDE1LjgzNTlNMTAuODM1OSAyMS42NjY2TDE0LjcwMjYgMjUuM0MxNS41OTgyIDI2LjE5NjEgMTYuNzA2MiAyNi44NTA2IDE3LjkyMzMgMjcuMjAyN0MxOS4xNDAzIDI3LjU1NDcgMjAuNDI2NyAyNy41OTI3IDIxLjY2MjQgMjcuMzEzMUMyMi44OTggMjcuMDMzNSAyNC4wNDI4IDI2LjQ0NTUgMjQuOTg5NyAyNS42MDM4QzI1LjkzNjcgMjQuNzYyMSAyNi42NTUgMjMuNjk0MyAyNy4wNzc2IDIyLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjA4OF85ODMzN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDEwIDEwKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPCEtLSBIZWFkaW5nIC0tPlxyXG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZSBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ2VtcGxveWVlJ1wiPlRhZ2dpbmcgYXMgZW1wbG95ZWUvc3RhZmYgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdkdXBsaWNhdGUnXCI+VGFnZ2luZyBhcyBkdXBsaWNhdGVzIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnaG91c2Uta2VlcGluZydcIj5UYWdnaW5nIGFzIGhvdXNlIGtlZXBpbmcgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdub24tdGFnZ2luZydcIj5DbGVhciBkdXBsaWNhdGVzPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2g1PlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnZW1wbG95ZWUnXCI+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHRhZyB0aGlzIGFzIGVtcGxveWVlL3N0YWZmPzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnZHVwbGljYXRlJ1wiPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byB0YWcgdGhpcyBhcyBkdXBsaWNhdGVzPyA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ2hvdXNlLWtlZXBpbmcnXCI+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHRhZyB0aGlzIGFzIGhvdXNlIGtlZXBpbmc/IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnbm9uLXRhZ2dpbmcnXCI+VGhpcyB3aWxsIHJlbW92ZSB0YWdnZWQgZHVwbGljYXRlcyBhbmQgbW92ZSB0aGVtIHRvXHJcbiAgICAgICAgICAgICAgICAgICAgJ05vbi10YWcnLjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgIDwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIG10LTUgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBtZS0yXCIgKGNsaWNrKT1cImNhbmNlbFN1Ym1pdCgpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJwb3B1cFR5cGUgIT09ICdub24tdGFnZ2luZydcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJzdWJtaXRWYWx1ZShwb3B1cFR5cGUpXCI+XHJcbiAgICAgICAgICAgICAgICBZZXMsIFRhZ1xyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ25vbi10YWdnaW5nJ1wiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cInN1Ym1pdFZhbHVlKHBvcHVwVHlwZSlcIj5cclxuICAgICAgICAgICAgICAgIFllcywgY2xlYXJcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcblxyXG48bmctdGVtcGxhdGUgI3JhaXNlZFBvcHVwIGxldC1tb2RlbD5cclxuICAgIDxkaXYgY2xhc3M9XCJwLTQgbS00XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBib3JkZXItMCBwLTAgdy0xMDAgZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtc3RhcnRcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteS0zXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgdmlld0JveD1cIjAgMCA0MCA0MFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgcng9XCIyMFwiIGZpbGw9XCIjREFGMUZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIxLjI1MSAxMS4wODA2QzIxLjc0MDUgMTEuMDY5OSAyMi4yMTUzIDExLjI0ODcgMjIuNTc2MiAxMS41Nzk2TDIzLjQ5MjIgMTIuNDIwNEMyMy44MDg5IDEyLjcwOTcgMjMuODkzIDEzLjEwMTcgMjMuODY1MiAxMy40MjYzVjEzLjQyNzJDMjMuODM2IDEzLjc0NzggMjMuNjk1NCAxNC4wNTkyIDIzLjQ3ODUgMTQuMjk0NEMyMy4zNjk5IDE0LjQxMyAyMy4yODY1IDE0LjU1MjUgMjMuMjMxNCAxNC43MDM2QzIzLjE3NjQgMTQuODU0OCAyMy4xNTEyIDE1LjAxNTUgMjMuMTU4MiAxNS4xNzYzQzIzLjE2NTIgMTUuMzM3IDIzLjIwMzUgMTUuNDk1MyAyMy4yNzE1IDE1LjY0MTFDMjMuMzM5NCAxNS43ODY5IDIzLjQzNjIgMTUuOTE3MiAyMy41NTQ3IDE2LjAyNTlDMjMuNjczMyAxNi4xMzQ2IDIzLjgxMTcgMTYuMjE5OCAyMy45NjI5IDE2LjI3NDlDMjQuMTE0MSAxNi4zMyAyNC4yNzQ4IDE2LjM1NDEgMjQuNDM1NSAxNi4zNDcyQzI0LjU5NjEgMTYuMzQwMiAyNC43NTM3IDE2LjMwMTcgMjQuODk5NCAxNi4yMzM5QzI1LjAwODkgMTYuMTgyOSAyNS4xMTA2IDE2LjExNiAyNS4yMDAyIDE2LjAzNTZMMjUuMzcwMSAxNS44NjU3QzI1LjU3NTkgMTUuNjc0OCAyNS44Mzg1IDE1LjU0MDggMjYuMTE1MiAxNS40OTA3QzI2LjI5NzIgMTUuNDU0NiAyNi40ODUgMTUuNDYxNyAyNi42NjQxIDE1LjUxMDNDMjYuODQzOSAxNS41NTkxIDI3LjAxMDMgMTUuNjQ5IDI3LjE0OTQgMTUuNzcyOUwyNy4xNTE0IDE1Ljc3NDlMMjguMjU5OCAxNi43OTA1QzI4LjQ0NSAxNi45NjA1IDI4LjU5NDggMTcuMTY1OCAyOC43MDAyIDE3LjM5NEMyOC44MDU2IDE3LjYyMjMgMjguODY0OCAxNy44Njk0IDI4Ljg3NCAxOC4xMjA2QzI4Ljg4MzIgMTguMzcyIDI4Ljg0MjMgMTguNjIzNCAyOC43NTM5IDE4Ljg1ODlDMjguNjY1NSAxOS4wOTQxIDI4LjUzMTYgMTkuMzA5NiAyOC4zNTk0IDE5LjQ5MjdMMjAuMTExMyAyOC4yNTgzQzE5LjkzNyAyOC40NDM0IDE5LjcyNjggMjguNTkxMiAxOS40OTQxIDI4LjY5MzhDMTkuMjYxNCAyOC43OTY1IDE5LjAxMDIgMjguODUyMiAxOC43NTU5IDI4Ljg1NkMxOC41MDE2IDI4Ljg1OTcgMTguMjQ5MyAyOC44MTE5IDE4LjAxMzcgMjguNzE2M0MxNy43Nzc5IDI4LjYyMDYgMTcuNTYzNiAyOC40Nzg0IDE3LjM4MzggMjguMjk4M0wxNi4yNTM5IDI3LjE2ODVDMTUuNzUxMSAyNi42NjU2IDE1Ljg4MzIgMjUuOTU1MiAxNi4xNTE0IDI1LjU1NDJMMTYuMjA2MSAyNS40NjQ0QzE2LjMyNDEgMjUuMjQ4NiAxNi4zNzQyIDI1LjAwMDggMTYuMzQ5NiAyNC43NTQ0QzE2LjMyMTQgMjQuNDczMSAxNi4xOTcgMjQuMjEwMiAxNS45OTcxIDI0LjAxMDNDMTUuNzk3MSAyMy44MTAzIDE1LjUzNDMgMjMuNjg1OSAxNS4yNTI5IDIzLjY1NzdDMTQuOTcxNSAyMy42Mjk3IDE0LjY4ODcgMjMuNjk5NSAxNC40NTMxIDIzLjg1NkgxNC40NTIxQzE0LjA0OTQgMjQuMTIyMiAxMy4zNDA3IDI0LjI1NTIgMTIuODM3OSAyMy43NTE1TDExLjY3OTcgMjIuNTkzM0MxMS41MDM0IDIyLjQxNjkgMTEuMzY0IDIyLjIwNzQgMTEuMjY4NiAyMS45NzcxQzExLjE3MzEgMjEuNzQ2NyAxMS4xMjMxIDIxLjQ5OTkgMTEuMTIzIDIxLjI1MDVDMTEuMTIzIDIxLjAwMSAxMS4xNzMxIDIwLjc1MzUgMTEuMjY4NiAyMC41MjI5QzExLjM2NCAyMC4yOTI2IDExLjUwMzQgMjAuMDgzMSAxMS42Nzk3IDE5LjkwNjdMMTkuOTQ5MiAxMS42MzYyQzIwLjI5NTQgMTEuMjkwMiAyMC43NjE2IDExLjA5MTIgMjEuMjUxIDExLjA4MDZaTTIxLjI3ODMgMTIuMzgwNEMyMS4xMjM3IDEyLjM4MzggMjAuOTc2NSAxMi40NDY4IDIwLjg2NzIgMTIuNTU2MkwxMi41OTY3IDIwLjgyNTdDMTIuNTQwOSAyMC44ODE0IDEyLjQ5NyAyMC45NDgyIDEyLjQ2NjggMjEuMDIxQzEyLjQzNjcgMjEuMDkzOCAxMi40MjA5IDIxLjE3MTcgMTIuNDIwOSAyMS4yNTA1QzEyLjQyMDkgMjEuMzI5MiAxMi40MzY3IDIxLjQwNzMgMTIuNDY2OCAyMS40OEMxMi40OTcgMjEuNTUyOCAxMi41NDEgMjEuNjE5NiAxMi41OTY3IDIxLjY3NTNMMTMuNzA2MSAyMi43ODM3TDEzLjczMTQgMjIuNzcyQzE0LjIxNjkgMjIuNDQ4NSAxNC43OTkzIDIyLjMwMzUgMTUuMzc5OSAyMi4zNjA4QzE1Ljk2MDggMjIuNDE4MyAxNi41MDQyIDIyLjY3NDcgMTYuOTE3IDIzLjA4NzRDMTcuMzI5OCAyMy41MDAyIDE3LjU4NyAyNC4wNDM2IDE3LjY0NDUgMjQuNjI0NUMxNy43MDIgMjUuMjA1NSAxNy41NTY1IDI1Ljc4OTIgMTcuMjMyNCAyNi4yNzQ5TDE3LjIzMDUgMjYuMjc1OUMxNy4yMjYxIDI2LjI4MjIgMTcuMjIyNiAyNi4yODkzIDE3LjIxOTcgMjYuMjk2NEwxOC4zMDE4IDI3LjM4MDRDMTguMzU4NSAyNy40MzcyIDE4LjQyNjYgMjcuNDgyIDE4LjUwMSAyNy41MTIyQzE4LjU3NTUgMjcuNTQyNSAxOC42NTU5IDI3LjU1NzQgMTguNzM2MyAyNy41NTYyQzE4LjgxNjYgMjcuNTU0OSAxOC44OTYzIDI3LjUzNzggMTguOTY5NyAyNy41MDU0QzE5LjA0MyAyNy40NzI5IDE5LjEwOTEgMjcuNDI2MSAxOS4xNjQxIDI3LjM2NzdMMjcuNDEzMSAxOC42MDIxQzI3LjQ2NzMgMTguNTQ0MiAyNy41MDkzIDE4LjQ3NjEgMjcuNTM3MSAxOC40MDE5QzI3LjU2NDkgMTguMzI3NiAyNy41NzgxIDE4LjI0ODcgMjcuNTc1MiAxOC4xNjk0QzI3LjU3MjIgMTguMDkwMiAyNy41NTM4IDE4LjAxMTkgMjcuNTIwNSAxNy45Mzk5QzI3LjQ4NzIgMTcuODY3OSAyNy40Mzk0IDE3LjgwMzIgMjcuMzgwOSAxNy43NDk1TDI2LjMyMjMgMTYuNzc3OEMyNi4yOTI1IDE2Ljc4ODUgMjYuMjY0OCAxNi44MDUzIDI2LjI0MzIgMTYuODI4NkMyNi4wMjE3IDE3LjA3ODggMjUuNzUyOSAxNy4yODI3IDI1LjQ1MjEgMTcuNDI4MkMyNS4xNSAxNy41NzQzIDI0LjgyMTQgMTcuNjU4NSAyNC40ODYzIDE3LjY3NjNDMjQuMTUxMSAxNy42OTQgMjMuODE1IDE3LjY0NTIgMjMuNDk5IDE3LjUzMTdDMjMuMTgzMiAxNy40MTgzIDIyLjg5MjggMTcuMjQyOSAyMi42NDU1IDE3LjAxNjFDMjIuMzk4MiAxNi43ODkzIDIyLjE5ODggMTYuNTE1MyAyMi4wNTg2IDE2LjIxMDRDMjEuOTE4MyAxNS45MDU1IDIxLjg0MDQgMTUuNTc1MiAyMS44MjkxIDE1LjIzOTdDMjEuODE3OCAxNC45MDQzIDIxLjg3MzcgMTQuNTcgMjEuOTkzMiAxNC4yNTYzQzIyLjExMjEgMTMuOTQ0MiAyMi4yOTE1IDEzLjY1ODcgMjIuNTIxNSAxMy40MTY1TDIyLjU1NDcgMTMuMzY1N0MyMi41NTk0IDEzLjM1NTIgMjIuNTYwNyAxMy4zNDM3IDIyLjU2MzUgMTMuMzMyNUwyMS42OTczIDEyLjUzODZWMTIuNTM3NkMyMS41ODMzIDEyLjQzMzEgMjEuNDMyOSAxMi4zNzcgMjEuMjc4MyAxMi4zODA0WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMDBBM0ZGXCIgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjAuM1wiIC8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8IS0tIEhlYWRpbmcgLS0+XHJcbiAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPlJhaXNlIHRpY2tldHMgZm9yIHRoZSBmb2xsb3dpbmc8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICA8L2g1PlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPlJhaXNpbmcgYSB0aWNrZXQgZm9yIGZvb3RmYWxsIGNvdW50IGlzc3Vlcy4gTWFrZSBzdXJlIGFsbCByZWNvcmRzIGFyZSBpZGVudGlmaWVkIGZvclxyXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb24uPC9zcGFuPlxyXG5cclxuXHJcbiAgICAgICAgICAgIDwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBteS00XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIGJvcmRlci0xIHJvdW5kZWQgcC0zIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIGZzLTUgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e3RlbXBSYWlzZWRQYXlsb2FkPy5kdXBsaWNhdGVDb3VudCA/IHRlbXBSYWlzZWRQYXlsb2FkPy5kdXBsaWNhdGVDb3VudCA6JzAnfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgdGV4dC1tdXRlZCBmcy02IG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgRHVwbGljYXRlc1xyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IG15LTRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgYm9yZGVyLTEgcm91bmRlZCBwLTMgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgZnMtNSBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7dGVtcFJhaXNlZFBheWxvYWQ/LmVtcGxveWVlQ291bnQgPyB0ZW1wUmFpc2VkUGF5bG9hZD8uZW1wbG95ZWVDb3VudDonMCcgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgdGV4dC1tdXRlZCBmcy02IG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgRW1wbG95ZWVcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBteS00XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIGJvcmRlci0xIHJvdW5kZWQgcC0zIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIGZzLTUgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e3RlbXBSYWlzZWRQYXlsb2FkPy5ob3VzZUtlZXBpbmdDb3VudCA/IHRlbXBSYWlzZWRQYXlsb2FkPy5ob3VzZUtlZXBpbmdDb3VudCA6JzAnfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgdGV4dC1tdXRlZCBmcy02IG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgSG91c2UgS2VlcGluZ1xyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIExhYmVsIGFuZCBUZXh0YXJlYSAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktM1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+RGVzY3JpcHRpb24gKE9wdGlvbmFsKTwvbGFiZWw+XHJcbiAgICAgICAgICAgIDx0ZXh0YXJlYSByb3dzPVwiM1wiIFsobmdNb2RlbCldPVwiY29tbWVudFRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIGRlc2NyaXB0aW9uXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgbXQtNSBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSB3LTUwIG1lLTJcIiAoY2xpY2spPVwiY2FuY2VsUmFzaWVkKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTUwXCIgKGNsaWNrKT1cInN1Ym1pdFJhaXNlZCgpXCI+XHJcbiAgICAgICAgICAgICAgICBSYWlzZSBUaWNrZXRcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
802
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1nLXJ2cHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmFmZmljL3NyYy9saWIvY29tcG9uZW50cy9pbWctcnZwcy9pbWctcnZwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYWZmaWMvc3JjL2xpYi9jb21wb25lbnRzL2ltZy1ydnBzL2ltZy1ydnBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBR1MsU0FBUyxFQUM1QixNQUFNLGVBQWUsQ0FBQztBQUt2QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFPOUMsTUFBTSxPQUFPLGdCQUFnQjtJQU9qQjtJQUNEO0lBQ0M7SUFDQTtJQUNBO0lBQ0E7SUFYVixVQUFVLENBQU07SUFDaEIsWUFBWSxDQUFNO0lBQ2xCLE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDeEIsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUNmLFNBQVMsQ0FBTTtJQUNmLFlBQ1UsT0FBdUIsRUFDeEIsRUFBc0IsRUFDckIsRUFBcUIsRUFDckIsWUFBc0IsRUFDdEIsS0FBbUIsRUFDbkIsV0FBK0I7UUFML0IsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDeEIsT0FBRSxHQUFGLEVBQUUsQ0FBb0I7UUFDckIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsaUJBQVksR0FBWixZQUFZLENBQVU7UUFDdEIsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNuQixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7SUFDdEMsQ0FBQztJQUNhLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQzFDLFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFDRCxtQkFBbUIsR0FBRyxJQUFJLENBQUM7SUFDM0IsZUFBZTtRQUNiLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUN2RCxDQUFDO0lBQ0QsUUFBUTtRQUNOLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBQ0QsU0FBUztRQUNQLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYzthQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDakQsU0FBUyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDdkIsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxNQUFNLEtBQUssSUFBSSxFQUFFO2dCQUMxQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU07cUJBQ3hDLE1BQU0sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztxQkFDckMsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3hCLElBQ0UsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxLQUFLLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFDbkU7b0JBQ0EsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO29CQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDakQ7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2lCQUNyQjthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLElBQUksR0FBRSxVQUFVLENBQUM7UUFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUNELFVBQVUsQ0FBVTtJQUNwQixPQUFPLENBQVU7SUFDakIsU0FBUyxDQUFNO0lBQ2YsZ0JBQWdCO1FBQ2QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUNsQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FDN0IsQ0FBQztRQUNGLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxRQUFnQixFQUFFLE1BQWM7UUFDaEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxnQ0FBZ0M7UUFDbEUsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxnQ0FBZ0M7UUFDOUQsTUFBTSxTQUFTLEdBQWEsRUFBRSxDQUFDO1FBRS9CLCtCQUErQjtRQUMvQixJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUU7WUFDbEQsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFFRCxtQ0FBbUM7UUFDbkMsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLE9BQU8sV0FBVyxJQUFJLEdBQUcsRUFBRTtZQUN6QixTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQjtZQUM3RSxXQUFXLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLDhCQUE4QjtTQUMvRTtRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFDRCxZQUFZLENBQU07SUFDbEIsVUFBVSxDQUFNO0lBQ2hCLGFBQWEsQ0FBQyxHQUFRO1FBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUNELFVBQVUsQ0FBTTtJQUNoQixTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ2xCLGlCQUFpQjtJQUNqQixXQUFXLENBQU07SUFDakIsZ0JBQWdCLENBQU07SUFDdEIsWUFBWSxDQUFNO0lBQ2xCLGVBQWUsQ0FBTTtJQUNyQixXQUFXLEdBQVEsQ0FBQyxDQUFDO0lBQ3JCLFlBQVksQ0FBTTtJQUNsQixXQUFXLENBQVU7SUFDckIsU0FBUyxDQUFDLEtBQVUsRUFBRSxHQUFRO1FBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO1FBQ3RCLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLE9BQU8sRUFBRSxpQkFBaUI7WUFDN0IsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkQsRUFBRSxTQUFTLENBQUMsQ0FBQyxTQUFjLEVBQUUsRUFBRTtZQUM3QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztZQUMzQixJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNkLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNiLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUNyQjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztnQkFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7YUFDeEI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxTQUFTLEdBQU0sRUFBRSxDQUFDO0lBQ2xCLFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxHQUFFLEVBQUUsQ0FBQztRQUNuQixNQUFNLE9BQU8sR0FDWCxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDL0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDWCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsV0FBVzthQUNiLFdBQVcsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDO2FBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQy9CLEVBQUUsU0FBUyxDQUFDO1lBQ1YsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFO29CQUMzQixJQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTTt3QkFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO29CQUMxQiw4QkFBOEI7aUJBQy9CO3FCQUFNO29CQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO2lCQUNyQjtZQUNILENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFFLENBQUM7U0FDbkIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELFFBQVEsQ0FBTTtJQUNkLGVBQWUsQ0FBTTtJQUNyQixvQkFBb0IsR0FBTSxFQUFFLENBQUM7SUFDN0IsZ0JBQWdCLEdBQUssRUFBRSxDQUFDO0lBQUEsZUFBZSxHQUFNLEVBQUUsQ0FBQztJQUNsRCxpQkFBaUI7UUFDZixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQztRQUNsRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDN0IsT0FBTyxVQUFVO2lCQUNkLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQztpQkFDcEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMseUJBQXlCO1NBQzlDO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBQ0QsU0FBUztRQUNQLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLHlCQUF5QjtRQUN6Qiw2QkFBNkI7UUFDN0Isd0JBQXdCO1FBQ3hCLDRCQUE0QjtRQUM1QiwyQkFBMkI7UUFDekIsTUFBTSxPQUFPLEdBQ1gsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQy9DLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ1gsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUM7UUFDekMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDO1FBQzFCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEtBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzVELE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUUvQixJQUFJLENBQUMsV0FBVzthQUNiLGNBQWMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDO2FBQ2xFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVMsQ0FBQztZQUNULElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsRUFBRTtvQkFFM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDO29CQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDO29CQUM5QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUM7b0JBRTFDLHFEQUFxRDtvQkFDckQsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxZQUFZLElBQUksRUFBRSxDQUFDO29CQUU3RCxrQ0FBa0M7b0JBQ3JDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ2xGLElBQUksQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDckQsU0FBUzt3QkFDVCxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sSUFBSSxDQUFDO3FCQUMxRixDQUFDLENBQUMsQ0FBQztvQkFDSiw4REFBOEQ7b0JBQzlELElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRTt3QkFDM0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO3FCQUNwRDtvQkFFUyxzQ0FBc0M7b0JBQ3RDLElBQUksQ0FBQyxvQkFBb0I7d0JBQ3ZCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUN2QixDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUNwRCxFQUFFLElBQUksSUFBSSxFQUFFLENBQUM7b0JBRWhCLG9CQUFvQjtvQkFDcEIsTUFBTSxlQUFlLEdBQThCO3dCQUNqRCxhQUFhLEVBQUUsQ0FBQzt3QkFDaEIsU0FBUyxFQUFFLENBQUM7d0JBQ1osUUFBUSxFQUFFLENBQUM7d0JBQ1gsZUFBZSxFQUFFLENBQUM7cUJBQ25CLENBQUM7b0JBRUYsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO29CQUNuQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO29CQUUvQixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO3dCQUMvQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFOzRCQUNoQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUNsQyxVQUFVLEVBQUUsQ0FBQzs0QkFFYixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxJQUFJLFNBQVMsQ0FBQzs0QkFFakUsSUFBSSxJQUFJLEtBQUssYUFBYSxFQUFFO2dDQUMxQixlQUFlLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQzs2QkFDbEM7aUNBQU0sSUFBSSxJQUFJLEtBQUssVUFBVSxFQUFFO2dDQUM5QixlQUFlLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQzs2QkFDL0I7aUNBQU0sSUFBSSxJQUFJLEtBQUssZUFBZSxFQUFFO2dDQUNuQyxlQUFlLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQzs2QkFDcEM7NEJBRUQsa0RBQWtEOzRCQUNsRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEVBQUU7Z0NBQzNDLGVBQWUsQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDOzZCQUNqRTt3QkFDSCxDQUFDLENBQUMsQ0FBQztvQkFDTCxDQUFDLENBQUMsQ0FBQztvQkFFTyxJQUFJLENBQUMsU0FBUyxHQUFHO3dCQUNmLGFBQWEsRUFBRSxVQUFVO3dCQUN6QixPQUFPLEVBQUUsZUFBZSxDQUFDLGFBQWEsQ0FBQzt3QkFDdkMsU0FBUyxFQUFFLGVBQWUsQ0FBQyxXQUFXLENBQUM7d0JBQ3ZDLFFBQVEsRUFBRSxlQUFlLENBQUMsVUFBVSxDQUFDO3dCQUNyQyxZQUFZLEVBQUUsZUFBZSxDQUFDLGVBQWUsQ0FBQztxQkFDL0MsQ0FBQztvQkFFRixpREFBaUQ7b0JBQ2pELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDOUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDZCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztvQkFDckIsdUJBQXVCO2lCQUN4QjtxQkFBTTtvQkFDTCxxQkFBcUI7b0JBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO29CQUN0QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO29CQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztvQkFDdkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7b0JBQzFCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRSxFQUFFLENBQUM7b0JBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUUsRUFBRSxDQUFDO29CQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztvQkFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7aUJBQ3BCO1lBQ0gsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNiLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPLElBQUksR0FBRyxDQUFDLE9BQU8sSUFBSSxlQUFlLENBQUM7Z0JBQ2xHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM5QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRSxFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUUsRUFBRSxDQUFDO1lBQ3ZCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsMkJBQTJCLENBQUs7SUFDaEMsU0FBUztRQUNQLE1BQU0sSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUU3QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDNUMsTUFBTSxjQUFjLEdBQUcsYUFBYSxFQUFFLE1BQU0sQ0FBQztRQUU3QyxJQUFJLElBQUksS0FBSyxXQUFXLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsRUFBRTtZQUMzRSw4RUFBOEU7WUFDOUUsTUFBTSxpQkFBaUIsR0FBRyxhQUFhLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUM5RSxHQUFHLEtBQUs7Z0JBQ1IsTUFBTSxFQUFFLGNBQWM7Z0JBQ3RCLFFBQVEsRUFBRSxJQUFJO2FBQ2YsQ0FBQyxDQUFDLENBQUM7WUFFSixxREFBcUQ7WUFDckQsTUFBTSxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUU5RSw2RUFBNkU7WUFDN0UsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pFLE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxhQUFhLENBQUM7Z0JBQzVFLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQyxNQUFNLEtBQUssY0FBYyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDL0YsT0FBTyxZQUFZLElBQUksYUFBYSxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxDQUFDO1lBRUgseURBQXlEO1lBQ3pELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLEdBQUcsaUJBQWlCLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDO1lBRXZFLHFFQUFxRTtZQUNyRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQzVDLE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxXQUFXLENBQUM7Z0JBQ3pFLEdBQUcsQ0FBQyxRQUFRLEdBQUcsV0FBVyxJQUFJLEdBQUcsQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDO1lBQ3ZELENBQUMsQ0FBQyxDQUFDO1lBRUgsK0RBQStEO1lBQy9ELElBQUksQ0FBQywyQkFBMkIsR0FBRyxJQUFJLENBQUMsbUJBQW1CO2lCQUN4RCxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDO2lCQUM1QyxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUVqQyxxRUFBcUU7WUFDckUsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQ2hFLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FDWCxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssV0FBVztnQkFDcEQsR0FBRyxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQ3pCLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNuQixHQUFHLEdBQUc7Z0JBQ04sTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLElBQUksY0FBYztnQkFDcEMsU0FBUyxFQUFFLElBQUk7YUFDaEIsQ0FBQyxDQUFDLENBQUM7U0FFTDthQUFNO1lBQ0wsc0ZBQXNGO1lBQ3RGLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ25FLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDckQsT0FBTyxPQUFPLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssY0FBYyxDQUFDO1lBQzNELENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBU0MsZUFBZTtRQUNiLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUM7UUFDbkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUNELGdCQUFnQixDQUFNO0lBQ3RCLG1CQUFtQixDQUFNO0lBQ3pCLGVBQWUsR0FBRSxLQUFLLENBQUM7SUFHekIsV0FBVyxDQUFDLEdBQVE7UUFDbEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO1FBRW5DLElBQUksY0FBYyxHQUFVLEVBQUUsQ0FBQztRQUUvQix5REFBeUQ7UUFDekQsSUFBSSxHQUFHLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLFdBQVcsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1lBQzFGLG1CQUFtQjtZQUNuQixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7Z0JBQ3pELDhEQUE4RDtnQkFDOUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBRXRGLDZEQUE2RDtnQkFDN0QsT0FBTztvQkFDTCxHQUFHLEtBQUs7b0JBQ1IsR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7b0JBQ2xCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFFLHFCQUFxQjtpQkFDMUMsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1lBRUgsMENBQTBDO1lBQzFDLGNBQWMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUFDO1NBQ3JDO2FBQU07WUFDTCxxQ0FBcUM7WUFDckMsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsQ0FBQztZQUNuRCxjQUFjLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FDM0MsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssWUFBWSxDQUM3RCxDQUFDO1NBQ0g7UUFFRCxzQ0FBc0M7UUFDdEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTNGLHFDQUFxQztRQUNyQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FDOUMsQ0FBQyxDQUFNLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLGlCQUFpQixDQUNwRCxDQUFDO1FBRUYsdUNBQXVDO1FBQ3ZDLElBQ0UsR0FBRyxFQUFFLFVBQVUsS0FBSyxXQUFXO1lBQy9CLEdBQUcsRUFBRSxVQUFVLEtBQUssVUFBVTtZQUM5QixHQUFHLEVBQUUsVUFBVSxLQUFLLGVBQWUsRUFDbkM7WUFDQSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUM1QixJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsRUFBRSxVQUFVLENBQUM7WUFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7U0FDckM7SUFDSCxDQUFDO0lBS0QsT0FBTyxDQUFDLEdBQVE7UUFDZCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN6QixtREFBbUQ7WUFDbkQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FDOUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sQ0FDeEMsQ0FBQztZQUVGLDZEQUE2RDtZQUM3RCxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDaEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQzthQUN6RDtpQkFBTTtnQkFDTCx3QkFBd0I7Z0JBQ3hCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7YUFDdEQ7U0FDRjtRQUVELHdCQUF3QjtRQUN4QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxDQUFDO1FBRTVCLHNDQUFzQztRQUN0QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FDeEQsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sQ0FDeEMsQ0FBQztRQUVGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFHQyxZQUFZLEdBQVEsRUFBRSxDQUFDLENBQUMsbUJBQW1CO0lBQzdDLGlCQUFpQixDQUFLO0lBQ3RCLGFBQWEsQ0FBQyxHQUFRO1FBQ3BCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLENBQUM7UUFDN0IsSUFBSSxDQUFDLDJCQUEyQixHQUFHLEVBQUUsQ0FBQztRQUV0QyxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUV2QyxJQUFJLElBQUksS0FBSyxXQUFXLEVBQUU7WUFDeEIsdUVBQXVFO1lBQ3ZFLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUM7WUFFckQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDbkUsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNyRCxPQUFPLE9BQU8sS0FBSyxhQUFhLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxjQUFjLENBQUM7WUFDcEUsQ0FBQyxDQUFDLENBQUM7WUFFSCw4Q0FBOEM7WUFDOUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUM1QyxHQUFHLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDckIsR0FBRyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDeEIsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELFVBQVU7UUFDVixxRkFBcUY7SUFDdkYsQ0FBQztJQUdDLElBQUksR0FBUSxVQUFVLENBQUM7SUFDekIsZ0JBQWdCLENBQUMsSUFBUztRQUV4QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUVqQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUNELFlBQVk7UUFDVixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUV2QixtQ0FBbUM7UUFDbkMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUU5QyxJQUFJLFlBQVksS0FBSyxVQUFVLEVBQUU7WUFDL0IsNkRBQTZEO1lBQzdELElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQ3ZEO2FBQU87WUFDTixnRUFBZ0U7WUFDaEUsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FDaEUsSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxZQUFZLENBQ2hELENBQUM7U0FDSDtRQUNELFNBQVM7UUFDVCxxRUFBcUU7UUFDckUsMkVBQTJFO1FBQzNFLHVCQUF1QjtRQUN2QixPQUFPO1FBQ1AsSUFBSTtRQUVKLDZCQUE2QjtRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUM7UUFFNUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsR0FBUSxFQUFFLEdBQVE7UUFDakMsK0VBQStFO1FBQy9FLElBQUksSUFBSSxDQUFDLGlCQUFpQixLQUFLLFdBQVcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRTtZQUNuRixJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztTQUNuRDthQUFNLElBQUksSUFBSSxDQUFDLGlCQUFpQixLQUFLLFdBQVcsRUFBRTtZQUNqRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsd0NBQXdDO1NBQzVEO0lBQ0gsQ0FBQztJQUNELDJCQUEyQixHQUFLLEVBQUUsQ0FBQztJQUVuQyxxQkFBcUIsQ0FBQyxHQUFRLEVBQUUsR0FBUSxFQUFFLElBQVk7UUFDcEQsSUFBSSxJQUFJLEtBQUssV0FBVyxFQUFFO1lBQ3hCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7WUFDakQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsSUFBSSxDQUFDLENBQUM7WUFDOUQsMkJBQTJCO1lBQzNCLGtDQUFrQztZQUM5Qix1REFBdUQ7WUFDdkQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQzFELDZCQUE2QjtZQUN6Qiw2QkFBNkI7WUFDN0IsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDO1lBRWpHLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUVqQyxtREFBbUQ7WUFDbkQsSUFBSSxVQUFVLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLGFBQWEsRUFBRTtnQkFDaEYsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQ3hCLHVCQUF1QixhQUFhLFlBQVksSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFNBQVMsSUFBSSxLQUFLLHFCQUFxQixDQUN4SCxDQUFDO2dCQUNGLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDM0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDeEIsT0FBTzthQUNSO1lBRUQsa0NBQWtDO1lBQ2xDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQzdCLEdBQUcsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUU3QixxQ0FBcUM7WUFDckMsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQyxtQkFBbUI7aUJBQ3hELE1BQU0sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztpQkFDcEMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNuQixHQUFHLElBQUk7Z0JBQ1AsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLE1BQU07Z0JBQ3BELFNBQVMsRUFBRSxJQUFJO2FBQ2hCLENBQUMsQ0FBQyxDQUFDO1lBRU4sbUZBQW1GO1NBQ3BGO0lBQ0gsQ0FBQztJQVNELFVBQVU7UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNCLGtDQUFrQztJQUNsQyxDQUFDO0lBQ0QsTUFBTTtRQUNKLDBDQUEwQztRQUMxQyxJQUFJLENBQUMsMkJBQTJCLEdBQUcsRUFBRSxDQUFDO1FBRXRDLGtFQUFrRTtRQUNsRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMvRCxHQUFHLEdBQUc7WUFDTixTQUFTLEVBQUUsS0FBSztZQUNoQixRQUFRLEVBQUUsS0FBSztZQUNmLE1BQU0sRUFBRSxJQUFJLEVBQVEsdUJBQXVCO1lBQzNDLGlDQUFpQztTQUNsQyxDQUFDLENBQUMsQ0FBQztRQUVKLHdDQUF3QztRQUN4QyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUV2QixvQ0FBb0M7UUFDcEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7UUFFOUIsb0VBQW9FO1FBQ3JFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUM7SUFDcEMsQ0FBQztJQUNELFNBQVMsQ0FBSztJQUNVLFNBQVMsQ0FBYTtJQUM5QyxJQUFJLENBQUMsUUFBYTtRQUNmLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO1lBQ25GLFFBQVEsRUFBRSxRQUFRO1lBQ3BCLFFBQVEsRUFBRSxLQUFLLENBQU8sNkJBQTZCO1NBQ2xELENBQUMsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzlCLENBQUM7SUFFRCxZQUFZO1FBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVuQyxJQUFJLENBQUMsMkJBQTJCLEdBQUcsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFDRCxXQUFXLENBQUMsUUFBYTtRQUN2QixJQUFJLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFFekIsSUFBSSxRQUFRLEtBQUssV0FBVyxFQUFFO1lBQzVCLGVBQWUsR0FBRyxJQUFJLENBQUMsbUJBQW1CO2lCQUN2QyxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDO2lCQUMzQyxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2xCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksRUFBRTtnQkFDdEMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTLElBQUksRUFBRTtnQkFDOUIsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTLElBQUksR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFO2dCQUM5QyxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFO2dCQUM1QixRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVE7Z0JBQ3RCLFVBQVUsRUFBRSxXQUFXO2dCQUN2QixTQUFTLEVBQUUsSUFBSTthQUNoQixDQUFDLENBQUMsQ0FBQztTQUNQO1FBRUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBRWxDLE1BQU0sR0FBRyxHQUFHO1lBQ1YsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQztnQkFDeEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO2dCQUN0QixDQUFDLENBQUMsSUFBSTtZQUNSLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxJQUFJLEVBQUU7WUFDakMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztZQUN4QixVQUFVLEVBQUUsUUFBUTtZQUNwQixTQUFTLEVBQUUsR0FBRyxFQUFFLFNBQVMsSUFBSSxFQUFFO1lBQy9CLFNBQVMsRUFBRSxJQUFJO1lBQ2YsY0FBYyxFQUFFLGVBQWU7WUFDL0IsV0FBVyxFQUFFLEdBQUcsRUFBRSxXQUFXLElBQUksVUFBVTtZQUMzQyxTQUFTLEVBQUUsR0FBRyxFQUFFLFNBQVMsSUFBSSxHQUFHLEVBQUUsUUFBUSxJQUFJLEVBQUU7WUFDaEQsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLElBQUksRUFBRTtZQUM3QixRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsSUFBSSxFQUFFO1NBQzlCLENBQUM7UUFFRixJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7YUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUIsU0FBUyxDQUFDO1lBQ1QsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFO29CQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsT0FBTyxJQUFJLDZCQUE2QixDQUFDLENBQUM7b0JBQzFFLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO29CQUN2QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ2pCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDcEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQztvQkFDbkMsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7aUJBQ3hCO3FCQUFNO29CQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUM7aUJBQzlDO1lBQ0gsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNsQixNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssSUFBSSxHQUFHLENBQUMsS0FBSyxJQUFJLEdBQUcsRUFBRSxPQUFPLElBQUksZUFBZSxDQUFDO2dCQUM3RSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoQyxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUtDLGNBQWMsR0FBOEI7UUFDNUMsU0FBUyxFQUFFLHFCQUFxQjtRQUNoQyxRQUFRLEVBQUUseUJBQXlCO1FBQ25DLGVBQWUsRUFBRSx3QkFBd0I7UUFDekMsYUFBYSxFQUFFLHNCQUFzQjtLQUN0QyxDQUFDO0lBRUYsaUJBQWlCLEdBQVEsSUFBSSxDQUFDLENBQUMsbUNBQW1DO0lBRWxFLG9CQUFvQixDQUFDLFFBQVEsR0FBRyxLQUFLO0lBRXJDLENBQUM7SUFFeUIsV0FBVyxDQUFhO0lBQ2xELE1BQU07UUFFSCxNQUFNLE9BQU8sR0FBUTtZQUNwQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUNwRSxVQUFVLEVBQUUsb0JBQW9CO1lBQ2hDLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLGNBQWMsRUFBRSxDQUFDO1lBQ2pCLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLGlCQUFpQixFQUFFLENBQUM7WUFDcEIsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRTtZQUNoQyxlQUFlLEVBQUUsRUFBRTtZQUNuQixZQUFZLEVBQUUsRUFBRTtZQUNoQixRQUFRLEVBQUUsRUFBRTtTQUNiLENBQUM7UUFFSixJQUFJLGlCQUFpQixHQUFHLENBQUMsQ0FBQztRQUUxQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDMUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUNwRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQztZQUUxQyxrRUFBa0U7WUFDbEUsOENBQThDO1lBRTlDLHFCQUFxQjtZQUNyQix5QkFBeUI7WUFDekIsSUFBSTtZQUVKLGlCQUFpQjtZQUNqQixJQUFJLElBQUksS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRTtnQkFDekYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQjtxQkFDdkMsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDO3FCQUNuQyxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ2xCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksRUFBRTtvQkFDdEMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO29CQUN0QixTQUFTLEVBQUUsR0FBRyxFQUFFLFNBQVMsSUFBSSxHQUFHLEVBQUUsUUFBUSxJQUFJLEVBQUU7b0JBQ2hELFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUTtvQkFDdEIsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTO29CQUN4QixTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVM7aUJBQ3pCLENBQUMsQ0FBQyxDQUFDO2dCQUVOLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQ3pCLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO3dCQUMzQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07d0JBQ25CLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTt3QkFDdkIsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLElBQUksSUFBSSxFQUFFLFFBQVEsSUFBSSxFQUFFO3dCQUNsRCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7d0JBQ3ZCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUzt3QkFDekIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO3dCQUN6QixJQUFJLEVBQUUsVUFBVTtxQkFDakIsQ0FBQyxDQUFDO29CQUVILE9BQU8sQ0FBQyxjQUFjLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQztpQkFDN0M7YUFDRjtZQUVELFdBQVc7aUJBQ04sSUFBSSxJQUFJLEtBQUssVUFBVSxJQUFJLFNBQVMsRUFBRTtnQkFDekMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7b0JBQ3BCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtvQkFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO29CQUN2QixTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsSUFBSSxJQUFJLEVBQUUsUUFBUSxJQUFJLEVBQUU7b0JBQ2xELFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtvQkFDdkIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO29CQUN6QixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7aUJBQzFCLENBQUMsQ0FBQztnQkFFSCxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDekI7WUFFRCxlQUFlO2lCQUNWLElBQUksSUFBSSxLQUFLLGVBQWUsSUFBSSxTQUFTLEVBQUU7Z0JBQzlDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO29CQUN4QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JBQ25CLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtvQkFDdkIsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLElBQUksSUFBSSxFQUFFLFFBQVEsSUFBRyxFQUFFO29CQUNqRCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7b0JBQ3ZCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztvQkFDekIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO2lCQUMxQixDQUFDLENBQUM7Z0JBRUgsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUM7YUFDN0I7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUM7UUFHcEQsc0JBQXNCO1FBRXBCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUM7UUFFbkMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN2QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtZQUNyRixRQUFRLEVBQUUsUUFBUTtZQUNwQixRQUFRLEVBQUUsS0FBSztTQUNkLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZO1FBQ1gsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsMkJBQTJCLEdBQUcsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxXQUFXLENBQUk7SUFDZixhQUFhLENBQUs7SUFDbEIsWUFBWTtRQUNWLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLHFCQUFxQjtRQUU3RCxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQztRQUU3QixJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQzthQUN6QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxHQUFHLEVBQUU7b0JBQzNCLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxPQUFPLElBQUksNkJBQTZCLENBQUMsQ0FBQztvQkFDMUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDakIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO29CQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztpQkFDeEI7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsQ0FBQztpQkFDOUM7WUFDSCxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2xCLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxJQUFJLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPLElBQUksR0FBRyxDQUFDLE9BQU8sSUFBSSxlQUFlLENBQUM7Z0JBQ25HLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2hDLENBQUM7U0FDRixDQUFDLENBQUM7SUFDUCxDQUFDO0lBSUQsa0RBQWtEO0lBQ2xELGdDQUFnQztJQUNoQyxtRkFBbUY7SUFDbkYsc0VBQXNFO0lBQ3RFLHVCQUF1QjtJQUN2QixnSEFBZ0g7SUFDaEgsZ0JBQWdCO0lBRWhCLG1GQUFtRjtJQUVuRixtRUFBbUU7SUFDbkUsa0RBQWtEO0lBQ2xELFNBQVM7SUFFVCwwQkFBMEI7SUFDMUIsNENBQTRDO0lBQzVDLHFFQUFxRTtJQUNyRSxvQ0FBb0M7SUFDcEMsbUdBQW1HO0lBQ25HLGFBQWE7SUFFYixnQ0FBZ0M7SUFDaEMsb0dBQW9HO0lBQ3BHLDhCQUE4QjtJQUM5QiwyREFBMkQ7SUFDM0QsWUFBWTtJQUVaLDZCQUE2QjtJQUM3QixrQ0FBa0M7SUFDbEMsY0FBYztJQUVkLGtCQUFrQjtJQUNsQixVQUFVO0lBRVYsd0NBQXdDO0lBQ3hDLDhCQUE4QjtJQUM5QixrREFBa0Q7SUFDbEQsb0JBQW9CO0lBQ3BCLDZCQUE2QjtJQUM3Qix1Q0FBdUM7SUFDdkMsY0FBYztJQUNkLFVBQVU7SUFDVixlQUFlO0lBQ2YsMEJBQTBCO0lBQzFCLG9GQUFvRjtJQUNwRixvREFBb0Q7SUFDcEQsV0FBVztJQUNYLFFBQVE7SUFDUixNQUFNO0lBRU4sa0RBQWtEO0lBQ2xELHFDQUFxQztJQUNyQyxJQUFJO0lBR0osZ0NBQWdDO0lBRWhDLCtCQUErQjtJQUMvQixnQ0FBZ0M7SUFDaEMsNkZBQTZGO0lBQzdGLElBQUk7SUFFcUIsVUFBVSxDQUFhO0lBQ2hELGtCQUFrQixDQUFDLEdBQU8sRUFBQyxJQUFRO1FBRTlCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO1lBQ3RGLFFBQVEsRUFBRSxRQUFRO1lBQ3BCLFFBQVEsRUFBRSxLQUFLO1NBQ2QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdELFVBQVU7UUFDUixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFXQyxpQkFBaUIsR0FBVyxDQUFDLENBQUM7SUFDOUIsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxhQUFhLENBQUMsU0FBMkI7UUFDdkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7UUFFM0MsSUFBSSxTQUFTLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDaEQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDMUI7YUFBTSxJQUFJLFNBQVMsS0FBSyxPQUFPLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQzFCO1FBRUQsd0JBQXdCO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRXJFLDBCQUEwQjtRQUMxQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQ3BELENBQUMsQ0FBTSxFQUFFLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxpQkFBaUIsQ0FDakQsQ0FBQztJQUNKLENBQUM7d0dBcjZCVSxnQkFBZ0I7NEZBQWhCLGdCQUFnQixvVkNwQjdCLDI2L0VBNjdCYzs7NEZEejZCRCxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsY0FBYzt1T0EybEJGLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkF1RkksV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhO2dCQXVNQyxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LEVsZW1lbnRSZWYsVmlld0NoaWxkXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgVHJhZmZpY1J2cHNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3RyYWZmaWMtcnZwcy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktZ2xvYmFsXCI7XHJcbmltcG9ydCB7IFRyYWZmaWNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3RyYWZmaWMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tIFwidGFuZ28tYXBwLXVpLXNoYXJlZFwiO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImxpYi1pbWctcnZwc1wiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vaW1nLXJ2cHMuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL2ltZy1ydnBzLmNvbXBvbmVudC5zY3NzXCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbWdSdnBzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIGhlYWRlckRhdGE6IGFueTtcclxuICBzdG9yZUlkYXJyYXk6IGFueTtcclxuICBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBub0RhdGEgPSBmYWxzZTtcclxuICBub3JtYWxpemU6IGFueTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgc2VydmljZTogVHJhZmZpY1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxyXG4gICAgcHJpdmF0ZSB0b2FzdDogVG9hc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBydnBzU2VydmljZTogVHJhZmZpY1J2cHNTZXJ2aWNlXHJcbiAgKSB7fVxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuICBpc0FjY29yZGlvbkV4cGFuZGVkID0gdHJ1ZTtcclxuICB0b2dnbGVBY2NvcmRpb24oKSB7XHJcbiAgICB0aGlzLmlzQWNjb3JkaW9uRXhwYW5kZWQgPSAhdGhpcy5pc0FjY29yZGlvbkV4cGFuZGVkO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ2V0SW5pdGFsKCk7XHJcbiAgfVxyXG4gIGdldEluaXRhbCgpIHtcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWVcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLCBkZWJvdW5jZVRpbWUoMTAwKSlcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEgIT09IG51bGwgfHwgZGF0YT8uY2xpZW50ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLmhlYWRlckRhdGEgPSBkYXRhO1xyXG4gICAgICAgICAgdGhpcy5zdG9yZUlkYXJyYXkgPSB0aGlzLmhlYWRlckRhdGE/LnN0b3Jlc1xyXG4gICAgICAgICAgICAuZmlsdGVyKChzdG9yZTogYW55KSA9PiBzdG9yZS5jaGVja2VkKVxyXG4gICAgICAgICAgICAubWFwKChzdG9yZTogYW55KSA9PiBzdG9yZS5zdG9yZUlkKTtcclxuICAgICAgICAgIHRoaXMuYmFja1RvRm9vdGZhbGwoKTtcclxuICAgICAgICAgIHRoaXMuZGlzcGxheURhdGVSYW5nZSgpO1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB0aGlzLmhlYWRlckRhdGE/LmRhdGU/LnN0YXJ0RGF0ZSA9PT0gdGhpcy5oZWFkZXJEYXRhPy5kYXRlPy5lbmREYXRlXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5iYWNrbmF2ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheURhdGVSYW5nZSgpO1xyXG4gICAgICAgICAgICB0aGlzLmdldGltYWdlcygwLCB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9sZGVyVmlldyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuYmFja25hdiA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGJhY2tUb0Zvb3RmYWxsKCkge1xyXG4gICAgdGhpcy5mb2xkZXJWaWV3ID0gdHJ1ZTtcclxuICAgIHRoaXMuZ2V0UnZwc0xpc3QgPSBbXTtcclxuICAgIHRoaXMuZ2V0UnZwc0ltYWdlTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5vYmplY3RzQXJyYXkgPSBbXTtcclxuICAgIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgdGhpcy50eXBlID0nZm9vdGZhbGwnO1xyXG4gICAgdGhpcy5zZWxlY3RlZFRpbWUgPScnO1xyXG4gIH1cclxuICBmb2xkZXJWaWV3OiBib29sZWFuO1xyXG4gIGJhY2tuYXY6IGJvb2xlYW47XHJcbiAgZGF0ZUFycmF5OiBhbnk7XHJcbiAgZGlzcGxheURhdGVSYW5nZSgpIHtcclxuICAgIGNvbnN0IGRhdGVzID0gdGhpcy5nZXREYXRlUmFuZ2VBcnJheShcclxuICAgICAgdGhpcy5oZWFkZXJEYXRhLmRhdGUuc3RhcnREYXRlLFxyXG4gICAgICB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlXHJcbiAgICApO1xyXG4gICAgdGhpcy5kYXRlQXJyYXkgPSBkYXRlcztcclxuICB9XHJcblxyXG4gIGdldERhdGVSYW5nZUFycmF5KGZyb21EYXRlOiBzdHJpbmcsIHRvRGF0ZTogc3RyaW5nKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZShmcm9tRGF0ZSk7IC8vIENvbnZlcnQgc3RyaW5nIHRvIERhdGUgb2JqZWN0XHJcbiAgICBjb25zdCBlbmQgPSBuZXcgRGF0ZSh0b0RhdGUpOyAvLyBDb252ZXJ0IHN0cmluZyB0byBEYXRlIG9iamVjdFxyXG4gICAgY29uc3QgZGF0ZUFycmF5OiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIC8vIENoZWNrIGlmIHRoZSBkYXRlcyBhcmUgdmFsaWRcclxuICAgIGlmIChpc05hTihzdGFydC5nZXRUaW1lKCkpIHx8IGlzTmFOKGVuZC5nZXRUaW1lKCkpKSB7XHJcbiAgICAgIHJldHVybiBkYXRlQXJyYXk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTG9vcCBmcm9tIHN0YXJ0IGRhdGUgdG8gZW5kIGRhdGVcclxuICAgIGxldCBjdXJyZW50RGF0ZSA9IHN0YXJ0O1xyXG4gICAgd2hpbGUgKGN1cnJlbnREYXRlIDw9IGVuZCkge1xyXG4gICAgICBkYXRlQXJyYXkucHVzaChjdXJyZW50RGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXSk7IC8vIEZvcm1hdCBZWVlZLU1NLUREXHJcbiAgICAgIGN1cnJlbnREYXRlLnNldERhdGUoY3VycmVudERhdGUuZ2V0RGF0ZSgpICsgMSk7IC8vIEluY3JlbWVudCB0aGUgZGF0ZSBieSAxIGRheVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkYXRlQXJyYXk7XHJcbiAgfVxyXG4gIHNlbGVjdGVkVGltZTogYW55O1xyXG4gIGZvbGRlck5hbWU6IGFueTtcclxuICBzZWxlY3RlZFRpbWVzKHZhbDogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkVGltZSA9IHZhbDtcclxuICAgIHRoaXMuZm9sZGVyTmFtZSA9IHZhbDtcclxuICAgIHRoaXMuZm9sZGVyVmlldyA9IGZhbHNlO1xyXG4gICAgdGhpcy50eXBlID0gdGhpcy50eXBlO1xyXG4gICAgIHRoaXMuZ2V0UmV2b3BzKCk7XHJcbiAgfVxyXG4gIGZvbGRlckRhdGU6IGFueTtcclxuICBpbWFnZUZsb3cgPSBmYWxzZTtcclxuICAvLyBnZXQgUmV2b3BzIEFwaVxyXG4gIGdldFJ2cHNMaXN0OiBhbnk7XHJcbiAgZ2V0UnZwc0ltYWdlTGlzdDogYW55O1xyXG4gIG9iamVjdHNBcnJheTogYW55O1xyXG4gIGltYWdlc0FycmF5RGF0YTogYW55O1xyXG4gIHNlbGVjdEluZGV4OiBhbnkgPSAwO1xyXG4gIGZvb3RmYWxsRGF0ZTogYW55O1xyXG4gIGxlbmd0aFZhbHVlOiBib29sZWFuO1xyXG4gIGdldGltYWdlcyhpbmRleDogYW55LCBvYmo6IGFueSkge1xyXG50aGlzLm9iamVjdHNBcnJheSA9W107XHJcbiAgICB0aGlzLnNlbGVjdEluZGV4ID0gaW5kZXg7XHJcbiAgICB0aGlzLmZvbGRlckRhdGUgPSBvYmo7XHJcbiAgICAodGhpcy5mb290ZmFsbERhdGUgPSBvYmopLCAodGhpcy5mb2xkZXJWaWV3ID0gZmFsc2UpO1xyXG4gICAgdGhpcy5zZXJ2aWNlPy5pc25vcm1hbGl6ZVNvdXJjZVxyXG4gICAgICA/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLCBkZWJvdW5jZVRpbWUoMzAwKSlcclxuICAgICAgPy5zdWJzY3JpYmUoKG5vcm1hbGl6ZTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5ub3JtYWxpemUgPSBub3JtYWxpemU7XHJcbiAgICAgICAgaWYgKCFub3JtYWxpemUpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0UnZwc0xpc3QgPSBbXTtcclxuICAgICAgICAgIHRoaXMuZ2V0UnZwc0ltYWdlTGlzdCA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5vYmplY3RzQXJyYXkgPSBbXTtcclxuICAgICAgICAgIHRoaXMuZ2V0UmV2b3BzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRUb3RhbCgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmxlbmd0aFZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm9iamVjdHNBcnJheSA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIGNvdW50RGF0YTogYW55PVtdO1xyXG4gIGdldFRvdGFsKCkge1xyXG4gICAgdGhpcy5jb3VudERhdGEgPVtdO1xyXG4gICAgY29uc3Qgc3RvcmVJZCA9XHJcbiAgICAgIHRoaXMuc3RvcmVJZGFycmF5ICYmIHRoaXMuc3RvcmVJZGFycmF5Lmxlbmd0aCA+IDBcclxuICAgICAgICA/IHRoaXMuc3RvcmVJZGFycmF5WzBdXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgY29uc3QgZGF0ZVN0cmluZyA9IHRoaXMuZm9sZGVyRGF0ZSB8fCBcIlwiO1xyXG4gICAgdGhpcy5ydnBzU2VydmljZVxyXG4gICAgICAuZ2V0VG90YWxWYWwoc3RvcmVJZCwgZGF0ZVN0cmluZylcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICA/LnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgaWYodGhpcy5nZXRSdnBzTGlzdD8ubGVuZ3RoKVxyXG4gICAgICAgICAgICB0aGlzLmNvdW50RGF0YSA9IHJlcy5kYXRhO1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmNvdW50RGF0YSlcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY291bnREYXRhID0gW107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge30sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBpbWFnZVVybDogYW55O1xyXG4gIHJldm9wc1R5cGVDb3VudDogYW55O1xyXG4gIGN1cnJlbnRUaW1lUmFuZ2VEYXRhIDphbnk9W107XHJcbiAgb3ZlcmFsbEFycmF5RGF0YTphbnk9W107YWxsRm9vdGZhbGxEYXRhOmFueSA9W107XHJcbmdldFRpY2tldFN0YXR1c2VzKCk6IHN0cmluZ1tdIHtcclxuICBjb25zdCBzdGF0dXNMaXN0ID0gdGhpcy5nZXRSdnBzTGlzdD8udGlja2V0U3RhdHVzO1xyXG4gIGlmIChBcnJheS5pc0FycmF5KHN0YXR1c0xpc3QpKSB7XHJcbiAgICByZXR1cm4gc3RhdHVzTGlzdFxyXG4gICAgICAubWFwKChzKSA9PiBzPy5zdGF0dXM/LnRvTG93ZXJDYXNlKCkpXHJcbiAgICAgIC5maWx0ZXIoQm9vbGVhbik7IC8vIFJlbW92ZXMgbnVsbC91bmRlZmluZWRcclxuICB9XHJcbiAgcmV0dXJuIFtdO1xyXG59XHJcbmdldFJldm9wcygpIHtcclxuICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbi8vIHRoaXMub2JqZWN0c0FycmF5ID1bXTtcclxuLy8gdGhpcy5vdmVyYWxsQXJyYXlEYXRhID1bXTtcclxuLy8gdGhpcy5nZXRSdnBzTGlzdCA9W107XHJcbi8vIHRoaXMuZ2V0UnZwc0ltYWdlTGlzdD1bXTtcclxuLy8gdGhpcy5hbGxGb290ZmFsbERhdGEgPVtdXHJcbiAgY29uc3Qgc3RvcmVJZCA9XHJcbiAgICB0aGlzLnN0b3JlSWRhcnJheSAmJiB0aGlzLnN0b3JlSWRhcnJheS5sZW5ndGggPiAwXHJcbiAgICAgID8gdGhpcy5zdG9yZUlkYXJyYXlbMF1cclxuICAgICAgOiBudWxsO1xyXG4gIGNvbnN0IGRhdGVTdHJpbmcgPSB0aGlzLmZvbGRlckRhdGUgfHwgJyc7XHJcbiAgY29uc3QgZ3JvdXBCeUtleSA9ICd0aW1lJztcclxuICBjb25zdCB0eXBlID0gdGhpcy50eXBlID09PSdmb290ZmFsbCcgPyAnJyA6IHRoaXMudHlwZSB8fCAnJztcclxuICBjb25zdCBwcm9jZXNzVHlwZSA9ICdmb290ZmFsbCc7XHJcblxyXG4gIHRoaXMucnZwc1NlcnZpY2VcclxuICAgIC5nZXRSdnBzTGlzdEFwaShzdG9yZUlkLCBkYXRlU3RyaW5nLCBncm91cEJ5S2V5LCB0eXBlLCBwcm9jZXNzVHlwZSlcclxuICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgXHJcbiAgICAgICAgICB0aGlzLmdldFJ2cHNMaXN0ID0gcmVzPy5kYXRhO1xyXG4gICAgICAgICAgdGhpcy5pbWFnZVVybCA9IHRoaXMucnZwc1NlcnZpY2U/LmZvb3RmYWxsQ0ROO1xyXG4gICAgICAgICAgdGhpcy5nZXRSdnBzSW1hZ2VMaXN0ID0gcmVzPy5kYXRhPy5yZXN1bHQ7XHJcblxyXG4gICAgICAgICAgLy8gU2F2ZSB0aGUgZnVsbCBmb290ZmFsbCBkYXRhIChncm91cGVkIGJ5IHRpbWVSYW5nZSlcclxuICAgICAgICAgIHRoaXMuYWxsRm9vdGZhbGxEYXRhID0gcmVzPy5kYXRhPy5yZXN1bHQ/LmZvb3RmYWxsRGF0YSB8fCBbXTtcclxuXHJcbiAgICAgICAgICAvLyBDcmVhdGUgdGltZVJhbmdlICsgY291bnQgb2JqZWN0XHJcbiAgICAgICBjb25zdCB0aW1lUmFuZ2VzID0gdGhpcy5hbGxGb290ZmFsbERhdGEubWFwKChpdGVtOiBhbnkpID0+IGl0ZW0udGltZVJhbmdlKTtcclxudGhpcy5vYmplY3RzQXJyYXkgPSB0aW1lUmFuZ2VzLm1hcCgodGltZVJhbmdlOmFueSkgPT4gKHtcclxuICB0aW1lUmFuZ2UsXHJcbiAgY291bnQ6IHRoaXMuYWxsRm9vdGZhbGxEYXRhLmZpbmQoKGQ6YW55KSA9PiBkLnRpbWVSYW5nZSA9PT0gdGltZVJhbmdlKT8uZGF0YT8ubGVuZ3RoIHx8IDAsXHJcbn0pKTsgICAgXHJcbi8vIE9ubHkgcmVzZXQgaWYgcHJldmlvdXMgc2VsZWN0ZWQgdGltZSBpcyBOT1QgaW4gdGhlIG5ldyBsaXN0XHJcbmlmICghdGltZVJhbmdlcy5pbmNsdWRlcyh0aGlzLnNlbGVjdGVkVGltZSkpIHtcclxuICB0aGlzLnNlbGVjdGVkVGltZXModGhpcy5vYmplY3RzQXJyYXlbMF0udGltZVJhbmdlKTtcclxufVxyXG5cclxuICAgICAgICAgIC8vIEdldCBkYXRhIGZvciB0aGUgc2VsZWN0ZWQgdGltZVJhbmdlXHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRUaW1lUmFuZ2VEYXRhID1cclxuICAgICAgICAgICAgdGhpcy5hbGxGb290ZmFsbERhdGEuZmluZChcclxuICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnRpbWVSYW5nZSA9PT0gdGhpcy5zZWxlY3RlZFRpbWVcclxuICAgICAgICAgICAgKT8uZGF0YSB8fCBbXTtcclxuXHJcbiAgICAgICAgICAvLyBDb3VudCByZXZvcHNUeXBlc1xyXG4gICAgICAgICAgY29uc3QgcmV2b3BzVHlwZUNvdW50OiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge1xyXG4gICAgICAgICAgICAnbm9uLXRhZ2dpbmcnOiAwLFxyXG4gICAgICAgICAgICBkdXBsaWNhdGU6IDAsXHJcbiAgICAgICAgICAgIGVtcGxveWVlOiAwLFxyXG4gICAgICAgICAgICAnaG91c2Uta2VlcGluZyc6IDAsXHJcbiAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgIGxldCB0b3RhbENvdW50ID0gMDtcclxuICAgICAgICAgIHRoaXMub3ZlcmFsbEFycmF5RGF0YSA9IFtdO1xyXG5cclxuICAgICAgdGhpcy5hbGxGb290ZmFsbERhdGEuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgaXRlbS5kYXRhPy5mb3JFYWNoKChpbWFnZTogYW55KSA9PiB7XHJcbiAgICB0aGlzLm92ZXJhbGxBcnJheURhdGEucHVzaChpbWFnZSk7XHJcbiAgICB0b3RhbENvdW50Kys7XHJcblxyXG4gICAgY29uc3QgdHlwZSA9IGltYWdlLnJldm9wc1R5cGU/LnRyaW0oKS50b0xvd2VyQ2FzZSgpIHx8ICd1bmtub3duJztcclxuXHJcbiAgICBpZiAodHlwZSA9PT0gJ25vbi10YWdnaW5nJykge1xyXG4gICAgICByZXZvcHNUeXBlQ291bnRbJ25vbi10YWdnaW5nJ10rKztcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2VtcGxveWVlJykge1xyXG4gICAgICByZXZvcHNUeXBlQ291bnRbJ2VtcGxveWVlJ10rKztcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2hvdXNlLWtlZXBpbmcnKSB7XHJcbiAgICAgIHJldm9wc1R5cGVDb3VudFsnaG91c2Uta2VlcGluZyddKys7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g4pyFIENvdW50IGR1cGxpY2F0ZXMgb25seSBmcm9tIGR1cGxpY2F0ZUltYWdlUGF0aFxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaW1hZ2UuZHVwbGljYXRlSW1hZ2VQYXRoKSkge1xyXG4gICAgICByZXZvcHNUeXBlQ291bnRbJ2R1cGxpY2F0ZSddICs9IGltYWdlLmR1cGxpY2F0ZUltYWdlUGF0aC5sZW5ndGg7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn0pO1xyXG5cclxuICAgICAgICAgIHRoaXMuY291bnREYXRhID0ge1xyXG4gICAgICAgICAgICBmb290ZmFsbENvdW50OiB0b3RhbENvdW50LFxyXG4gICAgICAgICAgICBub25UYWdzOiByZXZvcHNUeXBlQ291bnRbJ25vbi10YWdnaW5nJ10sXHJcbiAgICAgICAgICAgIGR1cGxpY2F0ZTogcmV2b3BzVHlwZUNvdW50WydkdXBsaWNhdGUnXSxcclxuICAgICAgICAgICAgZW1wbG95ZWU6IHJldm9wc1R5cGVDb3VudFsnZW1wbG95ZWUnXSxcclxuICAgICAgICAgICAgaG91c2VrZWVwaW5nOiByZXZvcHNUeXBlQ291bnRbJ2hvdXNlLWtlZXBpbmcnXSxcclxuICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgLy8gQXBwbHkgdHlwZSBmaWx0ZXIgYWZ0ZXIgbG9hZGluZyB0aW1lUmFuZ2UgZGF0YVxyXG4gICAgICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcclxudGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIC8vIHRoaXMubm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIEluIGNhc2Ugb2YgZmFpbHVyZVxyXG4gICAgICAgICAgdGhpcy5nZXRSdnBzTGlzdCA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5nZXRSdnBzSW1hZ2VMaXN0ID0gW107XHJcbiAgICAgICAgICB0aGlzLm9iamVjdHNBcnJheSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5pbWFnZXNBcnJheURhdGEgPSBbXTtcclxuICAgICAgICAgIHRoaXMub3ZlcmFsbEFycmF5RGF0YSA9W107XHJcbiAgICAgICAgICB0aGlzLmNvdW50RGF0YSA9W107XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbXNnID0gZXJyLmVycm9yLmVycm9yIHx8IGVyci5lcnJvciB8fCBlcnI/LmVycm9yPy5tZXNzYWdlIHx8IGVyci5tZXNzYWdlIHx8ICdVbmtub3duIGVycm9yJztcclxuICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QobXNnKTtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7ICAgXHJcbiAgICAgICAgdGhpcy5nZXRSdnBzTGlzdCA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5nZXRSdnBzSW1hZ2VMaXN0ID0gW107XHJcbiAgICAgICAgICB0aGlzLm9iamVjdHNBcnJheSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5pbWFnZXNBcnJheURhdGEgPSBbXTtcclxuICAgICAgICAgIHRoaXMub3ZlcmFsbEFycmF5RGF0YSA9W107XHJcbiAgICAgICAgICB0aGlzLmNvdW50RGF0YSA9W107XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxufVxyXG5cclxub3JpZ2luYWxDaGVja2VkRHVwbGljYXRlSWRzOmFueTtcclxuZWRpdFZhbHVlKCkge1xyXG4gIGNvbnN0IHR5cGUgPSAodGhpcy5zZWxlY3RlZFR5cGUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XHJcbiAgdGhpcy5yZXZvcHNUeXBlVmFsdWUgPSBmYWxzZTtcclxuXHJcbiAgY29uc3Qgc2VsZWN0ZWRJbWFnZSA9IHRoaXMuc2VsZWN0SW1hZ2VBcnJheTtcclxuICBjb25zdCBzZWxlY3RlZFRlbXBsZCA9IHNlbGVjdGVkSW1hZ2U/LnRlbXBsZDtcclxuXHJcbiAgaWYgKHR5cGUgPT09ICdkdXBsaWNhdGUnICYmIEFycmF5LmlzQXJyYXkoc2VsZWN0ZWRJbWFnZS5kdXBsaWNhdGVJbWFnZVBhdGgpKSB7XHJcbiAgICAvLyAxLiBDb252ZXJ0IGR1cGxpY2F0ZSBjaGlsZHJlbiBpbnRvIGNvbnNpc3RlbnQgb2JqZWN0cyB3aXRoIHBhcmVudCByZWZlcmVuY2VcclxuICAgIGNvbnN0IGR1cGxpY2F0ZUNoaWxkcmVuID0gc2VsZWN0ZWRJbWFnZS5kdXBsaWNhdGVJbWFnZVBhdGgubWFwKChjaGlsZDogYW55KSA9PiAoe1xyXG4gICAgICAuLi5jaGlsZCxcclxuICAgICAgcGFyZW50OiBzZWxlY3RlZFRlbXBsZCxcclxuICAgICAgc2VsZWN0ZWQ6IHRydWVcclxuICAgIH0pKTtcclxuXHJcbiAgICAvLyAyLiBDb2xsZWN0IHRoZSB0ZW1wbGQgdmFsdWVzIG9mIGR1cGxpY2F0ZSBjaGlsZHJlblxyXG4gICAgY29uc3QgZHVwbGljYXRlQ2hpbGRJZHMgPSBkdXBsaWNhdGVDaGlsZHJlbi5tYXAoKGNoaWxkOiBhbnkpID0+IGNoaWxkLnRlbXBJZCk7XHJcblxyXG4gICAgLy8gMy4gRmlsdGVyIG91dCBub24tdGFnZ2luZyBpbWFnZXMgZXhjZXB0IHRoZSBzZWxlY3RlZCBwYXJlbnQgJiBpdHMgY2hpbGRyZW5cclxuICAgIGNvbnN0IG5vblRhZ2dpbmdJbWFnZXMgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEuZmlsdGVyKChpbWc6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBpc05vblRhZ2dpbmcgPSAoaW1nLnJldm9wc1R5cGUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICdub24tdGFnZ2luZyc7XHJcbiAgICAgIGNvbnN0IGlzTm90U2VsZWN0ZWQgPSBpbWcudGVtcGxkICE9PSBzZWxlY3RlZFRlbXBsZCAmJiAhZHVwbGljYXRlQ2hpbGRJZHMuaW5jbHVkZXMoaW1nLnRlbXBsZCk7XHJcbiAgICAgIHJldHVybiBpc05vblRhZ2dpbmcgJiYgaXNOb3RTZWxlY3RlZDtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIDQuIE1lcmdlIGR1cGxpY2F0ZSBjaGlsZHJlbiArIG90aGVyIG5vbi10YWdnaW5nIGltYWdlc1xyXG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gWy4uLmR1cGxpY2F0ZUNoaWxkcmVuLCAuLi5ub25UYWdnaW5nSW1hZ2VzXTtcclxuXHJcbiAgICAvLyA1LiBNYXJrIHNlbGVjdGVkOiBvbmx5IGR1cGxpY2F0ZSBpbWFnZXMgdGhhdCB3ZXJlIG1hcmtlZCBpc0NoZWNrZWRcclxuICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheS5mb3JFYWNoKChpbWc6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBpc0R1cGxpY2F0ZSA9IChpbWcucmV2b3BzVHlwZSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ2R1cGxpY2F0ZSc7XHJcbiAgICAgIGltZy5zZWxlY3RlZCA9IGlzRHVwbGljYXRlICYmIGltZy5pc0NoZWNrZWQgPT09IHRydWU7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyA2LiBTdG9yZSBvcmlnaW5hbCBjaGVja2VkIElEcyB0byBjb21wYXJlIGxhdGVyIGR1cmluZyBzdWJtaXRcclxuICAgIHRoaXMub3JpZ2luYWxDaGVja2VkRHVwbGljYXRlSWRzID0gdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5XHJcbiAgICAgIC5maWx0ZXIoKGltZzogYW55KSA9PiBpbWcuaXNDaGVja2VkID09PSB0cnVlKVxyXG4gICAgICAubWFwKChpbWc6IGFueSkgPT4gaW1nLnRlbXBsZCk7XHJcblxyXG4gICAgLy8g4pyFIDcuIEZpbGwgc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0IHdpdGggcHJlLXNlbGVjdGVkIGR1cGxpY2F0ZXNcclxuICAgIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0ID0gdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5LmZpbHRlcihcclxuICAgICAgKGltZzogYW55KSA9PlxyXG4gICAgICAgIChpbWcucmV2b3BzVHlwZSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ2R1cGxpY2F0ZScgJiZcclxuICAgICAgICBpbWcuaXNDaGVja2VkID09PSB0cnVlXHJcbiAgICApLm1hcCgoaW1nOiBhbnkpID0+ICh7XHJcbiAgICAgIC4uLmltZyxcclxuICAgICAgcGFyZW50OiBpbWcucGFyZW50IHx8IHNlbGVjdGVkVGVtcGxkLFxyXG4gICAgICBpc0NoZWNrZWQ6IHRydWVcclxuICAgIH0pKTtcclxuXHJcbiAgfSBlbHNlIHtcclxuICAgIC8vIE5vdCBkdXBsaWNhdGUgdHlwZSDihpIgc2hvdyBvbmx5IHNlbGVjdGVkIHR5cGUgKGV4Y2x1ZGluZyB0aGUgY3VycmVudCBzZWxlY3RlZCBpbWFnZSlcclxuICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheSA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maWx0ZXIoKGltZzogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGltZ1R5cGUgPSAoaW1nLnJldm9wc1R5cGUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIHJldHVybiBpbWdUeXBlID09PSB0eXBlICYmIGltZy50ZW1wbGQgIT09IHNlbGVjdGVkVGVtcGxkO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuICBiYWNrVG9Gb290ZmFsbDEoKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5pbWFnZUZsb3cgPSBmYWxzZTtcclxuICB9XHJcbiAgc2VsZWN0SW1hZ2VBcnJheTogYW55O1xyXG4gIHJlbWFpbmluZ0ltYWdlQXJyYXk6IGFueTtcclxuICByZXZvcHNUeXBlVmFsdWUgPWZhbHNlO1xyXG5cclxuXHJcbmltZ0Z1bGxWaWV3KG9iajogYW55KSB7XHJcbiAgdGhpcy5zZWxlY3RJbWFnZUFycmF5ID0gb2JqO1xyXG4gIHRoaXMuaW1hZ2VGbG93ID0gdHJ1ZTtcclxuICB0aGlzLnJldm9wc1R5cGVWYWx1ZSA9IGZhbHNlO1xyXG4gIHRoaXMuc2VsZWN0ZWRUeXBlID0gJyc7XHJcbiAgdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSA9IHVuZGVmaW5lZDtcclxuXHJcbiAgbGV0IGZpbHRlcmVkQnlUeXBlOiBhbnlbXSA9IFtdO1xyXG5cclxuICAvLyDinIUgMS4gU3BlY2lhbCBjYXNlIGZvciBkdXBsaWNhdGUgdHlwZSB3aXRoIGNoaWxkIGltYWdlc1xyXG4gIGlmIChvYmoucmV2b3BzVHlwZT8udG9Mb3dlckNhc2UoKSA9PT0gJ2R1cGxpY2F0ZScgJiYgQXJyYXkuaXNBcnJheShvYmouZHVwbGljYXRlSW1hZ2VQYXRoKSkge1xyXG4gICAgLy8gRXh0cmFjdCBjaGlsZHJlblxyXG4gICAgY29uc3QgY2hpbGRyZW4gPSBvYmouZHVwbGljYXRlSW1hZ2VQYXRoLm1hcCgoY2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgICAvLyBUcnkgdG8gZmluZCBtYXRjaGluZyBpdGVtIGZyb20gb3ZlcmFsbEFycmF5RGF0YSAoYnkgdGVtcElkKVxyXG4gICAgICBjb25zdCBtYXRjaGVkID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbmQoKGltZzogYW55KSA9PiBpbWcudGVtcGxkID09PSBjaGlsZC50ZW1wSWQpO1xyXG5cclxuICAgICAgLy8gUHJlZmVyIG1hdGNoZWQgaXRlbSBpZiBmb3VuZCwgb3RoZXJ3aXNlIHVzZSBvcmlnaW5hbCBjaGlsZFxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLmNoaWxkLFxyXG4gICAgICAgIC4uLihtYXRjaGVkIHx8IHt9KSxcclxuICAgICAgICBwYXJlbnQ6IG9iai50ZW1wbGQgIC8vIFRhZyB3aXRoIHBhcmVudCBJRFxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8g4pyFIE1lcmdlIHBhcmVudCBhbmQgY2hpbGRyZW4gZm9yIGRpc3BsYXlcclxuICAgIGZpbHRlcmVkQnlUeXBlID0gW29iaiwgLi4uY2hpbGRyZW5dO1xyXG4gIH0gZWxzZSB7XHJcbiAgICAvLyDinIUgMi4gRGVmYXVsdCBsb2dpYyBmb3Igb3RoZXIgdHlwZXNcclxuICAgIGNvbnN0IHNlbGVjdGVkVHlwZSA9IG9iai5yZXZvcHNUeXBlPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgZmlsdGVyZWRCeVR5cGUgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEuZmlsdGVyKFxyXG4gICAgICAoaW1nOiBhbnkpID0+IGltZy5yZXZvcHNUeXBlPy50b0xvd2VyQ2FzZSgpID09PSBzZWxlY3RlZFR5cGVcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyDinIUgMy4gRGV0ZXJtaW5lIHNlbGVjdGVkIGltYWdlIGluZGV4XHJcbiAgdGhpcy5jdXJyZW50SW1hZ2VJbmRleCA9IGZpbHRlcmVkQnlUeXBlLmZpbmRJbmRleCgoaW1nOiBhbnkpID0+IGltZy50ZW1wbGQgPT09IG9iai50ZW1wbGQpO1xyXG5cclxuICAvLyDinIUgNC4gUmVtYWluaW5nIGltYWdlcyB0byBzaG93L2VkaXRcclxuICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSBmaWx0ZXJlZEJ5VHlwZS5maWx0ZXIoXHJcbiAgICAoXzogYW55LCBpOiBudW1iZXIpID0+IGkgIT09IHRoaXMuY3VycmVudEltYWdlSW5kZXhcclxuICApO1xyXG5cclxuICAvLyDinIUgNS4gSGFuZGxlIHJldm9wcyB0eXBlIGZvciByYWRpbyBVSVxyXG4gIGlmIChcclxuICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gJ2R1cGxpY2F0ZScgfHxcclxuICAgIG9iaj8ucmV2b3BzVHlwZSA9PT0gJ2VtcGxveWVlJyB8fFxyXG4gICAgb2JqPy5yZXZvcHNUeXBlID09PSAnaG91c2Uta2VlcGluZydcclxuICApIHtcclxuICAgIHRoaXMucmV2b3BzVHlwZVZhbHVlID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gb2JqPy5yZXZvcHNUeXBlO1xyXG4gICAgdGhpcy5vblJhZGlvQ2hhbmdlKG9iaj8ucmV2b3BzVHlwZSk7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuXHJcblxyXG5pbWdTd2FwKG9iajogYW55KSB7XHJcbiAgaWYgKHRoaXMuc2VsZWN0SW1hZ2VBcnJheSkge1xyXG4gICAgLy8gRmluZCB3aGVyZSB0aGUgbmV3IHNlbGVjdGVkIGltYWdlIGlzIGluIHRoZSBsaXN0XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheS5maW5kSW5kZXgoXHJcbiAgICAgIChpbWc6IGFueSkgPT4gaW1nLnRlbXBsZCA9PT0gb2JqLnRlbXBsZFxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBSZXBsYWNlIHNlbGVjdGVkSW1hZ2VBcnJheSBiYWNrIGludG8gaXRzIG9yaWdpbmFsIHBvc2l0aW9uXHJcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheVtpbmRleF0gPSB0aGlzLnNlbGVjdEltYWdlQXJyYXk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBmYWxsYmFjayBpZiBub3QgZm91bmRcclxuICAgICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5LnB1c2godGhpcy5zZWxlY3RJbWFnZUFycmF5KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFVwZGF0ZSBzZWxlY3RlZCBpbWFnZVxyXG4gIHRoaXMuc2VsZWN0SW1hZ2VBcnJheSA9IG9iajtcclxuXHJcbiAgLy8gUmVtb3ZlIHNlbGVjdGVkIGZyb20gcmVtYWluaW5nIGxpc3RcclxuICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkuZmlsdGVyKFxyXG4gICAgKGltZzogYW55KSA9PiBpbWcudGVtcGxkICE9PSBvYmoudGVtcGxkXHJcbiAgKTtcclxuXHJcbiAgdGhpcy5pbWFnZUZsb3cgPSB0cnVlO1xyXG59XHJcblxyXG4gIFxyXG4gIHNlbGVjdGVkVHlwZTogYW55ID0gXCJcIjsgLy8gZGVmYXVsdCBzZWxlY3RlZFxyXG5zZWxlY3RlZFJhZGlvVHlwZTphbnk7XHJcbm9uUmFkaW9DaGFuZ2UodmFsOiBhbnkpIHtcclxuICB0aGlzLnNlbGVjdGVkUmFkaW9UeXBlID0gdmFsO1xyXG4gIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0ID0gW107XHJcblxyXG4gIGNvbnN0IHR5cGUgPSAodmFsIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICBpZiAodHlwZSA9PT0gJ2R1cGxpY2F0ZScpIHtcclxuICAgIC8vIOKchSBTaG93IG9ubHkgbm9uLXRhZ2dpbmcgaW1hZ2VzIChleGNsdWRpbmcgdGhlIGN1cnJlbnQgc2VsZWN0ZWRJbWFnZSlcclxuICAgIGNvbnN0IHNlbGVjdGVkVGVtcGxkID0gdGhpcy5zZWxlY3RJbWFnZUFycmF5Py50ZW1wbGQ7XHJcblxyXG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbHRlcigoaW1nOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgaW1nVHlwZSA9IChpbWcucmV2b3BzVHlwZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcclxuICAgICAgcmV0dXJuIGltZ1R5cGUgPT09ICdub24tdGFnZ2luZycgJiYgaW1nLnRlbXBsZCAhPT0gc2VsZWN0ZWRUZW1wbGQ7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyDinIUgT3B0aW9uYWw6IHNldCBhbGwgYXMgdW5zZWxlY3RlZCBpbml0aWFsbHlcclxuICAgIHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheS5mb3JFYWNoKChpbWc6IGFueSkgPT4ge1xyXG4gICAgICBpbWcuc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgaW1nLmlzQ2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfSBcclxuXHJcbiAgLy8g4pyFIERlYnVnXHJcbiAgLy8gY29uc29sZS5sb2coJ1JlbWFpbmluZyBpbWFnZSBsaXN0IGFmdGVyIHJhZGlvIGNoYW5nZTonLCB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkpO1xyXG59XHJcblxyXG5cclxuICB0eXBlOiBhbnkgPSBcImZvb3RmYWxsXCI7XHJcbnNlbGVjdFBsYW5UcmVuZHModHlwZTogYW55KSB7XHJcblxyXG4gIHRoaXMudHlwZSA9IHR5cGU7XHJcblxyXG4gIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XHJcbn1cclxuYXBwbHlGaWx0ZXJzKCkge1xyXG4gIHRoaXMuaW1hZ2VGbG93ID0gZmFsc2U7XHJcblxyXG4gIC8vIENvbnZlcnQgdHlwZSB0byBsb3dlcmNhc2Ugc2FmZWx5XHJcbiAgY29uc3Qgc2VsZWN0ZWRUeXBlID0gdGhpcy50eXBlPy50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICBpZiAoc2VsZWN0ZWRUeXBlID09PSAnZm9vdGZhbGwnKSB7XHJcbiAgICAvLyBGb290ZmFsbCBzaG93cyBhbGwgY3VycmVudFRpbWVSYW5nZURhdGEgKHRpbWUgcmFuZ2UgYmFzZWQpXHJcbiAgICB0aGlzLmltYWdlc0FycmF5RGF0YSA9IFsuLi50aGlzLmN1cnJlbnRUaW1lUmFuZ2VEYXRhXTtcclxuICB9IGVsc2UgIHtcclxuICAgIC8vIEZvciB0YWdnZWQgdHlwZXMgbGlrZSAnZHVwbGljYXRlJywgJ2VtcGxveWVlJywgJ2hvdXNla2VlcGluZydcclxuICAgIHRoaXMuaW1hZ2VzQXJyYXlEYXRhID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbHRlcigoaXRlbTogYW55KSA9PlxyXG4gICAgICBpdGVtLnJldm9wc1R5cGU/LnRvTG93ZXJDYXNlKCkgPT09IHNlbGVjdGVkVHlwZVxyXG4gICAgKTtcclxuICB9IFxyXG4gIC8vIGVsc2Uge1xyXG4gIC8vICAgLy8gTm9uLXRhZ2dpbmcgbWVhbnMgbm8gcmV2b3BzVHlwZSAtIHNob3cgYWxsIHVubWF0Y2hlZCAobm8gdGFnKVxyXG4gIC8vICAgdGhpcy5pbWFnZXNBcnJheURhdGEgPSB0aGlzLmN1cnJlbnRUaW1lUmFuZ2VEYXRhLmZpbHRlcigoaXRlbTogYW55KSA9PlxyXG4gIC8vICAgICAhaXRlbS5yZXZvcHNUeXBlXHJcbiAgLy8gICApO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gU2V0IG5vRGF0YSBiYXNlZCBvbiByZXN1bHRcclxuICB0aGlzLm5vRGF0YSA9ICF0aGlzLmltYWdlc0FycmF5RGF0YT8ubGVuZ3RoO1xyXG5cclxuICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxufVxyXG5oYW5kbGVJbWFnZUNsaWNrKGV2dDogYW55LCBvYmo6IGFueSkge1xyXG4gIC8vIE9ubHkgdG9nZ2xlIGNoZWNrYm94IGlmIHJhZGlvIGlzICdkdXBsaWNhdGUnIGFuZCBpbWFnZSBpcyBub3QgYWxyZWFkeSB0YWdnZWRcclxuICBpZiAodGhpcy5zZWxlY3RlZFJhZGlvVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgIShvYmouZHVwbGljYXRlSW1hZ2VQYXRoPy5sZW5ndGggPiAwKSkge1xyXG4gICAgdGhpcy5vbkltYWdlQ2hlY2tib3hDaGFuZ2UoZXZ0LCBvYmosICdkdXBsaWNhdGUnKTtcclxuICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRSYWRpb1R5cGUgIT09ICdkdXBsaWNhdGUnKSB7XHJcbiAgICB0aGlzLmltZ1N3YXAob2JqKTsgLy8gZXhpc3Rpbmcgbm9uLWR1cGxpY2F0ZSBjbGljayBiZWhhdmlvclxyXG4gIH1cclxufVxyXG5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3Q6YW55PVtdO1xyXG5cclxub25JbWFnZUNoZWNrYm94Q2hhbmdlKGV2dDogYW55LCBpbWc6IGFueSwgdHlwZTogc3RyaW5nKSB7XHJcbiAgaWYgKHR5cGUgPT09ICdkdXBsaWNhdGUnKSB7XHJcbiAgICBjb25zdCB0b3RhbEltYWdlcyA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5sZW5ndGg7XHJcbiAgICBjb25zdCBhbHJlYWR5VGFnZ2VkQ291bnQgPSB0aGlzLmNvdW50RGF0YT8uZHVwbGljYXRlIHx8IDA7XHJcbi8vIGNvbnNvbGUubG9nKHRvdGFsSW1hZ2VzKVxyXG4vLyBjb25zb2xlLmxvZyhhbHJlYWR5VGFnZ2VkQ291bnQpXHJcbiAgICAvLyBUb3RhbCB0YWdnYWJsZSBjb3VudCA9IGFscmVhZHkgdGFnZ2VkICsgc2VsZWN0ZWQgbm93XHJcbiAgICBjb25zdCBtYXhTZWxlY3RhYmxlID0gTWF0aC5yb3VuZCgodG90YWxJbWFnZXMpICogMC4yKTtcclxuLy8gY29uc29sZS5sb2cobWF4U2VsZWN0YWJsZSlcclxuICAgIC8vIENvdW50IHNlbGVjdGVkIG5vdyAoaW4gVUkpXHJcbiAgICBjb25zdCBjdXJyZW50bHlTZWxlY3RlZENvdW50ID0gdGhpcy5vdmVyYWxsQXJyYXlEYXRhLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLnNlbGVjdGVkKS5sZW5ndGg7XHJcblxyXG4gICAgY29uc3Qgd2lsbFNlbGVjdCA9ICFpbWcuc2VsZWN0ZWQ7XHJcblxyXG4gICAgLy8g4puUIEJsb2NrIHNlbGVjdGlvbiBpZiB0cnlpbmcgdG8gZ28gYmV5b25kIDEwJSBjYXBcclxuICAgIGlmICh3aWxsU2VsZWN0ICYmIChjdXJyZW50bHlTZWxlY3RlZENvdW50ICsgYWxyZWFkeVRhZ2dlZENvdW50KSA+PSBtYXhTZWxlY3RhYmxlKSB7XHJcbiAgICAgIHRoaXMudG9hc3QuZ2V0V2FybmluZ1RvYXN0KFxyXG4gICAgICAgIGBZb3UgY2FuIHNlbGVjdCBvbmx5ICR7bWF4U2VsZWN0YWJsZX0gaW1hZ2VzICgke3RoaXMuZ2V0UnZwc0xpc3Q/LmRhdGE/LmNvbmZpZz8uZHVwbGljYXRlID8/ICcyMCUnfSBvZiB0b3RhbCBmb290ZmFsbClgXHJcbiAgICAgICk7XHJcbiAgICAgIGV2dC50YXJnZXQuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOKchSBQcm9jZWVkIHdpdGggc2VsZWN0aW9uIHRvZ2dsZVxyXG4gICAgaW1nLnNlbGVjdGVkID0gIWltZy5zZWxlY3RlZDtcclxuICAgIGltZy5pc0NoZWNrZWQgPSBpbWcuc2VsZWN0ZWQ7XHJcblxyXG4gICAgLy8g4pyFIEFsd2F5cyByZWJ1aWxkIHRoZSBzZWxlY3RlZCBsaXN0XHJcbiAgICB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdCA9IHRoaXMucmVtYWluaW5nSW1hZ2VBcnJheVxyXG4gICAgICAuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0uc2VsZWN0ZWQpXHJcbiAgICAgIC5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgICAuLi5pdGVtLFxyXG4gICAgICAgIHBhcmVudDogaXRlbS5wYXJlbnQgfHwgdGhpcy5zZWxlY3RJbWFnZUFycmF5Py50ZW1wbGQsXHJcbiAgICAgICAgaXNDaGVja2VkOiB0cnVlXHJcbiAgICAgIH0pKTtcclxuXHJcbiAgICAvLyBjb25zb2xlLmxvZygn4pyFIHNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdDonLCB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdCk7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuY2xlYXJWYWx1ZSgpe1xyXG4gIHRoaXMuc2F2ZSgnbm9uLXRhZ2dpbmcnKTtcclxuLy8gdGhpcy5zdWJtaXRWYWx1ZSgnbm9uLXRhZ2dpbmcnKVxyXG59XHJcbmNhbmNlbCgpIHtcclxuICAvLyAxLiBDbGVhciBzZWxlY3RlZCBkdXBsaWNhdGUgaW1hZ2VzIGxpc3RcclxuICB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdCA9IFtdO1xyXG5cclxuICAvLyAyLiBSZXNldCBhbGwgY2hlY2tib3hlcyBhbmQgcmFkaW8gYnV0dG9ucyBpbiBvdmVyYWxsIGltYWdlIGxpc3RcclxuICB0aGlzLm92ZXJhbGxBcnJheURhdGEgPSB0aGlzLm92ZXJhbGxBcnJheURhdGEubWFwKChpbWc6IGFueSkgPT4gKHtcclxuICAgIC4uLmltZyxcclxuICAgIGlzQ2hlY2tlZDogZmFsc2UsXHJcbiAgICBzZWxlY3RlZDogZmFsc2UsICAgIC8vIGFzc3VtaW5nICdzZWxlY3RlZCcgaXMgY2hlY2tib3ggYmluZFxyXG4gICAgcGFyZW50OiBudWxsLCAgICAgICAvLyByZXNldCBwYXJlbnQgaWYgdXNlZFxyXG4gICAgLy8gQWRkIG90aGVyIGZsYWdzIGhlcmUgaWYgbmVlZGVkXHJcbiAgfSkpO1xyXG5cclxuICAvLyAzLiBDbG9zZSBpbWFnZSBmbG93L2Z1bGwtdmlldyBpZiBvcGVuXHJcbiAgdGhpcy5pbWFnZUZsb3cgPSBmYWxzZTtcclxuXHJcbiAgLy8gNC4gUmVzZXQgY3VycmVudGx5IHNlbGVjdGVkIGltYWdlXHJcbiAgdGhpcy5zZWxlY3RJbWFnZUFycmF5ID0gbnVsbDtcclxuICB0aGlzLmN1cnJlbnRJbWFnZUluZGV4ID0gMDtcclxuICB0aGlzLnJlbWFpbmluZ0ltYWdlQXJyYXkgPSBbXTtcclxuXHJcbiAgLy8gNS4gKE9wdGlvbmFsKSBSZXNldCByYWRpbyBidXR0b25zIOKAlCBpZiB5b3UgaGF2ZSBhbnkgc3BlY2lmaWMgZmxhZ1xyXG4gdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSA9IHVuZGVmaW5lZDtcclxufVxyXG5wb3B1cFR5cGU6YW55O1xyXG5AVmlld0NoaWxkKCd6b29tUG9wdXAnKSB6b29tUG9wdXA6IEVsZW1lbnRSZWY7XHJcbnNhdmUoY2F0ZWdvcnk6IGFueSkge1xyXG4gICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy56b29tUG9wdXAsIHsgY2VudGVyZWQ6IHRydWUsIHNpemU6ICdtZCcsXHJcbiAgICBiYWNrZHJvcDogJ3N0YXRpYycsICAgLy8gUHJldmVudCBjbG9zaW5nIG9uIG91dHNpZGUgY2xpY2tcclxuICBrZXlib2FyZDogZmFsc2UgICAgICAgLy8gUHJldmVudCBjbG9zaW5nIG9uIEVTQyBrZXlcclxuICB9KTtcclxuICAgIHRoaXMucG9wdXBUeXBlID0gY2F0ZWdvcnk7XHJcbn1cclxuXHJcbmNhbmNlbFN1Ym1pdCgpe1xyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XHJcblxyXG4gIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0ID0gW107XHJcbn1cclxuc3VibWl0VmFsdWUoY2F0ZWdvcnk6IGFueSkge1xyXG4gIGxldCBkdXBsaWNhdGVJbWFnZXMgPSBbXTtcclxuXHJcbiAgaWYgKGNhdGVnb3J5ID09PSAnZHVwbGljYXRlJykge1xyXG4gICAgZHVwbGljYXRlSW1hZ2VzID0gdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5XHJcbiAgICAgIC5maWx0ZXIoKGltZzogYW55KSA9PiBpbWcuc2VsZWN0ZWQgPT09IHRydWUpXHJcbiAgICAgIC5tYXAoKGltZzogYW55KSA9PiAoe1xyXG4gICAgICAgIHRlbXBJZDogaW1nLnRlbXBsZCB8fCBpbWcudGVtcElkIHx8ICcnLFxyXG4gICAgICAgIHRpbWVSYW5nZTogaW1nLnRpbWVSYW5nZSB8fCAnJyxcclxuICAgICAgICBlbnRyeVRpbWU6IGltZy5lbnRyeVRpbWUgfHwgaW1nLmVudHJ5VG1lIHx8ICcnLFxyXG4gICAgICAgIGV4aXRUaW1lOiBpbWcuZXhpdFRpbWUgfHwgJycsXHJcbiAgICAgICAgZmlsZVBhdGg6IGltZy5maWxlUGF0aCxcclxuICAgICAgICByZXZvcHNUeXBlOiAnZHVwbGljYXRlJyxcclxuICAgICAgICBpc0NoZWNrZWQ6IHRydWVcclxuICAgICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgaW1nID0gdGhpcy5zZWxlY3RJbWFnZUFycmF5O1xyXG5cclxuICBjb25zdCBvYmogPSB7XHJcbiAgICBzdG9yZUlkOiB0aGlzLnN0b3JlSWRhcnJheSAmJiB0aGlzLnN0b3JlSWRhcnJheS5sZW5ndGggPiAwXHJcbiAgICAgID8gdGhpcy5zdG9yZUlkYXJyYXlbMF1cclxuICAgICAgOiBudWxsLFxyXG4gICAgZGF0ZVN0cmluZzogdGhpcy5mb2xkZXJEYXRlIHx8ICcnLFxyXG4gICAgdGVtcElkOiBpbWc/LnRlbXBsZCB8fCAwLFxyXG4gICAgcmV2b3BzVHlwZTogY2F0ZWdvcnksXHJcbiAgICB0aW1lUmFuZ2U6IGltZz8udGltZVJhbmdlIHx8ICcnLFxyXG4gICAgaXNDaGVja2VkOiB0cnVlLFxyXG4gICAgZHVwbGljYXRlSW1hZ2U6IGR1cGxpY2F0ZUltYWdlcyxcclxuICAgIHByb2Nlc3NUeXBlOiBpbWc/LnByb2Nlc3NUeXBlIHx8ICdmb290ZmFsbCcsXHJcbiAgICBlbnRyeVRpbWU6IGltZz8uZW50cnlUaW1lIHx8IGltZz8uZW50cnlUbWUgfHwgJycsXHJcbiAgICBleGl0VGltZTogaW1nPy5leGl0VGltZSB8fCAnJyxcclxuICAgIGZpbGVQYXRoOiBpbWc/LmZpbGVQYXRoIHx8ICcnXHJcbiAgfTtcclxuXHJcbiAgdGhpcy5ydnBzU2VydmljZS5nZXRSdnBzVGFnKG9iailcclxuICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KHJlcz8ubWVzc2FnZSB8fCAnVGlja2V0IHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XHJcbiAgICAgICAgICB0aGlzLmltYWdlRmxvdyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5nZXRSZXZvcHMoKTtcclxuICAgICAgICAgIHRoaXMuY2FuY2VsU3VibWl0KCk7IFxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSA9IHVuZGVmaW5lZDsgICAgXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVHlwZSA9ICcnO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ0ZhaWxlZCB0byB1cGRhdGUnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBtc2cgPSBlcnIuZXJyb3I/LmVycm9yIHx8IGVyci5lcnJvciB8fCBlcnI/Lm1lc3NhZ2UgfHwgJ1Vua25vd24gZXJyb3InO1xyXG4gICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChtc2cpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxufVxyXG5cclxuXHJcblxyXG5cclxuICBub0RhdGFNZXNzYWdlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcclxuICBkdXBsaWNhdGU6ICdObyBkdXBsaWNhdGVzIGZvdW5kJyxcclxuICBlbXBsb3llZTogJ05vIGVtcGxveWVlL3N0YWZmIGZvdW5kJyxcclxuICAnaG91c2Uta2VlcGluZyc6ICdObyBob3VzZSBrZWVwaW5nIGZvdW5kJyxcclxuICAnbm9uLXRhZ2dpbmcnOiAnTm8gbm9uLXRhZ2dpbmcgZm91bmQnXHJcbn07XHJcblxyXG50ZW1wUmFpc2VkUGF5bG9hZDogYW55ID0gbnVsbDsgLy8gY2xhc3MtbGV2ZWwgdmFyaWFibGUgZm9yIHByZXZpZXdcclxuXHJcbnByZXBhcmVSYWlzZWRQYXlsb2FkKHNob3dPbmx5ID0gZmFsc2UpOiBhbnkge1xyXG4gXHJcbn1cclxuXHJcbkBWaWV3Q2hpbGQoJ3JhaXNlZFBvcHVwJykgcmFpc2VkUG9wdXA6IEVsZW1lbnRSZWY7XHJcblJhaXNlZCgpe1xyXG5cclxuICAgY29uc3QgcGF5bG9hZDogYW55ID0ge1xyXG4gICAgZGF0ZVN0cmluZzogdGhpcy5mb2xkZXJEYXRlLFxyXG4gICAgc3RvcmVJZDogdGhpcy5zdG9yZUlkYXJyYXk/Lmxlbmd0aCA+IDAgPyB0aGlzLnN0b3JlSWRhcnJheVswXSA6IG51bGwsXHJcbiAgICB0aWNrZXROYW1lOiAnZm9vdGZhbGwtZGlyZWN0b3J5JyxcclxuICAgIGZvb3RmYWxsQ291bnQ6IDAsXHJcbiAgICBkdXBsaWNhdGVDb3VudDogMCxcclxuICAgIGVtcGxveWVlQ291bnQ6IDAsXHJcbiAgICBob3VzZUtlZXBpbmdDb3VudDogMCxcclxuICAgIGNvbW1lbnRzOiB0aGlzLmNvbW1lbnRUZXh0IHx8ICcnLFxyXG4gICAgZHVwbGljYXRlSW1hZ2VzOiBbXSxcclxuICAgIGhvdXNlS2VlcGluZzogW10sXHJcbiAgICBlbXBsb3llZTogW10sXHJcbiAgfTtcclxuXHJcbmxldCB0b3RhbENoZWNrZWRDb3VudCA9IDA7XHJcblxyXG50aGlzLm92ZXJhbGxBcnJheURhdGEuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgY29uc3QgdHlwZSA9IGl0ZW0ucmV2b3BzVHlwZT8udG9Mb3dlckNhc2UoKT8udHJpbSgpO1xyXG4gIGNvbnN0IGlzQ2hlY2tlZCA9IGl0ZW0uaXNDaGVja2VkID09PSB0cnVlO1xyXG5cclxuICAvLyDinIUgQ291bnQgb25seSBpZiBpdGVtIGlzIGNoZWNrZWQgQU5EIHJldm9wc1R5cGUgaXMgJ25vbi10YWdnaW5nJ1xyXG4gIC8vIGNvbnN0IGlzTm90VGFnZ2VkID0gdHlwZSA9PT0gJ25vbi10YWdnaW5nJztcclxuXHJcbiAgLy8gaWYgKGlzTm90VGFnZ2VkKSB7XHJcbiAgLy8gICB0b3RhbENoZWNrZWRDb3VudCsrO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gRFVQTElDQVRFIFRZUEVcclxuICBpZiAodHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgaXRlbS5wYXJlbnQgPT0gbnVsbCAmJiBBcnJheS5pc0FycmF5KGl0ZW0uZHVwbGljYXRlSW1hZ2VQYXRoKSkge1xyXG4gICAgY29uc3QgbmVzdGVkRGF0YSA9IGl0ZW0uZHVwbGljYXRlSW1hZ2VQYXRoXHJcbiAgICAgIC5maWx0ZXIoKGR1cDogYW55KSA9PiBkdXAuaXNDaGVja2VkKVxyXG4gICAgICAubWFwKChkdXA6IGFueSkgPT4gKHtcclxuICAgICAgICB0ZW1wSWQ6IGR1cC50ZW1wSWQgfHwgZHVwLnRlbXBsZCB8fCAnJyxcclxuICAgICAgICBmaWxlUGF0aDogZHVwLmZpbGVQYXRoLFxyXG4gICAgICAgIGVudHJ5VGltZTogZHVwPy5lbnRyeVRpbWUgfHwgZHVwPy5lbnRyeVRtZSB8fCAnJyxcclxuICAgICAgICBleGl0VGltZTogZHVwLmV4aXRUaW1lLFxyXG4gICAgICAgIHRpbWVSYW5nZTogZHVwLnRpbWVSYW5nZSxcclxuICAgICAgICBpc0NoZWNrZWQ6IGR1cC5pc0NoZWNrZWRcclxuICAgICAgfSkpO1xyXG5cclxuICAgIGlmIChuZXN0ZWREYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgcGF5bG9hZC5kdXBsaWNhdGVJbWFnZXMucHVzaCh7XHJcbiAgICAgICAgdGVtcElkOiBpdGVtLnRlbXBsZCxcclxuICAgICAgICBmaWxlUGF0aDogaXRlbS5maWxlUGF0aCxcclxuICAgICAgICBlbnRyeVRpbWU6IGl0ZW0/LmVudHJ5VGltZSB8fCBpdGVtPy5lbnRyeVRtZSB8fCAnJyxcclxuICAgICAgICBleGl0VGltZTogaXRlbS5leGl0VGltZSxcclxuICAgICAgICB0aW1lUmFuZ2U6IGl0ZW0udGltZVJhbmdlLFxyXG4gICAgICAgIGlzQ2hlY2tlZDogaXRlbS5pc0NoZWNrZWQsXHJcbiAgICAgICAgZGF0YTogbmVzdGVkRGF0YSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBwYXlsb2FkLmR1cGxpY2F0ZUNvdW50ICs9IG5lc3RlZERhdGEubGVuZ3RoO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gRU1QTE9ZRUVcclxuICBlbHNlIGlmICh0eXBlID09PSAnZW1wbG95ZWUnICYmIGlzQ2hlY2tlZCkge1xyXG4gICAgcGF5bG9hZC5lbXBsb3llZS5wdXNoKHtcclxuICAgICAgdGVtcElkOiBpdGVtLnRlbXBsZCxcclxuICAgICAgZmlsZVBhdGg6IGl0ZW0uZmlsZVBhdGgsXHJcbiAgICAgIGVudHJ5VGltZTogaXRlbT8uZW50cnlUaW1lIHx8IGl0ZW0/LmVudHJ5VG1lIHx8ICcnLFxyXG4gICAgICBleGl0VGltZTogaXRlbS5leGl0VGltZSxcclxuICAgICAgdGltZVJhbmdlOiBpdGVtLnRpbWVSYW5nZSxcclxuICAgICAgaXNDaGVja2VkOiBpdGVtLmlzQ2hlY2tlZFxyXG4gICAgfSk7XHJcblxyXG4gICAgcGF5bG9hZC5lbXBsb3llZUNvdW50Kys7XHJcbiAgfVxyXG5cclxuICAvLyBIT1VTRUtFRVBJTkdcclxuICBlbHNlIGlmICh0eXBlID09PSAnaG91c2Uta2VlcGluZycgJiYgaXNDaGVja2VkKSB7XHJcbiAgICBwYXlsb2FkLmhvdXNlS2VlcGluZy5wdXNoKHtcclxuICAgICAgdGVtcElkOiBpdGVtLnRlbXBsZCxcclxuICAgICAgZmlsZVBhdGg6IGl0ZW0uZmlsZVBhdGgsXHJcbiAgICAgIGVudHJ5VGltZTogaXRlbT8uZW50cnlUaW1lIHx8IGl0ZW0/LmVudHJ5VG1lIHx8JycsXHJcbiAgICAgIGV4aXRUaW1lOiBpdGVtLmV4aXRUaW1lLFxyXG4gICAgICB0aW1lUmFuZ2U6IGl0ZW0udGltZVJhbmdlLFxyXG4gICAgICBpc0NoZWNrZWQ6IGl0ZW0uaXNDaGVja2VkXHJcbiAgICB9KTtcclxuXHJcbiAgICBwYXlsb2FkLmhvdXNlS2VlcGluZ0NvdW50Kys7XHJcbiAgfVxyXG59KTtcclxuXHJcbnBheWxvYWQuZm9vdGZhbGxDb3VudCA9IHRoaXMuY291bnREYXRhPy5mb290ZmFsbENvdW50O1xyXG5cclxuXHJcbiAgLy8g8J+RhyBSZXR1cm4gb3IgYXNzaWduXHJcblxyXG4gICAgdGhpcy50ZW1wUmFpc2VkUGF5bG9hZCA9IHBheWxvYWQ7XHJcblxyXG4gIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy5yYWlzZWRQb3B1cCwgeyBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ21kJyxcclxuICAgIGJhY2tkcm9wOiAnc3RhdGljJywgXHJcbiAga2V5Ym9hcmQ6IGZhbHNlICAgICAgXHJcbiAgfSk7XHJcbn1cclxuXHJcbmNhbmNlbFJhc2llZCgpe1xyXG4gdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG4gIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0ID0gW107XHJcbn1cclxuXHJcbmNvbW1lbnRUZXh0OmFueVxyXG5nZXRSYWlzZWREYXRhOmFueTtcclxuc3VibWl0UmFpc2VkKCkge1xyXG4gIGNvbnN0IHBheWxvYWQgPSB0aGlzLnRlbXBSYWlzZWRQYXlsb2FkOyAvLyBmcmVzaCBkYXRhIGZvciBBUElcclxuXHJcbiAgdGhpcy5nZXRSYWlzZWREYXRhID0gcGF5bG9hZDtcclxuXHJcbiAgdGhpcy5ydnBzU2VydmljZS5nZXRDcmVhdGVSYWlzZWRUYWcocGF5bG9hZClcclxuICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KHJlcz8ubWVzc2FnZSB8fCAnVGlja2V0IHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XHJcbiAgICAgICAgICB0aGlzLmltYWdlRmxvdyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5nZXRSZXZvcHMoKTtcclxuICAgICAgICAgIHRoaXMuY2FuY2VsUmFzaWVkKCk7IFxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gJyc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnRmFpbGVkIHRvIHVwZGF0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG1zZyA9IGVyci5lcnJvcj8uZXJyb3IgfHwgZXJyLmVycm9yIHx8IGVycj8uZXJyb3I/Lm1lc3NhZ2UgfHwgZXJyLm1lc3NhZ2UgfHwgJ1Vua25vd24gZXJyb3InO1xyXG4gICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChtc2cpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxufVxyXG5cclxuXHJcblxyXG4vLyBvbkltYWdlQ2hlY2tib3hDaGFuZ2UoaW1nOiBhbnksIHR5cGU6IHN0cmluZykge1xyXG4vLyAgIGlmICh0eXBlID09PSAnZHVwbGljYXRlJykge1xyXG4vLyAgICAgLy8gQ291bnQgb25seSB2YWxpZCBkdXBsaWNhdGUgaW1hZ2VzIHdoZXJlIGBkdXBsaWNhdGVJbWFnZVBhdGgubGVuZ3RoID09PSAwYFxyXG4vLyAgICAgY29uc3QgdG90YWxWYWxpZER1cGxpY2F0ZUltYWdlcyA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maWx0ZXIoXHJcbi8vICAgICAgIChpdGVtOiBhbnkpID0+XHJcbi8vICAgICAgICAgaXRlbS5yZXZvcHNUeXBlID09PSAnZHVwbGljYXRlJyAmJiAoIWl0ZW0uZHVwbGljYXRlSW1hZ2VQYXRoIHx8IGl0ZW0uZHVwbGljYXRlSW1hZ2VQYXRoLmxlbmd0aCA9PT0gMClcclxuLy8gICAgICkubGVuZ3RoO1xyXG5cclxuLy8gICAgIGNvbnN0IG1heEFsbG93ZWQgPSBNYXRoLmZsb29yKHRvdGFsVmFsaWREdXBsaWNhdGVJbWFnZXMgKiAwLjEpOyAvLyAxMCUgbGltaXRcclxuXHJcbi8vICAgICBjb25zdCBhbHJlYWR5RXhpc3RzID0gdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3Quc29tZShcclxuLy8gICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS50ZW1wbGQgPT09IGltZy50ZW1wbGRcclxuLy8gICAgICk7XHJcblxyXG4vLyAgICAgaWYgKGltZy5zZWxlY3RlZCkge1xyXG4vLyAgICAgICAvLyDinYwgUmVhY2hlZCBtYXggYWxsb3dlZCDigJQgYmxvY2sgaXRcclxuLy8gICAgICAgaWYgKHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0Lmxlbmd0aCA+PSBtYXhBbGxvd2VkKSB7XHJcbi8vICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KFxyXG4vLyAgICAgICAgICAgYE9ubHkgJHttYXhBbGxvd2VkfSBpbWFnZXMgY2FuIGJlIHNlbGVjdGVkIGFzIGR1cGxpY2F0ZSAoMTAlIG9mIHVudGFnZ2VkIGR1cGxpY2F0ZXMpLmBcclxuLy8gICAgICAgICApO1xyXG5cclxuLy8gICAgICAgICBpbWcuc2VsZWN0ZWQgPSBmYWxzZTtcclxuLy8gICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMub3ZlcmFsbEFycmF5RGF0YS5maW5kSW5kZXgoKGl0ZW06IGFueSkgPT4gaXRlbS50ZW1wbGQgPT09IGltZy50ZW1wbGQpO1xyXG4vLyAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuLy8gICAgICAgICAgIHRoaXMub3ZlcmFsbEFycmF5RGF0YVtpbmRleF0uc2VsZWN0ZWQgPSBmYWxzZTtcclxuLy8gICAgICAgICB9XHJcblxyXG4vLyAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4vLyAgICAgICAgICAgaW1nLnNlbGVjdGVkID0gZmFsc2U7XHJcbi8vICAgICAgICAgfSk7XHJcblxyXG4vLyAgICAgICAgIHJldHVybjtcclxuLy8gICAgICAgfVxyXG5cclxuLy8gICAgICAgLy8g4pyFIEFkZCBpZiBub3QgYWxyZWFkeSBpbiBsaXN0XHJcbi8vICAgICAgIGlmICghYWxyZWFkeUV4aXN0cykge1xyXG4vLyAgICAgICAgIHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0LnB1c2goe1xyXG4vLyAgICAgICAgICAgLi4uaW1nLFxyXG4vLyAgICAgICAgICAgaXNDaGVja2VkOiB0cnVlLFxyXG4vLyAgICAgICAgICAgcGFyZW50OiBpbWcucGFyZW50IHx8IG51bGxcclxuLy8gICAgICAgICB9KTtcclxuLy8gICAgICAgfVxyXG4vLyAgICAgfSBlbHNlIHtcclxuLy8gICAgICAgLy8g4p2MIFJlbW92YWwgY2FzZVxyXG4vLyAgICAgICB0aGlzLnNlbGVjdGVkRHVwbGljYXRlSW1hZ2VzTGlzdCA9IHRoaXMuc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0LmZpbHRlcihcclxuLy8gICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnRlbXBsZCAhPT0gaW1nLnRlbXBsZFxyXG4vLyAgICAgICApO1xyXG4vLyAgICAgfVxyXG4vLyAgIH1cclxuXHJcbi8vICAgLy8g4pqg77iPIENhbGwgdGhpcyB0byB1cGRhdGUgYnV0dG9uIGVuYWJsZSBzdGF0ZVxyXG4vLyAgIHRoaXMuY2hlY2tEdXBsaWNhdGVTYXZlRW5hYmxlKCk7XHJcbi8vIH1cclxuXHJcblxyXG4vLyBkdXBsaWNhdGVTYXZlRW5hYmxlZCA9IGZhbHNlO1xyXG5cclxuLy8gY2hlY2tEdXBsaWNhdGVTYXZlRW5hYmxlKCkge1xyXG4vLyAgIHRoaXMuZHVwbGljYXRlU2F2ZUVuYWJsZWQgPVxyXG4vLyAgICAgdGhpcy5zZWxlY3RlZFJhZGlvVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgdGhpcy5zZWxlY3RlZER1cGxpY2F0ZUltYWdlc0xpc3QubGVuZ3RoID4gMDtcclxuLy8gfVxyXG5cclxuQFZpZXdDaGlsZCgnaW1hZ2VQb3B1cCcpIGltYWdlUG9wdXA6IEVsZW1lbnRSZWY7XHJcbnNlbGVjdGVkSW1hZ2VBcnJheSh1cmw6YW55LGRhdGE6YW55KXtcclxuXHJcbiAgICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMuaW1hZ2VQb3B1cCwgeyBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ2xnJyxcclxuICAgIGJhY2tkcm9wOiAnc3RhdGljJywgXHJcbiAga2V5Ym9hcmQ6IGZhbHNlICAgICAgXHJcbiAgfSk7XHJcbn1cclxuXHJcblxyXG5jbG9zZUltYWdlKCl7XHJcbiAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG59XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIGN1cnJlbnRJbWFnZUluZGV4OiBudW1iZXIgPSAwO1xyXG4gIGdldCBjYW5OYXZpZ2F0ZUxlZnQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50SW1hZ2VJbmRleCA+IDA7XHJcbiAgfVxyXG4gIFxyXG4gIGdldCBjYW5OYXZpZ2F0ZVJpZ2h0KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEltYWdlSW5kZXggPCB0aGlzLmltYWdlc0FycmF5RGF0YS5sZW5ndGggLSAxO1xyXG4gIH1cclxuICBcclxuICBuYXZpZ2F0ZUltYWdlKGRpcmVjdGlvbjogXCJsZWZ0XCIgfCBcInJpZ2h0XCIpIHtcclxuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMuaW1hZ2VzQXJyYXlEYXRhLmxlbmd0aDtcclxuICBcclxuICAgIGlmIChkaXJlY3Rpb24gPT09IFwibGVmdFwiICYmIHRoaXMuY2FuTmF2aWdhdGVMZWZ0KSB7XHJcbiAgICAgIHRoaXMuY3VycmVudEltYWdlSW5kZXgtLTtcclxuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSBcInJpZ2h0XCIgJiYgdGhpcy5jYW5OYXZpZ2F0ZVJpZ2h0KSB7XHJcbiAgICAgIHRoaXMuY3VycmVudEltYWdlSW5kZXgrKztcclxuICAgIH1cclxuICBcclxuICAgIC8vIFVwZGF0ZSBzZWxlY3RlZCBpbWFnZVxyXG4gICAgdGhpcy5zZWxlY3RJbWFnZUFycmF5ID0gdGhpcy5pbWFnZXNBcnJheURhdGFbdGhpcy5jdXJyZW50SW1hZ2VJbmRleF07XHJcbiAgXHJcbiAgICAvLyBVcGRhdGUgcmVtYWluaW5nIGltYWdlc1xyXG4gICAgdGhpcy5yZW1haW5pbmdJbWFnZUFycmF5ID0gdGhpcy5pbWFnZXNBcnJheURhdGEuZmlsdGVyKFxyXG4gICAgICAoXzogYW55LCBpOiBhbnkpID0+IGkgIT09IHRoaXMuY3VycmVudEltYWdlSW5kZXhcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBcclxufSIsIjxkaXYgY2xhc3M9XCJjYXJkIG10LTNcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBtdC0zIHB4LTAgYm9yZGVyLWJvdHRvbS0wXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1hY2NvcmRpb25cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1hY2NvcmRpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1haW5oZWFkaW5nIHBiLTAgY3VzdG9tLWFjY29yZGlvbi1oZWFkZXJcIiAoY2xpY2spPVwidG9nZ2xlQWNjb3JkaW9uKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImltZy1kaXJlY1wiPkltYWdlIERpcmVjdG9yeTwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhY2NvcmRpb24tYXJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRG93biBhcnJvdyBmb3IgY29sbGFwc2VkIHN0YXRlLCB1cCBhcnJvdyBmb3IgZXhwYW5kZWQgc3RhdGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWlzQWNjb3JkaW9uRXhwYW5kZWRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNlwiIGhlaWdodD1cIjZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xIDFMNSA1TDkgMVwiIHN0cm9rZT1cIiMwNzE0MzdcIiBzdHJva2Utd2lkdGg9XCIxXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImlzQWNjb3JkaW9uRXhwYW5kZWRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNlwiIGhlaWdodD1cIjZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xIDVMNSAxTDkgNVwiIHN0cm9rZT1cIiMxYjg0ZmZcIiBzdHJva2Utd2lkdGg9XCIxXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDwvZGl2PlxyXG4gICAgPHNlY3Rpb24gKm5nSWY9XCJpc0FjY29yZGlvbkV4cGFuZGVkXCI+XHJcblxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJmb2xkZXJWaWV3XCIgY2xhc3M9XCJjYXJkLWJvZHkgcHgtMFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMSBtdC01IHRleHQtY2VudGVyXCIgKm5nRm9yPVwibGV0IG9iaiBvZiBkYXRlQXJyYXk7bGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJnZXRpbWFnZXMoaSxvYmopXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaSA9PT0gc2VsZWN0SW5kZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPjxzdmcgd2lkdGg9XCI1N1wiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NyA1NlwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIwLjE1NDI5N1wiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHJ4PVwiMTJcIiBmaWxsPVwiIzMzQjVGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMzkuODIxNiAzNi4xNjY3QzM5LjgyMTYgMzYuNzg1NSAzOS41NzU4IDM3LjM3OSAzOS4xMzgyIDM3LjgxNjZDMzguNzAwNiAzOC4yNTQyIDM4LjEwNzEgMzguNSAzNy40ODgzIDM4LjVIMTguODIxNkMxOC4yMDI4IDM4LjUgMTcuNjA5MyAzOC4yNTQyIDE3LjE3MTcgMzcuODE2NkMxNi43MzQxIDM3LjM3OSAxNi40ODgzIDM2Ljc4NTUgMTYuNDg4MyAzNi4xNjY3VjE5LjgzMzNDMTYuNDg4MyAxOS4yMTQ1IDE2LjczNDEgMTguNjIxIDE3LjE3MTcgMTguMTgzNEMxNy42MDkzIDE3Ljc0NTggMTguMjAyOCAxNy41IDE4LjgyMTYgMTcuNUgyNC42NTQ5TDI2Ljk4ODMgMjFIMzcuNDg4M0MzOC4xMDcxIDIxIDM4LjcwMDYgMjEuMjQ1OCAzOS4xMzgyIDIxLjY4MzRDMzkuNTc1OCAyMi4xMjEgMzkuODIxNiAyMi43MTQ1IDM5LjgyMTYgMjMuMzMzM1YzNi4xNjY3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2Utd2lkdGg9XCIyLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIG10LTJcIj57e29iaiB8IGRhdGU6J2RkIE1NTSd9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaSAhPT0gc2VsZWN0SW5kZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPjxzdmcgd2lkdGg9XCI1N1wiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NyA1NlwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIwLjQ2Mjg5MVwiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHJ4PVwiMTJcIiBmaWxsPVwiI0VBRjhGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNDAuMTMwMiAzNi4xNjY3QzQwLjEzMDIgMzYuNzg1NSAzOS44ODQ0IDM3LjM3OSAzOS40NDY4IDM3LjgxNjZDMzkuMDA5MiAzOC4yNTQyIDM4LjQxNTcgMzguNSAzNy43OTY5IDM4LjVIMTkuMTMwMkMxOC41MTE0IDM4LjUgMTcuOTE3OSAzOC4yNTQyIDE3LjQ4MDMgMzcuODE2NkMxNy4wNDI3IDM3LjM3OSAxNi43OTY5IDM2Ljc4NTUgMTYuNzk2OSAzNi4xNjY3VjE5LjgzMzNDMTYuNzk2OSAxOS4yMTQ1IDE3LjA0MjcgMTguNjIxIDE3LjQ4MDMgMTguMTgzNEMxNy45MTc5IDE3Ljc0NTggMTguNTExNCAxNy41IDE5LjEzMDIgMTcuNUgyNC45NjM1TDI3LjI5NjkgMjFIMzcuNzk2OUMzOC40MTU3IDIxIDM5LjAwOTIgMjEuMjQ1OCAzOS40NDY4IDIxLjY4MzRDMzkuODg0NCAyMi4xMjEgNDAuMTMwMiAyMi43MTQ1IDQwLjEzMDIgMjMuMzMzM1YzNi4xNjY3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjIuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbXQtMlwiPnt7b2JqIHwgZGF0ZTonZGQgTU1NJ319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiFmb2xkZXJWaWV3XCIgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICAgICAgPHNlY3Rpb24gKm5nSWY9XCIhaW1hZ2VGbG93XCI+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc2hyaW5rLTAgbXQtMyBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyIHB4LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJiYWNrbmF2XCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJiYWNrVG9Gb290ZmFsbCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHZpZXdCb3g9XCIwIDAgNDAgNDBcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGZpbHRlcj1cInVybCgjZmlsdGVyMF9kXzI1ODVfNzAzNilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMVwiIHdpZHRoPVwiMzZcIiBoZWlnaHQ9XCIzNlwiIHJ4PVwiOFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyLjVcIiB5PVwiMS41XCIgd2lkdGg9XCIzNVwiIGhlaWdodD1cIjM1XCIgcng9XCI3LjVcIiBzdHJva2U9XCIjRDBENUREXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yNS44MzI3IDE5SDE0LjE2Nk0xNC4xNjYgMTlMMTkuOTk5MyAyNC44MzM0TTE0LjE2NiAxOUwxOS45OTkzIDEzLjE2NjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWx0ZXIgaWQ9XCJmaWx0ZXIwX2RfMjU4NV83MDM2XCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZU9mZnNldCBkeT1cIjFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwLjA2Mjc0NTEgMCAwIDAgMCAwLjA5NDExNzYgMCAwIDAgMCAwLjE1Njg2MyAwIDAgMCAwLjA1IDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cIkJhY2tncm91bmRJbWFnZUZpeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93XzI1ODVfNzAzNlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW49XCJTb3VyY2VHcmFwaGljXCIgaW4yPVwiZWZmZWN0MV9kcm9wU2hhZG93XzI1ODVfNzAzNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwic2hhcGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbHRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImltZy1kaXJlYyBtcy0yIG10LTFcIj57e2ZvbGRlckRhdGUgfCBkYXRlOidkZCBNTU0sIHl5eXknfX0gIFxyXG4gICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtd2FybmluZyBteC0yXCIgKm5nSWY9XCIhZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnY2xvc2VkJykgJiYgZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnb3BlbicpXCI+XHJcbiAgVGlja2V0IFJhaXNlZFxyXG48L3NwYW4+XHJcbjxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcyBteC0yXCIgKm5nSWY9XCJnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdjbG9zZWQnKVwiPlRpY2tldCBDbG9zZWQ8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdvcGVuJykgJiYgIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ2Nsb3NlZCcpXCIgIGNsYXNzPVwibXMtYXV0byB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICBcclxuICA8YnV0dG9uIFtkaXNhYmxlZF09XCIhKGNvdW50RGF0YT8uZHVwbGljYXRlID4gMCB8fCBjb3VudERhdGE/LmhvdXNla2VlcGluZyA+IDAgfHwgY291bnREYXRhPy5lbXBsb3llZSA+IDApXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIlJhaXNlZCgpXCI+XHJcbiAgICBSYWlzZSB0aWNrZXQgZm9yIGZvb3RmYWxsXHJcbiAgPC9idXR0b24+XHJcbjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZm9sZGVyVmlld1wiIGNsYXNzPVwibmF2LWdyb3VwIGJnLXdoaXRlIGJvcmRlci0xIGJ0bi1ncm91cCB3LWF1dG8gbXktMlwiPlxyXG48bmctY29udGFpbmVyICpuZ0lmPVwiIShjb3VudERhdGE/Lmxlbmd0aCA+IDApXCI+XHJcblxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdmb290ZmFsbCcgPyAnYWN0aXZlUGxhbkJ0bicgOiAnaW5hY3RpdmVQbGFuQnRuJ1wiXHJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW5UcmVuZHMoJ2Zvb3RmYWxsJylcIj5cclxuICAgICAgICBUb3RhbCBGb290ZmFsbFxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdmb290ZmFsbCcgPyAnYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1hY3RpdmUnIDogJ2luYWN0aXZlUGxhbkJ0biBiYWRnZSBiYWRnZS1saWdodC1kZWZhdWx0J1wiPlxyXG4gICAgICAgICAgICB7eyBjb3VudERhdGE/LmZvb3RmYWxsQ291bnQgfHwgMCB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnbm9uLXRhZ2dpbmcnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxyXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuVHJlbmRzKCdub24tdGFnZ2luZycpXCI+XHJcbiAgICAgICAgTm9uLXRhZ3NcclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnbm9uLXRhZ2dpbmcnID8gJ2FjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtYWN0aXZlJyA6ICdpbmFjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCdcIj5cclxuICAgICAgICAgICAge3sgY291bnREYXRhPy5ub25UYWdzIHx8IDAgfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHB4LTYgcHktM1wiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2R1cGxpY2F0ZScgPyAnYWN0aXZlUGxhbkJ0bicgOiAnaW5hY3RpdmVQbGFuQnRuJ1wiXHJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBsYW5UcmVuZHMoJ2R1cGxpY2F0ZScpXCI+XHJcbiAgICAgICAgRHVwbGljYXRlZFxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdkdXBsaWNhdGUnID8gJ2FjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtYWN0aXZlJyA6ICdpbmFjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCdcIj5cclxuICAgICAgICAgICAge3sgY291bnREYXRhPy5kdXBsaWNhdGUgfHwgMCB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcHgtNiBweS0zXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZW1wbG95ZWUnID8gJ2FjdGl2ZVBsYW5CdG4nIDogJ2luYWN0aXZlUGxhbkJ0bidcIlxyXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RQbGFuVHJlbmRzKCdlbXBsb3llZScpXCI+XHJcbiAgICAgICAgRW1wbG95ZWUvU3RhZmZcclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ0eXBlID09PSAnZW1wbG95ZWUnID8gJ2FjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtYWN0aXZlJyA6ICdpbmFjdGl2ZVBsYW5CdG4gYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCdcIj5cclxuICAgICAgICAgICAge3sgY291bnREYXRhPy5lbXBsb3llZSB8fCAwIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInR5cGUgPT09ICdob3VzZS1rZWVwaW5nJyA/ICdhY3RpdmVQbGFuQnRuJyA6ICdpbmFjdGl2ZVBsYW5CdG4nXCJcclxuICAgICAgICAoY2xpY2spPVwic2VsZWN0UGxhblRyZW5kcygnaG91c2Uta2VlcGluZycpXCI+XHJcbiAgICBIb3VzZSBLZWVwaW5nXHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwidHlwZSA9PT0gJ2hvdXNlLWtlZXBpbmcnID8gJ2JhZGdlIGJhZGdlLWFjdGl2ZSBhY3RpdmVQbGFuQnRuJyA6ICcgYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCBpbmFjdGl2ZVBsYW5CdG4nXCI+XHJcbiAgICAgICAgICAgIHt7IGNvdW50RGF0YT8uaG91c2VrZWVwaW5nIHx8IDAgfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG48bmctY29udGFpbmVyICpuZ0lmPVwiIWltYWdlRmxvd1wiPlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJ0eXBlID09PSAnZm9vdGZhbGwnXCIgY2xhc3M9XCJkLWZsZXggbXQtMiBtYi0yIHctMTAwIG92ZXJmbG93LXggcHgtMFwiPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCB0ZXh0LW5vd3JhcFwiICpuZ0Zvcj1cImxldCBvYmogb2Ygb2JqZWN0c0FycmF5XCI+XHJcbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJuYXYgbmF2LXN0cmV0Y2ggbmF2LWxpbmUtdGFiczEgbmF2LWxpbmUtdGFicyBib3JkZXItdHJhbnNwYXJlbnQgZmxleC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbSBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSAoY2xpY2spPVwic2VsZWN0ZWRUaW1lcyhvYmoudGltZVJhbmdlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZFRpbWUgPT09IG9iaj8udGltZVJhbmdlID8gJ2FjdGl2ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIGN1cnNvci1wb2ludGVyIG5vLWJvcmRlciBteC0zIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7b2JqPy50aW1lUmFuZ2V9fTxzcGFuIGNsYXNzPVwibXgtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0ZWRUaW1lID09PSBvYmo/LnRpbWVSYW5nZSA/ICdiYWRnZS1udW0tcHJpbWFyeScgOidiYWRnZS1udW0tbXV0ZWQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb2JqPy5jb3VudCA/IG9iaj8uY291bnQgOiAwIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwicm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm5vRGF0YVwiIGNsYXNzPVwicm93XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG1iLTNcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtbiBcIiBzdHlsZT1cIm1hcmdpbjogNjRweDtib3JkZXItcmFkaXVzOiA4cHg7XHJcbmJhY2tncm91bmQ6IHZhcigtLUdyYXktNTAsICNGOUZBRkIpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI5NFwiIGhlaWdodD1cIjk0XCIgdmlld0JveD1cIjAgMCA5NCA5NFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiN1wiIHk9XCI3XCIgd2lkdGg9XCI4MFwiIGhlaWdodD1cIjgwXCIgcng9XCI0MFwiIGZpbGw9XCIjREFGMUZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjdcIiB5PVwiN1wiIHdpZHRoPVwiODBcIiBoZWlnaHQ9XCI4MFwiIHJ4PVwiNDBcIiBzdHJva2U9XCIjRUFGOEZGXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEzLjMzMzNcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zNS4zMzIgNTEuOTk5OUgzMy42NjU0QzMyLjc4MTMgNTEuOTk5OSAzMS45MzM1IDUxLjY0ODcgMzEuMzA4MyA1MS4wMjM2QzMwLjY4MzIgNTAuMzk4NSAzMC4zMzIgNDkuNTUwNiAzMC4zMzIgNDguNjY2NlYzMy42NjY2QzMwLjMzMiAzMi43ODI1IDMwLjY4MzIgMzEuOTM0NyAzMS4zMDgzIDMxLjMwOTZDMzEuOTMzNSAzMC42ODQ0IDMyLjc4MTMgMzAuMzMzMyAzMy42NjU0IDMwLjMzMzNINDguNjY1NEM0OS41NDk0IDMwLjMzMzMgNTAuMzk3MyAzMC42ODQ0IDUxLjAyMjQgMzEuMzA5NkM1MS42NDc1IDMxLjkzNDcgNTEuOTk4NyAzMi43ODI1IDUxLjk5ODcgMzMuNjY2NlYzNS4zMzMzTTQ1LjMzMiA0MS45OTk5SDYwLjMzMkM2Mi4xNzMgNDEuOTk5OSA2My42NjU0IDQzLjQ5MjMgNjMuNjY1NCA0NS4zMzMzVjYwLjMzMzNDNjMuNjY1NCA2Mi4xNzQyIDYyLjE3MyA2My42NjY2IDYwLjMzMiA2My42NjY2SDQ1LjMzMkM0My40OTExIDYzLjY2NjYgNDEuOTk4NyA2Mi4xNzQyIDQxLjk5ODcgNjAuMzMzM1Y0NS4zMzMzQzQxLjk5ODcgNDMuNDkyMyA0My40OTExIDQxLjk5OTkgNDUuMzMyIDQxLjk5OTlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCI0XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZSBteS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG5vRGF0YU1lc3NhZ2VzW3R5cGU/LnRvTG93ZXJDYXNlKCldIHx8ICdObyBkYXRhIGZvdW5kJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMCBpbWctdHJhZmZpYyBjb250YWluIGhpZ2gtNDAwcHggc2Nyb2xsLXlcIiAqbmdJZj1cIiFub0RhdGEgJiYgIWxvYWRpbmdcIj5cclxuICAgICAgIDxuZy1jb250YWluZXJcclxuXHJcbipuZ0Zvcj1cImxldCBvYmogb2YgaW1hZ2VzQXJyYXlEYXRhXCJcclxuPlxyXG48ZGl2ICAqbmdJZj1cInR5cGUgIT09ICdkdXBsaWNhdGUnIHx8ICh0eXBlID09PSAnZHVwbGljYXRlJyYmIG9iai5yZXZvcHNUeXBlID09PSAnZHVwbGljYXRlJyAmJiBvYmouZHVwbGljYXRlSW1hZ2VQYXRoPy5sZW5ndGggPiAwKVwiICBjbGFzcz1cImNvbC1tZC0zIGJvcmRlci1ncmF5IG14LTIgcC0yIG10LTVcIj5cclxuPCEtLSBDb25kaXRpb246IE9ubHkgc2hvdyBpZiBub3QgZHVwbGljYXRlIE9SIGR1cGxpY2F0ZSB3aXRoIG5vbi1lbXB0eSBkdXBsaWNhdGVJbWFnZVBhdGggLS0+XHJcbjxuZy1jb250YWluZXIgPlxyXG48aW1nXHJcbmNsYXNzPVwiaW1nLXNyYyBjdXJzb3ItcG9pbnRlclwiXHJcbltzcmNdPVwiaW1hZ2VVcmwgKyBvYmo/LmZpbGVQYXRoXCJcclxuKGVycm9yKT1cIm9iai5maWxlUGF0aCA9IG51bGxcIlxyXG5hbHQ9XCJcIlxyXG4oY2xpY2spPVwiaW1nRnVsbFZpZXcob2JqKVwiXHJcbi8+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFvYmo/LmZpbGVQYXRoXCIgY2xhc3M9XCJuby1wcmV2aWV3XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjNcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjMgMjBcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJHcm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJWZWN0b3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi41IDYuMzIyMjdINi41MU0xNi4yNSA5LjMyMjI3SDIxLjVMMTggMTYuMzIyM0wxNC45MSAxMi4wMDIzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVmVjdG9yXzJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMS41IDE2LjMyMjlINS4yNkM1LjYzMjczIDE2LjMyNTUgNS45OTg3NyAxNi4yMjM5IDYuMzE2ODIgMTYuMDI5NUM2LjYzNDg3IDE1LjgzNTIgNi44OTIyOCAxNS41NTU4IDcuMDYgMTUuMjIyOUw4LjUgMTIuMzIyOU0xLjUgMTguMzIyOVYxNC4zMjI5TTE3LjUgNi44MjI5MUwxMy41IDE0LjgyMjlMMy4xMSA5LjYyMjkxQzIuNDIwMzMgOS4yNzU1MyAxLjg5NjM1IDguNjY5MSAxLjY1MjcyIDcuOTM2MzJDMS40MDkwOSA3LjIwMzU0IDEuNDY1NjQgNi40MDQxIDEuODEgNS43MTI5MUwzLjE5IDIuOTIyOTFDMy4zNjIgMi41ODAxNCAzLjU5OTg0IDIuMjc0NiAzLjg4OTk0IDIuMDIzNzVDNC4xODAwMyAxLjc3MjkgNC41MTY3IDEuNTgxNjUgNC44ODA3MiAxLjQ2MDkzQzUuMjQ0NzQgMS4zNDAyMSA1LjYyODk3IDEuMjkyMzkgNi4wMTE0NyAxLjMyMDE4QzYuMzkzOTggMS4zNDc5NyA2Ljc2NzI2IDEuNDUwODQgNy4xMSAxLjYyMjkxTDE3LjUgNi44MjI5MVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXIgbWItNSB0ZXh0LWNlbnRlclwiPlByZXZpZXcgbm90IGF2YWlsYWJsZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGVzY3JpcHRpb24gbWItNSB0ZXh0LWNlbnRlclwiPlRoZSBzZWxlY3RlZCBjYW1lcmEgaXMgbm90IGF2YWlsYWJsZSBhdCB0aGVcclxuICAgICAgICAgICAgICAgICAgICBtb21lbnQuPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInR5cGUgIT09ICdkdXBsaWNhdGUnIHx8ICh0eXBlID09PSAnZHVwbGljYXRlJyYmIG9iai5yZXZvcHNUeXBlID09PSAnZHVwbGljYXRlJyAmJiBvYmouZHVwbGljYXRlSW1hZ2VQYXRoPy5sZW5ndGggPiAwKVwiIGNsYXNzPVwicm93IHB4LTIgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTIgaW1nLWRvYy10aW1lXCI+VGFuZ28gSUQgOiB7e29iaj8udGVtcGxkfX0gPHNwYW4gKm5nSWY9XCIodHlwZSA9PT0gJ2R1cGxpY2F0ZScmJiBvYmoucmV2b3BzVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgb2JqLmR1cGxpY2F0ZUltYWdlUGF0aD8ubGVuZ3RoID4gMClcIiBjbGFzcz1cIm14LTIgYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeVwiPnt7b2JqLmR1cGxpY2F0ZUltYWdlUGF0aD8ubGVuZ3RofX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltZy1kb2MtdmFsdWVcIj5FbnRyeSBUaW1lIDoge3tvYmo/LmVudHJ5VG1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01IHRleHQtZW5kIHB5LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nbm9uLXRhZ2dpbmcnXCIgbmdiVG9vbHRpcD1cIllldCB0byB0YWcgdGhlIGN1c3RvbWVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwidG9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTlcIiBoZWlnaHQ9XCIxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE5IDE4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02LjAyMzQ0IDUuNjI1SDYuMDMwOTRNMTYuMjE1OSAxMC40MzI1TDEwLjgzODQgMTUuODFDMTAuNjk5MSAxNS45NDk1IDEwLjUzMzcgMTYuMDYwMSAxMC4zNTE2IDE2LjEzNTZDMTAuMTY5NSAxNi4yMTExIDkuOTc0MzEgMTYuMjQ5OSA5Ljc3NzE5IDE2LjI0OTlDOS41ODAwNiAxNi4yNDk5IDkuMzg0ODcgMTYuMjExMSA5LjIwMjc4IDE2LjEzNTZDOS4wMjA2OCAxNi4wNjAxIDguODU1MjUgMTUuOTQ5NSA4LjcxNTk0IDE1LjgxTDIuMjczNDQgOS4zNzVWMS44NzVIOS43NzM0NEwxNi4yMTU5IDguMzE3NUMxNi40OTUzIDguNTk4NTQgMTYuNjUyMSA4Ljk3ODcyIDE2LjY1MjEgOS4zNzVDMTYuNjUyMSA5Ljc3MTI4IDE2LjQ5NTMgMTAuMTUxNSAxNi4yMTU5IDEwLjQzMjVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdkdXBsaWNhdGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzNSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2VtcGxveWVlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xNjU0IDE4LjE4NlYxNi41MTk0QzE0LjE2NTQgMTUuNjM1MyAxMy44MTQyIDE0Ljc4NzUgMTMuMTg5MSAxNC4xNjIzQzEyLjU2MzkgMTMuNTM3MiAxMS43MTYxIDEzLjE4NiAxMC44MzIgMTMuMTg2SDQuMTY1MzZDMy4yODEzMSAxMy4xODYgMi40MzM0NiAxMy41MzcyIDEuODA4MzQgMTQuMTYyM0MxLjE4MzIyIDE0Ljc4NzUgMC44MzIwMzEgMTUuNjM1MyAwLjgzMjAzMSAxNi41MTk0VjE4LjE4Nk0xOS4xNjU0IDE4LjE4NlYxNi41MTk0QzE5LjE2NDggMTUuNzgwOCAxOC45MTkgMTUuMDYzMyAxOC40NjY1IDE0LjQ3OTZDMTguMDE0IDEzLjg5NTkgMTcuMzgwNSAxMy40NzkgMTYuNjY1NCAxMy4yOTQ0TTEzLjMzMiAzLjI5NDM3QzE0LjA0OSAzLjQ3Nzk1IDE0LjY4NDYgMy44OTQ5NSAxNS4xMzg0IDQuNDc5NjNDMTUuNTkyMiA1LjA2NDMgMTUuODM4NiA1Ljc4MzM5IDE1LjgzODYgNi41MjM1NEMxNS44Mzg2IDcuMjYzNjggMTUuNTkyMiA3Ljk4Mjc3IDE1LjEzODQgOC41Njc0NEMxNC42ODQ2IDkuMTUyMTIgMTQuMDQ5IDkuNTY5MTIgMTMuMzMyIDkuNzUyN00xMC44MzIgNi41MTkzN0MxMC44MzIgOC4zNjAzMiA5LjMzOTY1IDkuODUyNyA3LjQ5ODcgOS44NTI3QzUuNjU3NzUgOS44NTI3IDQuMTY1MzYgOC4zNjAzMiA0LjE2NTM2IDYuNTE5MzdDNC4xNjUzNiA0LjY3ODQyIDUuNjU3NzUgMy4xODYwNCA3LjQ5ODcgMy4xODYwNEM5LjMzOTY1IDMuMTg2MDQgMTAuODMyIDQuNjc4NDIgMTAuODMyIDYuNTE5MzdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2hvdXNlLWtlZXBpbmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIxIDIxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDY0MylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS4yNjIxOSAxLjM2NzIyQzEwLjE3NzcgMC40NTg5NzQgMTEuNjYyIDAuNDU4OTc0IDEyLjU3NzYgMS4zNjcyMkwyMC4zMTMzIDkuMDQxNTNDMjEuMjI4NyA5Ljk0OTggMjEuMjI4NyAxMS40MjIzIDIwLjMxMzMgMTIuMzMwNkwxMi41Nzc2IDIwLjAwNDlDMTEuNjYyIDIwLjkxMzEgMTAuMTc3NyAyMC45MTMxIDkuMjYyMTkgMjAuMDA0OUw3LjA1MTY2IDE3LjgxMTlMNS4wMjUzOCAxOS44MjIxQzQuMTA5ODcgMjAuNzMwMyAyLjYyNTUzIDIwLjczMDMgMS43MTAwMiAxOS44MjIxQzAuNzk0NTEgMTguOTEzOSAwLjc5NDUxIDE3LjQ0MTMgMS43MTAwMiAxNi41MzMxTDMuNzM2MyAxNC41MjI5TDEuNTI2NDggMTIuMzMwNkMwLjYxMDk2NiAxMS40MjIzIDAuNjEwOTY2IDkuOTQ5OCAxLjUyNjQ4IDkuMDQxNTNMOS4yNjIxOSAxLjM2NzIyWk0xMS40NzI0IDIuNDYzNTdDMTEuMTY3MiAyLjE2MDgyIDEwLjY3MjQgMi4xNjA4MiAxMC4zNjcyIDIuNDYzNTdMNC44NDE0NSA3Ljk0NTU2TDEzLjY4MjMgMTYuNzE2M0wxOS4yMDgxIDExLjIzNDJDMTkuNTEzMyAxMC45MzE1IDE5LjUxMzMgMTAuNDQwNiAxOS4yMDgxIDEwLjEzNzlMMTUuMzM5OSA2LjMwMDMyTDE0LjA1MDUgNy41Nzk0QzEzLjc0NTMgNy44ODIxNCAxMy4yNTA2IDcuODgyMTQgMTIuOTQ1NSA3LjU3OTRDMTIuNjQwMyA3LjI3NjY0IDEyLjY0MDMgNi43ODU3OSAxMi45NDU1IDYuNDgzMDVMMTQuMjM0NyA1LjIwMzk3TDEzLjEyOTkgNC4xMDc4Nkw5Ljk5ODcyIDcuMjE0MThDOS42OTM1NCA3LjUxNjkyIDkuMTk4NzMgNy41MTY5MiA4Ljg5MzU2IDcuMjE0MThDOC41ODgzOCA2LjkxMTQzIDguNTg4MzggNi40MjA1OCA4Ljg5MzU2IDYuMTE3ODNMMTIuMDI0NyAzLjAxMTUxTDExLjQ3MjQgMi40NjM1N1pNMTIuNTc3MSAxNy44MTI1TDMuNzM2MzMgOS4wNDE5MUwyLjYzMTYgMTAuMTM3OUMyLjMyNjQyIDEwLjQ0MDYgMi4zMjY0MiAxMC45MzE1IDIuNjMxNiAxMS4yMzQyTDEwLjM2NzIgMTguOTA4NUMxMC42NzI0IDE5LjIxMTMgMTEuMTY3MiAxOS4yMTEzIDExLjQ3MjQgMTguOTA4NUwxMi41NzcxIDE3LjgxMjVaTTQuODQxMzIgMTUuNjE5MkwyLjgxNTE0IDE3LjYyOTRDMi41MDk5NyAxNy45MzIxIDIuNTA5OTcgMTguNDIzIDIuODE1MTQgMTguNzI1OEMzLjEyMDMxIDE5LjAyODUgMy42MTUwOSAxOS4wMjg1IDMuOTIwMjYgMTguNzI1OEw1Ljk0NjQ0IDE2LjcxNTZMNC44NDEzMiAxNS42MTkyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNDc1NDY3XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2NDNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3NlY3Rpb24+XHJcblxyXG4gICAgICAgICAgICA8IS0tIGZ1bGwgaW1hZ2UgVmlldyAtLT5cclxuICAgICAgICAgICAgPHNlY3Rpb24gKm5nSWY9XCJpbWFnZUZsb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc2hyaW5rLTAgbXQtMyBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyIHB4LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJiYWNrVG9Gb290ZmFsbDEoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiB2aWV3Qm94PVwiMCAwIDQwIDQwXCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBmaWx0ZXI9XCJ1cmwoI2ZpbHRlcjBfZF8yNTg1XzcwMzYpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjFcIiB3aWR0aD1cIjM2XCIgaGVpZ2h0PVwiMzZcIiByeD1cIjhcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMi41XCIgeT1cIjEuNVwiIHdpZHRoPVwiMzVcIiBoZWlnaHQ9XCIzNVwiIHJ4PVwiNy41XCIgc3Ryb2tlPVwiI0QwRDVERFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjUuODMyNyAxOUgxNC4xNjZNMTQuMTY2IDE5TDE5Ljk5OTMgMjQuODMzNE0xNC4xNjYgMTlMMTkuOTk5MyAxMy4xNjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMF9kXzI1ODVfNzAzNlwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVPZmZzZXQgZHk9XCIxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMC4wNjI3NDUxIDAgMCAwIDAgMC4wOTQxMTc2IDAgMCAwIDAgMC4xNTY4NjMgMCAwIDAgMC4wNSAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD1cImVmZmVjdDFfZHJvcFNoYWRvd18yNTg1XzcwMzZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd18yNTg1XzcwMzZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD1cInNoYXBlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWx0ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbWctZGlyZWMgbXMtMiBtdC0xXCI+e3tmb2xkZXJEYXRlIHwgZGF0ZTonZGQgTU1NLCB5eXl5J319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtMiBtYi0yIHctMTAwIG92ZXJmbG93LXggcHgtMFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY29sIHRleHQtbm93cmFwXCIgKm5nRm9yPVwibGV0IG9iaiBvZiBvYmplY3RzQXJyYXlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5hdiBuYXYtc3RyZXRjaCBuYXYtbGluZS10YWJzMSBuYXYtbGluZS10YWJzIGJvcmRlci10cmFuc3BhcmVudCBmbGV4LW5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJzZWxlY3RlZFRpbWVzKG9iai50aW1lUmFuZ2UpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdGVkVGltZSA9PT0gb2JqPy50aW1lUmFuZ2UgPyAnYWN0aXZlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmsgY3Vyc29yLXBvaW50ZXIgbm8tYm9yZGVyIG14LTMgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tvYmo/LnRpbWVSYW5nZX19PHNwYW4gY2xhc3M9XCJteC0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZFRpbWUgPT09IG9iaj8udGltZVJhbmdlID8gJ2JhZGdlLW51bS1wcmltYXJ5JyA6J2JhZGdlLW51bS1tdXRlZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvYmo/LmNvdW50ID8gb2JqPy5jb3VudCA6IDAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBteC0wIGJvcmRlci1ncmF5IGltZy10cmFmZmljXCIgKm5nSWY9XCIhbm9EYXRhICYmICFsb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBwLTIgIG1iLTIgbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGJvcmRlci1ncmF5IHAtMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gKm5nSWY9XCJjYW5OYXZpZ2F0ZUxlZnRcIiAoY2xpY2spPVwibmF2aWdhdGVJbWFnZSgnbGVmdCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IHBvc2l0aW9uLWFic29sdXRlIHN0YXJ0LTAgdG9wLTUwIHotaW5kZXgtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4peAXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIE1haW4gSW1hZ2UgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmMgY3Vyc29yLXBvaW50ZXIgaC00NTBweFwiIChjbGljayk9XCJzZWxlY3RlZEltYWdlQXJyYXkoaW1hZ2VVcmwsIHNlbGVjdEltYWdlQXJyYXkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpbWFnZVVybCArIHNlbGVjdEltYWdlQXJyYXk/LmZpbGVQYXRoXCIgYXBwTWFnbmlmaWVyIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiAqbmdJZj1cImNhbk5hdmlnYXRlUmlnaHRcIiAoY2xpY2spPVwibmF2aWdhdGVJbWFnZSgncmlnaHQnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBwb3NpdGlvbi1hYnNvbHV0ZSBlbmQtMCB0b3AtNTAgei1pbmRleC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilrZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUmlnaHQgYXJyb3cgYnV0dG9uIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMiBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTIgaW1nLWRvYy10aW1lXCI+VGFuZ28gSUQgOiB7e3NlbGVjdEltYWdlQXJyYXk/LnRlbXBsZH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nLWRvYy12YWx1ZVwiPkVudHJ5IFRpbWUgOiB7e3NlbGVjdEltYWdlQXJyYXk/LmVudHJ5VG1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNSB0ZXh0LWVuZCBweS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXk/LnJldm9wc1R5cGUgPT09J25vbi10YWdnaW5nJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cIllldCB0byB0YWcgdGhlIGN1c3RvbWVyXCIgcGxhY2VtZW50PVwidG9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOVwiIGhlaWdodD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOSAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMDIzNDQgNS42MjVINi4wMzA5NE0xNi4yMTU5IDEwLjQzMjVMMTAuODM4NCAxNS44MUMxMC42OTkxIDE1Ljk0OTUgMTAuNTMzNyAxNi4wNjAxIDEwLjM1MTYgMTYuMTM1NkMxMC4xNjk1IDE2LjIxMTEgOS45NzQzMSAxNi4yNDk5IDkuNzc3MTkgMTYuMjQ5OUM5LjU4MDA2IDE2LjI0OTkgOS4zODQ4NyAxNi4yMTExIDkuMjAyNzggMTYuMTM1NkM5LjAyMDY4IDE2LjA2MDEgOC44NTUyNSAxNS45NDk1IDguNzE1OTQgMTUuODFMMi4yNzM0NCA5LjM3NVYxLjg3NUg5Ljc3MzQ0TDE2LjIxNTkgOC4zMTc1QzE2LjQ5NTMgOC41OTg1NCAxNi42NTIxIDguOTc4NzIgMTYuNjUyMSA5LjM3NUMxNi42NTIxIDkuNzcxMjggMTYuNDk1MyAxMC4xNTE1IDE2LjIxNTkgMTAuNDMyNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0SW1hZ2VBcnJheT8ucmV2b3BzVHlwZSA9PT0nZHVwbGljYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNC4xNjc5NyAxMy4xODU5SDMuMzM0NjRDMi44OTI2MSAxMy4xODU5IDIuNDY4NjggMTMuMDEwMyAyLjE1NjEyIDEyLjY5NzdDMS44NDM1NiAxMi4zODUyIDEuNjY3OTcgMTEuOTYxMiAxLjY2Nzk3IDExLjUxOTJWNC4wMTkyMUMxLjY2Nzk3IDMuNTc3MTggMS44NDM1NiAzLjE1MzI2IDIuMTU2MTIgMi44NDA2OUMyLjQ2ODY4IDIuNTI4MTMgMi44OTI2MSAyLjM1MjU0IDMuMzM0NjQgMi4zNTI1NEgxMC44MzQ2QzExLjI3NjcgMi4zNTI1NCAxMS43MDA2IDIuNTI4MTMgMTIuMDEzMSAyLjg0MDY5QzEyLjMyNTcgMy4xNTMyNiAxMi41MDEzIDMuNTc3MTggMTIuNTAxMyA0LjAxOTIxVjQuODUyNTRNOS4xNjc5NyA4LjE4NTg3SDE2LjY2OEMxNy41ODg0IDguMTg1ODcgMTguMzM0NiA4LjkzMjA2IDE4LjMzNDYgOS44NTI1NFYxNy4zNTI1QzE4LjMzNDYgMTguMjczIDE3LjU4ODQgMTkuMDE5MiAxNi42NjggMTkuMDE5Mkg5LjE2Nzk3QzguMjQ3NDkgMTkuMDE5MiA3LjUwMTMgMTguMjczIDcuNTAxMyAxNy4zNTI1VjkuODUyNTRDNy41MDEzIDguOTMyMDYgOC4yNDc0OSA4LjE4NTg3IDkuMTY3OTcgOC4xODU4N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXk/LnJldm9wc1R5cGUgPT09J2VtcGxveWVlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMTY1NCAxOC4xODZWMTYuNTE5NEMxNC4xNjU0IDE1LjYzNTMgMTMuODE0MiAxNC43ODc1IDEzLjE4OTEgMTQuMTYyM0MxMi41NjM5IDEzLjUzNzIgMTEuNzE2MSAxMy4xODYgMTAuODMyIDEzLjE4Nkg0LjE2NTM2QzMuMjgxMzEgMTMuMTg2IDIuNDMzNDYgMTMuNTM3MiAxLjgwODM0IDE0LjE2MjNDMS4xODMyMiAxNC43ODc1IDAuODMyMDMxIDE1LjYzNTMgMC44MzIwMzEgMTYuNTE5NFYxOC4xODZNMTkuMTY1NCAxOC4xODZWMTYuNTE5NEMxOS4xNjQ4IDE1Ljc4MDggMTguOTE5IDE1LjA2MzMgMTguNDY2NSAxNC40Nzk2QzE4LjAxNCAxMy44OTU5IDE3LjM4MDUgMTMuNDc5IDE2LjY2NTQgMTMuMjk0NE0xMy4zMzIgMy4yOTQzN0MxNC4wNDkgMy40Nzc5NSAxNC42ODQ2IDMuODk0OTUgMTUuMTM4NCA0LjQ3OTYzQzE1LjU5MjIgNS4wNjQzIDE1LjgzODYgNS43ODMzOSAxNS44Mzg2IDYuNTIzNTRDMTUuODM4NiA3LjI2MzY4IDE1LjU5MjIgNy45ODI3NyAxNS4xMzg0IDguNTY3NDRDMTQuNjg0NiA5LjE1MjEyIDE0LjA0OSA5LjU2OTEyIDEzLjMzMiA5Ljc1MjdNMTAuODMyIDYuNTE5MzdDMTAuODMyIDguMzYwMzIgOS4zMzk2NSA5Ljg1MjcgNy40OTg3IDkuODUyN0M1LjY1Nzc1IDkuODUyNyA0LjE2NTM2IDguMzYwMzIgNC4xNjUzNiA2LjUxOTM3QzQuMTY1MzYgNC42Nzg0MiA1LjY1Nzc1IDMuMTg2MDQgNy40OTg3IDMuMTg2MDRDOS4zMzk2NSAzLjE4NjA0IDEwLjgzMiA0LjY3ODQyIDEwLjgzMiA2LjUxOTM3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0SW1hZ2VBcnJheT8ucmV2b3BzVHlwZSA9PT0naG91c2Uta2VlcGluZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIxIDIxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjQzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS4yNjIxOSAxLjM2NzIyQzEwLjE3NzcgMC40NTg5NzQgMTEuNjYyIDAuNDU4OTc0IDEyLjU3NzYgMS4zNjcyMkwyMC4zMTMzIDkuMDQxNTNDMjEuMjI4NyA5Ljk0OTggMjEuMjI4NyAxMS40MjIzIDIwLjMxMzMgMTIuMzMwNkwxMi41Nzc2IDIwLjAwNDlDMTEuNjYyIDIwLjkxMzEgMTAuMTc3NyAyMC45MTMxIDkuMjYyMTkgMjAuMDA0OUw3LjA1MTY2IDE3LjgxMTlMNS4wMjUzOCAxOS44MjIxQzQuMTA5ODcgMjAuNzMwMyAyLjYyNTUzIDIwLjczMDMgMS43MTAwMiAxOS44MjIxQzAuNzk0NTEgMTguOTEzOSAwLjc5NDUxIDE3LjQ0MTMgMS43MTAwMiAxNi41MzMxTDMuNzM2MyAxNC41MjI5TDEuNTI2NDggMTIuMzMwNkMwLjYxMDk2NiAxMS40MjIzIDAuNjEwOTY2IDkuOTQ5OCAxLjUyNjQ4IDkuMDQxNTNMOS4yNjIxOSAxLjM2NzIyWk0xMS40NzI0IDIuNDYzNTdDMTEuMTY3MiAyLjE2MDgyIDEwLjY3MjQgMi4xNjA4MiAxMC4zNjcyIDIuNDYzNTdMNC44NDE0NSA3Ljk0NTU2TDEzLjY4MjMgMTYuNzE2M0wxOS4yMDgxIDExLjIzNDJDMTkuNTEzMyAxMC45MzE1IDE5LjUxMzMgMTAuNDQwNiAxOS4yMDgxIDEwLjEzNzlMMTUuMzM5OSA2LjMwMDMyTDE0LjA1MDUgNy41Nzk0QzEzLjc0NTMgNy44ODIxNCAxMy4yNTA2IDcuODgyMTQgMTIuOTQ1NSA3LjU3OTRDMTIuNjQwMyA3LjI3NjY0IDEyLjY0MDMgNi43ODU3OSAxMi45NDU1IDYuNDgzMDVMMTQuMjM0NyA1LjIwMzk3TDEzLjEyOTkgNC4xMDc4Nkw5Ljk5ODcyIDcuMjE0MThDOS42OTM1NCA3LjUxNjkyIDkuMTk4NzMgNy41MTY5MiA4Ljg5MzU2IDcuMjE0MThDOC41ODgzOCA2LjkxMTQzIDguNTg4MzggNi40MjA1OCA4Ljg5MzU2IDYuMTE3ODNMMTIuMDI0NyAzLjAxMTUxTDExLjQ3MjQgMi40NjM1N1pNMTIuNTc3MSAxNy44MTI1TDMuNzM2MzMgOS4wNDE5MUwyLjYzMTYgMTAuMTM3OUMyLjMyNjQyIDEwLjQ0MDYgMi4zMjY0MiAxMC45MzE1IDIuNjMxNiAxMS4yMzQyTDEwLjM2NzIgMTguOTA4NUMxMC42NzI0IDE5LjIxMTMgMTEuMTY3MiAxOS4yMTEzIDExLjQ3MjQgMTguOTA4NUwxMi41NzcxIDE3LjgxMjVaTTQuODQxMzIgMTUuNjE5MkwyLjgxNTE0IDE3LjYyOTRDMi41MDk5NyAxNy45MzIxIDIuNTA5OTcgMTguNDIzIDIuODE1MTQgMTguNzI1OEMzLjEyMDMxIDE5LjAyODUgMy42MTUwOSAxOS4wMjg1IDMuOTIwMjYgMTguNzI1OEw1Ljk0NjQ0IDE2LjcxNTZMNC44NDEzMiAxNS42MTkyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM0NzU0NjdcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDY0M1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IHAtMiBtYi0yICBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS10eXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3Qgbm9uLXNob3BwZXIgdHlwZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhcmV2b3BzVHlwZVZhbHVlXCIgY2xhc3M9XCJtYi01IHRleHQtZW5kXCIgcm9sZT1cImdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWdldFRpY2tldFN0YXR1c2VzKCkuaW5jbHVkZXMoJ29wZW4nKSAmJiAhZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnY2xvc2VkJylcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgKHNlbGVjdGVkUmFkaW9UeXBlID09PSB1bmRlZmluZWQgfHwgc2VsZWN0ZWRSYWRpb1R5cGUgPT09ICcnKSB8fFxyXG4gICAgICAgIChzZWxlY3RlZFJhZGlvVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0Lmxlbmd0aCA9PT0gMClcclxuICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsZWFyVmFsdWUoKVwiPkNsZWFyPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBtZS0yXCIgKGNsaWNrKT1cImNhbmNlbCgpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcclxuICAgICAgaWQ9XCJhbGVydC10b2FzdFwiXHJcbiAgICAgIChjbGljayk9XCJzYXZlKHNlbGVjdGVkVHlwZSlcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgKHNlbGVjdGVkUmFkaW9UeXBlID09PSB1bmRlZmluZWQgfHwgc2VsZWN0ZWRSYWRpb1R5cGUgPT09ICcnKSB8fFxyXG4gICAgICAgIChzZWxlY3RlZFJhZGlvVHlwZSA9PT0gJ2R1cGxpY2F0ZScgJiYgc2VsZWN0ZWREdXBsaWNhdGVJbWFnZXNMaXN0Lmxlbmd0aCA9PT0gMClcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgU2F2ZVxyXG4gICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZXZvcHNUeXBlVmFsdWVcIiBjbGFzcz1cIm1iLTUgdGV4dC1lbmRcIiByb2xlPVwiZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhZ2V0VGlja2V0U3RhdHVzZXMoKS5pbmNsdWRlcygnb3BlbicpICYmICFnZXRUaWNrZXRTdGF0dXNlcygpLmluY2x1ZGVzKCdjbG9zZWQnKVwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIG1lLTJcIiAoY2xpY2spPVwiZWRpdFZhbHVlKClcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTJcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuNjU1NCAxLjcxMDQ3QzE0Ljg5MjcgMS40NzMxNSAxNS4xNzQ1IDEuMjg0OSAxNS40ODQ1IDEuMTU2NDZDMTUuNzk0NiAxLjAyODAyIDE2LjEyNjkgMC45NjE5MTQgMTYuNDYyNiAwLjk2MTkxNEMxNi43OTgyIDAuOTYxOTE0IDE3LjEzMDUgMS4wMjgwMiAxNy40NDA2IDEuMTU2NDZDMTcuNzUwNyAxLjI4NDkgMTguMDMyNCAxLjQ3MzE1IDE4LjI2OTcgMS43MTA0N0MxOC41MDcxIDEuOTQ3NzkgMTguNjk1MyAyLjIyOTUzIDE4LjgyMzggMi41Mzk2MUMxOC45NTIyIDIuODQ5NjkgMTkuMDE4MyAzLjE4MjAyIDE5LjAxODMgMy41MTc2NUMxOS4wMTgzIDMuODUzMjcgMTguOTUyMiA0LjE4NTYxIDE4LjgyMzggNC40OTU2OEMxOC42OTUzIDQuODA1NzYgMTguNTA3MSA1LjA4NzUgMTguMjY5NyA1LjMyNDgyTDYuMDcxMyAxNy41MjMzTDEuMTAxNTYgMTguODc4NkwyLjQ1Njk1IDEzLjkwODlMMTQuNjU1NCAxLjcxMDQ3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuODEwNzlcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5FZGl0PC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAgY2xhc3M9XCJmb3JtLWNoZWNrIG15LTE1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwiZHVwbGljYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZHVwbGljYXRlXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFR5cGVcIiBbdmFsdWVdPVwiJ2R1cGxpY2F0ZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblJhZGlvQ2hhbmdlKHNlbGVjdGVkVHlwZSlcIiBbZGlzYWJsZWRdPVwicmV2b3BzVHlwZVZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJkdXBsaWNhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNC4xNjc5NyAxMy4xODU5SDMuMzM0NjRDMi44OTI2MSAxMy4xODU5IDIuNDY4NjggMTMuMDEwMyAyLjE1NjEyIDEyLjY5NzdDMS44NDM1NiAxMi4zODUyIDEuNjY3OTcgMTEuOTYxMiAxLjY2Nzk3IDExLjUxOTJWNC4wMTkyMUMxLjY2Nzk3IDMuNTc3MTggMS44NDM1NiAzLjE1MzI2IDIuMTU2MTIgMi44NDA2OUMyLjQ2ODY4IDIuNTI4MTMgMi44OTI2MSAyLjM1MjU0IDMuMzM0NjQgMi4zNTI1NEgxMC44MzQ2QzExLjI3NjcgMi4zNTI1NCAxMS43MDA2IDIuNTI4MTMgMTIuMDEzMSAyLjg0MDY5QzEyLjMyNTcgMy4xNTMyNiAxMi41MDEzIDMuNTc3MTggMTIuNTAxMyA0LjAxOTIxVjQuODUyNTRNOS4xNjc5NyA4LjE4NTg3SDE2LjY2OEMxNy41ODg0IDguMTg1ODcgMTguMzM0NiA4LjkzMjA2IDE4LjMzNDYgOS44NTI1NFYxNy4zNTI1QzE4LjMzNDYgMTguMjczIDE3LjU4ODQgMTkuMDE5MiAxNi42NjggMTkuMDE5Mkg5LjE2Nzk3QzguMjQ3NDkgMTkuMDE5MiA3LjUwMTMgMTguMjczIDcuNTAxMyAxNy4zNTI1VjkuODUyNTRDNy41MDEzIDguOTMyMDYgOC4yNDc0OSA4LjE4NTg3IDkuMTY3OTcgOC4xODU4N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTUgdGFnLWNsYXNzXCI+RHVwbGljYXRlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG15LTE1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwiZW1wbG95ZWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlbXBsb3llZVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUeXBlXCIgW3ZhbHVlXT1cIidlbXBsb3llZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblJhZGlvQ2hhbmdlKHNlbGVjdGVkVHlwZSlcIiBbZGlzYWJsZWRdPVwicmV2b3BzVHlwZVZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJlbXBsb3llZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01XCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAyMCAyMVwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDYzOSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xNjU0IDE4LjE4NlYxNi41MTk0QzE0LjE2NTQgMTUuNjM1MyAxMy44MTQyIDE0Ljc4NzUgMTMuMTg5MSAxNC4xNjIzQzEyLjU2MzkgMTMuNTM3MiAxMS43MTYxIDEzLjE4NiAxMC44MzIgMTMuMTg2SDQuMTY1MzZDMy4yODEzMSAxMy4xODYgMi40MzM0NiAxMy41MzcyIDEuODA4MzQgMTQuMTYyM0MxLjE4MzIyIDE0Ljc4NzUgMC44MzIwMzEgMTUuNjM1MyAwLjgzMjAzMSAxNi41MTk0VjE4LjE4Nk0xOS4xNjU0IDE4LjE4NlYxNi41MTk0QzE5LjE2NDggMTUuNzgwOCAxOC45MTkgMTUuMDYzMyAxOC40NjY1IDE0LjQ3OTZDMTguMDE0IDEzLjg5NTkgMTcuMzgwNSAxMy40NzkgMTYuNjY1NCAxMy4yOTQ0TTEzLjMzMiAzLjI5NDM3QzE0LjA0OSAzLjQ3Nzk1IDE0LjY4NDYgMy44OTQ5NSAxNS4xMzg0IDQuNDc5NjNDMTUuNTkyMiA1LjA2NDMgMTUuODM4NiA1Ljc4MzM5IDE1LjgzODYgNi41MjM1NEMxNS44Mzg2IDcuMjYzNjggMTUuNTkyMiA3Ljk4Mjc3IDE1LjEzODQgOC41Njc0NEMxNC42ODQ2IDkuMTUyMTIgMTQuMDQ5IDkuNTY5MTIgMTMuMzMyIDkuNzUyN00xMC44MzIgNi41MTkzN0MxMC44MzIgOC4zNjAzMiA5LjMzOTY1IDkuODUyNyA3LjQ5ODcgOS44NTI3QzUuNjU3NzUgOS44NTI3IDQuMTY1MzYgOC4zNjAzMiA0LjE2NTM2IDYuNTE5MzdDNC4xNjUzNiA0LjY3ODQyIDUuNjU3NzUgMy4xODYwNCA3LjQ5ODcgMy4xODYwNEM5LjMzOTY1IDMuMTg2MDQgMTAuODMyIDQuNjc4NDIgMTAuODMyIDYuNTE5MzdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNSB0YWctY2xhc3NcIj5FbXBsb3llZS9TdGFmZjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBteS0xNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgbmFtZT1cImhvdXNlLWtlZXBpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJob3VzZS1rZWVwaW5nXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFR5cGVcIiBbdmFsdWVdPVwiJ2hvdXNlLWtlZXBpbmcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25SYWRpb0NoYW5nZShzZWxlY3RlZFR5cGUpXCIgW2Rpc2FibGVkXT1cInJldm9wc1R5cGVWYWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiaG91c2Uta2VlcGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01XCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAyMSAyMVwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjAxMl85NDY0MylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuMjYyMTkgMS4zNjcyMkMxMC4xNzc3IDAuNDU4OTc0IDExLjY2MiAwLjQ1ODk3NCAxMi41Nzc2IDEuMzY3MjJMMjAuMzEzMyA5LjA0MTUzQzIxLjIyODcgOS45NDk4IDIxLjIyODcgMTEuNDIyMyAyMC4zMTMzIDEyLjMzMDZMMTIuNTc3NiAyMC4wMDQ5QzExLjY2MiAyMC45MTMxIDEwLjE3NzcgMjAuOTEzMSA5LjI2MjE5IDIwLjAwNDlMNy4wNTE2NiAxNy44MTE5TDUuMDI1MzggMTkuODIyMUM0LjEwOTg3IDIwLjczMDMgMi42MjU1MyAyMC43MzAzIDEuNzEwMDIgMTkuODIyMUMwLjc5NDUxIDE4LjkxMzkgMC43OTQ1MSAxNy40NDEzIDEuNzEwMDIgMTYuNTMzMUwzLjczNjMgMTQuNTIyOUwxLjUyNjQ4IDEyLjMzMDZDMC42MTA5NjYgMTEuNDIyMyAwLjYxMDk2NiA5Ljk0OTggMS41MjY0OCA5LjA0MTUzTDkuMjYyMTkgMS4zNjcyMlpNMTEuNDcyNCAyLjQ2MzU3QzExLjE2NzIgMi4xNjA4MiAxMC42NzI0IDIuMTYwODIgMTAuMzY3MiAyLjQ2MzU3TDQuODQxNDUgNy45NDU1NkwxMy42ODIzIDE2LjcxNjNMMTkuMjA4MSAxMS4yMzQyQzE5LjUxMzMgMTAuOTMxNSAxOS41MTMzIDEwLjQ0MDYgMTkuMjA4MSAxMC4xMzc5TDE1LjMzOTkgNi4zMDAzMkwxNC4wNTA1IDcuNTc5NEMxMy43NDUzIDcuODgyMTQgMTMuMjUwNiA3Ljg4MjE0IDEyLjk0NTUgNy41Nzk0QzEyLjY0MDMgNy4yNzY2NCAxMi42NDAzIDYuNzg1NzkgMTIuOTQ1NSA2LjQ4MzA1TDE0LjIzNDcgNS4yMDM5N0wxMy4xMjk5IDQuMTA3ODZMOS45OTg3MiA3LjIxNDE4QzkuNjkzNTQgNy41MTY5MiA5LjE5ODczIDcuNTE2OTIgOC44OTM1NiA3LjIxNDE4QzguNTg4MzggNi45MTE0MyA4LjU4ODM4IDYuNDIwNTggOC44OTM1NiA2LjExNzgzTDEyLjAyNDcgMy4wMTE1MUwxMS40NzI0IDIuNDYzNTdaTTEyLjU3NzEgMTcuODEyNUwzLjczNjMzIDkuMDQxOTFMMi42MzE2IDEwLjEzNzlDMi4zMjY0MiAxMC40NDA2IDIuMzI2NDIgMTAuOTMxNSAyLjYzMTYgMTEuMjM0MkwxMC4zNjcyIDE4LjkwODVDMTAuNjcyNCAxOS4yMTEzIDExLjE2NzIgMTkuMjExMyAxMS40NzI0IDE4LjkwODVMMTIuNTc3MSAxNy44MTI1Wk00Ljg0MTMyIDE1LjYxOTJMMi44MTUxNCAxNy42Mjk0QzIuNTA5OTcgMTcuOTMyMSAyLjUwOTk3IDE4LjQyMyAyLjgxNTE0IDE4LjcyNThDMy4xMjAzMSAxOS4wMjg1IDMuNjE1MDkgMTkuMDI4NSAzLjkyMDI2IDE4LjcyNThMNS45NDY0NCAxNi43MTU2TDQuODQxMzIgMTUuNjE5MlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNDc1NDY3XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2NDNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNSB0YWctY2xhc3NcIj4gSG91c2UgS2VlcGluZzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMCBpbWctdHJhZmZpYyBtdC0zIGhpZ2gtNDAwcHggc2Nyb2xsLXlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIGJvcmRlci1ncmF5IG14LTIgcC0yIG10LTVcIiAqbmdGb3I9XCJsZXQgb2JqIG9mIHJlbWFpbmluZ0ltYWdlQXJyYXlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGlucHV0ICpuZ0lmPVwic2VsZWN0ZWRSYWRpb1R5cGUgPT09ICdkdXBsaWNhdGUnXCIgdHlwZT1cImNoZWNrYm94XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwib2JqLnNlbGVjdGVkXCIgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBhYnNvbHV0ZSBmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkltYWdlQ2hlY2tib3hDaGFuZ2Uob2JqLCAnZHVwbGljYXRlJylcIiAvPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAqbmdJZj1cIiFyZXZvcHNUeXBlVmFsdWUgJiYgc2VsZWN0ZWRSYWRpb1R5cGUgPT09ICdkdXBsaWNhdGUnXCJcclxuICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gIFtjaGVja2VkXT1cIm9iai5zZWxlY3RlZFwiXHJcbiAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBhYnNvbHV0ZSBmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCJcclxuICAoY2hhbmdlKT1cIm9uSW1hZ2VDaGVja2JveENoYW5nZSgkZXZlbnQsIG9iaiwgJ2R1cGxpY2F0ZScpXCJcclxuICBbZGlzYWJsZWRdPVwib2JqLmR1cGxpY2F0ZUltYWdlUGF0aD8ubGVuZ3RoID4gMFwiXHJcbi8+XHJcblxyXG48aW1nXHJcbiAgY2xhc3M9XCJpbWctc3JjXCJcclxuICBbbmdDbGFzc109XCJzZWxlY3RlZFJhZGlvVHlwZSAhPT0gJ2R1cGxpY2F0ZScgPyAnY3Vyc29yLXBvaW50ZXInIDogJ2N1cnNvci1wb2ludGVyJ1wiXHJcbiAgW3NyY109XCJpbWFnZVVybCArIG9iaj8uZmlsZVBhdGhcIlxyXG4gIChlcnJvcik9XCJvYmouZmlsZVBhdGggPSBudWxsXCJcclxuICBhbHQ9XCJcIlxyXG4gIChjbGljayk9XCJoYW5kbGVJbWFnZUNsaWNrKCRldmVudCwgb2JqKVwiXHJcbi8+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhb2JqPy5maWxlUGF0aFwiIGNsYXNzPVwibm8tcHJldmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyM1wiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMyAyMFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJHcm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlZlY3RvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuNSA2LjMyMjI3SDYuNTFNMTYuMjUgOS4zMjIyN0gyMS41TDE4IDE2LjMyMjNMMTQuOTEgMTIuMDAyM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlZlY3Rvcl8yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMS41IDE2LjMyMjlINS4yNkM1LjYzMjczIDE2LjMyNTUgNS45OTg3NyAxNi4yMjM5IDYuMzE2ODIgMTYuMDI5NUM2LjYzNDg3IDE1LjgzNTIgNi44OTIyOCAxNS41NTU4IDcuMDYgMTUuMjIyOUw4LjUgMTIuMzIyOU0xLjUgMTguMzIyOVYxNC4zMjI5TTE3LjUgNi44MjI5MUwxMy41IDE0LjgyMjlMMy4xMSA5LjYyMjkxQzIuNDIwMzMgOS4yNzU1MyAxLjg5NjM1IDguNjY5MSAxLjY1MjcyIDcuOTM2MzJDMS40MDkwOSA3LjIwMzU0IDEuNDY1NjQgNi40MDQxIDEuODEgNS43MTI5MUwzLjE5IDIuOTIyOTFDMy4zNjIgMi41ODAxNCAzLjU5OTg0IDIuMjc0NiAzLjg4OTk0IDIuMDIzNzVDNC4xODAwMyAxLjc3MjkgNC41MTY3IDEuNTgxNjUgNC44ODA3MiAxLjQ2MDkzQzUuMjQ0NzQgMS4zNDAyMSA1LjYyODk3IDEuMjkyMzkgNi4wMTE0NyAxLjMyMDE4QzYuMzkzOTggMS4zNDc5NyA2Ljc2NzI2IDEuNDUwODQgNy4xMSAxLjYyMjkxTDE3LjUgNi44MjI5MVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXIgbWItNSB0ZXh0LWNlbnRlclwiPlByZXZpZXcgbm90IGF2YWlsYWJsZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXNjcmlwdGlvbiBtYi01IHRleHQtY2VudGVyXCI+VGhlIHNlbGVjdGVkIGNhbWVyYSBpcyBub3QgYXZhaWxhYmxlIGF0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbWVudC48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBweC0yIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktMiBpbWctZG9jLXRpbWVcIj5UYW5nbyBJRCA6IHt7b2JqPy50ZW1wbGQgPyBvYmo/LnRlbXBsZCA6IG9iaj8udGVtcElkfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWctZG9jLXZhbHVlXCI+RW50cnkgVGltZSA6IHt7b2JqPy5lbnRyeVRtZSA/IG9iaj8uZW50cnlUbWUgOm9iaj8uZW50cnlUaW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNSB0ZXh0LWVuZCBweS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm9iaj8ucmV2b3BzVHlwZSA9PT0nbm9uLXRhZ2dpbmcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiWWV0IHRvIHRhZyB0aGUgY3VzdG9tZXJcIiBwbGFjZW1lbnQ9XCJ0b3BcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE5XCIgaGVpZ2h0PVwiMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE5IDE4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi4wMjM0NCA1LjYyNUg2LjAzMDk0TTE2LjIxNTkgMTAuNDMyNUwxMC44Mzg0IDE1LjgxQzEwLjY5OTEgMTUuOTQ5NSAxMC41MzM3IDE2LjA2MDEgMTAuMzUxNiAxNi4xMzU2QzEwLjE2OTUgMTYuMjExMSA5Ljk3NDMxIDE2LjI0OTkgOS43NzcxOSAxNi4yNDk5QzkuNTgwMDYgMTYuMjQ5OSA5LjM4NDg3IDE2LjIxMTEgOS4yMDI3OCAxNi4xMzU2QzkuMDIwNjggMTYuMDYwMSA4Ljg1NTI1IDE1Ljk0OTUgOC43MTU5NCAxNS44MUwyLjI3MzQ0IDkuMzc1VjEuODc1SDkuNzczNDRMMTYuMjE1OSA4LjMxNzVDMTYuNDk1MyA4LjU5ODU0IDE2LjY1MjEgOC45Nzg3MiAxNi42NTIxIDkuMzc1QzE2LjY1MjEgOS43NzEyOCAxNi40OTUzIDEwLjE1MTUgMTYuMjE1OSAxMC40MzI1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2R1cGxpY2F0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjM1KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMTMuMTg1OUgzLjMzNDY0QzIuODkyNjEgMTMuMTg1OSAyLjQ2ODY4IDEzLjAxMDMgMi4xNTYxMiAxMi42OTc3QzEuODQzNTYgMTIuMzg1MiAxLjY2Nzk3IDExLjk2MTIgMS42Njc5NyAxMS41MTkyVjQuMDE5MjFDMS42Njc5NyAzLjU3NzE4IDEuODQzNTYgMy4xNTMyNiAyLjE1NjEyIDIuODQwNjlDMi40Njg2OCAyLjUyODEzIDIuODkyNjEgMi4zNTI1NCAzLjMzNDY0IDIuMzUyNTRIMTAuODM0NkMxMS4yNzY3IDIuMzUyNTQgMTEuNzAwNiAyLjUyODEzIDEyLjAxMzEgMi44NDA2OUMxMi4zMjU3IDMuMTUzMjYgMTIuNTAxMyAzLjU3NzE4IDEyLjUwMTMgNC4wMTkyMVY0Ljg1MjU0TTkuMTY3OTcgOC4xODU4N0gxNi42NjhDMTcuNTg4NCA4LjE4NTg3IDE4LjMzNDYgOC45MzIwNiAxOC4zMzQ2IDkuODUyNTRWMTcuMzUyNUMxOC4zMzQ2IDE4LjI3MyAxNy41ODg0IDE5LjAxOTIgMTYuNjY4IDE5LjAxOTJIOS4xNjc5N0M4LjI0NzQ5IDE5LjAxOTIgNy41MDEzIDE4LjI3MyA3LjUwMTMgMTcuMzUyNVY5Ljg1MjU0QzcuNTAxMyA4LjkzMjA2IDguMjQ3NDkgOC4xODU4NyA5LjE2Nzk3IDguMTg1ODdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIwMTJfOTQ2MzVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjY4NjAzNSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJvYmo/LnJldm9wc1R5cGUgPT09J2VtcGxveWVlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMTY1NCAxOC4xODZWMTYuNTE5NEMxNC4xNjU0IDE1LjYzNTMgMTMuODE0MiAxNC43ODc1IDEzLjE4OTEgMTQuMTYyM0MxMi41NjM5IDEzLjUzNzIgMTEuNzE2MSAxMy4xODYgMTAuODMyIDEzLjE4Nkg0LjE2NTM2QzMuMjgxMzEgMTMuMTg2IDIuNDMzNDYgMTMuNTM3MiAxLjgwODM0IDE0LjE2MjNDMS4xODMyMiAxNC43ODc1IDAuODMyMDMxIDE1LjYzNTMgMC44MzIwMzEgMTYuNTE5NFYxOC4xODZNMTkuMTY1NCAxOC4xODZWMTYuNTE5NEMxOS4xNjQ4IDE1Ljc4MDggMTguOTE5IDE1LjA2MzMgMTguNDY2NSAxNC40Nzk2QzE4LjAxNCAxMy44OTU5IDE3LjM4MDUgMTMuNDc5IDE2LjY2NTQgMTMuMjk0NE0xMy4zMzIgMy4yOTQzN0MxNC4wNDkgMy40Nzc5NSAxNC42ODQ2IDMuODk0OTUgMTUuMTM4NCA0LjQ3OTYzQzE1LjU5MjIgNS4wNjQzIDE1LjgzODYgNS43ODMzOSAxNS44Mzg2IDYuNTIzNTRDMTUuODM4NiA3LjI2MzY4IDE1LjU5MjIgNy45ODI3NyAxNS4xMzg0IDguNTY3NDRDMTQuNjg0NiA5LjE1MjEyIDE0LjA0OSA5LjU2OTEyIDEzLjMzMiA5Ljc1MjdNMTAuODMyIDYuNTE5MzdDMTAuODMyIDguMzYwMzIgOS4zMzk2NSA5Ljg1MjcgNy40OTg3IDkuODUyN0M1LjY1Nzc1IDkuODUyNyA0LjE2NTM2IDguMzYwMzIgNC4xNjUzNiA2LjUxOTM3QzQuMTY1MzYgNC42Nzg0MiA1LjY1Nzc1IDMuMTg2MDQgNy40OTg3IDMuMTg2MDRDOS4zMzk2NSAzLjE4NjA0IDEwLjgzMiA0LjY3ODQyIDEwLjgzMiA2LjUxOTM3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwib2JqPy5yZXZvcHNUeXBlID09PSdob3VzZS1rZWVwaW5nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjEgMjFcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2NDMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05LjI2MjE5IDEuMzY3MjJDMTAuMTc3NyAwLjQ1ODk3NCAxMS42NjIgMC40NTg5NzQgMTIuNTc3NiAxLjM2NzIyTDIwLjMxMzMgOS4wNDE1M0MyMS4yMjg3IDkuOTQ5OCAyMS4yMjg3IDExLjQyMjMgMjAuMzEzMyAxMi4zMzA2TDEyLjU3NzYgMjAuMDA0OUMxMS42NjIgMjAuOTEzMSAxMC4xNzc3IDIwLjkxMzEgOS4yNjIxOSAyMC4wMDQ5TDcuMDUxNjYgMTcuODExOUw1LjAyNTM4IDE5LjgyMjFDNC4xMDk4NyAyMC43MzAzIDIuNjI1NTMgMjAuNzMwMyAxLjcxMDAyIDE5LjgyMjFDMC43OTQ1MSAxOC45MTM5IDAuNzk0NTEgMTcuNDQxMyAxLjcxMDAyIDE2LjUzMzFMMy43MzYzIDE0LjUyMjlMMS41MjY0OCAxMi4zMzA2QzAuNjEwOTY2IDExLjQyMjMgMC42MTA5NjYgOS45NDk4IDEuNTI2NDggOS4wNDE1M0w5LjI2MjE5IDEuMzY3MjJaTTExLjQ3MjQgMi40NjM1N0MxMS4xNjcyIDIuMTYwODIgMTAuNjcyNCAyLjE2MDgyIDEwLjM2NzIgMi40NjM1N0w0Ljg0MTQ1IDcuOTQ1NTZMMTMuNjgyMyAxNi43MTYzTDE5LjIwODEgMTEuMjM0MkMxOS41MTMzIDEwLjkzMTUgMTkuNTEzMyAxMC40NDA2IDE5LjIwODEgMTAuMTM3OUwxNS4zMzk5IDYuMzAwMzJMMTQuMDUwNSA3LjU3OTRDMTMuNzQ1MyA3Ljg4MjE0IDEzLjI1MDYgNy44ODIxNCAxMi45NDU1IDcuNTc5NEMxMi42NDAzIDcuMjc2NjQgMTIuNjQwMyA2Ljc4NTc5IDEyLjk0NTUgNi40ODMwNUwxNC4yMzQ3IDUuMjAzOTdMMTMuMTI5OSA0LjEwNzg2TDkuOTk4NzIgNy4yMTQxOEM5LjY5MzU0IDcuNTE2OTIgOS4xOTg3MyA3LjUxNjkyIDguODkzNTYgNy4yMTQxOEM4LjU4ODM4IDYuOTExNDMgOC41ODgzOCA2LjQyMDU4IDguODkzNTYgNi4xMTc4M0wxMi4wMjQ3IDMuMDExNTFMMTEuNDcyNCAyLjQ2MzU3Wk0xMi41NzcxIDE3LjgxMjVMMy43MzYzMyA5LjA0MTkxTDIuNjMxNiAxMC4xMzc5QzIuMzI2NDIgMTAuNDQwNiAyLjMyNjQyIDEwLjkzMTUgMi42MzE2IDExLjIzNDJMMTAuMzY3MiAxOC45MDg1QzEwLjY3MjQgMTkuMjExMyAxMS4xNjcyIDE5LjIxMTMgMTEuNDcyNCAxOC45MDg1TDEyLjU3NzEgMTcuODEyNVpNNC44NDEzMiAxNS42MTkyTDIuODE1MTQgMTcuNjI5NEMyLjUwOTk3IDE3LjkzMjEgMi41MDk5NyAxOC40MjMgMi44MTUxNCAxOC43MjU4QzMuMTIwMzEgMTkuMDI4NSAzLjYxNTA5IDE5LjAyODUgMy45MjAyNiAxOC43MjU4TDUuOTQ2NDQgMTYuNzE1Nkw0Ljg0MTMyIDE1LjYxOTJaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzQ3NTQ2N1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjQzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvc2VjdGlvbj5cclxuPC9kaXY+XHJcblxyXG5cclxuPG5nLXRlbXBsYXRlICN6b29tUG9wdXAgbGV0LW1vZGVsPlxyXG4gICAgPGRpdiBjbGFzcz1cInAtNCBtLTRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIGJvcmRlci0wIHAtMCB3LTEwMCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1zdGFydFwiPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ25vbi10YWdnaW5nJ1wiIGNsYXNzPVwibXktM1wiPlxyXG5cclxuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHZpZXdCb3g9XCIwIDAgNDAgNDBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHJ4PVwiMjBcIiBmaWxsPVwiI0RBRjFGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDg4Xzk4MzM3KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yOS4xNjkzIDEzLjMzMzNWMTguMzMzM00yOS4xNjkzIDE4LjMzMzNIMjQuMTY5M00yOS4xNjkzIDE4LjMzMzNMMjUuMzAyNiAxNC43QzI0LjQwNyAxMy44MDM5IDIzLjI5OSAxMy4xNDkzIDIyLjA4MTkgMTIuNzk3M0MyMC44NjQ5IDEyLjQ0NTMgMTkuNTc4NSAxMi40MDczIDE4LjM0MjggMTIuNjg2OUMxNy4xMDcyIDEyLjk2NjUgMTUuOTYyNCAxMy41NTQ1IDE1LjAxNTUgMTQuMzk2MkMxNC4wNjg1IDE1LjIzNzggMTMuMzUwMiAxNi4zMDU2IDEyLjkyNzYgMTcuNU0xMC44MzU5IDI2LjY2NjZWMjEuNjY2Nk0xMC44MzU5IDIxLjY2NjZIMTUuODM1OU0xMC44MzU5IDIxLjY2NjZMMTQuNzAyNiAyNS4zQzE1LjU5ODIgMjYuMTk2MSAxNi43MDYyIDI2Ljg1MDYgMTcuOTIzMyAyNy4yMDI3QzE5LjE0MDMgMjcuNTU0NyAyMC40MjY3IDI3LjU5MjcgMjEuNjYyNCAyNy4zMTMxQzIyLjg5OCAyNy4wMzM1IDI0LjA0MjggMjYuNDQ1NSAyNC45ODk3IDI1LjYwMzhDMjUuOTM2NyAyNC43NjIxIDI2LjY1NSAyMy42OTQzIDI3LjA3NzYgMjIuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDg4Xzk4MzM3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMTAgMTApXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8IS0tIEhlYWRpbmcgLS0+XHJcbiAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnZW1wbG95ZWUnXCI+VGFnZ2luZyBhcyBlbXBsb3llZS9zdGFmZiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ2R1cGxpY2F0ZSdcIj5UYWdnaW5nIGFzIGR1cGxpY2F0ZXMgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdob3VzZS1rZWVwaW5nJ1wiPlRhZ2dpbmcgYXMgaG91c2Uga2VlcGluZyA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvcHVwVHlwZSA9PT0gJ25vbi10YWdnaW5nJ1wiPkNsZWFyIGR1cGxpY2F0ZXM8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDU+XHJcbiAgICAgICAgICAgIDxwIGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdlbXBsb3llZSdcIj5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gdGFnIHRoaXMgYXMgZW1wbG95ZWUvc3RhZmY/PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdkdXBsaWNhdGUnXCI+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHRhZyB0aGlzIGFzIGR1cGxpY2F0ZXM/IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicG9wdXBUeXBlID09PSAnaG91c2Uta2VlcGluZydcIj5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gdGFnIHRoaXMgYXMgaG91c2Uga2VlcGluZz8gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb3B1cFR5cGUgPT09ICdub24tdGFnZ2luZydcIj5UaGlzIHdpbGwgcmVtb3ZlIHRhZ2dlZCBkdXBsaWNhdGVzIGFuZCBtb3ZlIHRoZW0gdG9cclxuICAgICAgICAgICAgICAgICAgICAnTm9uLXRhZycuPC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgbXQtNSBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIG1lLTJcIiAoY2xpY2spPVwiY2FuY2VsU3VibWl0KClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInBvcHVwVHlwZSAhPT0gJ25vbi10YWdnaW5nJ1wiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cInN1Ym1pdFZhbHVlKHBvcHVwVHlwZSlcIj5cclxuICAgICAgICAgICAgICAgIFllcywgVGFnXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicG9wdXBUeXBlID09PSAnbm9uLXRhZ2dpbmcnXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwic3VibWl0VmFsdWUocG9wdXBUeXBlKVwiPlxyXG4gICAgICAgICAgICAgICAgWWVzLCBjbGVhclxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcmFpc2VkUG9wdXAgbGV0LW1vZGVsPlxyXG4gICAgPGRpdiBjbGFzcz1cInAtNCBtLTRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIGJvcmRlci0wIHAtMCB3LTEwMCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1zdGFydFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm15LTNcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiB2aWV3Qm94PVwiMCAwIDQwIDQwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiByeD1cIjIwXCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjEuMjUxIDExLjA4MDZDMjEuNzQwNSAxMS4wNjk5IDIyLjIxNTMgMTEuMjQ4NyAyMi41NzYyIDExLjU3OTZMMjMuNDkyMiAxMi40MjA0QzIzLjgwODkgMTIuNzA5NyAyMy44OTMgMTMuMTAxNyAyMy44NjUyIDEzLjQyNjNWMTMuNDI3MkMyMy44MzYgMTMuNzQ3OCAyMy42OTU0IDE0LjA1OTIgMjMuNDc4NSAxNC4yOTQ0QzIzLjM2OTkgMTQuNDEzIDIzLjI4NjUgMTQuNTUyNSAyMy4yMzE0IDE0LjcwMzZDMjMuMTc2NCAxNC44NTQ4IDIzLjE1MTIgMTUuMDE1NSAyMy4xNTgyIDE1LjE3NjNDMjMuMTY1MiAxNS4zMzcgMjMuMjAzNSAxNS40OTUzIDIzLjI3MTUgMTUuNjQxMUMyMy4zMzk0IDE1Ljc4NjkgMjMuNDM2MiAxNS45MTcyIDIzLjU1NDcgMTYuMDI1OUMyMy42NzMzIDE2LjEzNDYgMjMuODExNyAxNi4yMTk4IDIzLjk2MjkgMTYuMjc0OUMyNC4xMTQxIDE2LjMzIDI0LjI3NDggMTYuMzU0MSAyNC40MzU1IDE2LjM0NzJDMjQuNTk2MSAxNi4zNDAyIDI0Ljc1MzcgMTYuMzAxNyAyNC44OTk0IDE2LjIzMzlDMjUuMDA4OSAxNi4xODI5IDI1LjExMDYgMTYuMTE2IDI1LjIwMDIgMTYuMDM1NkwyNS4zNzAxIDE1Ljg2NTdDMjUuNTc1OSAxNS42NzQ4IDI1LjgzODUgMTUuNTQwOCAyNi4xMTUyIDE1LjQ5MDdDMjYuMjk3MiAxNS40NTQ2IDI2LjQ4NSAxNS40NjE3IDI2LjY2NDEgMTUuNTEwM0MyNi44NDM5IDE1LjU1OTEgMjcuMDEwMyAxNS42NDkgMjcuMTQ5NCAxNS43NzI5TDI3LjE1MTQgMTUuNzc0OUwyOC4yNTk4IDE2Ljc5MDVDMjguNDQ1IDE2Ljk2MDUgMjguNTk0OCAxNy4xNjU4IDI4LjcwMDIgMTcuMzk0QzI4LjgwNTYgMTcuNjIyMyAyOC44NjQ4IDE3Ljg2OTQgMjguODc0IDE4LjEyMDZDMjguODgzMiAxOC4zNzIgMjguODQyMyAxOC42MjM0IDI4Ljc1MzkgMTguODU4OUMyOC42NjU1IDE5LjA5NDEgMjguNTMxNiAxOS4zMDk2IDI4LjM1OTQgMTkuNDkyN0wyMC4xMTEzIDI4LjI1ODNDMTkuOTM3IDI4LjQ0MzQgMTkuNzI2OCAyOC41OTEyIDE5LjQ5NDEgMjguNjkzOEMxOS4yNjE0IDI4Ljc5NjUgMTkuMDEwMiAyOC44NTIyIDE4Ljc1NTkgMjguODU2QzE4LjUwMTYgMjguODU5NyAxOC4yNDkzIDI4LjgxMTkgMTguMDEzNyAyOC43MTYzQzE3Ljc3NzkgMjguNjIwNiAxNy41NjM2IDI4LjQ3ODQgMTcuMzgzOCAyOC4yOTgzTDE2LjI1MzkgMjcuMTY4NUMxNS43NTExIDI2LjY2NTYgMTUuODgzMiAyNS45NTUyIDE2LjE1MTQgMjUuNTU0MkwxNi4yMDYxIDI1LjQ2NDRDMTYuMzI0MSAyNS4yNDg2IDE2LjM3NDIgMjUuMDAwOCAxNi4zNDk2IDI0Ljc1NDRDMTYuMzIxNCAyNC40NzMxIDE2LjE5NyAyNC4yMTAyIDE1Ljk5NzEgMjQuMDEwM0MxNS43OTcxIDIzLjgxMDMgMTUuNTM0MyAyMy42ODU5IDE1LjI1MjkgMjMuNjU3N0MxNC45NzE1IDIzLjYyOTcgMTQuNjg4NyAyMy42OTk1IDE0LjQ1MzEgMjMuODU2SDE0LjQ1MjFDMTQuMDQ5NCAyNC4xMjIyIDEzLjM0MDcgMjQuMjU1MiAxMi44Mzc5IDIzLjc1MTVMMTEuNjc5NyAyMi41OTMzQzExLjUwMzQgMjIuNDE2OSAxMS4zNjQgMjIuMjA3NCAxMS4yNjg2IDIxLjk3NzFDMTEuMTczMSAyMS43NDY3IDExLjEyMzEgMjEuNDk5OSAxMS4xMjMgMjEuMjUwNUMxMS4xMjMgMjEuMDAxIDExLjE3MzEgMjAuNzUzNSAxMS4yNjg2IDIwLjUyMjlDMTEuMzY0IDIwLjI5MjYgMTEuNTAzNCAyMC4wODMxIDExLjY3OTcgMTkuOTA2N0wxOS45NDkyIDExLjYzNjJDMjAuMjk1NCAxMS4yOTAyIDIwLjc2MTYgMTEuMDkxMiAyMS4yNTEgMTEuMDgwNlpNMjEuMjc4MyAxMi4zODA0QzIxLjEyMzcgMTIuMzgzOCAyMC45NzY1IDEyLjQ0NjggMjAuODY3MiAxMi41NTYyTDEyLjU5NjcgMjAuODI1N0MxMi41NDA5IDIwLjg4MTQgMTIuNDk3IDIwLjk0ODIgMTIuNDY2OCAyMS4wMjFDMTIuNDM2NyAyMS4wOTM4IDEyLjQyMDkgMjEuMTcxNyAxMi40MjA5IDIxLjI1MDVDMTIuNDIwOSAyMS4zMjkyIDEyLjQzNjcgMjEuNDA3MyAxMi40NjY4IDIxLjQ4QzEyLjQ5NyAyMS41NTI4IDEyLjU0MSAyMS42MTk2IDEyLjU5NjcgMjEuNjc1M0wxMy43MDYxIDIyLjc4MzdMMTMuNzMxNCAyMi43NzJDMTQuMjE2OSAyMi40NDg1IDE0Ljc5OTMgMjIuMzAzNSAxNS4zNzk5IDIyLjM2MDhDMTUuOTYwOCAyMi40MTgzIDE2LjUwNDIgMjIuNjc0NyAxNi45MTcgMjMuMDg3NEMxNy4zMjk4IDIzLjUwMDIgMTcuNTg3IDI0LjA0MzYgMTcuNjQ0NSAyNC42MjQ1QzE3LjcwMiAyNS4yMDU1IDE3LjU1NjUgMjUuNzg5MiAxNy4yMzI0IDI2LjI3NDlMMTcuMjMwNSAyNi4yNzU5QzE3LjIyNjEgMjYuMjgyMiAxNy4yMjI2IDI2LjI4OTMgMTcuMjE5NyAyNi4yOTY0TDE4LjMwMTggMjcuMzgwNEMxOC4zNTg1IDI3LjQzNzIgMTguNDI2NiAyNy40ODIgMTguNTAxIDI3LjUxMjJDMTguNTc1NSAyNy41NDI1IDE4LjY1NTkgMjcuNTU3NCAxOC43MzYzIDI3LjU1NjJDMTguODE2NiAyNy41NTQ5IDE4Ljg5NjMgMjcuNTM3OCAxOC45Njk3IDI3LjUwNTRDMTkuMDQzIDI3LjQ3MjkgMTkuMTA5MSAyNy40MjYxIDE5LjE2NDEgMjcuMzY3N0wyNy40MTMxIDE4LjYwMjFDMjcuNDY3MyAxOC41NDQyIDI3LjUwOTMgMTguNDc2MSAyNy41MzcxIDE4LjQwMTlDMjcuNTY0OSAxOC4zMjc2IDI3LjU3ODEgMTguMjQ4NyAyNy41NzUyIDE4LjE2OTRDMjcuNTcyMiAxOC4wOTAyIDI3LjU1MzggMTguMDExOSAyNy41MjA1IDE3LjkzOTlDMjcuNDg3MiAxNy44Njc5IDI3LjQzOTQgMTcuODAzMiAyNy4zODA5IDE3Ljc0OTVMMjYuMzIyMyAxNi43Nzc4QzI2LjI5MjUgMTYuNzg4NSAyNi4yNjQ4IDE2LjgwNTMgMjYuMjQzMiAxNi44Mjg2QzI2LjAyMTcgMTcuMDc4OCAyNS43NTI5IDE3LjI4MjcgMjUuNDUyMSAxNy40MjgyQzI1LjE1IDE3LjU3NDMgMjQuODIxNCAxNy42NTg1IDI0LjQ4NjMgMTcuNjc2M0MyNC4xNTExIDE3LjY5NCAyMy44MTUgMTcuNjQ1MiAyMy40OTkgMTcuNTMxN0MyMy4xODMyIDE3LjQxODMgMjIuODkyOCAxNy4yNDI5IDIyLjY0NTUgMTcuMDE2MUMyMi4zOTgyIDE2Ljc4OTMgMjIuMTk4OCAxNi41MTUzIDIyLjA1ODYgMTYuMjEwNEMyMS45MTgzIDE1LjkwNTUgMjEuODQwNCAxNS41NzUyIDIxLjgyOTEgMTUuMjM5N0MyMS44MTc4IDE0LjkwNDMgMjEuODczNyAxNC41NyAyMS45OTMyIDE0LjI1NjNDMjIuMTEyMSAxMy45NDQyIDIyLjI5MTUgMTMuNjU4NyAyMi41MjE1IDEzLjQxNjVMMjIuNTU0NyAxMy4zNjU3QzIyLjU1OTQgMTMuMzU1MiAyMi41NjA3IDEzLjM0MzcgMjIuNTYzNSAxMy4zMzI1TDIxLjY5NzMgMTIuNTM4NlYxMi41Mzc2QzIxLjU4MzMgMTIuNDMzMSAyMS40MzI5IDEyLjM3NyAyMS4yNzgzIDEyLjM4MDRaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMwMEEzRkZcIiBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMC4zXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwhLS0gSGVhZGluZyAtLT5cclxuICAgICAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGUgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+UmFpc2UgdGlja2V0cyBmb3IgdGhlIGZvbGxvd2luZzwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgIDwvaDU+XHJcbiAgICAgICAgICAgIDxwIGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+UmFpc2luZyBhIHRpY2tldCBmb3IgZm9vdGZhbGwgY291bnQgaXNzdWVzLiBNYWtlIHN1cmUgYWxsIHJlY29yZHMgYXJlIGlkZW50aWZpZWQgZm9yXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbi48L3NwYW4+XHJcblxyXG5cclxuICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IG15LTRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgYm9yZGVyLTEgcm91bmRlZCBwLTMgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgZnMtNSBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7dGVtcFJhaXNlZFBheWxvYWQ/LmR1cGxpY2F0ZUNvdW50ID8gdGVtcFJhaXNlZFBheWxvYWQ/LmR1cGxpY2F0ZUNvdW50IDonMCd9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCB0ZXh0LW11dGVkIGZzLTYgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBEdXBsaWNhdGVzXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbXktNFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciBib3JkZXItMSByb3VuZGVkIHAtMyBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCBmcy01IG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3t0ZW1wUmFpc2VkUGF5bG9hZD8uZW1wbG95ZWVDb3VudCA/IHRlbXBSYWlzZWRQYXlsb2FkPy5lbXBsb3llZUNvdW50OicwJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCB0ZXh0LW11dGVkIGZzLTYgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBFbXBsb3llZVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IG15LTRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgYm9yZGVyLTEgcm91bmRlZCBwLTMgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgZnMtNSBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7dGVtcFJhaXNlZFBheWxvYWQ/LmhvdXNlS2VlcGluZ0NvdW50ID8gdGVtcFJhaXNlZFBheWxvYWQ/LmhvdXNlS2VlcGluZ0NvdW50IDonMCd9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCB0ZXh0LW11dGVkIGZzLTYgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBIb3VzZSBLZWVwaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gTGFiZWwgYW5kIFRleHRhcmVhIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS0zXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj5EZXNjcmlwdGlvbiAoT3B0aW9uYWwpPC9sYWJlbD5cclxuICAgICAgICAgICAgPHRleHRhcmVhIHJvd3M9XCIzXCIgWyhuZ01vZGVsKV09XCJjb21tZW50VGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgZGVzY3JpcHRpb25cIj48L3RleHRhcmVhPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBtdC01IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcblxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHctNTAgbWUtMlwiIChjbGljayk9XCJjYW5jZWxSYXNpZWQoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctNTBcIiAoY2xpY2spPVwic3VibWl0UmFpc2VkKClcIj5cclxuICAgICAgICAgICAgICAgIFJhaXNlIFRpY2tldFxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjaW1hZ2VQb3B1cCBsZXQtbW9kZWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwibXgtNFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBwLTIgIG1iLTIgbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGJvcmRlci1ncmF5IHAtMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gKm5nSWY9XCJjYW5OYXZpZ2F0ZUxlZnRcIiAoY2xpY2spPVwibmF2aWdhdGVJbWFnZSgnbGVmdCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IHBvc2l0aW9uLWFic29sdXRlIHN0YXJ0LTAgdG9wLTUwIHotaW5kZXgtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4peAXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIE1haW4gSW1hZ2UgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cIiBjdXJzb3ItcG9pbnRlciB3LTEwMCBoLTUyNXB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpbWFnZVVybCArIHNlbGVjdEltYWdlQXJyYXk/LmZpbGVQYXRoXCIgYXBwTWFnbmlmaWVyIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiAqbmdJZj1cImNhbk5hdmlnYXRlUmlnaHRcIiAoY2xpY2spPVwibmF2aWdhdGVJbWFnZSgncmlnaHQnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBwb3NpdGlvbi1hYnNvbHV0ZSBlbmQtMCB0b3AtNTAgei1pbmRleC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilrZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUmlnaHQgYXJyb3cgYnV0dG9uIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMiBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTIgaW1nLWRvYy10aW1lXCI+VGFuZ28gSUQgOiB7e3NlbGVjdEltYWdlQXJyYXk/LnRlbXBsZH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nLWRvYy12YWx1ZVwiPkVudHJ5IFRpbWUgOiB7e3NlbGVjdEltYWdlQXJyYXk/LmVudHJ5VG1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNSB0ZXh0LWVuZCBweS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXk/LnJldm9wc1R5cGUgPT09J25vbi10YWdnaW5nJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cIllldCB0byB0YWcgdGhlIGN1c3RvbWVyXCIgcGxhY2VtZW50PVwidG9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOVwiIGhlaWdodD1cIjE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOSAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMDIzNDQgNS42MjVINi4wMzA5NE0xNi4yMTU5IDEwLjQzMjVMMTAuODM4NCAxNS44MUMxMC42OTkxIDE1Ljk0OTUgMTAuNTMzNyAxNi4wNjAxIDEwLjM1MTYgMTYuMTM1NkMxMC4xNjk1IDE2LjIxMTEgOS45NzQzMSAxNi4yNDk5IDkuNzc3MTkgMTYuMjQ5OUM5LjU4MDA2IDE2LjI0OTkgOS4zODQ4NyAxNi4yMTExIDkuMjAyNzggMTYuMTM1NkM5LjAyMDY4IDE2LjA2MDEgOC44NTUyNSAxNS45NDk1IDguNzE1OTQgMTUuODFMMi4yNzM0NCA5LjM3NVYxLjg3NUg5Ljc3MzQ0TDE2LjIxNTkgOC4zMTc1QzE2LjQ5NTMgOC41OTg1NCAxNi42NTIxIDguOTc4NzIgMTYuNjUyMSA5LjM3NUMxNi42NTIxIDkuNzcxMjggMTYuNDk1MyAxMC4xNTE1IDE2LjIxNTkgMTAuNDMyNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0SW1hZ2VBcnJheT8ucmV2b3BzVHlwZSA9PT0nZHVwbGljYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNC4xNjc5NyAxMy4xODU5SDMuMzM0NjRDMi44OTI2MSAxMy4xODU5IDIuNDY4NjggMTMuMDEwMyAyLjE1NjEyIDEyLjY5NzdDMS44NDM1NiAxMi4zODUyIDEuNjY3OTcgMTEuOTYxMiAxLjY2Nzk3IDExLjUxOTJWNC4wMTkyMUMxLjY2Nzk3IDMuNTc3MTggMS44NDM1NiAzLjE1MzI2IDIuMTU2MTIgMi44NDA2OUMyLjQ2ODY4IDIuNTI4MTMgMi44OTI2MSAyLjM1MjU0IDMuMzM0NjQgMi4zNTI1NEgxMC44MzQ2QzExLjI3NjcgMi4zNTI1NCAxMS43MDA2IDIuNTI4MTMgMTIuMDEzMSAyLjg0MDY5QzEyLjMyNTcgMy4xNTMyNiAxMi41MDEzIDMuNTc3MTggMTIuNTAxMyA0LjAxOTIxVjQuODUyNTRNOS4xNjc5NyA4LjE4NTg3SDE2LjY2OEMxNy41ODg0IDguMTg1ODcgMTguMzM0NiA4LjkzMjA2IDE4LjMzNDYgOS44NTI1NFYxNy4zNTI1QzE4LjMzNDYgMTguMjczIDE3LjU4ODQgMTkuMDE5MiAxNi42NjggMTkuMDE5Mkg5LjE2Nzk3QzguMjQ3NDkgMTkuMDE5MiA3LjUwMTMgMTguMjczIDcuNTAxMyAxNy4zNTI1VjkuODUyNTRDNy41MDEzIDguOTMyMDYgOC4yNDc0OSA4LjE4NTg3IDkuMTY3OTcgOC4xODU4N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM0NzU0NjdcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDYzNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdEltYWdlQXJyYXk/LnJldm9wc1R5cGUgPT09J2VtcGxveWVlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjFcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzIwMTJfOTQ2MzkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMTY1NCAxOC4xODZWMTYuNTE5NEMxNC4xNjU0IDE1LjYzNTMgMTMuODE0MiAxNC43ODc1IDEzLjE4OTEgMTQuMTYyM0MxMi41NjM5IDEzLjUzNzIgMTEuNzE2MSAxMy4xODYgMTAuODMyIDEzLjE4Nkg0LjE2NTM2QzMuMjgxMzEgMTMuMTg2IDIuNDMzNDYgMTMuNTM3MiAxLjgwODM0IDE0LjE2MjNDMS4xODMyMiAxNC43ODc1IDAuODMyMDMxIDE1LjYzNTMgMC44MzIwMzEgMTYuNTE5NFYxOC4xODZNMTkuMTY1NCAxOC4xODZWMTYuNTE5NEMxOS4xNjQ4IDE1Ljc4MDggMTguOTE5IDE1LjA2MzMgMTguNDY2NSAxNC40Nzk2QzE4LjAxNCAxMy44OTU5IDE3LjM4MDUgMTMuNDc5IDE2LjY2NTQgMTMuMjk0NE0xMy4zMzIgMy4yOTQzN0MxNC4wNDkgMy40Nzc5NSAxNC42ODQ2IDMuODk0OTUgMTUuMTM4NCA0LjQ3OTYzQzE1LjU5MjIgNS4wNjQzIDE1LjgzODYgNS43ODMzOSAxNS44Mzg2IDYuNTIzNTRDMTUuODM4NiA3LjI2MzY4IDE1LjU5MjIgNy45ODI3NyAxNS4xMzg0IDguNTY3NDRDMTQuNjg0NiA5LjE1MjEyIDE0LjA0OSA5LjU2OTEyIDEzLjMzMiA5Ljc1MjdNMTAuODMyIDYuNTE5MzdDMTAuODMyIDguMzYwMzIgOS4zMzk2NSA5Ljg1MjcgNy40OTg3IDkuODUyN0M1LjY1Nzc1IDkuODUyNyA0LjE2NTM2IDguMzYwMzIgNC4xNjUzNiA2LjUxOTM3QzQuMTY1MzYgNC42Nzg0MiA1LjY1Nzc1IDMuMTg2MDQgNy40OTg3IDMuMTg2MDRDOS4zMzk2NSAzLjE4NjA0IDEwLjgzMiA0LjY3ODQyIDEwLjgzMiA2LjUxOTM3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMDEyXzk0NjM5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC42ODYwMzUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0SW1hZ2VBcnJheT8ucmV2b3BzVHlwZSA9PT0naG91c2Uta2VlcGluZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIxIDIxXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMDEyXzk0NjQzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOS4yNjIxOSAxLjM2NzIyQzEwLjE3NzcgMC40NTg5NzQgMTEuNjYyIDAuNDU4OTc0IDEyLjU3NzYgMS4zNjcyMkwyMC4zMTMzIDkuMDQxNTNDMjEuMjI4NyA5Ljk0OTggMjEuMjI4NyAxMS40MjIzIDIwLjMxMzMgMTIuMzMwNkwxMi41Nzc2IDIwLjAwNDlDMTEuNjYyIDIwLjkxMzEgMTAuMTc3NyAyMC45MTMxIDkuMjYyMTkgMjAuMDA0OUw3LjA1MTY2IDE3LjgxMTlMNS4wMjUzOCAxOS44MjIxQzQuMTA5ODcgMjAuNzMwMyAyLjYyNTUzIDIwLjczMDMgMS43MTAwMiAxOS44MjIxQzAuNzk0NTEgMTguOTEzOSAwLjc5NDUxIDE3LjQ0MTMgMS43MTAwMiAxNi41MzMxTDMuNzM2MyAxNC41MjI5TDEuNTI2NDggMTIuMzMwNkMwLjYxMDk2NiAxMS40MjIzIDAuNjEwOTY2IDkuOTQ5OCAxLjUyNjQ4IDkuMDQxNTNMOS4yNjIxOSAxLjM2NzIyWk0xMS40NzI0IDIuNDYzNTdDMTEuMTY3MiAyLjE2MDgyIDEwLjY3MjQgMi4xNjA4MiAxMC4zNjcyIDIuNDYzNTdMNC44NDE0NSA3Ljk0NTU2TDEzLjY4MjMgMTYuNzE2M0wxOS4yMDgxIDExLjIzNDJDMTkuNTEzMyAxMC45MzE1IDE5LjUxMzMgMTAuNDQwNiAxOS4yMDgxIDEwLjEzNzlMMTUuMzM5OSA2LjMwMDMyTDE0LjA1MDUgNy41Nzk0QzEzLjc0NTMgNy44ODIxNCAxMy4yNTA2IDcuODgyMTQgMTIuOTQ1NSA3LjU3OTRDMTIuNjQwMyA3LjI3NjY0IDEyLjY0MDMgNi43ODU3OSAxMi45NDU1IDYuNDgzMDVMMTQuMjM0NyA1LjIwMzk3TDEzLjEyOTkgNC4xMDc4Nkw5Ljk5ODcyIDcuMjE0MThDOS42OTM1NCA3LjUxNjkyIDkuMTk4NzMgNy41MTY5MiA4Ljg5MzU2IDcuMjE0MThDOC41ODgzOCA2LjkxMTQzIDguNTg4MzggNi40MjA1OCA4Ljg5MzU2IDYuMTE3ODNMMTIuMDI0NyAzLjAxMTUxTDExLjQ3MjQgMi40NjM1N1pNMTIuNTc3MSAxNy44MTI1TDMuNzM2MzMgOS4wNDE5MUwyLjYzMTYgMTAuMTM3OUMyLjMyNjQyIDEwLjQ0MDYgMi4zMjY0MiAxMC45MzE1IDIuNjMxNiAxMS4yMzQyTDEwLjM2NzIgMTguOTA4NUMxMC42NzI0IDE5LjIxMTMgMTEuMTY3MiAxOS4yMTEzIDExLjQ3MjQgMTguOTA4NUwxMi41NzcxIDE3LjgxMjVaTTQuODQxMzIgMTUuNjE5MkwyLjgxNTE0IDE3LjYyOTRDMi41MDk5NyAxNy45MzIxIDIuNTA5OTcgMTguNDIzIDIuODE1MTQgMTguNzI1OEMzLjEyMDMxIDE5LjAyODUgMy42MTUwOSAxOS4wMjg1IDMuOTIwMjYgMTguNzI1OEw1Ljk0NjQ0IDE2LjcxNTZMNC44NDEzMiAxNS42MTkyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM0NzU0NjdcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjAxMl85NDY0M1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDAuNjg2MDM1KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXIgcHktMiBweC0wXCI+IC0tPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIHB5LTIgbWItMiBweC0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiAoY2xpY2spPVwiY2xvc2VJbWFnZSgpXCI+Q2xvc2U8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS0gPC9kaXY+IC0tPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+Il19