tango-app-ui-ticket-user 3.3.0-beta.7 → 3.3.0-beta.9
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.
- package/esm2022/lib/components/audit-management/audit-management.component.mjs +7 -4
- package/esm2022/lib/components/audit-workspace/audit-workspace.component.mjs +12 -8
- package/esm2022/lib/components/contact-details/contact-details.component.mjs +3 -3
- package/esm2022/lib/components/dropdown/dropdown.component.mjs +3 -3
- package/esm2022/lib/components/edge-cameraview/edge-cameraview.component.mjs +3 -3
- package/esm2022/lib/components/edgeapp-log/edgeapp-log.component.mjs +3 -3
- package/esm2022/lib/components/edit-details/edit-details.component.mjs +3 -3
- package/esm2022/lib/components/infratickets/infratickets.component.mjs +5 -5
- package/esm2022/lib/components/installation/installation.component.mjs +5 -5
- package/esm2022/lib/components/store-activity/store-activity.component.mjs +3 -3
- package/esm2022/lib/components/store-info/store-info.component.mjs +3 -3
- package/esm2022/lib/components/takeremote/takeremote.component.mjs +3 -3
- package/esm2022/lib/components/tango-ticket-users/tango-ticket-users.component.mjs +3 -3
- package/esm2022/lib/components/tickets/tickets.component.mjs +3 -3
- package/esm2022/lib/components/viewhistory/viewhistory.component.mjs +6 -5
- package/esm2022/lib/route-wrappers/edge-wrapper.module.mjs +4 -4
- package/esm2022/lib/services/data.service.mjs +3 -3
- package/esm2022/lib/services/excel.service.mjs +3 -3
- package/esm2022/lib/services/ticket-infra.service.mjs +5 -5
- package/esm2022/lib/tango-ticket-users-routing.module.mjs +4 -4
- package/esm2022/lib/tango-ticket-users.module.mjs +4 -4
- package/fesm2022/{tango-app-ui-ticket-user-edge-wrapper.module-CFDk0tvS.mjs → tango-app-ui-ticket-user-edge-wrapper.module-fMqNK7aH.mjs} +5 -5
- package/fesm2022/{tango-app-ui-ticket-user-edge-wrapper.module-CFDk0tvS.mjs.map → tango-app-ui-ticket-user-edge-wrapper.module-fMqNK7aH.mjs.map} +1 -1
- package/fesm2022/tango-app-ui-ticket-user.mjs +79 -71
- package/fesm2022/tango-app-ui-ticket-user.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -98,6 +98,9 @@ export class AuditManagementComponent {
|
|
|
98
98
|
ngOnChanges(changes) {
|
|
99
99
|
if (changes['searchAudit']) {
|
|
100
100
|
this.searchData(changes['searchAudit'].currentValue);
|
|
101
|
+
this.offset = 1;
|
|
102
|
+
this.size = 10;
|
|
103
|
+
this.sortBy = -1;
|
|
101
104
|
}
|
|
102
105
|
if (changes['selectedType']) {
|
|
103
106
|
this.size = 10;
|
|
@@ -198,10 +201,10 @@ export class AuditManagementComponent {
|
|
|
198
201
|
return this.size;
|
|
199
202
|
}
|
|
200
203
|
}
|
|
201
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.
|
|
202
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AuditManagementComponent, selector: "lib-audit-management", inputs: { searchAudit: "searchAudit", selectedType: "selectedType", selectedClient: "selectedClient", clientId: "clientId" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"card border-0\">\r\n <!-- <div class=\"card-header border-0 p-0\"> -->\r\n <!-- <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label fw-bold text-dark\">Audit Management</span> -->\r\n <!-- <p class=\"text-gray-400 fw-bold fs-5 mt-1\">\r\n Total {{datalist ? datalist?.totalStores:'0'}} Stores</p> -->\r\n <!-- </h3> -->\r\n <!-- <div class=\"card-toolbar \">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-6\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" \r\n class=\"form-control w-300px ps-14\" name=\"search\" autocomplete=\"off\"\r\n placeholder=\"Search by Client Name / ID\" autocomplete=\"off\" />\r\n <div class=\"cursor-pointer ms-3\">\r\n <button class=\"btn btn-outline\" [disabled]=\"auditLoading || auditNoData\"\r\n (click)=\"exportAsXlsx()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg><span class=\"ms-2\">{{exportBtnText}}</span> </button></div>\r\n </div>\r\n </div>\r\n </div> -->\r\n <!-- </div> -->\r\n <div class=\"card-body px-0 pt-10\" *ngIf=\"!auditLoading && !auditNoData && selectedType ==='traffic'\">\r\n <div>\r\n <div class=\"table-responsive\"> \r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th>Brand Name</th>\r\n <th>Brand ID</th>\r\n <th>Pending Queue</th>\r\n <th>Pending User</th>\r\n <th>Completed</th>\r\n <th>Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let source of dataSource ; let i = index\">\r\n <td> {{source?.clientName}} \r\n <!-- <div class=\"d-flex mt-3\"> -->\r\n <span *ngIf=\"source?.isDraft\" class=\"badge badge-light-primary mx-2\">Drafted</span>\r\n <span *ngIf=\"source?.isAssigned\" class=\"badge badge-light-primary mx-2\">Assigned</span>\r\n <!-- </div> -->\r\n </td>\r\n <td>{{source?.clientId ? source?.clientId : '--'}}</td>\r\n <td>{{source?.pendingByQueue ?? '--'}}</td>\r\n <td>{{source?.pendingByUser ?? '--'}}</td>\r\n <td> {{source?.completedStoresCount ?? '--'}} \r\n <div *ngIf=\"source?.completedCount\" class=\"d-flex align-items-center mt-3\">\r\n <div class=\"w-10px h-10px rounded-5 bg-success me-5\"></div>\r\n <span>{{source?.completedRatio}} %</span>\r\n </div></td> \r\n <td><button class=\"btn btn-default btn btn-outline text-capitalize cursor-pointer\"\r\n (click)=\"mappingdata(source)\" [disabled]=\"!source?.isEnable\"> Start </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n \r\n </table> \r\n </div>\r\n <lib-pagination [itemsPerPage]=\"size\" [currentPage]=\"offset\"\r\n [totalItems]=\"recordsTotal\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"setpageSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body px-0 pt-10\" *ngIf=\"!auditLoading && !auditNoData && selectedType ==='zone'\">\r\n <div>\r\n <div class=\"table-responsive\"> \r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th>Brand Name</th>\r\n <th>Brand ID</th>\r\n <th>Pending Queue</th>\r\n <th>Pending User</th>\r\n <th>Completed</th>\r\n <th>Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let source of dataSource ; let i = index\">\r\n <td> {{source?.clientName}} \r\n <!-- <div class=\"d-flex mt-3\"> -->\r\n <span *ngIf=\"source?.isDraft\" class=\"badge badge-light-danger mx-2\">Drafted</span>\r\n <span *ngIf=\"source?.isAssigned\" class=\"badge badge-light-primary mx-2\">Assigned</span>\r\n <!-- </div> -->\r\n </td>\r\n <td>{{source?.clientId ? source?.clientId : '--'}}</td>\r\n <td>{{source?.pendingByQueue ?? '--'}}</td>\r\n <td>{{source?.pendingByUser ?? '--'}}</td>\r\n <td> {{source?.completedStoresCount ?? '--'}} \r\n <div *ngIf=\"source?.completedCount\" class=\"d-flex align-items-center mt-3\">\r\n <div class=\"w-10px h-10px rounded-5 bg-success me-5\"></div>\r\n <span>{{source?.completedRatio}} %</span>\r\n </div></td> \r\n <td><button class=\"btn btn-default btn btn-outline text-capitalize cursor-pointer\"\r\n (click)=\"mappingdata(source)\" [disabled]=\"!source?.isEnable\"> Start </button>\r\n <!-- *ngIf=\"!source?.isEnable\" -->\r\n <!-- <span class=\"badge py-3 px-4 fs-7 badge-light-secondary text-secondary text-capitalize\"\r\n >START</span> -->\r\n </td>\r\n </tr>\r\n </tbody>\r\n \r\n </table> \r\n </div>\r\n <lib-pagination [itemsPerPage]=\"size\" [currentPage]=\"offset\"\r\n [totalItems]=\"recordsTotal\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"setpageSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"auditLoading\" >\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"auditNoData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div> \r\n\r\n <!-- <app-date-range-picker name=\"app-range-picker-single\" type=\"single\" (change)=\"dateChanged($event)\"\r\n id=\"dateclass\">\r\n </app-date-range-picker> -->", styles: ["tr{vertical-align:middle!important}.scroll-y{overflow-y:auto!important;position:relative!important}input[type=date]{position:relative}input[type=date]::-webkit-calendar-picker-indicator{background-position:right;background-size:auto;cursor:pointer;position:absolute;bottom:10;left:0;right:0;top:5;width:auto}.btn-enable{color:var(--Primary-700, #009BF3)!important;background:var(--Primary-25, #F6FCFF)!important;border:1px solid var(--Primary-700, #009BF3)!important;padding:.775rem 1.5rem!important}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }] });
|
|
204
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AuditManagementComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.Router }, { token: i2.TicketsService }, { token: i3.GlobalStateService }, { token: i4.NgbModal }], target: i0.ɵɵFactoryTarget.Component });
|
|
205
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: AuditManagementComponent, selector: "lib-audit-management", inputs: { searchAudit: "searchAudit", selectedType: "selectedType", selectedClient: "selectedClient", clientId: "clientId" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"card border-0\">\r\n <!-- <div class=\"card-header border-0 p-0\"> -->\r\n <!-- <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label fw-bold text-dark\">Audit Management</span> -->\r\n <!-- <p class=\"text-gray-400 fw-bold fs-5 mt-1\">\r\n Total {{datalist ? datalist?.totalStores:'0'}} Stores</p> -->\r\n <!-- </h3> -->\r\n <!-- <div class=\"card-toolbar \">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-6\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" \r\n class=\"form-control w-300px ps-14\" name=\"search\" autocomplete=\"off\"\r\n placeholder=\"Search by Client Name / ID\" autocomplete=\"off\" />\r\n <div class=\"cursor-pointer ms-3\">\r\n <button class=\"btn btn-outline\" [disabled]=\"auditLoading || auditNoData\"\r\n (click)=\"exportAsXlsx()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg><span class=\"ms-2\">{{exportBtnText}}</span> </button></div>\r\n </div>\r\n </div>\r\n </div> -->\r\n <!-- </div> -->\r\n <div class=\"card-body px-0 pt-10\" *ngIf=\"!auditLoading && !auditNoData && selectedType ==='traffic'\">\r\n <div>\r\n <div class=\"table-responsive\"> \r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th>Brand Name</th>\r\n <th>Brand ID</th>\r\n <th>Pending Queue</th>\r\n <th>Pending User</th>\r\n <th>Completed</th>\r\n <th>Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let source of dataSource ; let i = index\">\r\n <td> {{source?.clientName}} \r\n <!-- <div class=\"d-flex mt-3\"> -->\r\n <span *ngIf=\"source?.isDraft\" class=\"badge badge-light-primary mx-2\">Drafted</span>\r\n <span *ngIf=\"source?.isAssigned\" class=\"badge badge-light-primary mx-2\">Assigned</span>\r\n <!-- </div> -->\r\n </td>\r\n <td>{{source?.clientId ? source?.clientId : '--'}}</td>\r\n <td>{{source?.pendingByQueue ?? '--'}}</td>\r\n <td>{{source?.pendingByUser ?? '--'}}</td>\r\n <td> {{source?.completedStoresCount ?? '--'}} \r\n <div *ngIf=\"source?.completedCount\" class=\"d-flex align-items-center mt-3\">\r\n <div class=\"w-10px h-10px rounded-5 bg-success me-5\"></div>\r\n <span>{{source?.completedRatio}} %</span>\r\n </div></td> \r\n <td><button class=\"btn btn-default btn btn-outline text-capitalize cursor-pointer\"\r\n (click)=\"mappingdata(source)\" [disabled]=\"!source?.isEnable\"> Start </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n \r\n </table> \r\n </div>\r\n <lib-pagination [itemsPerPage]=\"size\" [currentPage]=\"offset\"\r\n [totalItems]=\"recordsTotal\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"setpageSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body px-0 pt-10\" *ngIf=\"!auditLoading && !auditNoData && selectedType ==='zone'\">\r\n <div>\r\n <div class=\"table-responsive\"> \r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th>Brand Name</th>\r\n <th>Brand ID</th>\r\n <th>Pending Queue</th>\r\n <th>Pending User</th>\r\n <th>Completed</th>\r\n <th>Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let source of dataSource ; let i = index\">\r\n <td> {{source?.clientName}} \r\n <!-- <div class=\"d-flex mt-3\"> -->\r\n <span *ngIf=\"source?.isDraft\" class=\"badge badge-light-danger mx-2\">Drafted</span>\r\n <span *ngIf=\"source?.isAssigned\" class=\"badge badge-light-primary mx-2\">Assigned</span>\r\n <!-- </div> -->\r\n </td>\r\n <td>{{source?.clientId ? source?.clientId : '--'}}</td>\r\n <td>{{source?.pendingByQueue ?? '--'}}</td>\r\n <td>{{source?.pendingByUser ?? '--'}}</td>\r\n <td> {{source?.completedStoresCount ?? '--'}} \r\n <div *ngIf=\"source?.completedCount\" class=\"d-flex align-items-center mt-3\">\r\n <div class=\"w-10px h-10px rounded-5 bg-success me-5\"></div>\r\n <span>{{source?.completedRatio}} %</span>\r\n </div></td> \r\n <td><button class=\"btn btn-default btn btn-outline text-capitalize cursor-pointer\"\r\n (click)=\"mappingdata(source)\" [disabled]=\"!source?.isEnable\"> Start </button>\r\n <!-- *ngIf=\"!source?.isEnable\" -->\r\n <!-- <span class=\"badge py-3 px-4 fs-7 badge-light-secondary text-secondary text-capitalize\"\r\n >START</span> -->\r\n </td>\r\n </tr>\r\n </tbody>\r\n \r\n </table> \r\n </div>\r\n <lib-pagination [itemsPerPage]=\"size\" [currentPage]=\"offset\"\r\n [totalItems]=\"recordsTotal\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"setpageSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"auditLoading\" >\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"auditNoData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div> \r\n\r\n <!-- <app-date-range-picker name=\"app-range-picker-single\" type=\"single\" (change)=\"dateChanged($event)\"\r\n id=\"dateclass\">\r\n </app-date-range-picker> -->", styles: ["tr{vertical-align:middle!important}.scroll-y{overflow-y:auto!important;position:relative!important}input[type=date]{position:relative}input[type=date]::-webkit-calendar-picker-indicator{background-position:right;background-size:auto;cursor:pointer;position:absolute;bottom:10;left:0;right:0;top:5;width:auto}.btn-enable{color:var(--Primary-700, #009BF3)!important;background:var(--Primary-25, #F6FCFF)!important;border:1px solid var(--Primary-700, #009BF3)!important;padding:.775rem 1.5rem!important}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }] });
|
|
203
206
|
}
|
|
204
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.
|
|
207
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: AuditManagementComponent, decorators: [{
|
|
205
208
|
type: Component,
|
|
206
209
|
args: [{ selector: 'lib-audit-management', template: "<div class=\"card border-0\">\r\n <!-- <div class=\"card-header border-0 p-0\"> -->\r\n <!-- <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label fw-bold text-dark\">Audit Management</span> -->\r\n <!-- <p class=\"text-gray-400 fw-bold fs-5 mt-1\">\r\n Total {{datalist ? datalist?.totalStores:'0'}} Stores</p> -->\r\n <!-- </h3> -->\r\n <!-- <div class=\"card-toolbar \">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-6\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" \r\n class=\"form-control w-300px ps-14\" name=\"search\" autocomplete=\"off\"\r\n placeholder=\"Search by Client Name / ID\" autocomplete=\"off\" />\r\n <div class=\"cursor-pointer ms-3\">\r\n <button class=\"btn btn-outline\" [disabled]=\"auditLoading || auditNoData\"\r\n (click)=\"exportAsXlsx()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg><span class=\"ms-2\">{{exportBtnText}}</span> </button></div>\r\n </div>\r\n </div>\r\n </div> -->\r\n <!-- </div> -->\r\n <div class=\"card-body px-0 pt-10\" *ngIf=\"!auditLoading && !auditNoData && selectedType ==='traffic'\">\r\n <div>\r\n <div class=\"table-responsive\"> \r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th>Brand Name</th>\r\n <th>Brand ID</th>\r\n <th>Pending Queue</th>\r\n <th>Pending User</th>\r\n <th>Completed</th>\r\n <th>Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let source of dataSource ; let i = index\">\r\n <td> {{source?.clientName}} \r\n <!-- <div class=\"d-flex mt-3\"> -->\r\n <span *ngIf=\"source?.isDraft\" class=\"badge badge-light-primary mx-2\">Drafted</span>\r\n <span *ngIf=\"source?.isAssigned\" class=\"badge badge-light-primary mx-2\">Assigned</span>\r\n <!-- </div> -->\r\n </td>\r\n <td>{{source?.clientId ? source?.clientId : '--'}}</td>\r\n <td>{{source?.pendingByQueue ?? '--'}}</td>\r\n <td>{{source?.pendingByUser ?? '--'}}</td>\r\n <td> {{source?.completedStoresCount ?? '--'}} \r\n <div *ngIf=\"source?.completedCount\" class=\"d-flex align-items-center mt-3\">\r\n <div class=\"w-10px h-10px rounded-5 bg-success me-5\"></div>\r\n <span>{{source?.completedRatio}} %</span>\r\n </div></td> \r\n <td><button class=\"btn btn-default btn btn-outline text-capitalize cursor-pointer\"\r\n (click)=\"mappingdata(source)\" [disabled]=\"!source?.isEnable\"> Start </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n \r\n </table> \r\n </div>\r\n <lib-pagination [itemsPerPage]=\"size\" [currentPage]=\"offset\"\r\n [totalItems]=\"recordsTotal\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"setpageSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body px-0 pt-10\" *ngIf=\"!auditLoading && !auditNoData && selectedType ==='zone'\">\r\n <div>\r\n <div class=\"table-responsive\"> \r\n <table class=\"table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th>Brand Name</th>\r\n <th>Brand ID</th>\r\n <th>Pending Queue</th>\r\n <th>Pending User</th>\r\n <th>Completed</th>\r\n <th>Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let source of dataSource ; let i = index\">\r\n <td> {{source?.clientName}} \r\n <!-- <div class=\"d-flex mt-3\"> -->\r\n <span *ngIf=\"source?.isDraft\" class=\"badge badge-light-danger mx-2\">Drafted</span>\r\n <span *ngIf=\"source?.isAssigned\" class=\"badge badge-light-primary mx-2\">Assigned</span>\r\n <!-- </div> -->\r\n </td>\r\n <td>{{source?.clientId ? source?.clientId : '--'}}</td>\r\n <td>{{source?.pendingByQueue ?? '--'}}</td>\r\n <td>{{source?.pendingByUser ?? '--'}}</td>\r\n <td> {{source?.completedStoresCount ?? '--'}} \r\n <div *ngIf=\"source?.completedCount\" class=\"d-flex align-items-center mt-3\">\r\n <div class=\"w-10px h-10px rounded-5 bg-success me-5\"></div>\r\n <span>{{source?.completedRatio}} %</span>\r\n </div></td> \r\n <td><button class=\"btn btn-default btn btn-outline text-capitalize cursor-pointer\"\r\n (click)=\"mappingdata(source)\" [disabled]=\"!source?.isEnable\"> Start </button>\r\n <!-- *ngIf=\"!source?.isEnable\" -->\r\n <!-- <span class=\"badge py-3 px-4 fs-7 badge-light-secondary text-secondary text-capitalize\"\r\n >START</span> -->\r\n </td>\r\n </tr>\r\n </tbody>\r\n \r\n </table> \r\n </div>\r\n <lib-pagination [itemsPerPage]=\"size\" [currentPage]=\"offset\"\r\n [totalItems]=\"recordsTotal\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"setpageSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"auditLoading\" >\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"auditNoData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div> \r\n\r\n <!-- <app-date-range-picker name=\"app-range-picker-single\" type=\"single\" (change)=\"dateChanged($event)\"\r\n id=\"dateclass\">\r\n </app-date-range-picker> -->", styles: ["tr{vertical-align:middle!important}.scroll-y{overflow-y:auto!important;position:relative!important}input[type=date]{position:relative}input[type=date]::-webkit-calendar-picker-indicator{background-position:right;background-size:auto;cursor:pointer;position:absolute;bottom:10;left:0;right:0;top:5;width:auto}.btn-enable{color:var(--Primary-700, #009BF3)!important;background:var(--Primary-25, #F6FCFF)!important;border:1px solid var(--Primary-700, #009BF3)!important;padding:.775rem 1.5rem!important}\n"] }]
|
|
207
210
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.Router }, { type: i2.TicketsService }, { type: i3.GlobalStateService }, { type: i4.NgbModal }], propDecorators: { searchAudit: [{
|
|
@@ -213,4 +216,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
213
216
|
}], clientId: [{
|
|
214
217
|
type: Input
|
|
215
218
|
}] } });
|
|
216
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtbWFuYWdlbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby10aWNrZXQtdXNlci9zcmMvbGliL2NvbXBvbmVudHMvYXVkaXQtbWFuYWdlbWVudC9hdWRpdC1tYW5hZ2VtZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXRpY2tldC11c2VyL3NyYy9saWIvY29tcG9uZW50cy9hdWRpdC1tYW5hZ2VtZW50L2F1ZGl0LW1hbmFnZW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBNEIsS0FBSyxFQUFnRixNQUFNLGVBQWUsQ0FBQztBQUV6SixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFLMUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBTzFDLE1BQU0sT0FBTyx3QkFBd0I7SUF5Q2Y7SUFDVjtJQUF3QjtJQUE4QjtJQUE4QjtJQXhDOUYsVUFBVSxHQUFPLEVBQUUsQ0FBQztJQUNwQixJQUFJLEdBQVcsRUFBRSxDQUFDO0lBQ2xCLE1BQU0sR0FBVyxDQUFDLENBQUM7SUFDbkIsV0FBVyxHQUFRLENBQUMsQ0FBQztJQUNyQixTQUFTLENBQU07SUFDZixXQUFXLENBQU07SUFDakIsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNkLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDWixPQUFPLEdBQVksSUFBSSxDQUFDO0lBQ3hCLE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDeEIsY0FBYyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFCLFlBQVksR0FBRyxDQUFDLENBQUM7SUFDakIsWUFBWSxDQUFNO0lBQ2xCLFlBQVksR0FBRyxDQUFDLENBQUM7SUFDakIsV0FBVyxHQUFRLEVBQUUsQ0FB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QW1DdkIsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIE9uSW5pdCxJbnB1dCxPbkNoYW5nZXMsU2ltcGxlQ2hhbmdlcywgT25EZXN0cm95LCBWaWV3Q2hpbGQsIHZpZXdDaGlsZCwgT3V0cHV0LEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5pbXBvcnQgeyBUaWNrZXRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RpY2tldC1pbmZyYS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7IE5nYk1vZGFsLE5nYkFjdGl2ZU1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWF1ZGl0LW1hbmFnZW1lbnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hdWRpdC1tYW5hZ2VtZW50LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYXVkaXQtbWFuYWdlbWVudC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1ZGl0TWFuYWdlbWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCxPbkNoYW5nZXMsT25EZXN0cm95IHtcclxuXHJcbiAgZGF0YVNvdXJjZTphbnkgPSBbXTtcclxuICBzaXplOiBudW1iZXIgPSAxMDtcclxuICBvZmZzZXQ6IG51bWJlciA9IDE7XHJcbiAgb2Zmc2V0dmFsdWU6IGFueSA9IDA7XHJcbiAgcGFnZVZhbHVlOiBhbnk7XHJcbiAgcGFnZURpc3BsYXk6IGFueTtcclxuICBwYWdlU3RhcnQgPSAwO1xyXG4gIHBhZ2VFbmQgPSA1O1xyXG4gIG5leHRidG46IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGJhY2tidG46IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHBhZ2luYXRpb25TaXplID0gWzEwLCAyMF07XHJcbiAgY3VycmVudFZhbHVlID0gMTtcclxuICByZWNvcmRzQ291bnQ6IGFueTtcclxuICByZWNvcmRzVG90YWwgPSAwO1xyXG4gIHNlYXJjaFZhbHVlOiBhbnkgPSAnJztcclxuICBhdWRpdExvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGF1ZGl0Tm9EYXRhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc3VibWl0dGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2luZ2xlZGF0ZTogYW55O1xyXG4gIGV4cG9ydEJ0blRleHQgPSAnRXhwb3J0J1xyXG4gIGxvZ2RhdGE6IGFueTtcclxuICBhY3RpdmVsb2dub2RhdGE6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBmaWx0ZXI6IGFueSA9IDBcclxuICB1c2VyaW5mbzogYW55O1xyXG4gIGRheWpzID0gZGF5anM7XHJcbiAgY2FyZGRhdGE6IGFueTtcclxuICB1c2VyOiBhbnk7XHJcbiAgZGF0YWxpc3Q6IGFueTtcclxuICBpdGVtaGVpZ2h0OiBhbnk7XHJcbiAgQElucHV0KCkgc2VhcmNoQXVkaXQ6YW55O1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkVHlwZTphbnk7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRDbGllbnQ6YW55O1xyXG4gIEBJbnB1dCgpIGNsaWVudElkOmFueTtcclxuICBzb3J0Q29sdW1OYW1lOiBhbnkgPSAnY2xpZW50TmFtZSc7XHJcbiAgc29ydEJ5OiBhbnkgPSAtMTtcclxuICBwcml2YXRlIHVuc3Vic2NyaWJlOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIGhlYWRlckZpbHRlcjogYW55O1xyXG4gIHBhZ2luYXRpb25TaXplczphbnkgPSBbMTAsMjAsMzBdO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhbmdlZGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBhdWRpdDogVGlja2V0c1NlcnZpY2UscHJpdmF0ZSBnczpHbG9iYWxTdGF0ZVNlcnZpY2UscHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsKSB7IFxyXG4gICAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhICE9IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMuaGVhZGVyRmlsdGVyID0gZGF0YTtcclxuICAgICAgICAgIHRoaXMuY2xpZW50SWQgPSB0aGlzLmhlYWRlckZpbHRlcj8uY2xpZW50cztcclxuICAgICAgICAgIHRoaXMuZ2V0YXVkaXRkYXRhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2l6ZSA9IDEwO1xyXG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnYXVkaXQnKVxyXG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgndG90YWxmaWxlcycpXHJcbiAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdqdW5rJylcclxuICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ2VtcGxveWVlJylcclxuICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ3JldGFnJylcclxuXHJcbiAgICB0aGlzLnNpbmdsZWRhdGUgPSB0aGlzLmRheWpzKG5ldyBEYXRlKCkpLmZvcm1hdCgnWVlZWS1NTS1ERCcpXHJcblxyXG4gICAgaWYgKCd1c2VyLWluZm8nIGluIGxvY2FsU3RvcmFnZSkge1xyXG4gICAgICB0aGlzLnVzZXJpbmZvID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndXNlci1pbmZvJykgfHwgJ3t9JylcclxuICAgICAgdGhpcy51c2VyID0gdGhpcy51c2VyaW5mbz8udXNlciAgXHJcbiAgICAgIHRoaXMuc2VhcmNoRGF0YSh0aGlzLnNlYXJjaEF1ZGl0KTtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL3RpY2tldHMvdXNlcnNcIl0sIHsgcXVlcnlQYXJhbXM6IHt0eXBlOidhdWRpdCd9IH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hdWRpdC51c2VyRGV0YWlscygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcy5kYXRhKSB7XHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndXNlci1pbmZvJywgSlNPTi5zdHJpbmdpZnkocmVzLmRhdGEpKTtcclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi90aWNrZXRzL3VzZXJzXCJdLCB7IHF1ZXJ5UGFyYW1zOiB7dHlwZTonYXVkaXQnfSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUuZm9yRWFjaCgoc2IpID0+IHNiLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgICBpZihjaGFuZ2VzWydzZWFyY2hBdWRpdCddKXtcclxuICAgICAgICB0aGlzLnNlYXJjaERhdGEoY2hhbmdlc1snc2VhcmNoQXVkaXQnXS5jdXJyZW50VmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKGNoYW5nZXNbJ3NlbGVjdGVkVHlwZSddKXtcclxuICAgICAgICB0aGlzLnNpemUgPSAxMDtcclxuICAgICAgICB0aGlzLm9mZnNldCA9IDE7XHJcbiAgICAgICAgdGhpcy5nZXRhdWRpdGRhdGEoKTtcclxuICAgICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0YXVkaXRkYXRhKCkge1xyXG4gICAgdGhpcy5hdWRpdExvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5hdWRpdE5vRGF0YSA9IGZhbHNlO1xyXG4gICAgbGV0IHBheWxvYWQ6YW55ID0ge1xyXG4gICAgICBzZWFyY2hWYWx1ZTogdGhpcy5zZWFyY2hBdWRpdCxcclxuICAgICAgbW9kdWxlVHlwZTp0aGlzLnNlbGVjdGVkVHlwZSxcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsXHJcbiAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsIFxyXG4gICAgICBsaW1pdDogcGFyc2VJbnQodGhpcy5zaXplLnRvU3RyaW5nKCkpLFxyXG4gICAgICBzb3J0Q29sdW1uTmFtZTp0aGlzLnNvcnRDb2x1bU5hbWUsXHJcbiAgICAgIHNvcnRCeTp0aGlzLnNvcnRCeVxyXG4gICAgfVxyXG4gICAgdGhpcy5hdWRpdC5nZXRBdWRpdChwYXlsb2FkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDoocmVzOmFueSk9PntcclxuICAgICAgICBpZiAoIXJlcyB8fCByZXMuY29kZSA9PSAyMDQpIHtcclxuICAgICAgICAgIHRoaXMuYXVkaXRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmF1ZGl0Tm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2UgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuZGF0YWxpc3QgPSByZXMuZGF0YTtcclxuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IHJlcz8uZGF0YT8ucmVzdWx0O1xyXG4gICAgICAgICAgdGhpcy5yZWNvcmRzVG90YWwgPSByZXM/LmRhdGE/LmNvdW50OyBcclxuICAgICAgICAgIHRoaXMucmVjb3Jkc0NvdW50ID0gdGhpcy5kYXRhU291cmNlLmxlbmd0aFxyXG4gICAgICAgICAgaWYodGhpcy5yZWNvcmRzVG90YWwgPCAxMCl7IHRoaXMucGFnaW5hdGlvblNpemVzID0gW3RoaXMucmVjb3Jkc1RvdGFsXX1lbHNlIHt0aGlzLnBhZ2luYXRpb25TaXplcyA9IFsxMCwyMCwzMF19XHJcbiAgICAgICAgICBpZiAodGhpcy5kYXRhU291cmNlLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmF1ZGl0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmF1ZGl0Tm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmF1ZGl0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmF1ZGl0Tm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9ICBcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6KGVycjphbnkpPT4ge1xyXG4gICAgICAgIHRoaXMuYXVkaXRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5hdWRpdE5vRGF0YSA9IHRydWU7XHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbXBsZXRlKCkge31cclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgc2VhcmNoRGF0YSh2YWx1ZTphbnkpIHtcclxuICAgIHRoaXMuc2VhcmNoQXVkaXQgPSB2YWx1ZTtcclxuICAgIHRoaXMuZ2V0YXVkaXRkYXRhKCk7XHJcbiAgfVxyXG5cclxuICBtYXBwaW5nZGF0YShkYXRhOiBhbnkpIHtcclxuICAgICAgdmFyIG9iajogYW55ID0ge1xyXG4gICAgICAgIHRvdGFsZmlsZXM6IHtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCd0b3RhbGZpbGVzJyBpbiBzZXNzaW9uU3RvcmFnZSkge1xyXG4gIFxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG9iai50b3RhbGZpbGVzLnF1ZXVlTmFtZSA9IGRhdGEucXVldWVOYW1lXHJcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgndG90YWxmaWxlcycsIEpTT04uc3RyaW5naWZ5KG9iaikpXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvdGlja2V0cy9hdWRpdCddLHsgcXVlcnlQYXJhbXM6IHt0eXBlOiB0aGlzLnNlbGVjdGVkVHlwZX0gfSlcclxuICB9XHJcbiAgXHJcbiAgZGF0ZWNoYW5nZShkYXRlOiBhbnkpIHtcclxuICAgIHRoaXMuc2luZ2xlZGF0ZSA9IGRhdGVcclxuICB9XHJcblxyXG4gIHJlZGlyZWN0VG96b25lKHNvdXJjZTphbnkpe1xyXG4gICAgIHRoaXMuc2VsZWN0ZWRDbGllbnQgPSBzb3VyY2U/LmNsaWVudElkO1xyXG4gIH1cclxuXHJcbiAgZ2V0VG9kYXkoKSB7XHJcbiAgICByZXR1cm4gbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF1cclxuIH1cclxuIG9uUGFnZUNoYW5nZShwYWdlT2Zmc2V0OmFueSl7XHJcbiAgIHRoaXMub2Zmc2V0ID0gcGFnZU9mZnNldDtcclxuICAgdGhpcy5nZXRhdWRpdGRhdGEoKTtcclxuIH1cclxuIG9uUGFnZVNpemVDaGFuZ2UocGFnZVNpemU6YW55KXtcclxuICAgIHRoaXMuc2l6ZSA9IHBhZ2VTaXplO1xyXG4gICAgdGhpcy5vZmZzZXQgPSAxO1xyXG4gICAgdGhpcy5nZXRhdWRpdGRhdGEoKTtcclxuIH1cclxuIHNvcnREYXRhKHZhbHVlOmFueSl7XHJcbiAgdGhpcy5zb3J0Q29sdW1OYW1lID0gdmFsdWU7XHJcbiAgdGhpcy5zb3J0QnkgKj0gLTE7XHJcbiAgdGhpcy5nZXRhdWRpdGRhdGEoKTtcclxuIH1cclxuXHJcbiBzZXRwYWdlU2l6ZSgpe1xyXG4gIGlmKHRoaXMucmVjb3Jkc1RvdGFsIDwgMTApe1xyXG4gICAgIHJldHVybiB0aGlzLnJlY29yZHNUb3RhbDtcclxuICB9ZWxzZXsgXHJcbiAgICByZXR1cm4gdGhpcy5zaXplO1xyXG4gIH1cclxuIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhcmQgYm9yZGVyLTBcIj5cclxuICAgIDwhLS0gPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHAtMFwiPiAtLT5cclxuICAgICAgICA8IS0tIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtbGFiZWwgZnctYm9sZCB0ZXh0LWRhcmtcIj5BdWRpdCBNYW5hZ2VtZW50PC9zcGFuPiAtLT5cclxuICAgICAgICA8IS0tIDxwIGNsYXNzPVwidGV4dC1ncmF5LTQwMCBmdy1ib2xkIGZzLTUgbXQtMVwiPlxyXG4gICAgICAgICAgICBUb3RhbCB7e2RhdGFsaXN0ID8gZGF0YWxpc3Q/LnRvdGFsU3RvcmVzOicwJ319IFN0b3JlczwvcD4gLS0+XHJcbiAgICAgICAgPCEtLSA8L2gzPiAtLT5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXIgXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSBteS0xXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMSBwb3NpdGlvbi1hYnNvbHV0ZSBtcy02XCI+XHJcbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgIDxyZWN0IG9wYWNpdHk9XCIwLjVcIiB4PVwiMTcuMDM2NVwiIHk9XCIxNS4xMjIzXCIgd2lkdGg9XCI4LjE1NTQ2XCIgaGVpZ2h0PVwiMlwiIHJ4PVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwicm90YXRlKDQ1IDE3LjAzNjUgMTUuMTIyMylcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICBkPVwiTTExIDE5QzYuNTU1NTYgMTkgMyAxNS40NDQ0IDMgMTFDMyA2LjU1NTU2IDYuNTU1NTYgMyAxMSAzQzE1LjQ0NDQgMyAxOSA2LjU1NTU2IDE5IDExQzE5IDE1LjQ0NDQgMTUuNDQ0NCAxOSAxMSAxOVpNMTEgNUM3LjUzMzMzIDUgNSA3LjUzMzMzIDUgMTFDNSAxNC40NjY3IDcuNTMzMzMgMTcgMTEgMTdDMTQuNDY2NyAxNyAxNyAxNC40NjY3IDE3IDExQzE3IDcuNTMzMzMgMTQuNDY2NyA1IDExIDVaXCJcclxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKGNoYW5nZSk9XCJzZWFyY2hEYXRhKClcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFZhbHVlXCIgXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCB3LTMwMHB4IHBzLTE0XCIgbmFtZT1cInNlYXJjaFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBieSBDbGllbnQgTmFtZSAvIElEXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgLz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIG1zLTNcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiBbZGlzYWJsZWRdPVwiYXVkaXRMb2FkaW5nIHx8IGF1ZGl0Tm9EYXRhXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJleHBvcnRBc1hsc3goKVwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTcuNSAxMi41VjE1LjgzMzNDMTcuNSAxNi4yNzU0IDE3LjMyNDQgMTYuNjk5MyAxNy4wMTE4IDE3LjAxMThDMTYuNjk5MyAxNy4zMjQ0IDE2LjI3NTQgMTcuNSAxNS44MzMzIDE3LjVINC4xNjY2N0MzLjcyNDY0IDE3LjUgMy4zMDA3MiAxNy4zMjQ0IDIuOTg4MTYgMTcuMDExOEMyLjY3NTU5IDE2LjY5OTMgMi41IDE2LjI3NTQgMi41IDE1LjgzMzNWMTIuNU0xNC4xNjY3IDYuNjY2NjdMMTAgMi41TTEwIDIuNUw1LjgzMzMzIDYuNjY2NjdNMTAgMi41VjEyLjVcIiBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj57e2V4cG9ydEJ0blRleHR9fTwvc3Bhbj4gPC9idXR0b24+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PiAtLT5cclxuICAgIDwhLS0gPC9kaXY+IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHgtMCBwdC0xMFwiICpuZ0lmPVwiIWF1ZGl0TG9hZGluZyAmJiAhYXVkaXROb0RhdGEgJiYgc2VsZWN0ZWRUeXBlID09PSd0cmFmZmljJ1wiPlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYm90dG9tLWJvcmRlciB0ZXh0LW5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+QnJhbmQgTmFtZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkJyYW5kIElEPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+UGVuZGluZyBRdWV1ZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlBlbmRpbmcgVXNlcjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkNvbXBsZXRlZDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkFjdGlvbjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBzb3VyY2Ugb2YgZGF0YVNvdXJjZSA7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiB7e3NvdXJjZT8uY2xpZW50TmFtZX19IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTNcIj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3VyY2U/LmlzRHJhZnRcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnkgbXgtMlwiPkRyYWZ0ZWQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3VyY2U/LmlzQXNzaWduZWRcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnkgbXgtMlwiPkFzc2lnbmVkPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3NvdXJjZT8uY2xpZW50SWQgPyBzb3VyY2U/LmNsaWVudElkIDogJy0tJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7c291cmNlPy5wZW5kaW5nQnlRdWV1ZSA/PyAnLS0nfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tzb3VyY2U/LnBlbmRpbmdCeVVzZXIgPz8gJy0tJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiB7e3NvdXJjZT8uY29tcGxldGVkU3RvcmVzQ291bnQgPz8gJy0tJ319IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNvdXJjZT8uY29tcGxldGVkQ291bnRcIiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwcHggaC0xMHB4IHJvdW5kZWQtNSBiZy1zdWNjZXNzIG1lLTVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e3NvdXJjZT8uY29tcGxldGVkUmF0aW99fSAlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC90ZD4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxidXR0b24gY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuIGJ0bi1vdXRsaW5lIHRleHQtY2FwaXRhbGl6ZSBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtYXBwaW5nZGF0YShzb3VyY2UpXCIgW2Rpc2FibGVkXT1cIiFzb3VyY2U/LmlzRW5hYmxlXCI+IFN0YXJ0IDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4gICBcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxsaWItcGFnaW5hdGlvbiBbaXRlbXNQZXJQYWdlXT1cInNpemVcIiBbY3VycmVudFBhZ2VdPVwib2Zmc2V0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3RvdGFsSXRlbXNdPVwicmVjb3Jkc1RvdGFsXCIgW3BhZ2luYXRpb25TaXplc109XCJwYWdpbmF0aW9uU2l6ZXNcIiBbcGFnZVNpemVdPVwic2V0cGFnZVNpemUoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCIgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiPjwvbGliLXBhZ2luYXRpb24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB4LTAgcHQtMTBcIiAqbmdJZj1cIiFhdWRpdExvYWRpbmcgJiYgIWF1ZGl0Tm9EYXRhICYmIHNlbGVjdGVkVHlwZSA9PT0nem9uZSdcIj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+ICBcclxuICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBib3R0b20tYm9yZGVyIHRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5CcmFuZCBOYW1lPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5CcmFuZCBJRDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlBlbmRpbmcgUXVldWU8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5QZW5kaW5nIFVzZXI8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5Db21wbGV0ZWQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkFjdGlvbjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHNvdXJjZSBvZiBkYXRhU291cmNlIDsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4ge3tzb3VyY2U/LmNsaWVudE5hbWV9fSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTNcIj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNvdXJjZT8uaXNEcmFmdFwiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGFuZ2VyIG14LTJcIj5EcmFmdGVkPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3VyY2U/LmlzQXNzaWduZWRcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXByaW1hcnkgbXgtMlwiPkFzc2lnbmVkPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3NvdXJjZT8uY2xpZW50SWQgPyBzb3VyY2U/LmNsaWVudElkIDogJy0tJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tzb3VyY2U/LnBlbmRpbmdCeVF1ZXVlID8/ICctLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7c291cmNlPy5wZW5kaW5nQnlVc2VyID8/ICctLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiB7e3NvdXJjZT8uY29tcGxldGVkU3RvcmVzQ291bnQgPz8gJy0tJ319IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic291cmNlPy5jb21wbGV0ZWRDb3VudFwiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMHB4IGgtMTBweCByb3VuZGVkLTUgYmctc3VjY2VzcyBtZS01XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e3NvdXJjZT8uY29tcGxldGVkUmF0aW99fSAlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L3RkPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0biBidG4tb3V0bGluZSB0ZXh0LWNhcGl0YWxpemUgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtYXBwaW5nZGF0YShzb3VyY2UpXCIgW2Rpc2FibGVkXT1cIiFzb3VyY2U/LmlzRW5hYmxlXCI+IFN0YXJ0IDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gKm5nSWY9XCIhc291cmNlPy5pc0VuYWJsZVwiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJiYWRnZSBweS0zIHB4LTQgZnMtNyBiYWRnZS1saWdodC1zZWNvbmRhcnkgdGV4dC1zZWNvbmRhcnkgdGV4dC1jYXBpdGFsaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+U1RBUlQ8L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGFibGU+ICAgXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGxpYi1wYWdpbmF0aW9uIFtpdGVtc1BlclBhZ2VdPVwic2l6ZVwiIFtjdXJyZW50UGFnZV09XCJvZmZzZXRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0b3RhbEl0ZW1zXT1cInJlY29yZHNUb3RhbFwiIFtwYWdpbmF0aW9uU2l6ZXNdPVwicGFnaW5hdGlvblNpemVzXCIgW3BhZ2VTaXplXT1cInNldHBhZ2VTaXplKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCIgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiPjwvbGliLXBhZ2luYXRpb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdWRpdExvYWRpbmdcIiA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbG9hZGVyICBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdWRpdE5vRGF0YVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXNyYyB3LTI1XCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+IFxyXG5cclxuICAgIDwhLS0gPGFwcC1kYXRlLXJhbmdlLXBpY2tlciBuYW1lPVwiYXBwLXJhbmdlLXBpY2tlci1zaW5nbGVcIiB0eXBlPVwic2luZ2xlXCIgKGNoYW5nZSk9XCJkYXRlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgIGlkPVwiZGF0ZWNsYXNzXCI+XHJcbiAgPC9hcHAtZGF0ZS1yYW5nZS1waWNrZXI+IC0tPiJdfQ==
|
|
219
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtbWFuYWdlbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby10aWNrZXQtdXNlci9zcmMvbGliL2NvbXBvbmVudHMvYXVkaXQtbWFuYWdlbWVudC9hdWRpdC1tYW5hZ2VtZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXRpY2tldC11c2VyL3NyYy9saWIvY29tcG9uZW50cy9hdWRpdC1tYW5hZ2VtZW50L2F1ZGl0LW1hbmFnZW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBNEIsS0FBSyxFQUFnRixNQUFNLGVBQWUsQ0FBQztBQUV6SixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFLMUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBTzFDLE1BQU0sT0FBTyx3QkFBd0I7SUF5Q2Y7SUFDVjtJQUF3QjtJQUE4QjtJQUE4QjtJQXhDOUYsVUFBVSxHQUFPLEVBQUUsQ0FBQztJQUNwQixJQUFJLEdBQVcsRUFBRSxDQUFDO0lBQ2xCLE1BQU0sR0FBVyxDQUFDLENBQUM7SUFDbkIsV0FBVyxHQUFRLENBQUMsQ0FBQztJQUNyQixTQUFTLENBQU07SUFDZixXQUFXLENBQU07SUFDakIsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNkLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDWixPQUFPLEdBQVksSUFBSSxDQUFDO0lBQ3hCLE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDeEIsY0FBYyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFCLFlBQVksR0FBRyxDQUFDLENBQUM7SUFDakIsWUFBWSxDQUFNO0lBQ2xCLFlBQVksR0FBRyxDQUFDLENBQUM7SUFDakIsV0FBVyxHQUFRLEVBQUUsQ0FB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QUFJLENBQUM7U0FDbEI7SUFDRixDQUFDO3dHQTVMVyx3QkFBd0I7NEZBQXhCLHdCQUF3QiwrTUNkckMsODZUQTBKOEI7OzRGRDVJakIsd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNFLHNCQUFzQjtnTUFtQ3ZCLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdG9yUmVmLCBPbkluaXQsSW5wdXQsT25DaGFuZ2VzLFNpbXBsZUNoYW5nZXMsIE9uRGVzdHJveSwgVmlld0NoaWxkLCB2aWV3Q2hpbGQsIE91dHB1dCxFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcclxuaW1wb3J0IHsgVGlja2V0c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90aWNrZXQtaW5mcmEuc2VydmljZSc7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCxOZ2JBY3RpdmVNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1hdWRpdC1tYW5hZ2VtZW50JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXVkaXQtbWFuYWdlbWVudC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2F1ZGl0LW1hbmFnZW1lbnQuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdWRpdE1hbmFnZW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsT25DaGFuZ2VzLE9uRGVzdHJveSB7XHJcblxyXG4gIGRhdGFTb3VyY2U6YW55ID0gW107XHJcbiAgc2l6ZTogbnVtYmVyID0gMTA7XHJcbiAgb2Zmc2V0OiBudW1iZXIgPSAxO1xyXG4gIG9mZnNldHZhbHVlOiBhbnkgPSAwO1xyXG4gIHBhZ2VWYWx1ZTogYW55O1xyXG4gIHBhZ2VEaXNwbGF5OiBhbnk7XHJcbiAgcGFnZVN0YXJ0ID0gMDtcclxuICBwYWdlRW5kID0gNTtcclxuICBuZXh0YnRuOiBib29sZWFuID0gdHJ1ZTtcclxuICBiYWNrYnRuOiBib29sZWFuID0gdHJ1ZTtcclxuICBwYWdpbmF0aW9uU2l6ZSA9IFsxMCwgMjBdO1xyXG4gIGN1cnJlbnRWYWx1ZSA9IDE7XHJcbiAgcmVjb3Jkc0NvdW50OiBhbnk7XHJcbiAgcmVjb3Jkc1RvdGFsID0gMDtcclxuICBzZWFyY2hWYWx1ZTogYW55ID0gJyc7XHJcbiAgYXVkaXRMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBhdWRpdE5vRGF0YTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHN1Ym1pdHRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNpbmdsZWRhdGU6IGFueTtcclxuICBleHBvcnRCdG5UZXh0ID0gJ0V4cG9ydCdcclxuICBsb2dkYXRhOiBhbnk7XHJcbiAgYWN0aXZlbG9nbm9kYXRhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZmlsdGVyOiBhbnkgPSAwXHJcbiAgdXNlcmluZm86IGFueTtcclxuICBkYXlqcyA9IGRheWpzO1xyXG4gIGNhcmRkYXRhOiBhbnk7XHJcbiAgdXNlcjogYW55O1xyXG4gIGRhdGFsaXN0OiBhbnk7XHJcbiAgaXRlbWhlaWdodDogYW55O1xyXG4gIEBJbnB1dCgpIHNlYXJjaEF1ZGl0OmFueTtcclxuICBASW5wdXQoKSBzZWxlY3RlZFR5cGU6YW55O1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkQ2xpZW50OmFueTtcclxuICBASW5wdXQoKSBjbGllbnRJZDphbnk7XHJcbiAgc29ydENvbHVtTmFtZTogYW55ID0gJ2NsaWVudE5hbWUnO1xyXG4gIHNvcnRCeTogYW55ID0gLTE7XHJcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZTogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICBoZWFkZXJGaWx0ZXI6IGFueTtcclxuICBwYWdpbmF0aW9uU2l6ZXM6YW55ID0gWzEwLDIwLDMwXTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYW5nZWRldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgYXVkaXQ6IFRpY2tldHNTZXJ2aWNlLHByaXZhdGUgZ3M6R2xvYmFsU3RhdGVTZXJ2aWNlLHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCkgeyBcclxuICAgICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YSAhPSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLmhlYWRlckZpbHRlciA9IGRhdGE7XHJcbiAgICAgICAgICB0aGlzLmNsaWVudElkID0gdGhpcy5oZWFkZXJGaWx0ZXI/LmNsaWVudHM7XHJcbiAgICAgICAgICB0aGlzLmdldGF1ZGl0ZGF0YSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNpemUgPSAxMDtcclxuICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ2F1ZGl0JylcclxuICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ3RvdGFsZmlsZXMnKVxyXG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnanVuaycpXHJcbiAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdlbXBsb3llZScpXHJcbiAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdyZXRhZycpXHJcblxyXG4gICAgdGhpcy5zaW5nbGVkYXRlID0gdGhpcy5kYXlqcyhuZXcgRGF0ZSgpKS5mb3JtYXQoJ1lZWVktTU0tREQnKVxyXG5cclxuICAgIGlmICgndXNlci1pbmZvJyBpbiBsb2NhbFN0b3JhZ2UpIHtcclxuICAgICAgdGhpcy51c2VyaW5mbyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXItaW5mbycpIHx8ICd7fScpXHJcbiAgICAgIHRoaXMudXNlciA9IHRoaXMudXNlcmluZm8/LnVzZXIgIFxyXG4gICAgICB0aGlzLnNlYXJjaERhdGEodGhpcy5zZWFyY2hBdWRpdCk7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi90aWNrZXRzL3VzZXJzXCJdLCB7IHF1ZXJ5UGFyYW1zOiB7dHlwZTonYXVkaXQnfSB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYXVkaXQudXNlckRldGFpbHMoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuZGF0YSkge1xyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3VzZXItaW5mbycsIEpTT04uc3RyaW5naWZ5KHJlcy5kYXRhKSk7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvdGlja2V0cy91c2Vyc1wiXSwgeyBxdWVyeVBhcmFtczoge3R5cGU6J2F1ZGl0J30gfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLmZvckVhY2goKHNiKSA9PiBzYi51bnN1YnNjcmliZSgpKTtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgaWYoY2hhbmdlc1snc2VhcmNoQXVkaXQnXSl7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hEYXRhKGNoYW5nZXNbJ3NlYXJjaEF1ZGl0J10uY3VycmVudFZhbHVlKTtcclxuICAgICAgICB0aGlzLm9mZnNldCA9IDE7XHJcbiAgICAgICAgdGhpcy5zaXplID0gMTA7XHJcbiAgICAgICAgdGhpcy5zb3J0QnkgPSAtMTtcclxuICAgICAgfVxyXG4gICAgICBpZihjaGFuZ2VzWydzZWxlY3RlZFR5cGUnXSl7XHJcbiAgICAgICAgdGhpcy5zaXplID0gMTA7XHJcbiAgICAgICAgdGhpcy5vZmZzZXQgPSAxO1xyXG4gICAgICAgIHRoaXMuZ2V0YXVkaXRkYXRhKCk7XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG4gIGdldGF1ZGl0ZGF0YSgpIHtcclxuICAgIHRoaXMuYXVkaXRMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuYXVkaXROb0RhdGEgPSBmYWxzZTtcclxuICAgIGxldCBwYXlsb2FkOmFueSA9IHtcclxuICAgICAgc2VhcmNoVmFsdWU6IHRoaXMuc2VhcmNoQXVkaXQsXHJcbiAgICAgIG1vZHVsZVR5cGU6dGhpcy5zZWxlY3RlZFR5cGUsXHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkLFxyXG4gICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LCBcclxuICAgICAgbGltaXQ6IHBhcnNlSW50KHRoaXMuc2l6ZS50b1N0cmluZygpKSxcclxuICAgICAgc29ydENvbHVtbk5hbWU6dGhpcy5zb3J0Q29sdW1OYW1lLFxyXG4gICAgICBzb3J0Qnk6dGhpcy5zb3J0QnlcclxuICAgIH1cclxuICAgIHRoaXMuYXVkaXQuZ2V0QXVkaXQocGF5bG9hZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6KHJlczphbnkpPT57XHJcbiAgICAgICAgaWYgKCFyZXMgfHwgcmVzLmNvZGUgPT0gMjA0KSB7XHJcbiAgICAgICAgICB0aGlzLmF1ZGl0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5hdWRpdE5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGFsaXN0ID0gcmVzLmRhdGE7XHJcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UgPSByZXM/LmRhdGE/LnJlc3VsdDtcclxuICAgICAgICAgIHRoaXMucmVjb3Jkc1RvdGFsID0gcmVzPy5kYXRhPy5jb3VudDsgXHJcbiAgICAgICAgICB0aGlzLnJlY29yZHNDb3VudCA9IHRoaXMuZGF0YVNvdXJjZS5sZW5ndGhcclxuICAgICAgICAgIGlmKHRoaXMucmVjb3Jkc1RvdGFsIDwgMTApeyB0aGlzLnBhZ2luYXRpb25TaXplcyA9IFt0aGlzLnJlY29yZHNUb3RhbF19ZWxzZSB7dGhpcy5wYWdpbmF0aW9uU2l6ZXMgPSBbMTAsMjAsMzBdfVxyXG4gICAgICAgICAgaWYgKHRoaXMuZGF0YVNvdXJjZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5hdWRpdExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5hdWRpdE5vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5hdWRpdExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5hdWRpdE5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSAgXHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOihlcnI6YW55KT0+IHtcclxuICAgICAgICB0aGlzLmF1ZGl0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuYXVkaXROb0RhdGEgPSB0cnVlO1xyXG4gICAgICB9LFxyXG4gICAgICBjb21wbGV0ZSgpIHt9XHJcbiAgICB9KVxyXG5cclxuICB9XHJcblxyXG4gIHNlYXJjaERhdGEodmFsdWU6YW55KSB7XHJcbiAgICB0aGlzLnNlYXJjaEF1ZGl0ID0gdmFsdWU7XHJcbiAgICB0aGlzLmdldGF1ZGl0ZGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgbWFwcGluZ2RhdGEoZGF0YTogYW55KSB7XHJcbiAgICAgIHZhciBvYmo6IGFueSA9IHtcclxuICAgICAgICB0b3RhbGZpbGVzOiB7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICgndG90YWxmaWxlcycgaW4gc2Vzc2lvblN0b3JhZ2UpIHtcclxuICBcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBvYmoudG90YWxmaWxlcy5xdWV1ZU5hbWUgPSBkYXRhLnF1ZXVlTmFtZVxyXG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ3RvdGFsZmlsZXMnLCBKU09OLnN0cmluZ2lmeShvYmopKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3RpY2tldHMvYXVkaXQnXSx7IHF1ZXJ5UGFyYW1zOiB7dHlwZTogdGhpcy5zZWxlY3RlZFR5cGV9IH0pXHJcbiAgfVxyXG4gIFxyXG4gIGRhdGVjaGFuZ2UoZGF0ZTogYW55KSB7XHJcbiAgICB0aGlzLnNpbmdsZWRhdGUgPSBkYXRlXHJcbiAgfVxyXG5cclxuICByZWRpcmVjdFRvem9uZShzb3VyY2U6YW55KXtcclxuICAgICB0aGlzLnNlbGVjdGVkQ2xpZW50ID0gc291cmNlPy5jbGllbnRJZDtcclxuICB9XHJcblxyXG4gIGdldFRvZGF5KCkge1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdXHJcbiB9XHJcbiBvblBhZ2VDaGFuZ2UocGFnZU9mZnNldDphbnkpe1xyXG4gICB0aGlzLm9mZnNldCA9IHBhZ2VPZmZzZXQ7XHJcbiAgIHRoaXMuZ2V0YXVkaXRkYXRhKCk7XHJcbiB9XHJcbiBvblBhZ2VTaXplQ2hhbmdlKHBhZ2VTaXplOmFueSl7XHJcbiAgICB0aGlzLnNpemUgPSBwYWdlU2l6ZTtcclxuICAgIHRoaXMub2Zmc2V0ID0gMTtcclxuICAgIHRoaXMuZ2V0YXVkaXRkYXRhKCk7XHJcbiB9XHJcbiBzb3J0RGF0YSh2YWx1ZTphbnkpe1xyXG4gIHRoaXMuc29ydENvbHVtTmFtZSA9IHZhbHVlO1xyXG4gIHRoaXMuc29ydEJ5ICo9IC0xO1xyXG4gIHRoaXMuZ2V0YXVkaXRkYXRhKCk7XHJcbiB9XHJcblxyXG4gc2V0cGFnZVNpemUoKXtcclxuICBpZih0aGlzLnJlY29yZHNUb3RhbCA8IDEwKXtcclxuICAgICByZXR1cm4gdGhpcy5yZWNvcmRzVG90YWw7XHJcbiAgfWVsc2V7IFxyXG4gICAgcmV0dXJuIHRoaXMuc2l6ZTtcclxuICB9XHJcbiB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYXJkIGJvcmRlci0wXCI+XHJcbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwLTBcIj4gLS0+XHJcbiAgICAgICAgPCEtLSA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWxhYmVsIGZ3LWJvbGQgdGV4dC1kYXJrXCI+QXVkaXQgTWFuYWdlbWVudDwvc3Bhbj4gLS0+XHJcbiAgICAgICAgPCEtLSA8cCBjbGFzcz1cInRleHQtZ3JheS00MDAgZnctYm9sZCBmcy01IG10LTFcIj5cclxuICAgICAgICAgICAgVG90YWwge3tkYXRhbGlzdCA/IGRhdGFsaXN0Py50b3RhbFN0b3JlczonMCd9fSBTdG9yZXM8L3A+IC0tPlxyXG4gICAgICAgIDwhLS0gPC9oMz4gLS0+XHJcbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyIFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTEgcG9zaXRpb24tYWJzb2x1dGUgbXMtNlwiPlxyXG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8cmVjdCBvcGFjaXR5PVwiMC41XCIgeD1cIjE3LjAzNjVcIiB5PVwiMTUuMTIyM1wiIHdpZHRoPVwiOC4xNTU0NlwiIGhlaWdodD1cIjJcIiByeD1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInJvdGF0ZSg0NSAxNy4wMzY1IDE1LjEyMjMpXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvcmVjdD5cclxuICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgZD1cIk0xMSAxOUM2LjU1NTU2IDE5IDMgMTUuNDQ0NCAzIDExQzMgNi41NTU1NiA2LjU1NTU2IDMgMTEgM0MxNS40NDQ0IDMgMTkgNi41NTU1NiAxOSAxMUMxOSAxNS40NDQ0IDE1LjQ0NDQgMTkgMTEgMTlaTTExIDVDNy41MzMzMyA1IDUgNy41MzMzMyA1IDExQzUgMTQuNDY2NyA3LjUzMzMzIDE3IDExIDE3QzE0LjQ2NjcgMTcgMTcgMTQuNDY2NyAxNyAxMUMxNyA3LjUzMzMzIDE0LjQ2NjcgNSAxMSA1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIChjaGFuZ2UpPVwic2VhcmNoRGF0YSgpXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hWYWx1ZVwiIFxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdy0zMDBweCBwcy0xNFwiIG5hbWU9XCJzZWFyY2hcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggYnkgQ2xpZW50IE5hbWUgLyBJRFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIC8+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lXCIgW2Rpc2FibGVkXT1cImF1ZGl0TG9hZGluZyB8fCBhdWRpdE5vRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZXhwb3J0QXNYbHN4KClcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNMTQuMTY2NyA2LjY2NjY3TDEwIDIuNU0xMCAyLjVMNS44MzMzMyA2LjY2NjY3TTEwIDIuNVYxMi41XCIgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJtcy0yXCI+e3tleHBvcnRCdG5UZXh0fX08L3NwYW4+IDwvYnV0dG9uPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICA8IS0tIDwvZGl2PiAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB4LTAgcHQtMTBcIiAqbmdJZj1cIiFhdWRpdExvYWRpbmcgJiYgIWF1ZGl0Tm9EYXRhICYmIHNlbGVjdGVkVHlwZSA9PT0ndHJhZmZpYydcIj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGJvdHRvbS1ib3JkZXIgdGV4dC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkJyYW5kIE5hbWU8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5CcmFuZCBJRDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlBlbmRpbmcgUXVldWU8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5QZW5kaW5nIFVzZXI8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5Db21wbGV0ZWQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5BY3Rpb248L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgc291cmNlIG9mIGRhdGFTb3VyY2UgOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4ge3tzb3VyY2U/LmNsaWVudE5hbWV9fSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImQtZmxleCBtdC0zXCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic291cmNlPy5pc0RyYWZ0XCIgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1wcmltYXJ5IG14LTJcIj5EcmFmdGVkPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic291cmNlPy5pc0Fzc2lnbmVkXCIgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1wcmltYXJ5IG14LTJcIj5Bc3NpZ25lZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tzb3VyY2U/LmNsaWVudElkID8gc291cmNlPy5jbGllbnRJZCA6ICctLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3NvdXJjZT8ucGVuZGluZ0J5UXVldWUgPz8gJy0tJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7c291cmNlPy5wZW5kaW5nQnlVc2VyID8/ICctLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4ge3tzb3VyY2U/LmNvbXBsZXRlZFN0b3Jlc0NvdW50ID8/ICctLSd9fSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzb3VyY2U/LmNvbXBsZXRlZENvdW50XCIgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG10LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMHB4IGgtMTBweCByb3VuZGVkLTUgYmctc3VjY2VzcyBtZS01XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tzb3VyY2U/LmNvbXBsZXRlZFJhdGlvfX0gJTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvdGQ+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0biBidG4tb3V0bGluZSB0ZXh0LWNhcGl0YWxpemUgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibWFwcGluZ2RhdGEoc291cmNlKVwiIFtkaXNhYmxlZF09XCIhc291cmNlPy5pc0VuYWJsZVwiPiBTdGFydCA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+ICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8bGliLXBhZ2luYXRpb24gW2l0ZW1zUGVyUGFnZV09XCJzaXplXCIgW2N1cnJlbnRQYWdlXT1cIm9mZnNldFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0b3RhbEl0ZW1zXT1cInJlY29yZHNUb3RhbFwiIFtwYWdpbmF0aW9uU2l6ZXNdPVwicGFnaW5hdGlvblNpemVzXCIgW3BhZ2VTaXplXT1cInNldHBhZ2VTaXplKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj48L2xpYi1wYWdpbmF0aW9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweC0wIHB0LTEwXCIgKm5nSWY9XCIhYXVkaXRMb2FkaW5nICYmICFhdWRpdE5vRGF0YSAmJiBzZWxlY3RlZFR5cGUgPT09J3pvbmUnXCI+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPiAgXHJcbiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYm90dG9tLWJvcmRlciB0ZXh0LW5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+QnJhbmQgTmFtZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+QnJhbmQgSUQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5QZW5kaW5nIFF1ZXVlPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+UGVuZGluZyBVc2VyPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+Q29tcGxldGVkPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5BY3Rpb248L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBzb3VyY2Ugb2YgZGF0YVNvdXJjZSA7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+IHt7c291cmNlPy5jbGllbnROYW1lfX0gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImQtZmxleCBtdC0zXCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzb3VyY2U/LmlzRHJhZnRcIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlciBteC0yXCI+RHJhZnRlZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic291cmNlPy5pc0Fzc2lnbmVkXCIgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1wcmltYXJ5IG14LTJcIj5Bc3NpZ25lZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tzb3VyY2U/LmNsaWVudElkID8gc291cmNlPy5jbGllbnRJZCA6ICctLSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7c291cmNlPy5wZW5kaW5nQnlRdWV1ZSA/PyAnLS0nfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3NvdXJjZT8ucGVuZGluZ0J5VXNlciA/PyAnLS0nfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4ge3tzb3VyY2U/LmNvbXBsZXRlZFN0b3Jlc0NvdW50ID8/ICctLSd9fSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNvdXJjZT8uY29tcGxldGVkQ291bnRcIiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTBweCBoLTEwcHggcm91bmRlZC01IGJnLXN1Y2Nlc3MgbWUtNVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tzb3VyY2U/LmNvbXBsZXRlZFJhdGlvfX0gJTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC90ZD4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4gYnRuLW91dGxpbmUgdGV4dC1jYXBpdGFsaXplIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibWFwcGluZ2RhdGEoc291cmNlKVwiIFtkaXNhYmxlZF09XCIhc291cmNlPy5pc0VuYWJsZVwiPiBTdGFydCA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tICpuZ0lmPVwiIXNvdXJjZT8uaXNFbmFibGVcIiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwiYmFkZ2UgcHktMyBweC00IGZzLTcgYmFkZ2UtbGlnaHQtc2Vjb25kYXJ5IHRleHQtc2Vjb25kYXJ5IHRleHQtY2FwaXRhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlNUQVJUPC9zcGFuPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPiAgIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxsaWItcGFnaW5hdGlvbiBbaXRlbXNQZXJQYWdlXT1cInNpemVcIiBbY3VycmVudFBhZ2VdPVwib2Zmc2V0XCJcclxuICAgICAgICAgICAgICAgICAgICBbdG90YWxJdGVtc109XCJyZWNvcmRzVG90YWxcIiBbcGFnaW5hdGlvblNpemVzXT1cInBhZ2luYXRpb25TaXplc1wiIFtwYWdlU2l6ZV09XCJzZXRwYWdlU2l6ZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj48L2xpYi1wYWdpbmF0aW9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXVkaXRMb2FkaW5nXCIgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXVkaXROb0RhdGFcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmMgdy0yNVwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PiBcclxuXHJcbiAgICA8IS0tIDxhcHAtZGF0ZS1yYW5nZS1waWNrZXIgbmFtZT1cImFwcC1yYW5nZS1waWNrZXItc2luZ2xlXCIgdHlwZT1cInNpbmdsZVwiIChjaGFuZ2UpPVwiZGF0ZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICBpZD1cImRhdGVjbGFzc1wiPlxyXG4gIDwvYXBwLWRhdGUtcmFuZ2UtcGlja2VyPiAtLT4iXX0=
|