tango-app-ui-store-ticket-infra 3.0.19-dev → 3.0.20-dev

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.
@@ -71,7 +71,7 @@ export class AnalyzeReportComponent {
71
71
  getCameraAngle() {
72
72
  let data = {
73
73
  "Date": this.activeDate,
74
- "StreamName": this.activeStream,
74
+ "StreamName": this.activeStream?.streamName,
75
75
  "storeId": this.analyzereport?.filteredStoreId
76
76
  };
77
77
  this.service.cameraAngleChange(data).pipe(takeUntil(this.destroy$)).subscribe({
@@ -134,11 +134,11 @@ export class AnalyzeReportComponent {
134
134
  this.activeModal.close();
135
135
  }
136
136
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AnalyzeReportComponent, deps: [{ token: i1.NgbModal }, { token: i1.NgbActiveModal }, { token: i2.TicketsService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
137
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: AnalyzeReportComponent, selector: "lib-analyze-report", inputs: { analyzereport: "analyzereport" }, viewQueries: [{ propertyName: "confirmationModal", first: true, predicate: ["confirmationModal"], descendants: true }, { propertyName: "ReconfirmationModal", first: true, predicate: ["ReconfirmationModal"], descendants: true }], ngImport: i0, template: "<div class=\"card py-0 scroll-y\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <img alt=\"Pic\" src=\"./assets/tango/Images/edgeapp icon.svg\">\r\n </div>\r\n </div>\r\n <div class=\"row w-100\">\r\n <div class=\"col-md-12\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Analyze Report</a>\r\n <div class=\"sub-title q-query-text\">Your Queries reported below stores are got {{analyzereport?.countType}} {{analyzereport?.filteredFeature}} on {{selectedDate[0]}} to\r\n {{selectedDate[selectedDate.length - 1]}}</div>\r\n </div>\r\n </div>\r\n <ul class=\"nav my-3 w-100 mt-5\">\r\n <li *ngFor=\"let date of selectedDate;let i=index\" class=\"nav-item pe-none\" (click)=\"handleClick($event)\" ><a data-bs-toggle=\"tab\" [ngClass]=\"activeDate === date.date ? 'active':''\"\r\n class=\"nav-link btn btn-sm btn-color-muted btn-active fw-bolder px-10 me-1 show\">\r\n {{date.date}} <span *ngIf=\"activeDate === date.date && date?.showIcon\" class=\"mx-2\"><svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g style=\"mix-blend-mode:multiply\">\r\n <rect x=\"0.25\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#EAF8FF\" />\r\n <g clip-path=\"url(#clip0_8713_10379)\">\r\n <path\r\n d=\"M10.25 8V10M10.25 12H10.255M15.25 10C15.25 12.7614 13.0114 15 10.25 15C7.48858 15 5.25 12.7614 5.25 10C5.25 7.23858 7.48858 5 10.25 5C13.0114 5 15.25 7.23858 15.25 10Z\"\r\n stroke=\"#33B5FF\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_8713_10379\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(4.25 4)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span *ngIf=\"activeDate !== date.date && date?.showIcon\" class=\"mx-2\">\r\n <svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g style=\"mix-blend-mode:multiply\">\r\n <rect x=\"0.25\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#F2F4F7\" />\r\n <g clip-path=\"url(#clip0_8713_10379)\">\r\n <path\r\n d=\"M10.25 8V10M10.25 12H10.255M15.25 10C15.25 12.7614 13.0114 15 10.25 15C7.48858 15 5.25 12.7614 5.25 10C5.25 7.23858 7.48858 5 10.25 5C13.0114 5 15.25 7.23858 15.25 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_8713_10379\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(4.25 4)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </a></li>\r\n </ul>\r\n <div *ngIf=\"activeArray?.primaryIssue\" class=\"my-3 mt-5\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div *ngIf=\"!activeArray?.primaryIssue\" class=\"my-3 mt-5\">\r\n <img style=\"width:50px; height:50px\" src=\"./assets/tango/Images/Successtoast.png\">\r\n </div>\r\n <div *ngIf=\"activeArray\" class=\"ul-list\">\r\n <ul>\r\n <li *ngIf=\"activeArray?.primaryIssue\" class=\"list-size my-3\">The primary issue was <span class=\"fw-bold-700\">{{activeArray?.primaryIssue}}</span> where\r\n the <span *ngFor=\"let data of activeArray?.secondaryReason let last = last\" class=\"fw-bold-700\">data <span *ngIf=\"!last\">,</span></span> was the secondary concern. </li>\r\n <li class=\"list-size my-3\">Store Experienced a downtime of <span class=\"fw-bold-700\">{{activeArray?.downTime}} mins</span>\r\n dated <span class=\"fw-bold-700\">{{activeArray?.issueDate}}</span> where \"N Files Lost\" and was unable to send to our\r\n cloud due to speed being <span class=\"fw-bold-700\">{{activeArray?.speedTest}} Mbps.</span> </li>\r\n <!-- <li class=\"list-size my-3\">We were able to capture only <span class=\"fw-bold-700\">100 Footfalls</span>\r\n despite the <span class=\"fw-bold-700\">Internet slow</span> issue </li> -->\r\n\r\n </ul>\r\n </div> \r\n </div>\r\n <div class=\"card-header border-0 d-flex justify-content-between\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"c-label fw-bolder fs-3 mb-1\">Tango Pre-Requisite <span class=\"badge badge-light-warning ms-2\">Warning</span></span>\r\n </h3>\r\n <div class=\"card-toolbar text-end\">\r\n <span class=\"list-size\">Camera 01</span>\r\n </div>\r\n </div>\r\n <div class=\"row mx-3\"> \r\n <div class=\"table-reponsive\">\r\n <table class=\"bottom-border w-100\">\r\n <thead>\r\n <tr>\r\n <th>Instances</th>\r\n <th>Excepted</th>\r\n <th>Actual</th>\r\n <th>Result</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td>Camera Angle</td>\r\n <td></td>\r\n <td><img src=\"{{angleChange?.angleChangeImage}}\"></td>\r\n <td *ngIf=\"!angleChange?.anglechange\"><img src=\"./assets/tango/Image/verificationsuccess.svg\"></td>\r\n <td *ngIf=\"angleChange?.anglechange\"><img src=\"./assets/tango/Image/verificationfailed.svg\"></td>\r\n </tr>\r\n <tr>\r\n <td>Resolution</td>\r\n <td>1080 x 908</td>\r\n <td>{{angleChange?.resolution ? angleChange?.resolution : '--'}}</td>\r\n <!-- <td *ngIf=\"angleChange?.anglechange\"><img src=\"./assets/tango/Image/verificationfailed.svg\"></td> -->\r\n <td><img src=\"./assets/tango/Image/verificationsuccess.svg\"></td>\r\n </tr>\r\n <!-- <tr>\r\n <td>Downtime</td>\r\n <td>4.00 AM</td>\r\n <td>9.00 AM</td>\r\n <td><img src=\"./assets/tango/Image/verificationdanger.svg\"></td>\r\n </tr> -->\r\n </tbody>\r\n </table>\r\n <div *ngIf=\"streamDetails?.length\" class=\"d-flex justify-content-center align-items-center mt-10\">\r\n <div *ngFor=\"let stream of streamDetails\" [ngClass]=\"stream === activeStream ? 'bg-dark' : 'bg-opacity-25'\" class=\"w-10px h-10px rounded-5 bg-dark cursor-pointer mx-3\" (click)=\"getstreambasedAngle(stream)\"></div>\r\n </div>\r\n <div class=\"card-header px-4 border-0 pt-5 d-flex justify-content-between\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"c-label-title mb-1\">Queries History</span>\r\n </h3>\r\n <div (click)=\"viewMore()\" class=\"card-toolbar text-end\">\r\n <span class=\"primary-list\">View more Details</span>\r\n </div>\r\n </div>\r\n <div class=\"px-5 q-query-text\">From the date of installation till today the below queries success rate has been maintained</div>\r\n <div class=\"d-flex flex-wrap py-3\">\r\n <div class=\" min-w-125px py-3 px-4 me-6 mb-3\">\r\n <div class=\"h-history-title\">Earnings</div>\r\n <div class=\"d-flex align-items-center py-2\">\r\n <div class=\"h-history-count\">10 Tickets</div>\r\n </div>\r\n </div>\r\n <div class=\" min-w-125px py-3 px-4 me-6 mb-3\">\r\n <div class=\"h-history-title\">Earnings</div>\r\n <div class=\"d-flex align-items-center py-2\">\r\n <div class=\"h-history-count\">78%</div>\r\n </div>\r\n </div>\r\n <!-- <div class=\" min-w-125px py-3 px-4 me-6 mb-3\">\r\n <div class=\"fw-bold fs-6 text-gray-500\">Earnings</div>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"fs-2 fw-bolder\">4500$</div>\r\n </div>\r\n </div> -->\r\n </div>\r\n <div class=\"row mb-3\">\r\n <div class=\"col-12 text-end\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3 cursor-pointer \"\r\n (click)=\"raiseTicket()\">Raise a Ticket</button>\r\n <button *ngIf=\"(currentIdx + 1) !== selectedDate.length\" type=\"button\" class=\"btn btn-primary rounded-3\" (click)=\"closeTicket()\">Accept & Close</button>\r\n <button *ngIf=\"(currentIdx + 1) === selectedDate.length\" type=\"button\" class=\"btn btn-primary rounded-3\" (click)=\"openPopup()\">Close</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #confirmationModal let-modal>\r\n <div class=\"p-8\">\r\n <div class=\"\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div class=\" mt-5\">\r\n <span class=\"cameraDetail fw-bold\">Unsaved Changes</span>\r\n <div class=\"mt-3 sub-header fw-bold-400\">Do you want to clise the tickets?</div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-50 me-2\" (click)=\"modal.dismiss()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary w-50 ms-2\" (click)=\"confirmSave();modal.close()\">Confirm</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #ReconfirmationModal let-modal>\r\n <div class=\"p-8\">\r\n <div class=\"\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div class=\" mt-5\">\r\n <span class=\"cameraDetail fw-bold\">Are you sure, want to view more details?</span>\r\n <div class=\"mt-3 sub-header fw-bold-400\">If so you will redirect to Queries summary & can\u2019t able to come back to the screen.</div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-50 me-2\" (click)=\"modal.dismiss()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary w-50 ms-2\" (click)=\"confirmMore();modal.dismiss()\">Confirm</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n ", styles: [".nav-line-tabs1.nav-line-tabs-2x .nav-item .nav-link.active{border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;padding:10px 14px!important;color:var(--Primary-700, #009BF3)!important}.nav-line-tabs1 .nav-link{color:var(--Gray-500, #667085)!important;font-size:16px;font-weight:500!important;line-height:24px}.daterangepicker{display:block!important;top:153.85px!important;left:900px!important;right:0}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .md-drppicker.drops-down-down.ltr.double.show-ranges.shown{left:0!important;height:350px}:host::ng-deep .md-drppicker td{border-radius:44px}:host::ng-deep .md-drppicker .btn{border-radius:7px!important;background-color:#019df5!important}:host::ng-deep .md-drppicker .btn{right:99px;top:300px}:host::ng-deep .md-drppicker .ranges ul li button.active{background-color:#029cf3!important}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important}.title{color:var(--Gray-900, #101828);font-size:20px;line-height:30px}.sub-title{color:var(--Gray-500, #667085);font-size:14px;line-height:20px}.border-val{padding:16px;border-radius:12px;border:1px solid var(--Gray-200, #EAECF0);background:#fff;box-shadow:0 0 20px #4c577d05}.role-title{color:var(--Primary-600, #00A3FF);font-size:16px;font-weight:600;line-height:24px;text-decoration-line:underline}.col-md-4{width:31%!important}.user-list{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.active{border-radius:6px!important;padding:8px 25px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:500!important;line-height:20px}.list-size{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.fw-bold-700{font-weight:700!important}.c-label{color:var(--Gray-800, #1D2939)!important;font-size:16px!important;font-weight:500!important;line-height:24px}.c-label-title{color:#000!important;font-size:16px!important;font-weight:500;line-height:24px!important}.primary-list{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:600;line-height:18px;text-transform:capitalize}.h-history-title{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.h-history-count{color:var(--Gray-500, #667085)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.q-query-text{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.cameraDetail{color:var(--Gray-900, #101828)!important;font-size:18px!important;line-height:28px!important}.sub-header{color:var(--Gray-500, #667085)!important;font-size:14px!important;line-height:20px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
137
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: AnalyzeReportComponent, selector: "lib-analyze-report", inputs: { analyzereport: "analyzereport" }, viewQueries: [{ propertyName: "confirmationModal", first: true, predicate: ["confirmationModal"], descendants: true }, { propertyName: "ReconfirmationModal", first: true, predicate: ["ReconfirmationModal"], descendants: true }], ngImport: i0, template: "<div class=\"card py-0 scroll-y\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <img alt=\"Pic\" src=\"./assets/tango/Images/edgeapp icon.svg\">\r\n </div>\r\n </div>\r\n <div class=\"row w-100\">\r\n <div class=\"col-md-12\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Analyze Report</a>\r\n <div class=\"sub-title q-query-text\">Your Queries reported below stores are got {{analyzereport?.countType}} {{analyzereport?.filteredFeature}} on {{selectedDate[0]?.date}} to\r\n {{selectedDate[selectedDate.length - 1]?.date}}</div>\r\n </div>\r\n </div>\r\n <ul class=\"nav my-3 w-100 mt-5\">\r\n <li *ngFor=\"let date of selectedDate;let i=index\" class=\"nav-item pe-none\" (click)=\"handleClick($event)\" ><a data-bs-toggle=\"tab\" [ngClass]=\"activeDate === date.date ? 'active':''\"\r\n class=\"nav-link btn btn-sm btn-color-muted btn-active fw-bolder px-10 me-1 show\">\r\n {{date.date}} <span *ngIf=\"activeDate === date.date && date?.showIcon\" class=\"mx-2\"><svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g style=\"mix-blend-mode:multiply\">\r\n <rect x=\"0.25\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#EAF8FF\" />\r\n <g clip-path=\"url(#clip0_8713_10379)\">\r\n <path\r\n d=\"M10.25 8V10M10.25 12H10.255M15.25 10C15.25 12.7614 13.0114 15 10.25 15C7.48858 15 5.25 12.7614 5.25 10C5.25 7.23858 7.48858 5 10.25 5C13.0114 5 15.25 7.23858 15.25 10Z\"\r\n stroke=\"#33B5FF\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_8713_10379\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(4.25 4)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span *ngIf=\"activeDate !== date.date && date?.showIcon\" class=\"mx-2\">\r\n <svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g style=\"mix-blend-mode:multiply\">\r\n <rect x=\"0.25\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#F2F4F7\" />\r\n <g clip-path=\"url(#clip0_8713_10379)\">\r\n <path\r\n d=\"M10.25 8V10M10.25 12H10.255M15.25 10C15.25 12.7614 13.0114 15 10.25 15C7.48858 15 5.25 12.7614 5.25 10C5.25 7.23858 7.48858 5 10.25 5C13.0114 5 15.25 7.23858 15.25 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_8713_10379\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(4.25 4)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </a></li>\r\n </ul>\r\n <div *ngIf=\"activeArray?.primaryIssue\" class=\"my-3 mt-5\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div *ngIf=\"!activeArray?.primaryIssue\" class=\"my-3 mt-5\">\r\n <img style=\"width:50px; height:50px\" src=\"./assets/tango/Images/Successtoast.png\">\r\n </div>\r\n <div *ngIf=\"activeArray\" class=\"ul-list\">\r\n <ul>\r\n <li *ngIf=\"activeArray?.primaryIssue\" class=\"list-size my-3\">The primary issue was <span class=\"fw-bold-700\">{{activeArray?.primaryIssue}}</span> where\r\n the <span *ngFor=\"let data of activeArray?.secondaryReason let last = last\" class=\"fw-bold-700\">data <span *ngIf=\"!last\">,</span></span> was the secondary concern. </li>\r\n <li *ngIf=\"activeArray?.downTime > 0\" class=\"list-size my-3\">Store Experienced a downtime of <span class=\"fw-bold-700\">{{activeArray?.downTime}} mins</span>\r\n dated <span class=\"fw-bold-700\">{{activeArray?.issueDate}}</span> where \"N Files Lost\" and was unable to send to our\r\n cloud due to speed being <span class=\"fw-bold-700\">{{activeArray?.speedTest}} Mbps.</span> </li>\r\n <!-- <li class=\"list-size my-3\">We were able to capture only <span class=\"fw-bold-700\">100 Footfalls</span>\r\n despite the <span class=\"fw-bold-700\">Internet slow</span> issue </li> -->\r\n\r\n </ul>\r\n </div> \r\n </div>\r\n <div class=\"card-header border-0 d-flex justify-content-between\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"c-label fw-bolder fs-3 mb-1\">Tango Pre-Requisite <span class=\"badge badge-light-warning ms-2\">Warning</span></span>\r\n </h3>\r\n <div class=\"card-toolbar text-end\">\r\n <span class=\"list-size\">{{activeStream?.cameraNumber}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mx-3\"> \r\n <div class=\"table-reponsive\">\r\n <table class=\"bottom-border w-100\">\r\n <thead>\r\n <tr>\r\n <th>Instances</th>\r\n <th>Excepted</th>\r\n <th>Actual</th>\r\n <th>Result</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td>Camera Angle</td>\r\n <td></td>\r\n <td><img [src]=\"angleChange?.angleChangeImage ? angleChange?.angleChangeImage :activeStream?.thumbnailImage\"></td>\r\n <td *ngIf=\"!angleChange?.anglechange\"><img src=\"./assets/tango/Image/verificationsuccess.svg\"></td>\r\n <td *ngIf=\"angleChange?.anglechange\"><img src=\"./assets/tango/Image/verificationfailed.svg\"></td>\r\n </tr>\r\n <tr>\r\n <td>Resolution</td>\r\n <td>1080 x 908</td>\r\n <td>{{angleChange?.resolution ? angleChange?.resolution : '--'}}</td>\r\n <!-- <td *ngIf=\"angleChange?.anglechange\"><img src=\"./assets/tango/Image/verificationfailed.svg\"></td> -->\r\n <td><img src=\"./assets/tango/Image/verificationsuccess.svg\"></td>\r\n </tr>\r\n <!-- <tr>\r\n <td>Downtime</td>\r\n <td>4.00 AM</td>\r\n <td>9.00 AM</td>\r\n <td><img src=\"./assets/tango/Image/verificationdanger.svg\"></td>\r\n </tr> -->\r\n </tbody>\r\n </table>\r\n <div *ngIf=\"streamDetails?.length\" class=\"d-flex justify-content-center align-items-center mt-10\">\r\n <div *ngFor=\"let stream of streamDetails\" [ngClass]=\"stream?.streamName === activeStream?.streamName? 'bg-dark' : 'bg-opacity-25'\" class=\"w-10px h-10px rounded-5 bg-dark cursor-pointer mx-3\" (click)=\"getstreambasedAngle(stream)\"></div>\r\n </div>\r\n <div class=\"card-header px-4 border-0 pt-5 d-flex justify-content-between\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"c-label-title mb-1\">Queries History</span>\r\n </h3>\r\n <div (click)=\"viewMore()\" class=\"card-toolbar text-end\">\r\n <span class=\"primary-list\">View more Details</span>\r\n </div>\r\n </div>\r\n <div class=\"px-5 q-query-text\">From the date of installation till today the below queries success rate has been maintained</div>\r\n <div class=\"d-flex flex-wrap py-3\">\r\n <div class=\" min-w-125px py-3 px-4 me-6 mb-3\">\r\n <div class=\"h-history-title\">Earnings</div>\r\n <div class=\"d-flex align-items-center py-2\">\r\n <div class=\"h-history-count\">10 Tickets</div>\r\n </div>\r\n </div>\r\n <div class=\" min-w-125px py-3 px-4 me-6 mb-3\">\r\n <div class=\"h-history-title\">Earnings</div>\r\n <div class=\"d-flex align-items-center py-2\">\r\n <div class=\"h-history-count\">78%</div>\r\n </div>\r\n </div>\r\n <!-- <div class=\" min-w-125px py-3 px-4 me-6 mb-3\">\r\n <div class=\"fw-bold fs-6 text-gray-500\">Earnings</div>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"fs-2 fw-bolder\">4500$</div>\r\n </div>\r\n </div> -->\r\n </div>\r\n <div class=\"row mb-3\">\r\n <div class=\"col-12 text-end\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3 cursor-pointer \"\r\n (click)=\"raiseTicket()\">Raise a Ticket</button>\r\n <button *ngIf=\"(currentIdx + 1) !== selectedDate.length\" type=\"button\" class=\"btn btn-primary rounded-3\" (click)=\"closeTicket()\">Accept & Close</button>\r\n <button *ngIf=\"(currentIdx + 1) === selectedDate.length\" type=\"button\" class=\"btn btn-primary rounded-3\" (click)=\"openPopup()\">Close</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #confirmationModal let-modal>\r\n <div class=\"p-8\">\r\n <div class=\"\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div class=\" mt-5\">\r\n <span class=\"cameraDetail fw-bold\">Unsaved Changes</span>\r\n <div class=\"mt-3 sub-header fw-bold-400\">Do you want to clise the tickets?</div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-50 me-2\" (click)=\"modal.dismiss()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary w-50 ms-2\" (click)=\"confirmSave();modal.close()\">Confirm</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #ReconfirmationModal let-modal>\r\n <div class=\"p-8\">\r\n <div class=\"\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div class=\" mt-5\">\r\n <span class=\"cameraDetail fw-bold\">Are you sure, want to view more details?</span>\r\n <div class=\"mt-3 sub-header fw-bold-400\">If so you will redirect to Queries summary & can\u2019t able to come back to the screen.</div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-50 me-2\" (click)=\"modal.dismiss()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary w-50 ms-2\" (click)=\"confirmMore();modal.dismiss()\">Confirm</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n ", styles: [".nav-line-tabs1.nav-line-tabs-2x .nav-item .nav-link.active{border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;padding:10px 14px!important;color:var(--Primary-700, #009BF3)!important}.nav-line-tabs1 .nav-link{color:var(--Gray-500, #667085)!important;font-size:16px;font-weight:500!important;line-height:24px}.daterangepicker{display:block!important;top:153.85px!important;left:900px!important;right:0}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .md-drppicker.drops-down-down.ltr.double.show-ranges.shown{left:0!important;height:350px}:host::ng-deep .md-drppicker td{border-radius:44px}:host::ng-deep .md-drppicker .btn{border-radius:7px!important;background-color:#019df5!important}:host::ng-deep .md-drppicker .btn{right:99px;top:300px}:host::ng-deep .md-drppicker .ranges ul li button.active{background-color:#029cf3!important}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important}.title{color:var(--Gray-900, #101828);font-size:20px;line-height:30px}.sub-title{color:var(--Gray-500, #667085);font-size:14px;line-height:20px}.border-val{padding:16px;border-radius:12px;border:1px solid var(--Gray-200, #EAECF0);background:#fff;box-shadow:0 0 20px #4c577d05}.role-title{color:var(--Primary-600, #00A3FF);font-size:16px;font-weight:600;line-height:24px;text-decoration-line:underline}.col-md-4{width:31%!important}.user-list{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.active{border-radius:6px!important;padding:8px 25px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:500!important;line-height:20px}.list-size{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.fw-bold-700{font-weight:700!important}.c-label{color:var(--Gray-800, #1D2939)!important;font-size:16px!important;font-weight:500!important;line-height:24px}.c-label-title{color:#000!important;font-size:16px!important;font-weight:500;line-height:24px!important}.primary-list{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:600;line-height:18px;text-transform:capitalize}.h-history-title{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.h-history-count{color:var(--Gray-500, #667085)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.q-query-text{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.cameraDetail{color:var(--Gray-900, #101828)!important;font-size:18px!important;line-height:28px!important}.sub-header{color:var(--Gray-500, #667085)!important;font-size:14px!important;line-height:20px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
138
138
  }
139
139
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AnalyzeReportComponent, decorators: [{
140
140
  type: Component,
141
- args: [{ selector: 'lib-analyze-report', template: "<div class=\"card py-0 scroll-y\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <img alt=\"Pic\" src=\"./assets/tango/Images/edgeapp icon.svg\">\r\n </div>\r\n </div>\r\n <div class=\"row w-100\">\r\n <div class=\"col-md-12\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Analyze Report</a>\r\n <div class=\"sub-title q-query-text\">Your Queries reported below stores are got {{analyzereport?.countType}} {{analyzereport?.filteredFeature}} on {{selectedDate[0]}} to\r\n {{selectedDate[selectedDate.length - 1]}}</div>\r\n </div>\r\n </div>\r\n <ul class=\"nav my-3 w-100 mt-5\">\r\n <li *ngFor=\"let date of selectedDate;let i=index\" class=\"nav-item pe-none\" (click)=\"handleClick($event)\" ><a data-bs-toggle=\"tab\" [ngClass]=\"activeDate === date.date ? 'active':''\"\r\n class=\"nav-link btn btn-sm btn-color-muted btn-active fw-bolder px-10 me-1 show\">\r\n {{date.date}} <span *ngIf=\"activeDate === date.date && date?.showIcon\" class=\"mx-2\"><svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g style=\"mix-blend-mode:multiply\">\r\n <rect x=\"0.25\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#EAF8FF\" />\r\n <g clip-path=\"url(#clip0_8713_10379)\">\r\n <path\r\n d=\"M10.25 8V10M10.25 12H10.255M15.25 10C15.25 12.7614 13.0114 15 10.25 15C7.48858 15 5.25 12.7614 5.25 10C5.25 7.23858 7.48858 5 10.25 5C13.0114 5 15.25 7.23858 15.25 10Z\"\r\n stroke=\"#33B5FF\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_8713_10379\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(4.25 4)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span *ngIf=\"activeDate !== date.date && date?.showIcon\" class=\"mx-2\">\r\n <svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g style=\"mix-blend-mode:multiply\">\r\n <rect x=\"0.25\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#F2F4F7\" />\r\n <g clip-path=\"url(#clip0_8713_10379)\">\r\n <path\r\n d=\"M10.25 8V10M10.25 12H10.255M15.25 10C15.25 12.7614 13.0114 15 10.25 15C7.48858 15 5.25 12.7614 5.25 10C5.25 7.23858 7.48858 5 10.25 5C13.0114 5 15.25 7.23858 15.25 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_8713_10379\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(4.25 4)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </a></li>\r\n </ul>\r\n <div *ngIf=\"activeArray?.primaryIssue\" class=\"my-3 mt-5\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div *ngIf=\"!activeArray?.primaryIssue\" class=\"my-3 mt-5\">\r\n <img style=\"width:50px; height:50px\" src=\"./assets/tango/Images/Successtoast.png\">\r\n </div>\r\n <div *ngIf=\"activeArray\" class=\"ul-list\">\r\n <ul>\r\n <li *ngIf=\"activeArray?.primaryIssue\" class=\"list-size my-3\">The primary issue was <span class=\"fw-bold-700\">{{activeArray?.primaryIssue}}</span> where\r\n the <span *ngFor=\"let data of activeArray?.secondaryReason let last = last\" class=\"fw-bold-700\">data <span *ngIf=\"!last\">,</span></span> was the secondary concern. </li>\r\n <li class=\"list-size my-3\">Store Experienced a downtime of <span class=\"fw-bold-700\">{{activeArray?.downTime}} mins</span>\r\n dated <span class=\"fw-bold-700\">{{activeArray?.issueDate}}</span> where \"N Files Lost\" and was unable to send to our\r\n cloud due to speed being <span class=\"fw-bold-700\">{{activeArray?.speedTest}} Mbps.</span> </li>\r\n <!-- <li class=\"list-size my-3\">We were able to capture only <span class=\"fw-bold-700\">100 Footfalls</span>\r\n despite the <span class=\"fw-bold-700\">Internet slow</span> issue </li> -->\r\n\r\n </ul>\r\n </div> \r\n </div>\r\n <div class=\"card-header border-0 d-flex justify-content-between\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"c-label fw-bolder fs-3 mb-1\">Tango Pre-Requisite <span class=\"badge badge-light-warning ms-2\">Warning</span></span>\r\n </h3>\r\n <div class=\"card-toolbar text-end\">\r\n <span class=\"list-size\">Camera 01</span>\r\n </div>\r\n </div>\r\n <div class=\"row mx-3\"> \r\n <div class=\"table-reponsive\">\r\n <table class=\"bottom-border w-100\">\r\n <thead>\r\n <tr>\r\n <th>Instances</th>\r\n <th>Excepted</th>\r\n <th>Actual</th>\r\n <th>Result</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td>Camera Angle</td>\r\n <td></td>\r\n <td><img src=\"{{angleChange?.angleChangeImage}}\"></td>\r\n <td *ngIf=\"!angleChange?.anglechange\"><img src=\"./assets/tango/Image/verificationsuccess.svg\"></td>\r\n <td *ngIf=\"angleChange?.anglechange\"><img src=\"./assets/tango/Image/verificationfailed.svg\"></td>\r\n </tr>\r\n <tr>\r\n <td>Resolution</td>\r\n <td>1080 x 908</td>\r\n <td>{{angleChange?.resolution ? angleChange?.resolution : '--'}}</td>\r\n <!-- <td *ngIf=\"angleChange?.anglechange\"><img src=\"./assets/tango/Image/verificationfailed.svg\"></td> -->\r\n <td><img src=\"./assets/tango/Image/verificationsuccess.svg\"></td>\r\n </tr>\r\n <!-- <tr>\r\n <td>Downtime</td>\r\n <td>4.00 AM</td>\r\n <td>9.00 AM</td>\r\n <td><img src=\"./assets/tango/Image/verificationdanger.svg\"></td>\r\n </tr> -->\r\n </tbody>\r\n </table>\r\n <div *ngIf=\"streamDetails?.length\" class=\"d-flex justify-content-center align-items-center mt-10\">\r\n <div *ngFor=\"let stream of streamDetails\" [ngClass]=\"stream === activeStream ? 'bg-dark' : 'bg-opacity-25'\" class=\"w-10px h-10px rounded-5 bg-dark cursor-pointer mx-3\" (click)=\"getstreambasedAngle(stream)\"></div>\r\n </div>\r\n <div class=\"card-header px-4 border-0 pt-5 d-flex justify-content-between\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"c-label-title mb-1\">Queries History</span>\r\n </h3>\r\n <div (click)=\"viewMore()\" class=\"card-toolbar text-end\">\r\n <span class=\"primary-list\">View more Details</span>\r\n </div>\r\n </div>\r\n <div class=\"px-5 q-query-text\">From the date of installation till today the below queries success rate has been maintained</div>\r\n <div class=\"d-flex flex-wrap py-3\">\r\n <div class=\" min-w-125px py-3 px-4 me-6 mb-3\">\r\n <div class=\"h-history-title\">Earnings</div>\r\n <div class=\"d-flex align-items-center py-2\">\r\n <div class=\"h-history-count\">10 Tickets</div>\r\n </div>\r\n </div>\r\n <div class=\" min-w-125px py-3 px-4 me-6 mb-3\">\r\n <div class=\"h-history-title\">Earnings</div>\r\n <div class=\"d-flex align-items-center py-2\">\r\n <div class=\"h-history-count\">78%</div>\r\n </div>\r\n </div>\r\n <!-- <div class=\" min-w-125px py-3 px-4 me-6 mb-3\">\r\n <div class=\"fw-bold fs-6 text-gray-500\">Earnings</div>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"fs-2 fw-bolder\">4500$</div>\r\n </div>\r\n </div> -->\r\n </div>\r\n <div class=\"row mb-3\">\r\n <div class=\"col-12 text-end\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3 cursor-pointer \"\r\n (click)=\"raiseTicket()\">Raise a Ticket</button>\r\n <button *ngIf=\"(currentIdx + 1) !== selectedDate.length\" type=\"button\" class=\"btn btn-primary rounded-3\" (click)=\"closeTicket()\">Accept & Close</button>\r\n <button *ngIf=\"(currentIdx + 1) === selectedDate.length\" type=\"button\" class=\"btn btn-primary rounded-3\" (click)=\"openPopup()\">Close</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #confirmationModal let-modal>\r\n <div class=\"p-8\">\r\n <div class=\"\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div class=\" mt-5\">\r\n <span class=\"cameraDetail fw-bold\">Unsaved Changes</span>\r\n <div class=\"mt-3 sub-header fw-bold-400\">Do you want to clise the tickets?</div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-50 me-2\" (click)=\"modal.dismiss()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary w-50 ms-2\" (click)=\"confirmSave();modal.close()\">Confirm</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #ReconfirmationModal let-modal>\r\n <div class=\"p-8\">\r\n <div class=\"\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div class=\" mt-5\">\r\n <span class=\"cameraDetail fw-bold\">Are you sure, want to view more details?</span>\r\n <div class=\"mt-3 sub-header fw-bold-400\">If so you will redirect to Queries summary & can\u2019t able to come back to the screen.</div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-50 me-2\" (click)=\"modal.dismiss()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary w-50 ms-2\" (click)=\"confirmMore();modal.dismiss()\">Confirm</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n ", styles: [".nav-line-tabs1.nav-line-tabs-2x .nav-item .nav-link.active{border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;padding:10px 14px!important;color:var(--Primary-700, #009BF3)!important}.nav-line-tabs1 .nav-link{color:var(--Gray-500, #667085)!important;font-size:16px;font-weight:500!important;line-height:24px}.daterangepicker{display:block!important;top:153.85px!important;left:900px!important;right:0}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .md-drppicker.drops-down-down.ltr.double.show-ranges.shown{left:0!important;height:350px}:host::ng-deep .md-drppicker td{border-radius:44px}:host::ng-deep .md-drppicker .btn{border-radius:7px!important;background-color:#019df5!important}:host::ng-deep .md-drppicker .btn{right:99px;top:300px}:host::ng-deep .md-drppicker .ranges ul li button.active{background-color:#029cf3!important}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important}.title{color:var(--Gray-900, #101828);font-size:20px;line-height:30px}.sub-title{color:var(--Gray-500, #667085);font-size:14px;line-height:20px}.border-val{padding:16px;border-radius:12px;border:1px solid var(--Gray-200, #EAECF0);background:#fff;box-shadow:0 0 20px #4c577d05}.role-title{color:var(--Primary-600, #00A3FF);font-size:16px;font-weight:600;line-height:24px;text-decoration-line:underline}.col-md-4{width:31%!important}.user-list{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.active{border-radius:6px!important;padding:8px 25px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:500!important;line-height:20px}.list-size{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.fw-bold-700{font-weight:700!important}.c-label{color:var(--Gray-800, #1D2939)!important;font-size:16px!important;font-weight:500!important;line-height:24px}.c-label-title{color:#000!important;font-size:16px!important;font-weight:500;line-height:24px!important}.primary-list{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:600;line-height:18px;text-transform:capitalize}.h-history-title{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.h-history-count{color:var(--Gray-500, #667085)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.q-query-text{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.cameraDetail{color:var(--Gray-900, #101828)!important;font-size:18px!important;line-height:28px!important}.sub-header{color:var(--Gray-500, #667085)!important;font-size:14px!important;line-height:20px}\n"] }]
141
+ args: [{ selector: 'lib-analyze-report', template: "<div class=\"card py-0 scroll-y\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <img alt=\"Pic\" src=\"./assets/tango/Images/edgeapp icon.svg\">\r\n </div>\r\n </div>\r\n <div class=\"row w-100\">\r\n <div class=\"col-md-12\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Analyze Report</a>\r\n <div class=\"sub-title q-query-text\">Your Queries reported below stores are got {{analyzereport?.countType}} {{analyzereport?.filteredFeature}} on {{selectedDate[0]?.date}} to\r\n {{selectedDate[selectedDate.length - 1]?.date}}</div>\r\n </div>\r\n </div>\r\n <ul class=\"nav my-3 w-100 mt-5\">\r\n <li *ngFor=\"let date of selectedDate;let i=index\" class=\"nav-item pe-none\" (click)=\"handleClick($event)\" ><a data-bs-toggle=\"tab\" [ngClass]=\"activeDate === date.date ? 'active':''\"\r\n class=\"nav-link btn btn-sm btn-color-muted btn-active fw-bolder px-10 me-1 show\">\r\n {{date.date}} <span *ngIf=\"activeDate === date.date && date?.showIcon\" class=\"mx-2\"><svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g style=\"mix-blend-mode:multiply\">\r\n <rect x=\"0.25\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#EAF8FF\" />\r\n <g clip-path=\"url(#clip0_8713_10379)\">\r\n <path\r\n d=\"M10.25 8V10M10.25 12H10.255M15.25 10C15.25 12.7614 13.0114 15 10.25 15C7.48858 15 5.25 12.7614 5.25 10C5.25 7.23858 7.48858 5 10.25 5C13.0114 5 15.25 7.23858 15.25 10Z\"\r\n stroke=\"#33B5FF\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_8713_10379\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(4.25 4)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span *ngIf=\"activeDate !== date.date && date?.showIcon\" class=\"mx-2\">\r\n <svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g style=\"mix-blend-mode:multiply\">\r\n <rect x=\"0.25\" width=\"20\" height=\"20\" rx=\"10\" fill=\"#F2F4F7\" />\r\n <g clip-path=\"url(#clip0_8713_10379)\">\r\n <path\r\n d=\"M10.25 8V10M10.25 12H10.255M15.25 10C15.25 12.7614 13.0114 15 10.25 15C7.48858 15 5.25 12.7614 5.25 10C5.25 7.23858 7.48858 5 10.25 5C13.0114 5 15.25 7.23858 15.25 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_8713_10379\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(4.25 4)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </a></li>\r\n </ul>\r\n <div *ngIf=\"activeArray?.primaryIssue\" class=\"my-3 mt-5\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div *ngIf=\"!activeArray?.primaryIssue\" class=\"my-3 mt-5\">\r\n <img style=\"width:50px; height:50px\" src=\"./assets/tango/Images/Successtoast.png\">\r\n </div>\r\n <div *ngIf=\"activeArray\" class=\"ul-list\">\r\n <ul>\r\n <li *ngIf=\"activeArray?.primaryIssue\" class=\"list-size my-3\">The primary issue was <span class=\"fw-bold-700\">{{activeArray?.primaryIssue}}</span> where\r\n the <span *ngFor=\"let data of activeArray?.secondaryReason let last = last\" class=\"fw-bold-700\">data <span *ngIf=\"!last\">,</span></span> was the secondary concern. </li>\r\n <li *ngIf=\"activeArray?.downTime > 0\" class=\"list-size my-3\">Store Experienced a downtime of <span class=\"fw-bold-700\">{{activeArray?.downTime}} mins</span>\r\n dated <span class=\"fw-bold-700\">{{activeArray?.issueDate}}</span> where \"N Files Lost\" and was unable to send to our\r\n cloud due to speed being <span class=\"fw-bold-700\">{{activeArray?.speedTest}} Mbps.</span> </li>\r\n <!-- <li class=\"list-size my-3\">We were able to capture only <span class=\"fw-bold-700\">100 Footfalls</span>\r\n despite the <span class=\"fw-bold-700\">Internet slow</span> issue </li> -->\r\n\r\n </ul>\r\n </div> \r\n </div>\r\n <div class=\"card-header border-0 d-flex justify-content-between\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"c-label fw-bolder fs-3 mb-1\">Tango Pre-Requisite <span class=\"badge badge-light-warning ms-2\">Warning</span></span>\r\n </h3>\r\n <div class=\"card-toolbar text-end\">\r\n <span class=\"list-size\">{{activeStream?.cameraNumber}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row mx-3\"> \r\n <div class=\"table-reponsive\">\r\n <table class=\"bottom-border w-100\">\r\n <thead>\r\n <tr>\r\n <th>Instances</th>\r\n <th>Excepted</th>\r\n <th>Actual</th>\r\n <th>Result</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td>Camera Angle</td>\r\n <td></td>\r\n <td><img [src]=\"angleChange?.angleChangeImage ? angleChange?.angleChangeImage :activeStream?.thumbnailImage\"></td>\r\n <td *ngIf=\"!angleChange?.anglechange\"><img src=\"./assets/tango/Image/verificationsuccess.svg\"></td>\r\n <td *ngIf=\"angleChange?.anglechange\"><img src=\"./assets/tango/Image/verificationfailed.svg\"></td>\r\n </tr>\r\n <tr>\r\n <td>Resolution</td>\r\n <td>1080 x 908</td>\r\n <td>{{angleChange?.resolution ? angleChange?.resolution : '--'}}</td>\r\n <!-- <td *ngIf=\"angleChange?.anglechange\"><img src=\"./assets/tango/Image/verificationfailed.svg\"></td> -->\r\n <td><img src=\"./assets/tango/Image/verificationsuccess.svg\"></td>\r\n </tr>\r\n <!-- <tr>\r\n <td>Downtime</td>\r\n <td>4.00 AM</td>\r\n <td>9.00 AM</td>\r\n <td><img src=\"./assets/tango/Image/verificationdanger.svg\"></td>\r\n </tr> -->\r\n </tbody>\r\n </table>\r\n <div *ngIf=\"streamDetails?.length\" class=\"d-flex justify-content-center align-items-center mt-10\">\r\n <div *ngFor=\"let stream of streamDetails\" [ngClass]=\"stream?.streamName === activeStream?.streamName? 'bg-dark' : 'bg-opacity-25'\" class=\"w-10px h-10px rounded-5 bg-dark cursor-pointer mx-3\" (click)=\"getstreambasedAngle(stream)\"></div>\r\n </div>\r\n <div class=\"card-header px-4 border-0 pt-5 d-flex justify-content-between\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"c-label-title mb-1\">Queries History</span>\r\n </h3>\r\n <div (click)=\"viewMore()\" class=\"card-toolbar text-end\">\r\n <span class=\"primary-list\">View more Details</span>\r\n </div>\r\n </div>\r\n <div class=\"px-5 q-query-text\">From the date of installation till today the below queries success rate has been maintained</div>\r\n <div class=\"d-flex flex-wrap py-3\">\r\n <div class=\" min-w-125px py-3 px-4 me-6 mb-3\">\r\n <div class=\"h-history-title\">Earnings</div>\r\n <div class=\"d-flex align-items-center py-2\">\r\n <div class=\"h-history-count\">10 Tickets</div>\r\n </div>\r\n </div>\r\n <div class=\" min-w-125px py-3 px-4 me-6 mb-3\">\r\n <div class=\"h-history-title\">Earnings</div>\r\n <div class=\"d-flex align-items-center py-2\">\r\n <div class=\"h-history-count\">78%</div>\r\n </div>\r\n </div>\r\n <!-- <div class=\" min-w-125px py-3 px-4 me-6 mb-3\">\r\n <div class=\"fw-bold fs-6 text-gray-500\">Earnings</div>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"fs-2 fw-bolder\">4500$</div>\r\n </div>\r\n </div> -->\r\n </div>\r\n <div class=\"row mb-3\">\r\n <div class=\"col-12 text-end\">\r\n <button type=\"button\"\r\n class=\"btn btn-default mx-3 btn-outline btn-outline-default rounded-3 cursor-pointer \"\r\n (click)=\"raiseTicket()\">Raise a Ticket</button>\r\n <button *ngIf=\"(currentIdx + 1) !== selectedDate.length\" type=\"button\" class=\"btn btn-primary rounded-3\" (click)=\"closeTicket()\">Accept & Close</button>\r\n <button *ngIf=\"(currentIdx + 1) === selectedDate.length\" type=\"button\" class=\"btn btn-primary rounded-3\" (click)=\"openPopup()\">Close</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #confirmationModal let-modal>\r\n <div class=\"p-8\">\r\n <div class=\"\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div class=\" mt-5\">\r\n <span class=\"cameraDetail fw-bold\">Unsaved Changes</span>\r\n <div class=\"mt-3 sub-header fw-bold-400\">Do you want to clise the tickets?</div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-50 me-2\" (click)=\"modal.dismiss()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary w-50 ms-2\" (click)=\"confirmSave();modal.close()\">Confirm</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #ReconfirmationModal let-modal>\r\n <div class=\"p-8\">\r\n <div class=\"\">\r\n <img src=\"./assets/tango/custompopup-Icons/danger-icon.svg\">\r\n </div>\r\n <div class=\" mt-5\">\r\n <span class=\"cameraDetail fw-bold\">Are you sure, want to view more details?</span>\r\n <div class=\"mt-3 sub-header fw-bold-400\">If so you will redirect to Queries summary & can\u2019t able to come back to the screen.</div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-50 me-2\" (click)=\"modal.dismiss()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary w-50 ms-2\" (click)=\"confirmMore();modal.dismiss()\">Confirm</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n ", styles: [".nav-line-tabs1.nav-line-tabs-2x .nav-item .nav-link.active{border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;padding:10px 14px!important;color:var(--Primary-700, #009BF3)!important}.nav-line-tabs1 .nav-link{color:var(--Gray-500, #667085)!important;font-size:16px;font-weight:500!important;line-height:24px}.daterangepicker{display:block!important;top:153.85px!important;left:900px!important;right:0}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .md-drppicker.drops-down-down.ltr.double.show-ranges.shown{left:0!important;height:350px}:host::ng-deep .md-drppicker td{border-radius:44px}:host::ng-deep .md-drppicker .btn{border-radius:7px!important;background-color:#019df5!important}:host::ng-deep .md-drppicker .btn{right:99px;top:300px}:host::ng-deep .md-drppicker .ranges ul li button.active{background-color:#029cf3!important}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important}.title{color:var(--Gray-900, #101828);font-size:20px;line-height:30px}.sub-title{color:var(--Gray-500, #667085);font-size:14px;line-height:20px}.border-val{padding:16px;border-radius:12px;border:1px solid var(--Gray-200, #EAECF0);background:#fff;box-shadow:0 0 20px #4c577d05}.role-title{color:var(--Primary-600, #00A3FF);font-size:16px;font-weight:600;line-height:24px;text-decoration-line:underline}.col-md-4{width:31%!important}.user-list{color:var(--Gray-700, #344054);font-size:16px;line-height:24px}.active{border-radius:6px!important;padding:8px 25px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:500!important;line-height:20px}.list-size{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.fw-bold-700{font-weight:700!important}.c-label{color:var(--Gray-800, #1D2939)!important;font-size:16px!important;font-weight:500!important;line-height:24px}.c-label-title{color:#000!important;font-size:16px!important;font-weight:500;line-height:24px!important}.primary-list{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:600;line-height:18px;text-transform:capitalize}.h-history-title{color:var(--Gray-700, #344054)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.h-history-count{color:var(--Gray-500, #667085)!important;font-size:16px!important;font-weight:500!important;line-height:24px!important}.q-query-text{color:var(--Gray-500, #667085)!important;font-size:14px!important;font-weight:400!important;line-height:20px}.cameraDetail{color:var(--Gray-900, #101828)!important;font-size:18px!important;line-height:28px!important}.sub-header{color:var(--Gray-500, #667085)!important;font-size:14px!important;line-height:20px}\n"] }]
142
142
  }], ctorParameters: () => [{ type: i1.NgbModal }, { type: i1.NgbActiveModal }, { type: i2.TicketsService }, { type: i0.ChangeDetectorRef }], propDecorators: { analyzereport: [{
143
143
  type: Input
144
144
  }], confirmationModal: [{
@@ -148,4 +148,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
148
148
  type: ViewChild,
149
149
  args: ['ReconfirmationModal']
150
150
  }] } });
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZS1yZXBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtdGlja2V0LWluZnJhL3NyYy9saWIvY29tcG9uZW50cy9hbmFseXplLXJlcG9ydC9hbmFseXplLXJlcG9ydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS10aWNrZXQtaW5mcmEvc3JjL2xpYi9jb21wb25lbnRzL2FuYWx5emUtcmVwb3J0L2FuYWx5emUtcmVwb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9CLFNBQVMsRUFBQyxLQUFLLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBRS9GLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQVExQyxNQUFNLE9BQU8sc0JBQXNCO0lBa0JoQjtJQUE4QjtJQUFtQztJQUErQjtJQWpCakgsWUFBWSxDQUFLO0lBQ2pCLFVBQVUsQ0FBSztJQUNmLFVBQVUsR0FBTyxDQUFDLENBQUM7SUFDVixhQUFhLENBQUs7SUFFVixRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUNsQyxXQUFXLEdBQW1CLEVBQUUsQ0FBQztJQUVYLGlCQUFpQixDQUFNO0lBQ3JCLG1CQUFtQixDQUFNO0lBQzNELFFBQVEsQ0FBMEI7SUFDaEMsVUFBVSxDQUFNO0lBQ2hCLFdBQVcsQ0FBTTtJQUNqQixXQUFXLENBQU07SUFDakIsYUFBYSxDQUFNO0lBQ25CLFlBQVksQ0FBTTtJQUVwQixZQUFtQixZQUFzQixFQUFRLFdBQTBCLEVBQVMsT0FBc0IsRUFBUyxFQUFvQjtRQUFwSCxpQkFBWSxHQUFaLFlBQVksQ0FBVTtRQUFRLGdCQUFX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QUM7SUFDM0IsQ0FBQzt1R0FqSVUsc0JBQXNCOzJGQUF0QixzQkFBc0IsMlVDWm5DLDJ2WEFnTUU7OzJGRHBMVyxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0Usb0JBQW9CO3VLQVFyQixhQUFhO3NCQUFyQixLQUFLO2dCQUt3QixpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CO2dCQUNJLG1CQUFtQjtzQkFBcEQsU0FBUzt1QkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LFZpZXdDaGlsZCxJbnB1dCxDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ2JBY3RpdmVNb2RhbCwgTmdiTW9kYWwsIE5nYk1vZGFsUmVmIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBSYWlzZVRpY2tldENvbXBvbmVudCB9IGZyb20gJy4uL3JhaXNlLXRpY2tldC9yYWlzZS10aWNrZXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGlja2V0c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90aWNrZXRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWFuYWx5emUtcmVwb3J0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYW5hbHl6ZS1yZXBvcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9hbmFseXplLXJlcG9ydC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEFuYWx5emVSZXBvcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHNlbGVjdGVkRGF0ZTphbnk7XHJcbiAgYWN0aXZlRGF0ZTphbnk7XHJcbiAgY3VycmVudElkeDphbnkgPSAwO1xyXG4gIEBJbnB1dCgpIGFuYWx5emVyZXBvcnQ6YW55O1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICBwcml2YXRlIHVuc3Vic2NyaWJlOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuQFZpZXdDaGlsZCgnY29uZmlybWF0aW9uTW9kYWwnKSBjb25maXJtYXRpb25Nb2RhbDogYW55O1xyXG5AVmlld0NoaWxkKCdSZWNvbmZpcm1hdGlvbk1vZGFsJykgUmVjb25maXJtYXRpb25Nb2RhbDogYW55O1xyXG5tb2RhbFJlZjogTmdiTW9kYWxSZWYgfCB1bmRlZmluZWQ7ICAgXHJcbiAgaXNzdWVkRGF0YTogYW55O1xyXG4gIGFjdGl2ZUFycmF5OiBhbnk7XHJcbiAgYW5nbGVDaGFuZ2U6IGFueTtcclxuICBzdHJlYW1EZXRhaWxzOiBhbnk7XHJcbiAgYWN0aXZlU3RyZWFtOiBhbnk7XHJcblxyXG5jb25zdHJ1Y3RvcihwdWJsaWMgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxwdWJsaWMgYWN0aXZlTW9kYWw6TmdiQWN0aXZlTW9kYWwscHJpdmF0ZSBzZXJ2aWNlOlRpY2tldHNTZXJ2aWNlLHByaXZhdGUgY2Q6Q2hhbmdlRGV0ZWN0b3JSZWYpe1xyXG5cclxufVxyXG5uZ09uSW5pdCgpe1xyXG4gIHRoaXMuc2VsZWN0ZWREYXRlID0gdGhpcy5hbmFseXplcmVwb3J0Py5kYXRlUmFuZ2UubWFwKChpdGVtOmFueSkgPT4ge3JldHVybiB7ZGF0ZTppdGVtfX0pO1xyXG4gIHRoaXMuYWN0aXZlRGF0ZSA9IHRoaXMuc2VsZWN0ZWREYXRlW3RoaXMuY3VycmVudElkeF0uZGF0ZTtcclxuICB0aGlzLmdldElzc3VlcygpO1xyXG59XHJcblxyXG5oYW5kbGVDbGljayhldmVudDogTW91c2VFdmVudCkge1xyXG4gIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XHJcbn1cclxuXHJcbmdldElzc3Vlcygpe1xyXG4gIGxldCBkYXRhID0ge1xyXG4gICAgZnJvbURhdGU6dGhpcy5zZWxlY3RlZERhdGVbMF0uZGF0ZSxcclxuICAgIHRvRGF0ZTp0aGlzLnNlbGVjdGVkRGF0ZVt0aGlzLnNlbGVjdGVkRGF0ZS5sZW5ndGggLSAxXS5kYXRlLFxyXG4gICAgc3RvcmVJZDp0aGlzLmFuYWx5emVyZXBvcnQ/LmZpbHRlcmVkU3RvcmVJZFxyXG4gIH1cclxuICB0aGlzLnNlcnZpY2UuZ2V0SW5mcmFJc3N1ZXMoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5zdHJlYW1EZXRhaWxzID0gcmVzLmRhdGEuc3RyZWFtcztcclxuICAgICAgdGhpcy5hY3RpdmVTdHJlYW0gPSByZXMuZGF0YS5zdHJlYW1zWzBdO1xyXG4gICAgICB0aGlzLmlzc3VlZERhdGEgPSByZXMuZGF0YS5yZXN1bHQ7XHJcbiAgICAgIHRoaXMuYWN0aXZlQXJyYXkgPSB0aGlzLmlzc3VlZERhdGEuZmluZCgoaXRlbTphbnkpID0+IGl0ZW0/Lmlzc3VlRGF0ZSA9PT0gdGhpcy5hY3RpdmVEYXRlKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUuZm9yRWFjaCgoaXRlbTphbnksaW5kZXg6YW55KSA9PiB7XHJcbiAgICAgICAgbGV0IGlzc3VlRGF0ZSA9IHRoaXMuaXNzdWVkRGF0YS5maW5kKChpc3N1ZTphbnkpID0+IGlzc3VlLmlzc3VlRGF0ZSA9PSBpdGVtLmRhdGUpO1xyXG4gICAgICAgIGlmKGlzc3VlRGF0ZSAmJiBpc3N1ZURhdGU/LnByaW1hcnlJc3N1ZSkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVbaW5kZXhdID0ge1xyXG4gICAgICAgICAgICBkYXRlOml0ZW0uZGF0ZSxcclxuICAgICAgICAgICAgc2hvd0ljb24gOnRydWVcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmdldENhbWVyYUFuZ2xlKClcclxuICAgIH0sXHJcbiAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgIFxyXG4gICAgfSxcclxuICAgIGNvbXBsZXRlKCkge1xyXG5cclxuICAgIH0sXHJcbiAgfSlcclxufVxyXG5nZXRDYW1lcmFBbmdsZSgpe1xyXG4gICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgICAgXCJEYXRlXCI6IHRoaXMuYWN0aXZlRGF0ZSxcclxuICAgICAgICBcIlN0cmVhbU5hbWVcIjogdGhpcy5hY3RpdmVTdHJlYW0sXHJcbiAgICAgICAgXCJzdG9yZUlkXCI6dGhpcy5hbmFseXplcmVwb3J0Py5maWx0ZXJlZFN0b3JlSWRcclxuICAgIH1cclxuICAgIHRoaXMuc2VydmljZS5jYW1lcmFBbmdsZUNoYW5nZShkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYocmVzICYmIHJlcy5jb2RlID09IDIwMCl7XHJcbiAgICAgICAgICB0aGlzLmFuZ2xlQ2hhbmdlID0gcmVzLmRhdGE7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB0aGlzLmFuZ2xlQ2hhbmdlID0nJ1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgIFxyXG4gICAgICB9LFxyXG4gICAgICBjb21wbGV0ZSgpIHtcclxuICBcclxuICAgICAgfSxcclxuICAgIH0pXHJcbn1cclxuZ2V0c3RyZWFtYmFzZWRBbmdsZSh2YWx1ZTphbnkpe1xyXG4gIHRoaXMuYWN0aXZlU3RyZWFtID0gdmFsdWU7XHJcbiAgdGhpcy5nZXRDYW1lcmFBbmdsZSgpXHJcbn1cclxuICByYWlzZVRpY2tldCgpe1xyXG4gICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgpO1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFJhaXNlVGlja2V0Q29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICBzaXplOiBcIm1kXCIsXHJcbiAgICAgIHNjcm9sbGFibGU6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICBzdG9yZUlkOnRoaXMuYW5hbHl6ZXJlcG9ydD8uZmlsdGVyZWRTdG9yZUlkLFxyXG4gICAgICBjb3VudFR5cGU6dGhpcy5hbmFseXplcmVwb3J0Py5jb3VudFR5cGUsXHJcbiAgICAgIHN0b3JlTmFtZTp0aGlzLmFuYWx5emVyZXBvcnQ/LmZpbHRlcmVkU3RvcmUsXHJcbiAgICAgIGZlYXR1cmU6dGhpcy5hbmFseXplcmVwb3J0Py5maWx0ZXJlZEZlYXR1cmUsXHJcbiAgICAgIGVtYWlsOnRoaXMuYW5hbHl6ZXJlcG9ydD8uZW1haWwsXHJcbiAgICAgIGRhdGU6dGhpcy5hY3RpdmVEYXRlXHJcbiAgICB9IFxyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuZGF0YSA9IGRhdGE7XHJcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgXHJcbiAgY2xvc2VUaWNrZXQoKXtcclxuICAgIHRoaXMuZ2V0SXNzdWVzKCk7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50SWR4IDwgdGhpcy5zZWxlY3RlZERhdGU/Lmxlbmd0aCAtIDEgJiYgdGhpcy5jdXJyZW50SWR4ID49IDApIHtcclxuICAgICAgdGhpcy5jdXJyZW50SWR4ID0gdGhpcy5jdXJyZW50SWR4ICsgMTtcclxuICAgICAgdGhpcy5hY3RpdmVEYXRlPXRoaXMuc2VsZWN0ZWREYXRlW3RoaXMuY3VycmVudElkeF0uZGF0ZVxyXG4gICAgfVxyXG4gIH1cclxuICBjb25maXJtU2F2ZSgpe1xyXG4gICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgpO1xyXG4gIH1cclxuICB2aWV3TW9yZSgpe1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMuUmVjb25maXJtYXRpb25Nb2RhbCwgeyBjZW50ZXJlZDogdHJ1ZSB9KTtcclxuICB9XHJcbiAgb3BlblBvcHVwKCl7XHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy5jb25maXJtYXRpb25Nb2RhbCwgeyBjZW50ZXJlZDogdHJ1ZSB9KTtcclxuICAgIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgIH0pO1xyXG4gIH1cclxuICBjb25maXJtTW9yZSgpe1xyXG4gICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgpO1xyXG4gIH1cclxufSIsIjxkaXYgY2xhc3M9XCJjYXJkIHB5LTAgc2Nyb2xsLXlcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktMCBkLWZsZXggZmxleC1zdGFydCBmbGV4LWNvbHVtbiBwLTkgXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtNzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIGFsdD1cIlBpY1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlcy9lZGdlYXBwIGljb24uc3ZnXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgdy0xMDBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJmcy00IHRleHQtZ3JheS04MDAgdGV4dC1ob3Zlci1wcmltYXJ5IGZ3LWJvbGQgbWItMCB0aXRsZSBjdXJzb3ItcG9pbnRlclwiPkFuYWx5emUgUmVwb3J0PC9hPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10aXRsZSBxLXF1ZXJ5LXRleHRcIj5Zb3VyIFF1ZXJpZXMgcmVwb3J0ZWQgYmVsb3cgc3RvcmVzIGFyZSBnb3Qge3thbmFseXplcmVwb3J0Py5jb3VudFR5cGV9fSB7e2FuYWx5emVyZXBvcnQ/LmZpbHRlcmVkRmVhdHVyZX19IG9uIHt7c2VsZWN0ZWREYXRlWzBdfX0gdG9cclxuICAgICAgICAgICAgICAgICAgICB7e3NlbGVjdGVkRGF0ZVtzZWxlY3RlZERhdGUubGVuZ3RoIC0gMV19fTwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8dWwgY2xhc3M9XCJuYXYgbXktMyB3LTEwMCBtdC01XCI+XHJcbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZGF0ZSBvZiBzZWxlY3RlZERhdGU7bGV0IGk9aW5kZXhcIiBjbGFzcz1cIm5hdi1pdGVtIHBlLW5vbmVcIiAoY2xpY2spPVwiaGFuZGxlQ2xpY2soJGV2ZW50KVwiID48YSBkYXRhLWJzLXRvZ2dsZT1cInRhYlwiIFtuZ0NsYXNzXT1cImFjdGl2ZURhdGUgPT09IGRhdGUuZGF0ZSA/ICdhY3RpdmUnOicnXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIGJ0biBidG4tc20gYnRuLWNvbG9yLW11dGVkIGJ0bi1hY3RpdmUgZnctYm9sZGVyIHB4LTEwIG1lLTEgc2hvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAge3tkYXRlLmRhdGV9fSA8c3BhbiAqbmdJZj1cImFjdGl2ZURhdGUgPT09IGRhdGUuZGF0ZSAmJiBkYXRlPy5zaG93SWNvblwiIGNsYXNzPVwibXgtMlwiPjxzdmcgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMSAyMFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIHN0eWxlPVwibWl4LWJsZW5kLW1vZGU6bXVsdGlwbHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMC4yNVwiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHJ4PVwiMTBcIiBmaWxsPVwiI0VBRjhGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF84NzEzXzEwMzc5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMC4yNSA4VjEwTTEwLjI1IDEySDEwLjI1NU0xNS4yNSAxMEMxNS4yNSAxMi43NjE0IDEzLjAxMTQgMTUgMTAuMjUgMTVDNy40ODg1OCAxNSA1LjI1IDEyLjc2MTQgNS4yNSAxMEM1LjI1IDcuMjM4NTggNy40ODg1OCA1IDEwLjI1IDVDMTMuMDExNCA1IDE1LjI1IDcuMjM4NTggMTUuMjUgMTBaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzM0I1RkZcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF84NzEzXzEwMzc5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSg0LjI1IDQpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYWN0aXZlRGF0ZSAhPT0gZGF0ZS5kYXRlICYmIGRhdGU/LnNob3dJY29uXCIgY2xhc3M9XCJteC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjEgMjBcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBzdHlsZT1cIm1peC1ibGVuZC1tb2RlOm11bHRpcGx5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjAuMjVcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiByeD1cIjEwXCIgZmlsbD1cIiNGMkY0RjdcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfODcxM18xMDM3OSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTAuMjUgOFYxME0xMC4yNSAxMkgxMC4yNTVNMTUuMjUgMTBDMTUuMjUgMTIuNzYxNCAxMy4wMTE0IDE1IDEwLjI1IDE1QzcuNDg4NTggMTUgNS4yNSAxMi43NjE0IDUuMjUgMTBDNS4yNSA3LjIzODU4IDcuNDg4NTggNSAxMC4yNSA1QzEzLjAxMTQgNSAxNS4yNSA3LjIzODU4IDE1LjI1IDEwWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfODcxM18xMDM3OVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoNC4yNSA0KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgPC9hPjwvbGk+XHJcbiAgICAgICAgPC91bD5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlQXJyYXk/LnByaW1hcnlJc3N1ZVwiIGNsYXNzPVwibXktMyBtdC01XCI+XHJcbiAgICAgICAgICAgIDxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vY3VzdG9tcG9wdXAtSWNvbnMvZGFuZ2VyLWljb24uc3ZnXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiFhY3RpdmVBcnJheT8ucHJpbWFyeUlzc3VlXCIgY2xhc3M9XCJteS0zIG10LTVcIj5cclxuICAgICAgICAgICAgPGltZyBzdHlsZT1cIndpZHRoOjUwcHg7IGhlaWdodDo1MHB4XCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSW1hZ2VzL1N1Y2Nlc3N0b2FzdC5wbmdcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlQXJyYXlcIiBjbGFzcz1cInVsLWxpc3RcIj5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiYWN0aXZlQXJyYXk/LnByaW1hcnlJc3N1ZVwiIGNsYXNzPVwibGlzdC1zaXplIG15LTNcIj5UaGUgcHJpbWFyeSBpc3N1ZSB3YXMgPHNwYW4gY2xhc3M9XCJmdy1ib2xkLTcwMFwiPnt7YWN0aXZlQXJyYXk/LnByaW1hcnlJc3N1ZX19PC9zcGFuPiB3aGVyZVxyXG4gICAgICAgICAgICAgICAgICAgIHRoZSA8c3BhbiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBhY3RpdmVBcnJheT8uc2Vjb25kYXJ5UmVhc29uIGxldCBsYXN0ID0gbGFzdFwiIGNsYXNzPVwiZnctYm9sZC03MDBcIj5kYXRhIDxzcGFuICpuZ0lmPVwiIWxhc3RcIj4sPC9zcGFuPjwvc3Bhbj4gd2FzIHRoZSBzZWNvbmRhcnkgY29uY2Vybi4gPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3Qtc2l6ZSBteS0zXCI+U3RvcmUgRXhwZXJpZW5jZWQgYSBkb3dudGltZSBvZiA8c3BhbiBjbGFzcz1cImZ3LWJvbGQtNzAwXCI+e3thY3RpdmVBcnJheT8uZG93blRpbWV9fSBtaW5zPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGVkIDxzcGFuIGNsYXNzPVwiZnctYm9sZC03MDBcIj57e2FjdGl2ZUFycmF5Py5pc3N1ZURhdGV9fTwvc3Bhbj4gd2hlcmUgXCJOIEZpbGVzIExvc3RcIiBhbmQgd2FzIHVuYWJsZSB0byBzZW5kIHRvIG91clxyXG4gICAgICAgICAgICAgICAgICAgIGNsb3VkIGR1ZSB0byBzcGVlZCBiZWluZyA8c3BhbiBjbGFzcz1cImZ3LWJvbGQtNzAwXCI+e3thY3RpdmVBcnJheT8uc3BlZWRUZXN0fX0gTWJwcy48L3NwYW4+IDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxsaSBjbGFzcz1cImxpc3Qtc2l6ZSBteS0zXCI+V2Ugd2VyZSBhYmxlIHRvIGNhcHR1cmUgb25seSA8c3BhbiBjbGFzcz1cImZ3LWJvbGQtNzAwXCI+MTAwIEZvb3RmYWxsczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICBkZXNwaXRlIHRoZSA8c3BhbiBjbGFzcz1cImZ3LWJvbGQtNzAwXCI+SW50ZXJuZXQgc2xvdzwvc3Bhbj4gaXNzdWUgPC9saT4gLS0+XHJcblxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvZGl2PiAgXHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYy1sYWJlbCBmdy1ib2xkZXIgZnMtMyBtYi0xXCI+VGFuZ28gUHJlLVJlcXVpc2l0ZSA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXdhcm5pbmcgbXMtMlwiPldhcm5pbmc8L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgIDwvaDM+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhciB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxpc3Qtc2l6ZVwiPkNhbWVyYSAwMTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBteC0zXCI+ICBcclxuICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXBvbnNpdmVcIj5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJib3R0b20tYm9yZGVyIHctMTAwXCI+XHJcbiAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGg+SW5zdGFuY2VzPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGg+RXhjZXB0ZWQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aD5BY3R1YWw8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aD5SZXN1bHQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD5DYW1lcmEgQW5nbGU8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD48aW1nIHNyYz1cInt7YW5nbGVDaGFuZ2U/LmFuZ2xlQ2hhbmdlSW1hZ2V9fVwiPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiIWFuZ2xlQ2hhbmdlPy5hbmdsZWNoYW5nZVwiPjxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vSW1hZ2UvdmVyaWZpY2F0aW9uc3VjY2Vzcy5zdmdcIj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cImFuZ2xlQ2hhbmdlPy5hbmdsZWNoYW5nZVwiPjxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vSW1hZ2UvdmVyaWZpY2F0aW9uZmFpbGVkLnN2Z1wiPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD5SZXNvbHV0aW9uPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+MTA4MCB4IDkwODwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPnt7YW5nbGVDaGFuZ2U/LnJlc29sdXRpb24gPyBhbmdsZUNoYW5nZT8ucmVzb2x1dGlvbiA6ICctLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8dGQgKm5nSWY9XCJhbmdsZUNoYW5nZT8uYW5nbGVjaGFuZ2VcIj48aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlL3ZlcmlmaWNhdGlvbmZhaWxlZC5zdmdcIj48L3RkPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9XCIuL2Fzc2V0cy90YW5nby9JbWFnZS92ZXJpZmljYXRpb25zdWNjZXNzLnN2Z1wiPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPkRvd250aW1lPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+NC4wMCBBTTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPjkuMDAgQU08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD48aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlL3ZlcmlmaWNhdGlvbmRhbmdlci5zdmdcIj48L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj4gLS0+XHJcbiAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgPC90YWJsZT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic3RyZWFtRGV0YWlscz8ubGVuZ3RoXCIgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMTBcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc3RyZWFtIG9mIHN0cmVhbURldGFpbHNcIiBbbmdDbGFzc109XCJzdHJlYW0gPT09IGFjdGl2ZVN0cmVhbSA/ICdiZy1kYXJrJyA6ICdiZy1vcGFjaXR5LTI1J1wiIGNsYXNzPVwidy0xMHB4IGgtMTBweCByb3VuZGVkLTUgYmctZGFyayBjdXJzb3ItcG9pbnRlciBteC0zXCIgKGNsaWNrKT1cImdldHN0cmVhbWJhc2VkQW5nbGUoc3RyZWFtKVwiPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBweC00IGJvcmRlci0wIHB0LTUgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYy1sYWJlbC10aXRsZSBtYi0xXCI+UXVlcmllcyBIaXN0b3J5PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8ZGl2IChjbGljayk9XCJ2aWV3TW9yZSgpXCIgY2xhc3M9XCJjYXJkLXRvb2xiYXIgdGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJpbWFyeS1saXN0XCI+VmlldyBtb3JlIERldGFpbHM8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJweC01IHEtcXVlcnktdGV4dFwiPkZyb20gdGhlIGRhdGUgb2YgaW5zdGFsbGF0aW9uIHRpbGwgdG9kYXkgdGhlIGJlbG93IHF1ZXJpZXMgc3VjY2VzcyByYXRlIGhhcyBiZWVuIG1haW50YWluZWQ8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBweS0zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgbWluLXctMTI1cHggcHktMyBweC00IG1lLTYgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtaGlzdG9yeS10aXRsZVwiPkVhcm5pbmdzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBweS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtaGlzdG9yeS1jb3VudFwiPjEwIFRpY2tldHM8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBtaW4tdy0xMjVweCBweS0zIHB4LTQgbWUtNiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1oaXN0b3J5LXRpdGxlXCI+RWFybmluZ3M8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHB5LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1oaXN0b3J5LWNvdW50XCI+NzglPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIiBtaW4tdy0xMjVweCBweS0zIHB4LTQgbWUtNiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZCBmcy02IHRleHQtZ3JheS01MDBcIj5FYXJuaW5nczwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtMiBmdy1ib2xkZXJcIj40NTAwJDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0zIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIGN1cnNvci1wb2ludGVyIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJhaXNlVGlja2V0KClcIj5SYWlzZSBhIFRpY2tldDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIihjdXJyZW50SWR4ICsgMSkgIT09IHNlbGVjdGVkRGF0ZS5sZW5ndGhcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcm91bmRlZC0zXCIgKGNsaWNrKT1cImNsb3NlVGlja2V0KClcIj5BY2NlcHQgJiBDbG9zZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIihjdXJyZW50SWR4ICsgMSkgPT09IHNlbGVjdGVkRGF0ZS5sZW5ndGhcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcm91bmRlZC0zXCIgKGNsaWNrKT1cIm9wZW5Qb3B1cCgpXCI+Q2xvc2U8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY29uZmlybWF0aW9uTW9kYWwgbGV0LW1vZGFsPlxyXG4gICAgPGRpdiBjbGFzcz1cInAtOFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgIDxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vY3VzdG9tcG9wdXAtSWNvbnMvZGFuZ2VyLWljb24uc3ZnXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIiBtdC01XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FtZXJhRGV0YWlsIGZ3LWJvbGRcIj5VbnNhdmVkIENoYW5nZXM8L3NwYW4+XHJcbiAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTMgc3ViLWhlYWRlciBmdy1ib2xkLTQwMFwiPkRvIHlvdSB3YW50IHRvIGNsaXNlIHRoZSB0aWNrZXRzPzwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtMTBcIj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lIHctNTAgbWUtMlwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctNTAgbXMtMlwiIChjbGljayk9XCJjb25maXJtU2F2ZSgpO21vZGFsLmNsb3NlKClcIj5Db25maXJtPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI1JlY29uZmlybWF0aW9uTW9kYWwgbGV0LW1vZGFsPlxyXG4gICAgPGRpdiBjbGFzcz1cInAtOFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgIDxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vY3VzdG9tcG9wdXAtSWNvbnMvZGFuZ2VyLWljb24uc3ZnXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIiBtdC01XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FtZXJhRGV0YWlsIGZ3LWJvbGRcIj5BcmUgeW91IHN1cmUsIHdhbnQgdG8gdmlldyBtb3JlIGRldGFpbHM/PC9zcGFuPlxyXG4gICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zIHN1Yi1oZWFkZXIgZnctYm9sZC00MDBcIj5JZiBzbyB5b3Ugd2lsbCByZWRpcmVjdCB0byBRdWVyaWVzIHN1bW1hcnkgJiBjYW7igJl0IGFibGUgdG8gY29tZSBiYWNrIHRvIHRoZSBzY3JlZW4uPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC0xMFwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLW91dGxpbmUgdy01MCBtZS0yXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy01MCBtcy0yXCIgKGNsaWNrKT1cImNvbmZpcm1Nb3JlKCk7bW9kYWwuZGlzbWlzcygpXCI+Q29uZmlybTwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICAiXX0=
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZS1yZXBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtdGlja2V0LWluZnJhL3NyYy9saWIvY29tcG9uZW50cy9hbmFseXplLXJlcG9ydC9hbmFseXplLXJlcG9ydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS10aWNrZXQtaW5mcmEvc3JjL2xpYi9jb21wb25lbnRzL2FuYWx5emUtcmVwb3J0L2FuYWx5emUtcmVwb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9CLFNBQVMsRUFBQyxLQUFLLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBRS9GLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQVExQyxNQUFNLE9BQU8sc0JBQXNCO0lBa0JoQjtJQUE4QjtJQUFtQztJQUErQjtJQWpCakgsWUFBWSxDQUFLO0lBQ2pCLFVBQVUsQ0FBSztJQUNmLFVBQVUsR0FBTyxDQUFDLENBQUM7SUFDVixhQUFhLENBQUs7SUFFVixRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUNsQyxXQUFXLEdBQW1CLEVBQUUsQ0FBQztJQUVYLGlCQUFpQixDQUFNO0lBQ3JCLG1CQUFtQixDQUFNO0lBQzNELFFBQVEsQ0FBMEI7SUFDaEMsVUFBVSxDQUFNO0lBQ2hCLFdBQVcsQ0FBTTtJQUNqQixXQUFXLENBQU07SUFDakIsYUFBYSxDQUFNO0lBQ25CLFlBQVksQ0FBTTtJQUVwQixZQUFtQixZQUFzQixFQUFRLFdBQTBCLEVBQVMsT0FBc0IsRUFBUyxFQUFvQjtRQUFwSCxpQkFBWSxHQUFaLFlBQVksQ0FBVTtRQUFRLGdCQUFXLEdBQVgsV0FBVyxDQUFlO1FBQVMsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQUFTLE9BQUUsR0FBRixFQUFFLENBQWtCO0lBRXZJLENBQUM7SUFDRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFRLEVBQUUsRUFBRSxHQUFFLE9BQU8sRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLENBQUEsQ0FBQSxDQUFDLENBQUMsQ0FBQztRQUMxRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMxRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFpQjtRQUMzQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLElBQUksR0FBRztZQUNULFFBQVEsRUFBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDbEMsTUFBTSxFQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUMzRCxPQUFPLEVBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxlQUFlO1NBQzVDLENBQUE7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUN6RSxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDdEMsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztnQkFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLFNBQVMsS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzNGLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBUSxFQUFDLEtBQVMsRUFBRSxFQUFFO29CQUMvQyxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQVMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2xGLElBQUcsU0FBUyxJQUFJLFNBQVMsRUFBRSxZQUFZLEVBQUU7d0JBQ3ZDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUc7NEJBQ3pCLElBQUksRUFBQyxJQUFJLENBQUMsSUFBSTs0QkFDZCxRQUFRLEVBQUUsSUFBSTt5QkFDZixDQUFDO3FCQUNIO2dCQUNILENBQUMsQ0FBQyxDQUFBO2dCQUNGLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQTtZQUN2QixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFFZixDQUFDO1lBQ0QsUUFBUTtZQUVSLENBQUM7U0FDRixDQUFDLENBQUE7SUFDSixDQUFDO0lBQ0QsY0FBYztRQUNWLElBQUksSUFBSSxHQUFHO1lBQ1AsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQ3ZCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLFVBQVU7WUFDM0MsU0FBUyxFQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsZUFBZTtTQUNoRCxDQUFBO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUM1RSxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBRyxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLEVBQUM7b0JBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztpQkFDN0I7cUJBQUk7b0JBQ0gsSUFBSSxDQUFDLFdBQVcsR0FBRSxFQUFFLENBQUE7aUJBQ3JCO1lBQ0gsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBRWYsQ0FBQztZQUNELFFBQVE7WUFFUixDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUNELG1CQUFtQixDQUFDLEtBQVM7UUFDM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFBO0lBQ3ZCLENBQUM7SUFDQyxXQUFXO1FBQ1QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUM1RCxRQUFRLEVBQUUsSUFBSTtZQUNkLElBQUksRUFBRSxJQUFJO1lBQ1YsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxJQUFJLEdBQUc7WUFDVCxPQUFPLEVBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxlQUFlO1lBQzNDLFNBQVMsRUFBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFNBQVM7WUFDdkMsU0FBUyxFQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsYUFBYTtZQUMzQyxPQUFPLEVBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxlQUFlO1lBQzNDLEtBQUssRUFBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEtBQUs7WUFDL0IsSUFBSSxFQUFDLElBQUksQ0FBQyxVQUFVO1NBQ3JCLENBQUE7UUFDRCxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUN2QyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakIsSUFBSSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsRUFBRTtZQUMzRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxVQUFVLEdBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFBO1NBQ3hEO0lBQ0gsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFDRCxRQUFRO1FBQ04sTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUNELFNBQVM7UUFDUCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNwRixRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7dUdBaklVLHNCQUFzQjsyRkFBdEIsc0JBQXNCLDJVQ1puQyxtNVhBZ01FOzsyRkRwTFcsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLG9CQUFvQjt1S0FRckIsYUFBYTtzQkFBckIsS0FBSztnQkFLd0IsaUJBQWlCO3NCQUFoRCxTQUFTO3VCQUFDLG1CQUFtQjtnQkFDSSxtQkFBbUI7c0JBQXBELFNBQVM7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCxWaWV3Q2hpbGQsSW5wdXQsQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdiQWN0aXZlTW9kYWwsIE5nYk1vZGFsLCBOZ2JNb2RhbFJlZiB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgUmFpc2VUaWNrZXRDb21wb25lbnQgfSBmcm9tICcuLi9yYWlzZS10aWNrZXQvcmFpc2UtdGlja2V0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRpY2tldHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGlja2V0cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1hbmFseXplLXJlcG9ydCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FuYWx5emUtcmVwb3J0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYW5hbHl6ZS1yZXBvcnQuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbmFseXplUmVwb3J0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBzZWxlY3RlZERhdGU6YW55O1xyXG4gIGFjdGl2ZURhdGU6YW55O1xyXG4gIGN1cnJlbnRJZHg6YW55ID0gMDtcclxuICBASW5wdXQoKSBhbmFseXplcmVwb3J0OmFueTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZTogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbkBWaWV3Q2hpbGQoJ2NvbmZpcm1hdGlvbk1vZGFsJykgY29uZmlybWF0aW9uTW9kYWw6IGFueTtcclxuQFZpZXdDaGlsZCgnUmVjb25maXJtYXRpb25Nb2RhbCcpIFJlY29uZmlybWF0aW9uTW9kYWw6IGFueTtcclxubW9kYWxSZWY6IE5nYk1vZGFsUmVmIHwgdW5kZWZpbmVkOyAgIFxyXG4gIGlzc3VlZERhdGE6IGFueTtcclxuICBhY3RpdmVBcnJheTogYW55O1xyXG4gIGFuZ2xlQ2hhbmdlOiBhbnk7XHJcbiAgc3RyZWFtRGV0YWlsczogYW55O1xyXG4gIGFjdGl2ZVN0cmVhbTogYW55O1xyXG5cclxuY29uc3RydWN0b3IocHVibGljIG1vZGFsU2VydmljZTogTmdiTW9kYWwscHVibGljIGFjdGl2ZU1vZGFsOk5nYkFjdGl2ZU1vZGFsLHByaXZhdGUgc2VydmljZTpUaWNrZXRzU2VydmljZSxwcml2YXRlIGNkOkNoYW5nZURldGVjdG9yUmVmKXtcclxuXHJcbn1cclxubmdPbkluaXQoKXtcclxuICB0aGlzLnNlbGVjdGVkRGF0ZSA9IHRoaXMuYW5hbHl6ZXJlcG9ydD8uZGF0ZVJhbmdlLm1hcCgoaXRlbTphbnkpID0+IHtyZXR1cm4ge2RhdGU6aXRlbX19KTtcclxuICB0aGlzLmFjdGl2ZURhdGUgPSB0aGlzLnNlbGVjdGVkRGF0ZVt0aGlzLmN1cnJlbnRJZHhdLmRhdGU7XHJcbiAgdGhpcy5nZXRJc3N1ZXMoKTtcclxufVxyXG5cclxuaGFuZGxlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xyXG59XHJcblxyXG5nZXRJc3N1ZXMoKXtcclxuICBsZXQgZGF0YSA9IHtcclxuICAgIGZyb21EYXRlOnRoaXMuc2VsZWN0ZWREYXRlWzBdLmRhdGUsXHJcbiAgICB0b0RhdGU6dGhpcy5zZWxlY3RlZERhdGVbdGhpcy5zZWxlY3RlZERhdGUubGVuZ3RoIC0gMV0uZGF0ZSxcclxuICAgIHN0b3JlSWQ6dGhpcy5hbmFseXplcmVwb3J0Py5maWx0ZXJlZFN0b3JlSWRcclxuICB9XHJcbiAgdGhpcy5zZXJ2aWNlLmdldEluZnJhSXNzdWVzKGRhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc3RyZWFtRGV0YWlscyA9IHJlcy5kYXRhLnN0cmVhbXM7XHJcbiAgICAgIHRoaXMuYWN0aXZlU3RyZWFtID0gcmVzLmRhdGEuc3RyZWFtc1swXTtcclxuICAgICAgdGhpcy5pc3N1ZWREYXRhID0gcmVzLmRhdGEucmVzdWx0O1xyXG4gICAgICB0aGlzLmFjdGl2ZUFycmF5ID0gdGhpcy5pc3N1ZWREYXRhLmZpbmQoKGl0ZW06YW55KSA9PiBpdGVtPy5pc3N1ZURhdGUgPT09IHRoaXMuYWN0aXZlRGF0ZSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLmZvckVhY2goKGl0ZW06YW55LGluZGV4OmFueSkgPT4ge1xyXG4gICAgICAgIGxldCBpc3N1ZURhdGUgPSB0aGlzLmlzc3VlZERhdGEuZmluZCgoaXNzdWU6YW55KSA9PiBpc3N1ZS5pc3N1ZURhdGUgPT0gaXRlbS5kYXRlKTtcclxuICAgICAgICBpZihpc3N1ZURhdGUgJiYgaXNzdWVEYXRlPy5wcmltYXJ5SXNzdWUpIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlW2luZGV4XSA9IHtcclxuICAgICAgICAgICAgZGF0ZTppdGVtLmRhdGUsXHJcbiAgICAgICAgICAgIHNob3dJY29uIDp0cnVlXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5nZXRDYW1lcmFBbmdsZSgpXHJcbiAgICB9LFxyXG4gICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICBcclxuICAgIH0sXHJcbiAgICBjb21wbGV0ZSgpIHtcclxuXHJcbiAgICB9LFxyXG4gIH0pXHJcbn1cclxuZ2V0Q2FtZXJhQW5nbGUoKXtcclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICAgIFwiRGF0ZVwiOiB0aGlzLmFjdGl2ZURhdGUsXHJcbiAgICAgICAgXCJTdHJlYW1OYW1lXCI6IHRoaXMuYWN0aXZlU3RyZWFtPy5zdHJlYW1OYW1lLFxyXG4gICAgICAgIFwic3RvcmVJZFwiOnRoaXMuYW5hbHl6ZXJlcG9ydD8uZmlsdGVyZWRTdG9yZUlkXHJcbiAgICB9XHJcbiAgICB0aGlzLnNlcnZpY2UuY2FtZXJhQW5nbGVDaGFuZ2UoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmKHJlcyAmJiByZXMuY29kZSA9PSAyMDApe1xyXG4gICAgICAgICAgdGhpcy5hbmdsZUNoYW5nZSA9IHJlcy5kYXRhO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgdGhpcy5hbmdsZUNoYW5nZSA9JydcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICBcclxuICAgICAgfSxcclxuICAgICAgY29tcGxldGUoKSB7XHJcbiAgXHJcbiAgICAgIH0sXHJcbiAgICB9KVxyXG59XHJcbmdldHN0cmVhbWJhc2VkQW5nbGUodmFsdWU6YW55KXtcclxuICB0aGlzLmFjdGl2ZVN0cmVhbSA9IHZhbHVlO1xyXG4gIHRoaXMuZ2V0Q2FtZXJhQW5nbGUoKVxyXG59XHJcbiAgcmFpc2VUaWNrZXQoKXtcclxuICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoKTtcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihSYWlzZVRpY2tldENvbXBvbmVudCwge1xyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgc2l6ZTogXCJtZFwiLFxyXG4gICAgICBzY3JvbGxhYmxlOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgc3RvcmVJZDp0aGlzLmFuYWx5emVyZXBvcnQ/LmZpbHRlcmVkU3RvcmVJZCxcclxuICAgICAgY291bnRUeXBlOnRoaXMuYW5hbHl6ZXJlcG9ydD8uY291bnRUeXBlLFxyXG4gICAgICBzdG9yZU5hbWU6dGhpcy5hbmFseXplcmVwb3J0Py5maWx0ZXJlZFN0b3JlLFxyXG4gICAgICBmZWF0dXJlOnRoaXMuYW5hbHl6ZXJlcG9ydD8uZmlsdGVyZWRGZWF0dXJlLFxyXG4gICAgICBlbWFpbDp0aGlzLmFuYWx5emVyZXBvcnQ/LmVtYWlsLFxyXG4gICAgICBkYXRlOnRoaXMuYWN0aXZlRGF0ZVxyXG4gICAgfSBcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmRhdGEgPSBkYXRhO1xyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIFxyXG4gIGNsb3NlVGlja2V0KCl7XHJcbiAgICB0aGlzLmdldElzc3VlcygpO1xyXG4gICAgaWYgKHRoaXMuY3VycmVudElkeCA8IHRoaXMuc2VsZWN0ZWREYXRlPy5sZW5ndGggLSAxICYmIHRoaXMuY3VycmVudElkeCA+PSAwKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudElkeCA9IHRoaXMuY3VycmVudElkeCArIDE7XHJcbiAgICAgIHRoaXMuYWN0aXZlRGF0ZT10aGlzLnNlbGVjdGVkRGF0ZVt0aGlzLmN1cnJlbnRJZHhdLmRhdGVcclxuICAgIH1cclxuICB9XHJcbiAgY29uZmlybVNhdmUoKXtcclxuICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoKTtcclxuICB9XHJcbiAgdmlld01vcmUoKXtcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLlJlY29uZmlybWF0aW9uTW9kYWwsIHsgY2VudGVyZWQ6IHRydWUgfSk7XHJcbiAgfVxyXG4gIG9wZW5Qb3B1cCgpe1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMuY29uZmlybWF0aW9uTW9kYWwsIHsgY2VudGVyZWQ6IHRydWUgfSk7XHJcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgY29uZmlybU1vcmUoKXtcclxuICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoKTtcclxuICB9XHJcbn0iLCI8ZGl2IGNsYXNzPVwiY2FyZCBweS0wIHNjcm9sbC15XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTAgZC1mbGV4IGZsZXgtc3RhcnQgZmxleC1jb2x1bW4gcC05IFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS01XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTc1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgPGltZyBhbHQ9XCJQaWNcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JbWFnZXMvZWRnZWFwcCBpY29uLnN2Z1wiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHctMTAwXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZnMtNCB0ZXh0LWdyYXktODAwIHRleHQtaG92ZXItcHJpbWFyeSBmdy1ib2xkIG1iLTAgdGl0bGUgY3Vyc29yLXBvaW50ZXJcIj5BbmFseXplIFJlcG9ydDwvYT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGl0bGUgcS1xdWVyeS10ZXh0XCI+WW91ciBRdWVyaWVzIHJlcG9ydGVkIGJlbG93IHN0b3JlcyBhcmUgZ290IHt7YW5hbHl6ZXJlcG9ydD8uY291bnRUeXBlfX0ge3thbmFseXplcmVwb3J0Py5maWx0ZXJlZEZlYXR1cmV9fSBvbiB7e3NlbGVjdGVkRGF0ZVswXT8uZGF0ZX19IHRvXHJcbiAgICAgICAgICAgICAgICAgICAge3tzZWxlY3RlZERhdGVbc2VsZWN0ZWREYXRlLmxlbmd0aCAtIDFdPy5kYXRlfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHVsIGNsYXNzPVwibmF2IG15LTMgdy0xMDAgbXQtNVwiPlxyXG4gICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGRhdGUgb2Ygc2VsZWN0ZWREYXRlO2xldCBpPWluZGV4XCIgY2xhc3M9XCJuYXYtaXRlbSBwZS1ub25lXCIgKGNsaWNrKT1cImhhbmRsZUNsaWNrKCRldmVudClcIiA+PGEgZGF0YS1icy10b2dnbGU9XCJ0YWJcIiBbbmdDbGFzc109XCJhY3RpdmVEYXRlID09PSBkYXRlLmRhdGUgPyAnYWN0aXZlJzonJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGluayBidG4gYnRuLXNtIGJ0bi1jb2xvci1tdXRlZCBidG4tYWN0aXZlIGZ3LWJvbGRlciBweC0xMCBtZS0xIHNob3dcIj5cclxuICAgICAgICAgICAgICAgICAgIHt7ZGF0ZS5kYXRlfX0gPHNwYW4gKm5nSWY9XCJhY3RpdmVEYXRlID09PSBkYXRlLmRhdGUgJiYgZGF0ZT8uc2hvd0ljb25cIiBjbGFzcz1cIm14LTJcIj48c3ZnIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjEgMjBcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBzdHlsZT1cIm1peC1ibGVuZC1tb2RlOm11bHRpcGx5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjAuMjVcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiByeD1cIjEwXCIgZmlsbD1cIiNFQUY4RkZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfODcxM18xMDM3OSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTAuMjUgOFYxME0xMC4yNSAxMkgxMC4yNTVNMTUuMjUgMTBDMTUuMjUgMTIuNzYxNCAxMy4wMTE0IDE1IDEwLjI1IDE1QzcuNDg4NTggMTUgNS4yNSAxMi43NjE0IDUuMjUgMTBDNS4yNSA3LjIzODU4IDcuNDg4NTggNSAxMC4yNSA1QzEzLjAxMTQgNSAxNS4yNSA3LjIzODU4IDE1LjI1IDEwWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzNCNUZGXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfODcxM18xMDM3OVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoNC4yNSA0KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImFjdGl2ZURhdGUgIT09IGRhdGUuZGF0ZSAmJiBkYXRlPy5zaG93SWNvblwiIGNsYXNzPVwibXgtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIxIDIwXCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgc3R5bGU9XCJtaXgtYmxlbmQtbW9kZTptdWx0aXBseVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIwLjI1XCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgcng9XCIxMFwiIGZpbGw9XCIjRjJGNEY3XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzg3MTNfMTAzNzkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEwLjI1IDhWMTBNMTAuMjUgMTJIMTAuMjU1TTE1LjI1IDEwQzE1LjI1IDEyLjc2MTQgMTMuMDExNCAxNSAxMC4yNSAxNUM3LjQ4ODU4IDE1IDUuMjUgMTIuNzYxNCA1LjI1IDEwQzUuMjUgNy4yMzg1OCA3LjQ4ODU4IDUgMTAuMjUgNUMxMy4wMTE0IDUgMTUuMjUgNy4yMzg1OCAxNS4yNSAxMFpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzg3MTNfMTAzNzlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgZmlsbD1cIndoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDQuMjUgNClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgIDwvYT48L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImFjdGl2ZUFycmF5Py5wcmltYXJ5SXNzdWVcIiBjbGFzcz1cIm15LTMgbXQtNVwiPlxyXG4gICAgICAgICAgICA8aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL2N1c3RvbXBvcHVwLUljb25zL2Rhbmdlci1pY29uLnN2Z1wiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhYWN0aXZlQXJyYXk/LnByaW1hcnlJc3N1ZVwiIGNsYXNzPVwibXktMyBtdC01XCI+XHJcbiAgICAgICAgICAgIDxpbWcgc3R5bGU9XCJ3aWR0aDo1MHB4OyBoZWlnaHQ6NTBweFwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlcy9TdWNjZXNzdG9hc3QucG5nXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImFjdGl2ZUFycmF5XCIgY2xhc3M9XCJ1bC1saXN0XCI+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImFjdGl2ZUFycmF5Py5wcmltYXJ5SXNzdWVcIiBjbGFzcz1cImxpc3Qtc2l6ZSBteS0zXCI+VGhlIHByaW1hcnkgaXNzdWUgd2FzIDxzcGFuIGNsYXNzPVwiZnctYm9sZC03MDBcIj57e2FjdGl2ZUFycmF5Py5wcmltYXJ5SXNzdWV9fTwvc3Bhbj4gd2hlcmVcclxuICAgICAgICAgICAgICAgICAgICB0aGUgPHNwYW4gKm5nRm9yPVwibGV0IGRhdGEgb2YgYWN0aXZlQXJyYXk/LnNlY29uZGFyeVJlYXNvbiBsZXQgbGFzdCA9IGxhc3RcIiBjbGFzcz1cImZ3LWJvbGQtNzAwXCI+ZGF0YSA8c3BhbiAqbmdJZj1cIiFsYXN0XCI+LDwvc3Bhbj48L3NwYW4+IHdhcyB0aGUgc2Vjb25kYXJ5IGNvbmNlcm4uIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJhY3RpdmVBcnJheT8uZG93blRpbWUgPiAwXCIgY2xhc3M9XCJsaXN0LXNpemUgbXktM1wiPlN0b3JlIEV4cGVyaWVuY2VkIGEgZG93bnRpbWUgb2YgPHNwYW4gY2xhc3M9XCJmdy1ib2xkLTcwMFwiPnt7YWN0aXZlQXJyYXk/LmRvd25UaW1lfX0gbWluczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICBkYXRlZCA8c3BhbiBjbGFzcz1cImZ3LWJvbGQtNzAwXCI+e3thY3RpdmVBcnJheT8uaXNzdWVEYXRlfX08L3NwYW4+IHdoZXJlIFwiTiBGaWxlcyBMb3N0XCIgYW5kIHdhcyB1bmFibGUgdG8gc2VuZCB0byBvdXJcclxuICAgICAgICAgICAgICAgICAgICBjbG91ZCBkdWUgdG8gc3BlZWQgYmVpbmcgPHNwYW4gY2xhc3M9XCJmdy1ib2xkLTcwMFwiPnt7YWN0aXZlQXJyYXk/LnNwZWVkVGVzdH19IE1icHMuPC9zcGFuPiA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8bGkgY2xhc3M9XCJsaXN0LXNpemUgbXktM1wiPldlIHdlcmUgYWJsZSB0byBjYXB0dXJlIG9ubHkgPHNwYW4gY2xhc3M9XCJmdy1ib2xkLTcwMFwiPjEwMCBGb290ZmFsbHM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgZGVzcGl0ZSB0aGUgPHNwYW4gY2xhc3M9XCJmdy1ib2xkLTcwMFwiPkludGVybmV0IHNsb3c8L3NwYW4+IGlzc3VlIDwvbGk+IC0tPlxyXG5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2Rpdj4gIFxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImMtbGFiZWwgZnctYm9sZGVyIGZzLTMgbWItMVwiPlRhbmdvIFByZS1SZXF1aXNpdGUgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC13YXJuaW5nIG1zLTJcIj5XYXJuaW5nPC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICA8L2gzPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXIgdGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsaXN0LXNpemVcIj57e2FjdGl2ZVN0cmVhbT8uY2FtZXJhTnVtYmVyfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgbXgtM1wiPiAgXHJcbiAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVwb25zaXZlXCI+XHJcbiAgICAgICAgPHRhYmxlIGNsYXNzPVwiYm90dG9tLWJvcmRlciB3LTEwMFwiPlxyXG4gICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoPkluc3RhbmNlczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoPkV4Y2VwdGVkPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGg+QWN0dWFsPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGg+UmVzdWx0PC90aD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+Q2FtZXJhIEFuZ2xlPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBbc3JjXT1cImFuZ2xlQ2hhbmdlPy5hbmdsZUNoYW5nZUltYWdlID8gYW5nbGVDaGFuZ2U/LmFuZ2xlQ2hhbmdlSW1hZ2UgOmFjdGl2ZVN0cmVhbT8udGh1bWJuYWlsSW1hZ2VcIj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIiFhbmdsZUNoYW5nZT8uYW5nbGVjaGFuZ2VcIj48aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlL3ZlcmlmaWNhdGlvbnN1Y2Nlc3Muc3ZnXCI+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJhbmdsZUNoYW5nZT8uYW5nbGVjaGFuZ2VcIj48aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlL3ZlcmlmaWNhdGlvbmZhaWxlZC5zdmdcIj48L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+UmVzb2x1dGlvbjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPjEwODAgeCA5MDg8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD57e2FuZ2xlQ2hhbmdlPy5yZXNvbHV0aW9uID8gYW5nbGVDaGFuZ2U/LnJlc29sdXRpb24gOiAnLS0nfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPHRkICpuZ0lmPVwiYW5nbGVDaGFuZ2U/LmFuZ2xlY2hhbmdlXCI+PGltZyBzcmM9XCIuL2Fzc2V0cy90YW5nby9JbWFnZS92ZXJpZmljYXRpb25mYWlsZWQuc3ZnXCI+PC90ZD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPjxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vSW1hZ2UvdmVyaWZpY2F0aW9uc3VjY2Vzcy5zdmdcIj48L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwhLS0gPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD5Eb3dudGltZTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPjQuMDAgQU08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD45LjAwIEFNPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+PGltZyBzcmM9XCIuL2Fzc2V0cy90YW5nby9JbWFnZS92ZXJpZmljYXRpb25kYW5nZXIuc3ZnXCI+PC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+IC0tPlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInN0cmVhbURldGFpbHM/Lmxlbmd0aFwiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG10LTEwXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHN0cmVhbSBvZiBzdHJlYW1EZXRhaWxzXCIgW25nQ2xhc3NdPVwic3RyZWFtPy5zdHJlYW1OYW1lID09PSBhY3RpdmVTdHJlYW0/LnN0cmVhbU5hbWU/ICdiZy1kYXJrJyA6ICdiZy1vcGFjaXR5LTI1J1wiIGNsYXNzPVwidy0xMHB4IGgtMTBweCByb3VuZGVkLTUgYmctZGFyayBjdXJzb3ItcG9pbnRlciBteC0zXCIgKGNsaWNrKT1cImdldHN0cmVhbWJhc2VkQW5nbGUoc3RyZWFtKVwiPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBweC00IGJvcmRlci0wIHB0LTUgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYy1sYWJlbC10aXRsZSBtYi0xXCI+UXVlcmllcyBIaXN0b3J5PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8ZGl2IChjbGljayk9XCJ2aWV3TW9yZSgpXCIgY2xhc3M9XCJjYXJkLXRvb2xiYXIgdGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJpbWFyeS1saXN0XCI+VmlldyBtb3JlIERldGFpbHM8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJweC01IHEtcXVlcnktdGV4dFwiPkZyb20gdGhlIGRhdGUgb2YgaW5zdGFsbGF0aW9uIHRpbGwgdG9kYXkgdGhlIGJlbG93IHF1ZXJpZXMgc3VjY2VzcyByYXRlIGhhcyBiZWVuIG1haW50YWluZWQ8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBweS0zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgbWluLXctMTI1cHggcHktMyBweC00IG1lLTYgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtaGlzdG9yeS10aXRsZVwiPkVhcm5pbmdzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBweS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtaGlzdG9yeS1jb3VudFwiPjEwIFRpY2tldHM8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBtaW4tdy0xMjVweCBweS0zIHB4LTQgbWUtNiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1oaXN0b3J5LXRpdGxlXCI+RWFybmluZ3M8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHB5LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1oaXN0b3J5LWNvdW50XCI+NzglPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIiBtaW4tdy0xMjVweCBweS0zIHB4LTQgbWUtNiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZCBmcy02IHRleHQtZ3JheS01MDBcIj5FYXJuaW5nczwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtMiBmdy1ib2xkZXJcIj40NTAwJDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0zIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIGN1cnNvci1wb2ludGVyIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJhaXNlVGlja2V0KClcIj5SYWlzZSBhIFRpY2tldDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIihjdXJyZW50SWR4ICsgMSkgIT09IHNlbGVjdGVkRGF0ZS5sZW5ndGhcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcm91bmRlZC0zXCIgKGNsaWNrKT1cImNsb3NlVGlja2V0KClcIj5BY2NlcHQgJiBDbG9zZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIihjdXJyZW50SWR4ICsgMSkgPT09IHNlbGVjdGVkRGF0ZS5sZW5ndGhcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcm91bmRlZC0zXCIgKGNsaWNrKT1cIm9wZW5Qb3B1cCgpXCI+Q2xvc2U8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY29uZmlybWF0aW9uTW9kYWwgbGV0LW1vZGFsPlxyXG4gICAgPGRpdiBjbGFzcz1cInAtOFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgIDxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vY3VzdG9tcG9wdXAtSWNvbnMvZGFuZ2VyLWljb24uc3ZnXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIiBtdC01XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FtZXJhRGV0YWlsIGZ3LWJvbGRcIj5VbnNhdmVkIENoYW5nZXM8L3NwYW4+XHJcbiAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTMgc3ViLWhlYWRlciBmdy1ib2xkLTQwMFwiPkRvIHlvdSB3YW50IHRvIGNsaXNlIHRoZSB0aWNrZXRzPzwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtMTBcIj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lIHctNTAgbWUtMlwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctNTAgbXMtMlwiIChjbGljayk9XCJjb25maXJtU2F2ZSgpO21vZGFsLmNsb3NlKClcIj5Db25maXJtPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI1JlY29uZmlybWF0aW9uTW9kYWwgbGV0LW1vZGFsPlxyXG4gICAgPGRpdiBjbGFzcz1cInAtOFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgIDxpbWcgc3JjPVwiLi9hc3NldHMvdGFuZ28vY3VzdG9tcG9wdXAtSWNvbnMvZGFuZ2VyLWljb24uc3ZnXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIiBtdC01XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FtZXJhRGV0YWlsIGZ3LWJvbGRcIj5BcmUgeW91IHN1cmUsIHdhbnQgdG8gdmlldyBtb3JlIGRldGFpbHM/PC9zcGFuPlxyXG4gICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zIHN1Yi1oZWFkZXIgZnctYm9sZC00MDBcIj5JZiBzbyB5b3Ugd2lsbCByZWRpcmVjdCB0byBRdWVyaWVzIHN1bW1hcnkgJiBjYW7igJl0IGFibGUgdG8gY29tZSBiYWNrIHRvIHRoZSBzY3JlZW4uPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC0xMFwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLW91dGxpbmUgdy01MCBtZS0yXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy01MCBtcy0yXCIgKGNsaWNrKT1cImNvbmZpcm1Nb3JlKCk7bW9kYWwuZGlzbWlzcygpXCI+Q29uZmlybTwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICAiXX0=