@aggdirect/coolmap 2.5.3 → 2.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/esm2020/lib/component/add-route/add-route.component.mjs +6 -6
  2. package/esm2020/lib/component/job-code/job-code.component.mjs +4 -4
  3. package/esm2020/lib/component/map/map.component.mjs +4 -4
  4. package/esm2020/lib/component/nav/layout/add-route-nav/add-route-nav.component.mjs +7 -7
  5. package/esm2020/lib/component/nav/layout/job-code-nav/job-code-nav.component.mjs +7 -7
  6. package/esm2020/lib/component/nav/nav.component.mjs +4 -4
  7. package/esm2020/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.mjs +4 -4
  8. package/esm2020/lib/component/route-jobcode-list/route-jobcode-list.component.mjs +6 -6
  9. package/esm2020/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.mjs +4 -4
  10. package/esm2020/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.mjs +4 -4
  11. package/esm2020/lib/component/shared/dialog/dialog.component.mjs +4 -4
  12. package/esm2020/lib/component/shared/estimation-display/estimation-display.component.mjs +4 -4
  13. package/esm2020/lib/component/shared/job-route-list/job-route-list.component.mjs +7 -7
  14. package/esm2020/lib/component/shared/jobcode-overview/jobcode-overview.component.mjs +4 -4
  15. package/esm2020/lib/component/shared/jobcode-status/jobcode-status.component.mjs +4 -4
  16. package/esm2020/lib/component/shared/route-info-card/route-info-card.component.mjs +4 -4
  17. package/esm2020/lib/coolmap.module.mjs +5 -5
  18. package/fesm2015/aggdirect-coolmap.mjs +57 -57
  19. package/fesm2015/aggdirect-coolmap.mjs.map +1 -1
  20. package/fesm2020/aggdirect-coolmap.mjs +57 -57
  21. package/fesm2020/aggdirect-coolmap.mjs.map +1 -1
  22. package/lib/component/add-route/add-route.component.d.ts +1 -1
  23. package/lib/component/job-code/job-code.component.d.ts +1 -1
  24. package/lib/component/map/map.component.d.ts +2 -2
  25. package/lib/component/nav/layout/add-route-nav/add-route-nav.component.d.ts +1 -1
  26. package/lib/component/nav/layout/job-code-nav/job-code-nav.component.d.ts +1 -1
  27. package/lib/component/nav/nav.component.d.ts +1 -1
  28. package/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.d.ts +1 -1
  29. package/lib/component/route-jobcode-list/route-jobcode-list.component.d.ts +1 -1
  30. package/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.d.ts +1 -1
  31. package/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.d.ts +1 -1
  32. package/lib/component/shared/dialog/dialog.component.d.ts +1 -1
  33. package/lib/component/shared/estimation-display/estimation-display.component.d.ts +1 -1
  34. package/lib/component/shared/job-route-list/job-route-list.component.d.ts +1 -1
  35. package/lib/component/shared/jobcode-overview/jobcode-overview.component.d.ts +1 -1
  36. package/lib/component/shared/jobcode-status/jobcode-status.component.d.ts +1 -1
  37. package/lib/component/shared/route-info-card/route-info-card.component.d.ts +1 -1
  38. package/package.json +4 -12
@@ -8,8 +8,8 @@ import * as i2 from "@angular/material/dialog";
8
8
  import * as i3 from "@angular/common";
9
9
  import * as i4 from "@angular/cdk/drag-drop";
10
10
  import * as i5 from "@angular/forms";
11
- import * as i6 from "@angular/material/form-field";
12
- import * as i7 from "@angular/material/input";
11
+ import * as i6 from "@angular/material/input";
12
+ import * as i7 from "@angular/material/form-field";
13
13
  import * as i8 from "@angular/material/select";
14
14
  import * as i9 from "@angular/material/core";
15
15
  import * as i10 from "@angular/material/icon";
@@ -309,9 +309,9 @@ export class AddRouteComponent {
309
309
  this.destroyer$.unsubscribe();
310
310
  }
311
311
  }
312
- AddRouteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AddRouteComponent, deps: [{ token: i1.CoolmapService }, { token: i1.UtilsService }, { token: i2.MatDialog }, { token: 'memberData' }], target: i0.ɵɵFactoryTarget.Component });
313
- AddRouteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AddRouteComponent, selector: "app-add-route", inputs: { routeData: "routeData", customerRepoDetails: "customerRepoDetails" }, outputs: { changeNav: "changeNav", updateRouteList: "updateRouteList" }, viewQueries: [{ propertyName: "filterPickup", first: true, predicate: ["filterPickup"], descendants: true }, { propertyName: "filterDelivery", first: true, predicate: ["filterDelivery"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"addroutebox\">\n <div class=\"routedetailbox\" *ngIf=\"enablePopUp\">\n <div class=\"closebtnroutedetail\">\n <mat-icon (click)=\"prevantPopupClose = false; enablePopUp = false;\">clear</mat-icon>\n </div>\n <lib-route-info-card [propData]=\"{className: 'routeCard', repository: config['repository']}\" [popupData]=\"popupDetails\"></lib-route-info-card>\n <div class=\"createTxt\">\n <small>\n Created by {{popupDetails['created_by_name']}} on {{popupDetails['created_at']}}\n </small>\n <button class=\"editbtn\" (click)=\"editEvent()\">Edit</button>\n </div>\n </div>\n <div class=\"add_add_route_box\" cdkDrag [style.visibility]=\"!enableForm ? 'hidden' : 'visible'\">\n <div class=\"topheadingprt\">\n <h2> {{routeId? 'EDIT' : 'ADD'}} ROUTE </h2>\n <div class=\"buttonprt\">\n <button *ngIf=\"routeId\" class=\"delbtn\" (click)=\"openDialog()\">Delete</button>\n <button mat-raised-button type=\"submit\" class=\"closebtn\" (click)=\"changeNav.next('Addroute')\">Close</button>\n </div>\n </div>\n <form [formGroup]=\"addRouteForm\">\n <div class=\"route_form_area\">\n <div class=\"col-6\">\n <mat-form-field>\n <mat-label>Route Name</mat-label>\n <input matInput formControlName=\"route_name\" autocomplete=\"nope\" (mousedown)=\"$event.stopPropagation()\">\n <mat-error *ngIf=\"addRouteForm.controls['route_name'].hasError('required')\">\n Route Name is required\n </mat-error>\n </mat-form-field>\n </div>\n <div class=\"col-6\">\n <mat-form-field>\n <input type=\"text\" placeholder=\"Customer Name\" matInput formControlName=\"customer_name\" [matAutocomplete]=\"auto\" (mousedown)=\"$event.stopPropagation()\">\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\n <mat-option *ngFor=\"let customer of customersList$ | async\" [value]=\"customer['customer_name']\">\n {{customer['customer_name']}}\n </mat-option>\n </mat-autocomplete>\n <mat-error *ngIf=\"addRouteForm.controls['customer_name'].hasError('required')\">\n Customer name is required.\n </mat-error>\n </mat-form-field>\n </div>\n <div class=\"col-6\">\n <mat-form-field>\n <mat-label>Pickup</mat-label>\n <input type=\"text\" placeholder=\"Search...\" matInput #filterPickup [matAutocomplete]=\"pickupAutocomplete\"\n formControlName=\"pickup_location\" (mousedown)=\"$event.stopPropagation()\">\n\n <mat-autocomplete #pickupAutocomplete=\"matAutocomplete\">\n <mat-option (click)=\"selectedLongLat('pickup', option)\" *ngFor=\"let option of pickupOptions\"\n [value]=\"option?.place_name\">\n {{option?.place_name}}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n <mat-error *ngIf=\"addRouteForm.controls['pickup_lat_lng'].touched && addRouteForm.controls['pickup_lat_lng'].hasError('required')\">\n Please select pickup location from the list.\n </mat-error>\n </div>\n <div class=\"col-6\">\n <mat-form-field>\n <mat-label>Delivery</mat-label>\n <input type=\"text\" placeholder=\"Search...\" matInput #filterDelivery [matAutocomplete]=\"deliveryAutocomplete\"\n formControlName=\"delivery_location\" (mousedown)=\"$event.stopPropagation()\">\n <mat-autocomplete #deliveryAutocomplete=\"matAutocomplete\">\n <mat-option (click)=\"selectedLongLat('delivery', option)\" *ngFor=\"let option of deliveryOptions\"\n [value]=\"option?.place_name\">\n {{option?.place_name}}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n <mat-error *ngIf=\"addRouteForm.controls['delivery_lat_lng'].touched && addRouteForm.controls['delivery_lat_lng'].hasError('required')\">\n Please select delivery location from the list.\n </mat-error>\n </div>\n <div class=\"col-6\">\n <mat-form-field>\n <mat-label>Notes</mat-label>\n <textarea style=\"height: 18px; resize: none;\" matInput name=\"\" id=\"\" cols=\"30\" rows=\"10\" formControlName=\"note\" autocomplete=\"nope\" (mousedown)=\"$event.stopPropagation()\"></textarea>\n <mat-error *ngIf=\"addRouteForm.controls['note'].hasError('maxlength')\">\n Notes should be within 2048 characters.\n </mat-error>\n </mat-form-field>\n </div>\n\n <div class=\"col-6 d-flex\">\n <div class=\"inputbox m-0\">\n <mat-form-field>\n <mat-label>Unit type</mat-label>\n <mat-select formControlName=\"unit_id\" (selectionChange)=\"checkAndFetchRouteInformation()\" (mousedown)=\"$event.stopPropagation()\">\n <mat-option *ngFor=\"let unit of unitsList\" [value]=\"unit?.id\"> {{unit?.type}} </mat-option>\n </mat-select>\n <mat-error *ngIf=\"addRouteForm.controls['unit_id'].hasError('required')\">\n Unit is required\n </mat-error>\n </mat-form-field>\n </div>\n\n <div class=\"inputbox m-0\">\n <mat-form-field>\n <mat-label>Material</mat-label>\n <mat-select formControlName=\"materials_id\" (mousedown)=\"$event.stopPropagation()\">\n <mat-option *ngFor=\"let material of materialsList\" [value]=\"config.repository === 'coolmap' ? material?.material_id : material?.sub_material_id\"> {{config.repository === 'coolmap' ? material?.material : material?.label}}\n </mat-option>\n </mat-select>\n <mat-error *ngIf=\"addRouteForm.controls['materials_id'].hasError('required')\">\n Material is required\n </mat-error>\n </mat-form-field>\n </div>\n </div>\n <div class=\"col-6\">\n <app-estimation-display *ngIf=\"addRouteForm?.value?.pickup_lat_lng && addRouteForm?.value?.delivery_lat_lng\" [value]=\"addRouteForm['value']\"></app-estimation-display>\n </div>\n <div class=\"col-6\" *ngIf=\"addRouteForm['value']['trucker_pay_estimate'] && addRouteForm['value']['customer_price_estimate']\">\n <span *ngIf=\"config['repository'] !== 'customer'\" class=\"estimate\" (mousedown)=\"$event.stopPropagation()\">\n Trucker Pay Estimate - <b>{{'$'+ addRouteForm['value']['trucker_pay_estimate']}}</b>\n </span>\n <span class=\"estimate\" (mousedown)=\"$event.stopPropagation()\">\n Customer Price Estimate - <b>{{'$'+ addRouteForm['value']['customer_price_estimate']}}</b>\n </span>\n </div>\n <button mat-raised-button type=\"submit\" (click)=\"saveRoute()\" *ngIf=\"preventSave\"\n [disabled]=\"addRouteForm.invalid && preventSave || preventInitialSave\">{{routeId? 'Update' : 'Save'}}\n </button>\n <div class=\"loader\">\n <mat-spinner *ngIf=\"!preventSave\"></mat-spinner>\n </div>\n </div>\n </form>\n </div>\n</div>\n", styles: [".addroutebox{width:calc(100% - 315px);position:absolute;left:300px;bottom:10px;z-index:999;display:flex;justify-content:space-between;align-items:flex-start}.addroutebox .routedetailbox{max-width:300px;padding:10px;background-color:#fff;border-radius:20px;margin-right:20px}@media (min-width: 1600px){.addroutebox .routedetailbox{max-width:280px}}.addroutebox .editbtn{background:#326ad3;padding:10px 25px;color:#fff;font-size:.8125rem;border-radius:30px;float:right}.add_add_route_box{background:white;padding:10px 20px;border-radius:20px;box-shadow:2px 4px 4px 2px #00000024;height:370px;width:100%;position:relative;cursor:move}.add_add_route_box .route_form_area{display:flex;flex-wrap:wrap;justify-content:space-between}.add_add_route_box .route_form_area .col-6{width:48%;margin-top:15px;justify-content:space-between}.add_add_route_box .route_form_area .col-6 .inputbox{width:47%}.add_add_route_box .route_form_area .col-6 span{font-size:.875rem}.add_add_route_box .route_form_area button{background:#326ad3;padding:0 18px;color:#fff;font-size:.8125rem;border-radius:30px;position:absolute;right:18px;top:20px;height:35px}.closebtn{background:black;color:#fff;border-radius:30px;padding:0 18px;margin-left:10px;height:35px}.delbtn{background:red;color:#fff;border-radius:30px;padding:10px 18px}.add_route_listingpart .listing_toggle{background:white;border-radius:15px;padding:8px 10px;position:absolute;right:10px;top:30px;cursor:pointer}.listing_box{background:#282828;height:100vh;position:fixed;right:0;top:0;z-index:1111;box-shadow:-3px 0 5px #ffffff14;transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;width:0;border-radius:40px 0 0 40px;opacity:0}.listing_box .closebtn{display:none}.show .listing_box{width:250px;max-width:250px;flex:0 0 250px;transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;padding:40px 0 40px 20px;opacity:1}@media (min-width: 1600px){.show .listing_box{width:320px;max-width:320px;flex:0 0 320px}}.show .listing_box h2{color:#fff;white-space:nowrap}.show .listing_box ul{padding:0 20px 0 0}.show .listing_box ul li{background:#4a4a4a;padding:15px;border-radius:15px;display:flex;margin-bottom:15px}.show .listing_box ul li .companayIcon{width:40px;height:40px;border-radius:10px;background:white;margin-right:10px;display:flex;justify-content:center;align-items:center}.show .listing_box ul li .company_cont{width:calc(100% - 50px)}.show .listing_box ul li .company_cont h3{color:#fff;font-size:15px;font-weight:400;margin:0;text-overflow:ellipsis;max-width:129px;-webkit-box-orient:vertical;white-space:nowrap;overflow:hidden}@media (min-width: 1600px){.show .listing_box ul li .company_cont h3{max-width:170px}}.show .listing_box ul li .company_cont p{color:#bcbcbc;font-size:12px;margin:5px 0;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:16px}.show .closebtn{position:absolute;left:-33px;top:50px;background:#282828;color:#fff;padding:8px;border-top-left-radius:15px;border-bottom-left-radius:15px;cursor:pointer;box-shadow:-4px 2px 5px #ffffff14;display:block}.loader{position:absolute;width:95%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.buttonprt{margin-right:83px}.closebtnroutedetail{box-shadow:0 0 5px #0000001c;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer;background:#fff;position:absolute;top:-11px;left:-11px}.routenotes{max-height:170px;overflow:auto}.estimate{margin-right:20px;font-size:.7rem}@media (min-width: 1600px){.estimate{font-size:.95rem}}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i11.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i11.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i12.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i13.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i14.EstimationDisplayComponent, selector: "app-estimation-display", inputs: ["value"] }, { kind: "component", type: i15.RouteInfoCardComponent, selector: "lib-route-info-card", inputs: ["popupData", "propData"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
314
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AddRouteComponent, decorators: [{
312
+ AddRouteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AddRouteComponent, deps: [{ token: i1.CoolmapService }, { token: i1.UtilsService }, { token: i2.MatDialog }, { token: 'memberData' }], target: i0.ɵɵFactoryTarget.Component });
313
+ AddRouteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AddRouteComponent, selector: "app-add-route", inputs: { routeData: "routeData", customerRepoDetails: "customerRepoDetails" }, outputs: { changeNav: "changeNav", updateRouteList: "updateRouteList" }, viewQueries: [{ propertyName: "filterPickup", first: true, predicate: ["filterPickup"], descendants: true }, { propertyName: "filterDelivery", first: true, predicate: ["filterDelivery"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"addroutebox\">\n <div class=\"routedetailbox\" *ngIf=\"enablePopUp\">\n <div class=\"closebtnroutedetail\">\n <mat-icon (click)=\"prevantPopupClose = false; enablePopUp = false;\">clear</mat-icon>\n </div>\n <lib-route-info-card [propData]=\"{className: 'routeCard', repository: config['repository']}\" [popupData]=\"popupDetails\"></lib-route-info-card>\n <div class=\"createTxt\">\n <small>\n Created by {{popupDetails['created_by_name']}} on {{popupDetails['created_at']}}\n </small>\n <button class=\"editbtn\" (click)=\"editEvent()\">Edit</button>\n </div>\n </div>\n <div class=\"add_add_route_box\" cdkDrag [style.visibility]=\"!enableForm ? 'hidden' : 'visible'\">\n <div class=\"topheadingprt\">\n <h2> {{routeId? 'EDIT' : 'ADD'}} ROUTE </h2>\n <div class=\"buttonprt\">\n <button *ngIf=\"routeId\" class=\"delbtn\" (click)=\"openDialog()\">Delete</button>\n <button mat-raised-button type=\"submit\" class=\"closebtn\" (click)=\"changeNav.next('Addroute')\">Close</button>\n </div>\n </div>\n <form [formGroup]=\"addRouteForm\">\n <div class=\"route_form_area\">\n <div class=\"col-6\">\n <mat-form-field>\n <mat-label>Route Name</mat-label>\n <input matInput formControlName=\"route_name\" autocomplete=\"nope\" (mousedown)=\"$event.stopPropagation()\">\n <mat-error *ngIf=\"addRouteForm.controls['route_name'].hasError('required')\">\n Route Name is required\n </mat-error>\n </mat-form-field>\n </div>\n <div class=\"col-6\">\n <mat-form-field>\n <input type=\"text\" placeholder=\"Customer Name\" matInput formControlName=\"customer_name\" [matAutocomplete]=\"auto\" (mousedown)=\"$event.stopPropagation()\">\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\n <mat-option *ngFor=\"let customer of customersList$ | async\" [value]=\"customer['customer_name']\">\n {{customer['customer_name']}}\n </mat-option>\n </mat-autocomplete>\n <mat-error *ngIf=\"addRouteForm.controls['customer_name'].hasError('required')\">\n Customer name is required.\n </mat-error>\n </mat-form-field>\n </div>\n <div class=\"col-6\">\n <mat-form-field>\n <mat-label>Pickup</mat-label>\n <input type=\"text\" placeholder=\"Search...\" matInput #filterPickup [matAutocomplete]=\"pickupAutocomplete\"\n formControlName=\"pickup_location\" (mousedown)=\"$event.stopPropagation()\">\n\n <mat-autocomplete #pickupAutocomplete=\"matAutocomplete\">\n <mat-option (click)=\"selectedLongLat('pickup', option)\" *ngFor=\"let option of pickupOptions\"\n [value]=\"option?.place_name\">\n {{option?.place_name}}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n <mat-error *ngIf=\"addRouteForm.controls['pickup_lat_lng'].touched && addRouteForm.controls['pickup_lat_lng'].hasError('required')\">\n Please select pickup location from the list.\n </mat-error>\n </div>\n <div class=\"col-6\">\n <mat-form-field>\n <mat-label>Delivery</mat-label>\n <input type=\"text\" placeholder=\"Search...\" matInput #filterDelivery [matAutocomplete]=\"deliveryAutocomplete\"\n formControlName=\"delivery_location\" (mousedown)=\"$event.stopPropagation()\">\n <mat-autocomplete #deliveryAutocomplete=\"matAutocomplete\">\n <mat-option (click)=\"selectedLongLat('delivery', option)\" *ngFor=\"let option of deliveryOptions\"\n [value]=\"option?.place_name\">\n {{option?.place_name}}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n <mat-error *ngIf=\"addRouteForm.controls['delivery_lat_lng'].touched && addRouteForm.controls['delivery_lat_lng'].hasError('required')\">\n Please select delivery location from the list.\n </mat-error>\n </div>\n <div class=\"col-6\">\n <mat-form-field>\n <mat-label>Notes</mat-label>\n <textarea style=\"height: 18px; resize: none;\" matInput name=\"\" id=\"\" cols=\"30\" rows=\"10\" formControlName=\"note\" autocomplete=\"nope\" (mousedown)=\"$event.stopPropagation()\"></textarea>\n <mat-error *ngIf=\"addRouteForm.controls['note'].hasError('maxlength')\">\n Notes should be within 2048 characters.\n </mat-error>\n </mat-form-field>\n </div>\n\n <div class=\"col-6 d-flex\">\n <div class=\"inputbox m-0\">\n <mat-form-field>\n <mat-label>Unit type</mat-label>\n <mat-select formControlName=\"unit_id\" (selectionChange)=\"checkAndFetchRouteInformation()\" (mousedown)=\"$event.stopPropagation()\">\n <mat-option *ngFor=\"let unit of unitsList\" [value]=\"unit?.id\"> {{unit?.type}} </mat-option>\n </mat-select>\n <mat-error *ngIf=\"addRouteForm.controls['unit_id'].hasError('required')\">\n Unit is required\n </mat-error>\n </mat-form-field>\n </div>\n\n <div class=\"inputbox m-0\">\n <mat-form-field>\n <mat-label>Material</mat-label>\n <mat-select formControlName=\"materials_id\" (mousedown)=\"$event.stopPropagation()\">\n <mat-option *ngFor=\"let material of materialsList\" [value]=\"config.repository === 'coolmap' ? material?.material_id : material?.sub_material_id\"> {{config.repository === 'coolmap' ? material?.material : material?.label}}\n </mat-option>\n </mat-select>\n <mat-error *ngIf=\"addRouteForm.controls['materials_id'].hasError('required')\">\n Material is required\n </mat-error>\n </mat-form-field>\n </div>\n </div>\n <div class=\"col-6\">\n <app-estimation-display *ngIf=\"addRouteForm?.value?.pickup_lat_lng && addRouteForm?.value?.delivery_lat_lng\" [value]=\"addRouteForm['value']\"></app-estimation-display>\n </div>\n <div class=\"col-6\" *ngIf=\"addRouteForm['value']['trucker_pay_estimate'] && addRouteForm['value']['customer_price_estimate']\">\n <span *ngIf=\"config['repository'] !== 'customer'\" class=\"estimate\" (mousedown)=\"$event.stopPropagation()\">\n Trucker Pay Estimate - <b>{{'$'+ addRouteForm['value']['trucker_pay_estimate']}}</b>\n </span>\n <span class=\"estimate\" (mousedown)=\"$event.stopPropagation()\">\n Customer Price Estimate - <b>{{'$'+ addRouteForm['value']['customer_price_estimate']}}</b>\n </span>\n </div>\n <button mat-raised-button type=\"submit\" (click)=\"saveRoute()\" *ngIf=\"preventSave\"\n [disabled]=\"addRouteForm.invalid && preventSave || preventInitialSave\">{{routeId? 'Update' : 'Save'}}\n </button>\n <div class=\"loader\">\n <mat-spinner *ngIf=\"!preventSave\"></mat-spinner>\n </div>\n </div>\n </form>\n </div>\n</div>\n", styles: [".addroutebox{width:calc(100% - 315px);position:absolute;left:300px;bottom:10px;z-index:999;display:flex;justify-content:space-between;align-items:flex-start}.addroutebox .routedetailbox{max-width:300px;padding:10px;background-color:#fff;border-radius:20px;margin-right:20px}@media (min-width: 1600px){.addroutebox .routedetailbox{max-width:280px}}.addroutebox .editbtn{background:#326ad3;padding:10px 25px;color:#fff;font-size:.8125rem;border-radius:30px;float:right}.add_add_route_box{background:white;padding:10px 20px;border-radius:20px;box-shadow:2px 4px 4px 2px #00000024;height:370px;width:100%;position:relative;cursor:move}.add_add_route_box .route_form_area{display:flex;flex-wrap:wrap;justify-content:space-between}.add_add_route_box .route_form_area .col-6{width:48%;margin-top:15px;justify-content:space-between}.add_add_route_box .route_form_area .col-6 .inputbox{width:47%}.add_add_route_box .route_form_area .col-6 span{font-size:.875rem}.add_add_route_box .route_form_area button{background:#326ad3;padding:0 18px;color:#fff;font-size:.8125rem;border-radius:30px;position:absolute;right:18px;top:20px;height:35px}.closebtn{background:black;color:#fff;border-radius:30px;padding:0 18px;margin-left:10px;height:35px}.delbtn{background:red;color:#fff;border-radius:30px;padding:10px 18px}.add_route_listingpart .listing_toggle{background:white;border-radius:15px;padding:8px 10px;position:absolute;right:10px;top:30px;cursor:pointer}.listing_box{background:#282828;height:100vh;position:fixed;right:0;top:0;z-index:1111;box-shadow:-3px 0 5px #ffffff14;transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;width:0;border-radius:40px 0 0 40px;opacity:0}.listing_box .closebtn{display:none}.show .listing_box{width:250px;max-width:250px;flex:0 0 250px;transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;padding:40px 0 40px 20px;opacity:1}@media (min-width: 1600px){.show .listing_box{width:320px;max-width:320px;flex:0 0 320px}}.show .listing_box h2{color:#fff;white-space:nowrap}.show .listing_box ul{padding:0 20px 0 0}.show .listing_box ul li{background:#4a4a4a;padding:15px;border-radius:15px;display:flex;margin-bottom:15px}.show .listing_box ul li .companayIcon{width:40px;height:40px;border-radius:10px;background:white;margin-right:10px;display:flex;justify-content:center;align-items:center}.show .listing_box ul li .company_cont{width:calc(100% - 50px)}.show .listing_box ul li .company_cont h3{color:#fff;font-size:15px;font-weight:400;margin:0;text-overflow:ellipsis;max-width:129px;-webkit-box-orient:vertical;white-space:nowrap;overflow:hidden}@media (min-width: 1600px){.show .listing_box ul li .company_cont h3{max-width:170px}}.show .listing_box ul li .company_cont p{color:#bcbcbc;font-size:12px;margin:5px 0;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:16px}.show .closebtn{position:absolute;left:-33px;top:50px;background:#282828;color:#fff;padding:8px;border-top-left-radius:15px;border-bottom-left-radius:15px;cursor:pointer;box-shadow:-4px 2px 5px #ffffff14;display:block}.loader{position:absolute;width:95%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.buttonprt{margin-right:83px}.closebtnroutedetail{box-shadow:0 0 5px #0000001c;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer;background:#fff;position:absolute;top:-11px;left:-11px}.routenotes{max-height:170px;overflow:auto}.estimate{margin-right:20px;font-size:.7rem}@media (min-width: 1600px){.estimate{font-size:.95rem}}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i8.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i11.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i11.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i12.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i13.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i14.EstimationDisplayComponent, selector: "app-estimation-display", inputs: ["value"] }, { kind: "component", type: i15.RouteInfoCardComponent, selector: "lib-route-info-card", inputs: ["popupData", "propData"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
314
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AddRouteComponent, decorators: [{
315
315
  type: Component,
316
316
  args: [{ selector: 'app-add-route', template: "<div class=\"addroutebox\">\n <div class=\"routedetailbox\" *ngIf=\"enablePopUp\">\n <div class=\"closebtnroutedetail\">\n <mat-icon (click)=\"prevantPopupClose = false; enablePopUp = false;\">clear</mat-icon>\n </div>\n <lib-route-info-card [propData]=\"{className: 'routeCard', repository: config['repository']}\" [popupData]=\"popupDetails\"></lib-route-info-card>\n <div class=\"createTxt\">\n <small>\n Created by {{popupDetails['created_by_name']}} on {{popupDetails['created_at']}}\n </small>\n <button class=\"editbtn\" (click)=\"editEvent()\">Edit</button>\n </div>\n </div>\n <div class=\"add_add_route_box\" cdkDrag [style.visibility]=\"!enableForm ? 'hidden' : 'visible'\">\n <div class=\"topheadingprt\">\n <h2> {{routeId? 'EDIT' : 'ADD'}} ROUTE </h2>\n <div class=\"buttonprt\">\n <button *ngIf=\"routeId\" class=\"delbtn\" (click)=\"openDialog()\">Delete</button>\n <button mat-raised-button type=\"submit\" class=\"closebtn\" (click)=\"changeNav.next('Addroute')\">Close</button>\n </div>\n </div>\n <form [formGroup]=\"addRouteForm\">\n <div class=\"route_form_area\">\n <div class=\"col-6\">\n <mat-form-field>\n <mat-label>Route Name</mat-label>\n <input matInput formControlName=\"route_name\" autocomplete=\"nope\" (mousedown)=\"$event.stopPropagation()\">\n <mat-error *ngIf=\"addRouteForm.controls['route_name'].hasError('required')\">\n Route Name is required\n </mat-error>\n </mat-form-field>\n </div>\n <div class=\"col-6\">\n <mat-form-field>\n <input type=\"text\" placeholder=\"Customer Name\" matInput formControlName=\"customer_name\" [matAutocomplete]=\"auto\" (mousedown)=\"$event.stopPropagation()\">\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\n <mat-option *ngFor=\"let customer of customersList$ | async\" [value]=\"customer['customer_name']\">\n {{customer['customer_name']}}\n </mat-option>\n </mat-autocomplete>\n <mat-error *ngIf=\"addRouteForm.controls['customer_name'].hasError('required')\">\n Customer name is required.\n </mat-error>\n </mat-form-field>\n </div>\n <div class=\"col-6\">\n <mat-form-field>\n <mat-label>Pickup</mat-label>\n <input type=\"text\" placeholder=\"Search...\" matInput #filterPickup [matAutocomplete]=\"pickupAutocomplete\"\n formControlName=\"pickup_location\" (mousedown)=\"$event.stopPropagation()\">\n\n <mat-autocomplete #pickupAutocomplete=\"matAutocomplete\">\n <mat-option (click)=\"selectedLongLat('pickup', option)\" *ngFor=\"let option of pickupOptions\"\n [value]=\"option?.place_name\">\n {{option?.place_name}}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n <mat-error *ngIf=\"addRouteForm.controls['pickup_lat_lng'].touched && addRouteForm.controls['pickup_lat_lng'].hasError('required')\">\n Please select pickup location from the list.\n </mat-error>\n </div>\n <div class=\"col-6\">\n <mat-form-field>\n <mat-label>Delivery</mat-label>\n <input type=\"text\" placeholder=\"Search...\" matInput #filterDelivery [matAutocomplete]=\"deliveryAutocomplete\"\n formControlName=\"delivery_location\" (mousedown)=\"$event.stopPropagation()\">\n <mat-autocomplete #deliveryAutocomplete=\"matAutocomplete\">\n <mat-option (click)=\"selectedLongLat('delivery', option)\" *ngFor=\"let option of deliveryOptions\"\n [value]=\"option?.place_name\">\n {{option?.place_name}}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n <mat-error *ngIf=\"addRouteForm.controls['delivery_lat_lng'].touched && addRouteForm.controls['delivery_lat_lng'].hasError('required')\">\n Please select delivery location from the list.\n </mat-error>\n </div>\n <div class=\"col-6\">\n <mat-form-field>\n <mat-label>Notes</mat-label>\n <textarea style=\"height: 18px; resize: none;\" matInput name=\"\" id=\"\" cols=\"30\" rows=\"10\" formControlName=\"note\" autocomplete=\"nope\" (mousedown)=\"$event.stopPropagation()\"></textarea>\n <mat-error *ngIf=\"addRouteForm.controls['note'].hasError('maxlength')\">\n Notes should be within 2048 characters.\n </mat-error>\n </mat-form-field>\n </div>\n\n <div class=\"col-6 d-flex\">\n <div class=\"inputbox m-0\">\n <mat-form-field>\n <mat-label>Unit type</mat-label>\n <mat-select formControlName=\"unit_id\" (selectionChange)=\"checkAndFetchRouteInformation()\" (mousedown)=\"$event.stopPropagation()\">\n <mat-option *ngFor=\"let unit of unitsList\" [value]=\"unit?.id\"> {{unit?.type}} </mat-option>\n </mat-select>\n <mat-error *ngIf=\"addRouteForm.controls['unit_id'].hasError('required')\">\n Unit is required\n </mat-error>\n </mat-form-field>\n </div>\n\n <div class=\"inputbox m-0\">\n <mat-form-field>\n <mat-label>Material</mat-label>\n <mat-select formControlName=\"materials_id\" (mousedown)=\"$event.stopPropagation()\">\n <mat-option *ngFor=\"let material of materialsList\" [value]=\"config.repository === 'coolmap' ? material?.material_id : material?.sub_material_id\"> {{config.repository === 'coolmap' ? material?.material : material?.label}}\n </mat-option>\n </mat-select>\n <mat-error *ngIf=\"addRouteForm.controls['materials_id'].hasError('required')\">\n Material is required\n </mat-error>\n </mat-form-field>\n </div>\n </div>\n <div class=\"col-6\">\n <app-estimation-display *ngIf=\"addRouteForm?.value?.pickup_lat_lng && addRouteForm?.value?.delivery_lat_lng\" [value]=\"addRouteForm['value']\"></app-estimation-display>\n </div>\n <div class=\"col-6\" *ngIf=\"addRouteForm['value']['trucker_pay_estimate'] && addRouteForm['value']['customer_price_estimate']\">\n <span *ngIf=\"config['repository'] !== 'customer'\" class=\"estimate\" (mousedown)=\"$event.stopPropagation()\">\n Trucker Pay Estimate - <b>{{'$'+ addRouteForm['value']['trucker_pay_estimate']}}</b>\n </span>\n <span class=\"estimate\" (mousedown)=\"$event.stopPropagation()\">\n Customer Price Estimate - <b>{{'$'+ addRouteForm['value']['customer_price_estimate']}}</b>\n </span>\n </div>\n <button mat-raised-button type=\"submit\" (click)=\"saveRoute()\" *ngIf=\"preventSave\"\n [disabled]=\"addRouteForm.invalid && preventSave || preventInitialSave\">{{routeId? 'Update' : 'Save'}}\n </button>\n <div class=\"loader\">\n <mat-spinner *ngIf=\"!preventSave\"></mat-spinner>\n </div>\n </div>\n </form>\n </div>\n</div>\n", styles: [".addroutebox{width:calc(100% - 315px);position:absolute;left:300px;bottom:10px;z-index:999;display:flex;justify-content:space-between;align-items:flex-start}.addroutebox .routedetailbox{max-width:300px;padding:10px;background-color:#fff;border-radius:20px;margin-right:20px}@media (min-width: 1600px){.addroutebox .routedetailbox{max-width:280px}}.addroutebox .editbtn{background:#326ad3;padding:10px 25px;color:#fff;font-size:.8125rem;border-radius:30px;float:right}.add_add_route_box{background:white;padding:10px 20px;border-radius:20px;box-shadow:2px 4px 4px 2px #00000024;height:370px;width:100%;position:relative;cursor:move}.add_add_route_box .route_form_area{display:flex;flex-wrap:wrap;justify-content:space-between}.add_add_route_box .route_form_area .col-6{width:48%;margin-top:15px;justify-content:space-between}.add_add_route_box .route_form_area .col-6 .inputbox{width:47%}.add_add_route_box .route_form_area .col-6 span{font-size:.875rem}.add_add_route_box .route_form_area button{background:#326ad3;padding:0 18px;color:#fff;font-size:.8125rem;border-radius:30px;position:absolute;right:18px;top:20px;height:35px}.closebtn{background:black;color:#fff;border-radius:30px;padding:0 18px;margin-left:10px;height:35px}.delbtn{background:red;color:#fff;border-radius:30px;padding:10px 18px}.add_route_listingpart .listing_toggle{background:white;border-radius:15px;padding:8px 10px;position:absolute;right:10px;top:30px;cursor:pointer}.listing_box{background:#282828;height:100vh;position:fixed;right:0;top:0;z-index:1111;box-shadow:-3px 0 5px #ffffff14;transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;width:0;border-radius:40px 0 0 40px;opacity:0}.listing_box .closebtn{display:none}.show .listing_box{width:250px;max-width:250px;flex:0 0 250px;transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;padding:40px 0 40px 20px;opacity:1}@media (min-width: 1600px){.show .listing_box{width:320px;max-width:320px;flex:0 0 320px}}.show .listing_box h2{color:#fff;white-space:nowrap}.show .listing_box ul{padding:0 20px 0 0}.show .listing_box ul li{background:#4a4a4a;padding:15px;border-radius:15px;display:flex;margin-bottom:15px}.show .listing_box ul li .companayIcon{width:40px;height:40px;border-radius:10px;background:white;margin-right:10px;display:flex;justify-content:center;align-items:center}.show .listing_box ul li .company_cont{width:calc(100% - 50px)}.show .listing_box ul li .company_cont h3{color:#fff;font-size:15px;font-weight:400;margin:0;text-overflow:ellipsis;max-width:129px;-webkit-box-orient:vertical;white-space:nowrap;overflow:hidden}@media (min-width: 1600px){.show .listing_box ul li .company_cont h3{max-width:170px}}.show .listing_box ul li .company_cont p{color:#bcbcbc;font-size:12px;margin:5px 0;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:16px}.show .closebtn{position:absolute;left:-33px;top:50px;background:#282828;color:#fff;padding:8px;border-top-left-radius:15px;border-bottom-left-radius:15px;cursor:pointer;box-shadow:-4px 2px 5px #ffffff14;display:block}.loader{position:absolute;width:95%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.buttonprt{margin-right:83px}.closebtnroutedetail{box-shadow:0 0 5px #0000001c;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer;background:#fff;position:absolute;top:-11px;left:-11px}.routenotes{max-height:170px;overflow:auto}.estimate{margin-right:20px;font-size:.7rem}@media (min-width: 1600px){.estimate{font-size:.95rem}}\n"] }]
317
317
  }], ctorParameters: function () { return [{ type: i1.CoolmapService }, { type: i1.UtilsService }, { type: i2.MatDialog }, { type: i1.CoolmapConfigModel, decorators: [{
@@ -332,4 +332,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
332
332
  }], customerRepoDetails: [{
333
333
  type: Input
334
334
  }] } });
335
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXJvdXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAvc3JjL2xpYi9jb21wb25lbnQvYWRkLXJvdXRlL2FkZC1yb3V0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb29sbWFwL3NyYy9saWIvY29tcG9uZW50L2FkZC1yb3V0ZS9hZGQtcm91dGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBc0IsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQTRCLEtBQUssRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkosT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFjLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3JILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRcEUsTUFBTSxPQUFPLGlCQUFpQjtJQXlCNUIsWUFBbUIsY0FBOEIsRUFBUyxLQUFtQixFQUFTLE1BQWlCLEVBQ3hFLE1BQTBCO1FBRHRDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFTLFVBQUssR0FBTCxLQUFLLENBQWM7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ3hFLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBdkJ4QyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN2QyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDL0Qsa0JBQWEsR0FBUSxFQUFFLENBQUM7UUFDeEIsb0JBQWUsR0FBUSxFQUFFLENBQUM7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UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7OzhHQXZSVSxpQkFBaUIscUdBMEJsQixZQUFZO2tHQTFCWCxpQkFBaUIsb2JDYjlCLDZzT0F1SUE7MkZEMUhhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxlQUFlOzswQkE4QnRCLE1BQU07MkJBQUMsWUFBWTs0Q0F6QlksWUFBWTtzQkFBN0MsU0FBUzt1QkFBQyxjQUFjO2dCQUNXLGNBQWM7c0JBQWpELFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUNWLFNBQVM7c0JBQXpCLE1BQU07Z0JBQ1UsZUFBZTtzQkFBL0IsTUFBTTtnQkFRUyxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLG1CQUFtQjtzQkFBbEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBWaWV3Q2hpbGQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBTaW1wbGVDaGFuZ2VzLCBPbkNoYW5nZXMsIElucHV0LCBPbkRlc3Ryb3ksIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZyb21FdmVudCwgbWFwLCBPYnNlcnZhYmxlLCBzdGFydFdpdGgsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IENvb2xtYXBDb25maWdNb2RlbCwgQ29vbG1hcFNlcnZpY2UsIEN1c3RvbWVyUmVwb0RldGFpbHNNb2RlbCwgUm91dGUsIFV0aWxzU2VydmljZSB9IGZyb20gJ0BhZ2dkaXJlY3QvY29vbG1hcC1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9zaGFyZWQvZGlhbG9nL2RpYWxvZy5jb21wb25lbnQnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1hZGQtcm91dGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWRkLXJvdXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWRkLXJvdXRlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQWRkUm91dGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgnZmlsdGVyUGlja3VwJykgcHVibGljIGZpbHRlclBpY2t1cCE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2ZpbHRlckRlbGl2ZXJ5JykgcHVibGljIGZpbHRlckRlbGl2ZXJ5ITogRWxlbWVudFJlZjtcbiAgQE91dHB1dCgpIHB1YmxpYyBjaGFuZ2VOYXYgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyB1cGRhdGVSb3V0ZUxpc3QgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIHBpY2t1cE9wdGlvbnM6IGFueSA9IFtdO1xuICBkZWxpdmVyeU9wdGlvbnM6IGFueSA9IFtdO1xuICByZXF1ZXN0UGFybXNGb3JSb3V0ZURldGFpbHMgPSB7IHBpY2t1cF9sYXRfbG5nOiAnJywgZGVsaXZlcnlfbGF0X2xuZzogJycgfVxuICBjdXN0b21lcnNMaXN0OiBhbnkgPSBbXTtcbiAgdW5pdHNMaXN0OiBhbnkgPSBbXTtcbiAgbWF0ZXJpYWxzTGlzdDogYW55ID0gW107XG4gIGFkZFJvdXRlRm9ybSE6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgcHVibGljIHJvdXRlRGF0YSE6IFJvdXRlO1xuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tZXJSZXBvRGV0YWlscyE6IEN1c3RvbWVyUmVwb0RldGFpbHNNb2RlbDtcbiAgcm91dGVJZDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcHJldmVudFNhdmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJldmVudEluaXRpYWxTYXZlOiBib29sZWFuID0gZmFsc2U7XG4gIGN1c3RvbWVyc0xpc3QkITogT2JzZXJ2YWJsZTxhbnk+O1xuICByb3V0ZURldGFpbHMhOiB7IHBpY2t1cF9sb2NhdGlvbjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDsgZGVsaXZlcnlfbG9jYXRpb246IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7IH0gfCBudWxsO1xuICBwdWJsaWMgZGVzdHJveWVyJCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHBvcHVwRGV0YWlsczogUm91dGU7XG4gIGVuYWJsZVBvcFVwOiBib29sZWFuID0gZmFsc2U7XG4gIHByZXZhbnRQb3B1cENsb3NlID0gZmFsc2U7XG4gIGVuYWJsZUZvcm06IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgY29vbE1hcFNlcnZpY2U6IENvb2xtYXBTZXJ2aWNlLCBwdWJsaWMgdXRpbHM6IFV0aWxzU2VydmljZSwgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIEBJbmplY3QoJ21lbWJlckRhdGEnKSBwdWJsaWMgY29uZmlnOiBDb29sbWFwQ29uZmlnTW9kZWwpIHsgICAgICBcbiAgICBpZiAodGhpcy5jb25maWcucmVwb3NpdG9yeSA9PT0gJ2N1c3RvbWVyJykge1xuICAgICAgdGhpcy51dGlscy5mZXRjaE1hdGVyaWFsc0xpc3RGb3JDdXN0b21lcigpLnRoZW4oKHJlcyk9PnsgICAgICAgIFxuICAgICAgICB0aGlzLm1hdGVyaWFsc0xpc3QgPSByZXM7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51dGlscy5mZXRjaE1hdGVyaWFsc0xpc3QoKS50aGVuKChyZXMpPT57XG4gICAgICAgIHRoaXMubWF0ZXJpYWxzTGlzdCA9IHJlcztcbiAgICAgIH0pO1xuICAgIH1cbiAgIFxuICAgIHRoaXMudXRpbHMuZmV0Y2hVbml0c0xpc3QoKS50aGVuKChyZXMpPT57XG4gICAgICB0aGlzLnVuaXRzTGlzdCA9IHJlcztcbiAgICB9KTtcbiAgICB0aGlzLmZvcm1Jbml0KCk7XG4gICAgdGhpcy51dGlscy5nZXRyb3V0ZURldGFpbHNVdGlsaXR5LnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICBpZiAocmVzWydldmVudCddICE9PSAnY2xpY2snICYmICF0aGlzLnByZXZhbnRQb3B1cENsb3NlKSB7IHRoaXMuZW5hYmxlUG9wVXAgPSByZXNbJ2V2ZW50J10gfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmVuYWJsZVBvcFVwICYmICF0aGlzLnByZXZhbnRQb3B1cENsb3NlKSB7IHRoaXMucHJldmFudFBvcHVwQ2xvc2UgPSB0cnVlOyB9XG4gICAgICAgIGlmIChyZXNbJ2V2ZW50J10gIT09ICdjbGljaycgJiYgIXJlc1snZXZlbnQnXSAmJiB0aGlzLnByZXZhbnRQb3B1cENsb3NlKSB7XG4gICAgICAgICAgdGhpcy5wb3B1cERldGFpbHMgPSB0aGlzLnV0aWxzLmdldGRpY3RWYWx1ZSgncm91dGUtZGV0YWlsc3YyJyk7XG4gICAgICAgIH0gZWxzZSB7IHRoaXMucG9wdXBEZXRhaWxzID0gcmVzWydyb3V0ZSddIH1cbiAgICAgICAgaWYgKHRoaXMuZW5hYmxlUG9wVXApIHRoaXMucG9wdXBEZXRhaWxzWydjcmVhdGVkX2F0J10gPSB0aGlzLnV0aWxzLmdldERhdGVGb3JtYXQobmV3IERhdGUodGhpcy5wb3B1cERldGFpbHNbJ2NyZWF0ZWRfYXQnXSksICcvJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgZmlsdGVyQ3VzdG9tZXJMaXN0KCkge1xuICAgIHRoaXMuY3VzdG9tZXJzTGlzdCQgPSB0aGlzLmFkZFJvdXRlRm9ybS5jb250cm9sc1snY3VzdG9tZXJfbmFtZSddLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgc3RhcnRXaXRoKCcnKSxcbiAgICAgIG1hcCh2YWx1ZSA9PiB0aGlzLl9maWx0ZXIodmFsdWUgfHwgJycpKSxcbiAgICApO1xuICB9XG4gIHB1YmxpYyBfZmlsdGVyKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgZmlsdGVyVmFsdWUgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiB0aGlzLmN1c3RvbWVyc0xpc3QuZmlsdGVyKChvcHRpb246IGFueSkgPT4gb3B0aW9uWydjdXN0b21lcl9uYW1lJ10udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSkpO1xuICB9XG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1sncm91dGVEYXRhJ10gJiYgIWNoYW5nZXNbJ3JvdXRlRGF0YSddWydjdXJyZW50VmFsdWUnXSkgdGhpcy5pbkl0KG51bGwpO1xuICB9XG4gIG9wZW5EaWFsb2coKTogdm9pZCB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHsgYm9keTogJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyByb3V0ZT8nIH0sXG4gICAgfSk7XG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlcyA9PiB7IGlmIChyZXMpIHsgdGhpcy5kZWxldGVSb3V0ZSgpIH0gfSk7XG4gIH1cbiAgZWRpdEV2ZW50KCkge1xuICAgIHRoaXMucHJldmFudFBvcHVwQ2xvc2UgPSBmYWxzZTtcbiAgICB0aGlzLmVuYWJsZUZvcm0gPSB0cnVlOyB0aGlzLmVuYWJsZVBvcFVwID0gZmFsc2U7XG4gICAgdGhpcy5wb3B1cERldGFpbHNbJ3ByZXZlbnQnXSA9IGZhbHNlO1xuICAgIHRoaXMudXRpbHMucmVtb3ZlTWFwRW50aXR5Lm5leHQodGhpcy5wb3B1cERldGFpbHMpO1xuICAgIHRoaXMuaW5JdCh0aGlzLnBvcHVwRGV0YWlscyk7XG4gIH1cbiAgaW5JdChjaGFuZ2VzOiBSb3V0ZSkge1xuICAgIGlmIChjaGFuZ2VzKSB7XG4gICAgICBpZiAoIWNoYW5nZXNbJ3ByZXZlbnQnXSkge1xuICAgICAgICB0aGlzLnByZXZlbnRTYXZlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2xWYWx1ZSgpO1xuICAgICAgICB0aGlzLnBhdGNoRm9ybVZhbHVlKGNoYW5nZXMpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY2hlY2tBbmRGZXRjaFJvdXRlSW5mb3JtYXRpb24odHJ1ZSlcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghY2hhbmdlcykge1xuICAgICAgdGhpcy5lbmFibGVGb3JtID0gdHJ1ZTsgdGhpcy5wcmV2ZW50U2F2ZSA9IHRydWU7XG4gICAgICB0aGlzLnBhdGNoRm9ybVZhbHVlKCkudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuY2hlY2tBbmRGZXRjaFJvdXRlSW5mb3JtYXRpb24oKVxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUNvbnRyb2xWYWx1ZSgpO1xuICAgIGlmICh0aGlzLmNvbmZpZy5yZXBvc2l0b3J5ID09PSAnY3VzdG9tZXInKSB7XG4gICAgICB0aGlzLmFkZFJvdXRlRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgY3VzdG9tZXJfaWQ6IHRoaXMuY3VzdG9tZXJSZXBvRGV0YWlscy5jdXN0b21lci5pZCxcbiAgICAgICAgY3VzdG9tZXJfbmFtZTogdGhpcy5jdXN0b21lclJlcG9EZXRhaWxzLmN1c3RvbWVyLm5hbWUsXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnV0aWxzLmZldGNoQ3VzdG9tZXJzTGlzdCgpLnRoZW4oKHJlcyk9PntcbiAgICAgICAgdGhpcy5jdXN0b21lcnNMaXN0ID0gcmVzOyB0aGlzLmZpbHRlckN1c3RvbWVyTGlzdCgpOyB0aGlzLmFkZFJvdXRlRm9ybS5jb250cm9sc1snY3VzdG9tZXJfbmFtZSddLmVuYWJsZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGZyb21FdmVudCh0aGlzLmZpbHRlclBpY2t1cC5uYXRpdmVFbGVtZW50LCAna2V5dXAnKS5waXBlKFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgZGVib3VuY2VUaW1lKDE1MCkpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVyJCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMudXRpbHMuZmV0Y2hBdXRvQ29tcGxldGVMb2NhdGlvbnModGhpcy5maWx0ZXJQaWNrdXAubmF0aXZlRWxlbWVudC52YWx1ZSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZXIkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMucGlja3VwT3B0aW9ucyA9IHJlcy5mZWF0dXJlcztcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIGZyb21FdmVudCh0aGlzLmZpbHRlckRlbGl2ZXJ5Lm5hdGl2ZUVsZW1lbnQsICdrZXl1cCcpLnBpcGUoXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBkZWJvdW5jZVRpbWUoMTUwKSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZXIkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy51dGlscy5mZXRjaEF1dG9Db21wbGV0ZUxvY2F0aW9ucyh0aGlzLmZpbHRlckRlbGl2ZXJ5Lm5hdGl2ZUVsZW1lbnQudmFsdWUpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVyJCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmRlbGl2ZXJ5T3B0aW9ucyA9IHJlcy5mZWF0dXJlcztcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGZvcm1Db250cm9sVmFsdWUoKSB7XG4gICAgdGhpcy5hZGRSb3V0ZUZvcm0uY29udHJvbHNbJ3BpY2t1cF9sb2NhdGlvbiddPy52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZXIkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgaWYgKHRoaXMuYWRkUm91dGVGb3JtLnZhbHVlLnBpY2t1cF9sb2NhdGlvbiAmJiByZXMgIT09IHRoaXMuYWRkUm91dGVGb3JtLnZhbHVlLnBpY2t1cF9sb2NhdGlvbikge1xuICAgICAgICB0aGlzLmFkZFJvdXRlRm9ybS5wYXRjaFZhbHVlKHsgcGlja3VwX2xhdF9sbmc6ICcnIH0pO1xuICAgICAgICB0aGlzLmFkZFJvdXRlRm9ybS5jb250cm9sc1sncGlja3VwX2xhdF9sbmcnXS5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZFJvdXRlRm9ybS5jb250cm9sc1snZGVsaXZlcnlfbG9jYXRpb24nXT8udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVyJCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIGlmICh0aGlzLmFkZFJvdXRlRm9ybS52YWx1ZS5kZWxpdmVyeV9sb2NhdGlvbiAmJiByZXMgIT09IHRoaXMuYWRkUm91dGVGb3JtLnZhbHVlLmRlbGl2ZXJ5X2xvY2F0aW9uKSB7XG4gICAgICAgIHRoaXMuYWRkUm91dGVGb3JtLnBhdGNoVmFsdWUoeyBkZWxpdmVyeV9sYXRfbG5nOiAnJyB9KTtcbiAgICAgICAgdGhpcy5hZGRSb3V0ZUZvcm0uY29udHJvbHNbJ2RlbGl2ZXJ5X2xhdF9sbmcnXS5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmb3JtSW5pdCgpIHtcbiAgICB0aGlzLmFkZFJvdXRlRm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgcm91dGVfbmFtZTogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgY3VzdG9tZXJfbmFtZTogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6ICcnLCBkaXNhYmxlZDogdHJ1ZSB9LCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgY3VzdG9tZXJfaWQ6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICBtYXRlcmlhbHNfaWQ6IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgIHVuaXRfaWQ6IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgIHBhdGg6IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgIHBpY2t1cF9sb2NhdGlvbjogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgcGlja3VwX2xhdF9sbmc6IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgIGRlbGl2ZXJ5X2xvY2F0aW9uOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICBkZWxpdmVyeV9sYXRfbG5nOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICBlc3RpbWF0ZWRfZGlzdGFuY2U6IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgIGVzdGltYXRlZF90aW1lOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICBub3RlOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLm1heExlbmd0aCgyMDQ4KV0pLFxuICAgICAgdHJ1Y2tlcl9wYXlfZXN0aW1hdGU6IG5ldyBGb3JtQ29udHJvbChudWxsKSxcbiAgICAgIGN1c3RvbWVyX3ByaWNlX2VzdGltYXRlOiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBwYXRjaEZvcm1WYWx1ZShkYXRhPzogUm91dGUpIHtcbiAgICB0aGlzLmFkZFJvdXRlRm9ybS5yZXNldCgpO1xuICAgIHRoaXMuYWRkUm91dGVGb3JtLnBhdGNoVmFsdWUoZGF0YSEpO1xuICAgIGlmICh0aGlzLmNvbmZpZy5yZXBvc2l0b3J5ID09PSAnY3VzdG9tZXInKSB7ICAgICAgXG4gICAgICB0aGlzLmFkZFJvdXRlRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgY3VzdG9tZXJfaWQ6IHRoaXMuY3VzdG9tZXJSZXBvRGV0YWlscy5jdXN0b21lci5pZCxcbiAgICAgICAgY3VzdG9tZXJfbmFtZTogdGhpcy5jdXN0b21lclJlcG9EZXRhaWxzLmN1c3RvbWVyLm5hbWUsXG4gICAgICB9KVxuICAgIH1cbiAgICB0aGlzLnJvdXRlSWQgPSBkYXRhPy5yb3V0ZV9pZDtcbiAgICB0aGlzLnJvdXRlRGV0YWlscyA9IGRhdGEgPyB7IHBpY2t1cF9sb2NhdGlvbjogZGF0YS5waWNrdXBfbG9jYXRpb24sIGRlbGl2ZXJ5X2xvY2F0aW9uOiBkYXRhLmRlbGl2ZXJ5X2xvY2F0aW9uIH0gOiBudWxsO1xuICAgIHRoaXMuYWRkUm91dGVGb3JtLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llciQpKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIGlmIChyZXMpIHsgaWYgKHRoaXMucHJldmVudEluaXRpYWxTYXZlKSB0aGlzLnByZXZlbnRJbml0aWFsU2F2ZSA9IGZhbHNlIH1cbiAgICB9KTtcbiAgICB0aGlzLmZpbHRlckN1c3RvbWVyTGlzdCgpO1xuICAgIGF3YWl0IHRydWU7XG4gIH1cblxuICBzZWxlY3RlZExvbmdMYXQodHlwZTogc3RyaW5nLCBldmVudDogYW55KSB7XG4gICAgaWYgKHR5cGUgPT09ICdwaWNrdXAnKSB7XG4gICAgICB0aGlzLmFkZFJvdXRlRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgcGlja3VwX2xhdF9sbmc6IChldmVudC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSArICcsJyArIGV2ZW50Lmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdKS50b1N0cmluZygpXG4gICAgICB9KTtcbiAgICAgIHRoaXMuY29vbE1hcFNlcnZpY2UuY2xlYXJCb3VuZFdpdGhDb3JkaW5hdGVzKCk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnZGVsaXZlcnknKSB7XG4gICAgICB0aGlzLmFkZFJvdXRlRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgZGVsaXZlcnlfbGF0X2xuZzogKGV2ZW50Lmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdICsgJywnICsgZXZlbnQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0pLnRvU3RyaW5nKClcbiAgICAgIH0pXG4gICAgfVxuICAgIHRoaXMuY2hlY2tBbmRGZXRjaFJvdXRlSW5mb3JtYXRpb24oKTtcbiAgfVxuXG4gIGNoZWNrQW5kRmV0Y2hSb3V0ZUluZm9ybWF0aW9uKGlzaW5pdGlhbD86IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5hZGRSb3V0ZUZvcm0udmFsdWU/LmRlbGl2ZXJ5X2xhdF9sbmc/Lmxlbmd0aCA+IDAgJiYgdGhpcy5hZGRSb3V0ZUZvcm0udmFsdWU/LnBpY2t1cF9sYXRfbG5nPy5sZW5ndGggPiAwICYmIHRoaXMuYWRkUm91dGVGb3JtLnZhbHVlLnVuaXRfaWQpIHtcbiAgICAgIGxldCB1bml0ID0gdGhpcy51bml0c0xpc3QuZmluZCgoeDogYW55KSA9PiB4LmlkID09PSB0aGlzLmFkZFJvdXRlRm9ybS52YWx1ZS51bml0X2lkKTtcbiAgICAgIGNvbnN0IHBhcmFtID0ge1xuICAgICAgICBkZWxpdmVyeV9sYXRfbG5nOiB0aGlzLmFkZFJvdXRlRm9ybS52YWx1ZS5kZWxpdmVyeV9sYXRfbG5nLFxuICAgICAgICBwaWNrdXBfbGF0X2xuZzogdGhpcy5hZGRSb3V0ZUZvcm0udmFsdWUucGlja3VwX2xhdF9sbmcsXG4gICAgICAgIHVuaXQ6IHVuaXQ/LnR5cGVcbiAgICAgIH07XG4gICAgICB0aGlzLnV0aWxzLnBvc3RkYXRhKCdjYWxjdWxhdGUvcm91dGVzL2VzdGltYXRpb24nLCBwYXJhbSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZXIkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICBpZiAocmVzICYmIHJlc1sncGF0aCddKSB7XG4gICAgICAgICAgdGhpcy5hZGRSb3V0ZUZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgICBlc3RpbWF0ZWRfZGlzdGFuY2U6IHJlc1snZGlzdCddLFxuICAgICAgICAgICAgZXN0aW1hdGVkX3RpbWU6IHJlc1sndGltZSddLFxuICAgICAgICAgICAgcGF0aDogcmVzWydwYXRoJ10sXG4gICAgICAgICAgICB0cnVja2VyX3BheV9lc3RpbWF0ZTogcmVzWyd0cnVja2VyX2hhdWxfY29zdCddLFxuICAgICAgICAgICAgY3VzdG9tZXJfcHJpY2VfZXN0aW1hdGU6ICgrKCtyZXNbJ3RydWNrZXJfaGF1bF9jb3N0J10gLyAwLjgwKS50b0ZpeGVkKDIpKVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGxldCBwYXRoID0gcmVzWydwYXRoJ10uc3BsaXQoJzsnKTtcbiAgICAgICAgICBwYXRoID0gcGF0aC5tYXAoKGVsZTogc3RyaW5nIHwgYW55KSA9PiB7IHJldHVybiBlbGUgPSB0aGlzLmZvcm1hdGVMYXRMb25nKGVsZSkgfSk7XG4gICAgICAgICAgcmVzWydwYXRoJ10gPSBwYXRoO1xuICAgICAgICAgIGNvbnN0IGVsZW1lbnQ6IGFueSA9IHtcbiAgICAgICAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICAgICAgICBmZWF0dXJlczogW3sgdHlwZTogJ0ZlYXR1cmUnLCBwcm9wZXJ0aWVzOiB7fSwgZ2VvbWV0cnk6IHsgdHlwZTogJ0xpbmVTdHJpbmcnLCBjb29yZGluYXRlczogcmVzWydwYXRoJ10gfSB9XVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmNvb2xNYXBTZXJ2aWNlLnJlbW92ZVJvdXRlQW5kTWFya2VyKDEpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdW5pdCA9IHRoaXMudW5pdHNMaXN0LmZpbmQoKHg6IGFueSkgPT4geC5pZCA9PT0gdGhpcy5hZGRSb3V0ZUZvcm0udmFsdWUudW5pdF9pZCk7XG4gICAgICAgICAgICBjb25zdCBtYXRlcmlhbERldGFpbHMgPSB0aGlzLm1hdGVyaWFsc0xpc3QuZmluZCgoeDogYW55KSA9PiB4LnN1Yl9tYXRlcmlhbF9pZCA9PT0gdGhpcy5hZGRSb3V0ZUZvcm0udmFsdWUubWF0ZXJpYWxzX2lkKTtcbiAgICAgICAgICAgIHRoaXMuY29vbE1hcFNlcnZpY2UubG9hZE1hcFByb3BlcnR5KGVsZW1lbnQsIDEsIHVuaXQ/LnR5cGUsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwaWNrdXBfbG9jYXRpb246IHRoaXMuYWRkUm91dGVGb3JtLmdldCgncGlja3VwX2xvY2F0aW9uJyk/LnZhbHVlLFxuICAgICAgICAgICAgICAgIGRlbGl2ZXJ5X2xvY2F0aW9uOiB0aGlzLmFkZFJvdXRlRm9ybS5nZXQoJ2RlbGl2ZXJ5X2xvY2F0aW9uJyk/LnZhbHVlLFxuICAgICAgICAgICAgICAgIHJvdXRlX25hbWU6IHRoaXMuYWRkUm91dGVGb3JtLmdldCgncm91dGVfbmFtZScpPy52YWx1ZSxcbiAgICAgICAgICAgICAgICBtYXRlcmlhbExhYmVsOiBtYXRlcmlhbERldGFpbHM/LmxhYmVsLFxuICAgICAgICAgICAgICAgIHVuaXQ6IHVuaXQ/LnR5cGVcbiAgICAgICAgICAgICAgfSkudGhlbigocmVzKSA9PiB7IHRoaXMucHJldmVudFNhdmUgPSB0cnVlIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY29vbE1hcFNlcnZpY2UucmVtb3ZlUm91dGVBbmRNYXJrZXIoMSk7XG4gICAgICAgICAgdGhpcy51dGlscy5vcGVuU25hY2tCYXIocmVzWydzdGF0dXMnXSwgJ2Vycm9yJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucm91dGVJZCAmJiBpc2luaXRpYWwpIHRoaXMucHJldmVudEluaXRpYWxTYXZlID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7IHRoaXMuY29vbE1hcFNlcnZpY2UucmVtb3ZlUm91dGVBbmRNYXJrZXIoMSkgfVxuICB9XG5cbiAgZm9ybWF0ZUxhdExvbmcobGF0bG9uZzogc3RyaW5nKSB7IHJldHVybiBsYXRsb25nID8gbGF0bG9uZy5zcGxpdCgnLCcpLm1hcCh4ID0+ICt4KS5yZXZlcnNlKCkgOiBudWxsIH1cbiAgc2F2ZVJvdXRlKCkge1xuICAgIGlmICh0aGlzLmFkZFJvdXRlRm9ybS52YWxpZCkge1xuICAgICAgdGhpcy5wcmV2ZW50U2F2ZSA9IGZhbHNlO1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuYWRkUm91dGVGb3JtLmdldFJhd1ZhbHVlKCk7XG4gICAgICBjb25zdCB1cmwgPSB0aGlzLnJvdXRlSWQgPyB0aGlzLnV0aWxzLnBvc3RkYXRhKCd1cGRhdGUvcm91dGVzJywgZGF0YSkgOiB0aGlzLnV0aWxzLnBvc3RkYXRhKCdhZGQvcm91dGVzJywgZGF0YSlcbiAgICAgIGlmICh0aGlzLnJvdXRlSWQpIGRhdGFbJ2lkJ10gPSB0aGlzLnJvdXRlSWQ7XG4gICAgICB1cmwucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZXIkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICBpZiAocmVzLnN1Y2Nlc3MpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVJvdXRlTGlzdC5lbWl0KHRydWUpO1xuICAgICAgICAgIHRoaXMudXRpbHMub3BlblNuYWNrQmFyKHJlcy5tZXNzYWdlLCAnc3VjY2VzcycpO1xuICAgICAgICAgIHRoaXMucHJldmVudEluaXRpYWxTYXZlID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnByZXZlbnRTYXZlID0gdHJ1ZTtcbiAgICAgICAgICBpZiAoIXRoaXMucm91dGVJZCkgdGhpcy5jaGFuZ2VOYXYubmV4dCgnQWRkcm91dGUnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnV0aWxzLm9wZW5TbmFja0JhcihyZXMubWVzc2FnZSwgJ2Vycm9yJyk7XG4gICAgICAgICAgdGhpcy5wcmV2ZW50U2F2ZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0sIChlcnIpID0+IHsgaWYgKGVycikgeyB0aGlzLnByZXZlbnRTYXZlID0gdHJ1ZTsgfSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hZGRSb3V0ZUZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgIH1cbiAgfVxuICBkZWxldGVSb3V0ZSgpIHtcbiAgICB0aGlzLnByZXZlbnRTYXZlID0gZmFsc2U7XG4gICAgdGhpcy51dGlscy5wb3N0ZGF0YSgnZGVsZXRlL3JvdXRlcycsIHsgdXVpZDogdGhpcy5yb3V0ZUlkIH0pLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgaWYgKHJlc1snZGF0YSddWydzdWNjZXNzJ10pIHtcbiAgICAgICAgdGhpcy51dGlscy5vcGVuU25hY2tCYXIocmVzWydkYXRhJ11bJ21lc3NhZ2UnXSwgJ3N1Y2Nlc3MnKTtcbiAgICAgICAgdGhpcy51cGRhdGVSb3V0ZUxpc3QuZW1pdCh0cnVlKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VOYXYubmV4dCgnQWRkcm91dGUnKTtcbiAgICAgICAgdGhpcy5wcmV2ZW50SW5pdGlhbFNhdmUgPSB0cnVlO1xuICAgICAgICB0aGlzLnByZXZlbnRTYXZlID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudXRpbHMub3BlblNuYWNrQmFyKCdTb210aGluZyB3ZW50IHdyb25nJywgJ2Vycm9yJyk7XG4gICAgICAgIHRoaXMucHJldmVudFNhdmUgPSB0cnVlO1xuICAgICAgfVxuICAgIH0sIChlcnIpID0+IHsgdGhpcy5wcmV2ZW50U2F2ZSA9IHRydWUgfSlcbiAgfVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3llciQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRlc3Ryb3llciQudW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImFkZHJvdXRlYm94XCI+XG4gIDxkaXYgY2xhc3M9XCJyb3V0ZWRldGFpbGJveFwiICpuZ0lmPVwiZW5hYmxlUG9wVXBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2xvc2VidG5yb3V0ZWRldGFpbFwiPlxuICAgICAgPG1hdC1pY29uIChjbGljayk9XCJwcmV2YW50UG9wdXBDbG9zZSA9IGZhbHNlOyBlbmFibGVQb3BVcCA9IGZhbHNlO1wiPmNsZWFyPC9tYXQtaWNvbj5cbiAgICA8L2Rpdj5cbiAgICAgIDxsaWItcm91dGUtaW5mby1jYXJkIFtwcm9wRGF0YV09XCJ7Y2xhc3NOYW1lOiAncm91dGVDYXJkJywgcmVwb3NpdG9yeTogY29uZmlnWydyZXBvc2l0b3J5J119XCIgW3BvcHVwRGF0YV09XCJwb3B1cERldGFpbHNcIj48L2xpYi1yb3V0ZS1pbmZvLWNhcmQ+XG4gICAgPGRpdiBjbGFzcz1cImNyZWF0ZVR4dFwiPlxuICAgICAgPHNtYWxsPlxuICAgICAgICBDcmVhdGVkIGJ5IHt7cG9wdXBEZXRhaWxzWydjcmVhdGVkX2J5X25hbWUnXX19IG9uIHt7cG9wdXBEZXRhaWxzWydjcmVhdGVkX2F0J119fVxuICAgICAgPC9zbWFsbD5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJlZGl0YnRuXCIgKGNsaWNrKT1cImVkaXRFdmVudCgpXCI+RWRpdDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImFkZF9hZGRfcm91dGVfYm94XCIgY2RrRHJhZyBbc3R5bGUudmlzaWJpbGl0eV09XCIhZW5hYmxlRm9ybSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnXCI+XG4gICAgPGRpdiBjbGFzcz1cInRvcGhlYWRpbmdwcnRcIj5cbiAgICAgIDxoMj4ge3tyb3V0ZUlkPyAnRURJVCcgOiAnQUREJ319IFJPVVRFIDwvaDI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9ucHJ0XCI+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJyb3V0ZUlkXCIgY2xhc3M9XCJkZWxidG5cIiAoY2xpY2spPVwib3BlbkRpYWxvZygpXCI+RGVsZXRlPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiY2xvc2VidG5cIiAoY2xpY2spPVwiY2hhbmdlTmF2Lm5leHQoJ0FkZHJvdXRlJylcIj5DbG9zZTwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJhZGRSb3V0ZUZvcm1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3V0ZV9mb3JtX2FyZWFcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5Sb3V0ZSBOYW1lPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicm91dGVfbmFtZVwiIGF1dG9jb21wbGV0ZT1cIm5vcGVcIiAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImFkZFJvdXRlRm9ybS5jb250cm9sc1sncm91dGVfbmFtZSddLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgICAgICAgIFJvdXRlIE5hbWUgaXMgcmVxdWlyZWRcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIkN1c3RvbWVyIE5hbWVcIiBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJjdXN0b21lcl9uYW1lXCIgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCIgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlIGF1dG9BY3RpdmVGaXJzdE9wdGlvbiAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgY3VzdG9tZXIgb2YgY3VzdG9tZXJzTGlzdCQgfCBhc3luY1wiIFt2YWx1ZV09XCJjdXN0b21lclsnY3VzdG9tZXJfbmFtZSddXCI+XG4gICAgICAgICAgICAgICAge3tjdXN0b21lclsnY3VzdG9tZXJfbmFtZSddfX1cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImFkZFJvdXRlRm9ybS5jb250cm9sc1snY3VzdG9tZXJfbmFtZSddLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgICAgICAgIEN1c3RvbWVyIG5hbWUgaXMgcmVxdWlyZWQuXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5QaWNrdXA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCIgbWF0SW5wdXQgI2ZpbHRlclBpY2t1cCBbbWF0QXV0b2NvbXBsZXRlXT1cInBpY2t1cEF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBpY2t1cF9sb2NhdGlvblwiIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG5cbiAgICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNwaWNrdXBBdXRvY29tcGxldGU9XCJtYXRBdXRvY29tcGxldGVcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKGNsaWNrKT1cInNlbGVjdGVkTG9uZ0xhdCgncGlja3VwJywgb3B0aW9uKVwiICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcGlja3VwT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbj8ucGxhY2VfbmFtZVwiPlxuICAgICAgICAgICAgICAgIHt7b3B0aW9uPy5wbGFjZV9uYW1lfX1cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImFkZFJvdXRlRm9ybS5jb250cm9sc1sncGlja3VwX2xhdF9sbmcnXS50b3VjaGVkICYmIGFkZFJvdXRlRm9ybS5jb250cm9sc1sncGlja3VwX2xhdF9sbmcnXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICAgICAgUGxlYXNlIHNlbGVjdCBwaWNrdXAgbG9jYXRpb24gZnJvbSB0aGUgbGlzdC5cbiAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+RGVsaXZlcnk8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCIgbWF0SW5wdXQgI2ZpbHRlckRlbGl2ZXJ5IFttYXRBdXRvY29tcGxldGVdPVwiZGVsaXZlcnlBdXRvY29tcGxldGVcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZWxpdmVyeV9sb2NhdGlvblwiIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICA8bWF0LWF1dG9jb21wbGV0ZSAjZGVsaXZlcnlBdXRvY29tcGxldGU9XCJtYXRBdXRvY29tcGxldGVcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKGNsaWNrKT1cInNlbGVjdGVkTG9uZ0xhdCgnZGVsaXZlcnknLCBvcHRpb24pXCIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBkZWxpdmVyeU9wdGlvbnNcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24/LnBsYWNlX25hbWVcIj5cbiAgICAgICAgICAgICAgICB7e29wdGlvbj8ucGxhY2VfbmFtZX19XG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJhZGRSb3V0ZUZvcm0uY29udHJvbHNbJ2RlbGl2ZXJ5X2xhdF9sbmcnXS50b3VjaGVkICYmIGFkZFJvdXRlRm9ybS5jb250cm9sc1snZGVsaXZlcnlfbGF0X2xuZyddLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgICAgICBQbGVhc2Ugc2VsZWN0IGRlbGl2ZXJ5IGxvY2F0aW9uIGZyb20gdGhlIGxpc3QuXG4gICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPk5vdGVzPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8dGV4dGFyZWEgc3R5bGU9XCJoZWlnaHQ6IDE4cHg7IHJlc2l6ZTogbm9uZTtcIiBtYXRJbnB1dCBuYW1lPVwiXCIgaWQ9XCJcIiBjb2xzPVwiMzBcIiByb3dzPVwiMTBcIiBmb3JtQ29udHJvbE5hbWU9XCJub3RlXCIgYXV0b2NvbXBsZXRlPVwibm9wZVwiIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJhZGRSb3V0ZUZvcm0uY29udHJvbHNbJ25vdGUnXS5oYXNFcnJvcignbWF4bGVuZ3RoJylcIj5cbiAgICAgICAgICAgICAgTm90ZXMgc2hvdWxkIGJlIHdpdGhpbiAyMDQ4IGNoYXJhY3RlcnMuXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgZC1mbGV4XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0Ym94IG0tMFwiPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICA8bWF0LWxhYmVsPlVuaXQgdHlwZTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJ1bml0X2lkXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJjaGVja0FuZEZldGNoUm91dGVJbmZvcm1hdGlvbigpXCIgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgdW5pdCBvZiB1bml0c0xpc3RcIiBbdmFsdWVdPVwidW5pdD8uaWRcIj4ge3t1bml0Py50eXBlfX0gPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJhZGRSb3V0ZUZvcm0uY29udHJvbHNbJ3VuaXRfaWQnXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICAgICAgICAgIFVuaXQgaXMgcmVxdWlyZWRcbiAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0Ym94IG0tMFwiPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICA8bWF0LWxhYmVsPk1hdGVyaWFsPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cIm1hdGVyaWFsc19pZFwiIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG1hdGVyaWFsIG9mIG1hdGVyaWFsc0xpc3RcIiBbdmFsdWVdPVwiY29uZmlnLnJlcG9zaXRvcnkgPT09ICdjb29sbWFwJyA/IG1hdGVyaWFsPy5tYXRlcmlhbF9pZCA6IG1hdGVyaWFsPy5zdWJfbWF0ZXJpYWxfaWRcIj4ge3tjb25maWcucmVwb3NpdG9yeSA9PT0gJ2Nvb2xtYXAnID8gbWF0ZXJpYWw/Lm1hdGVyaWFsIDogbWF0ZXJpYWw/LmxhYmVsfX1cbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImFkZFJvdXRlRm9ybS5jb250cm9sc1snbWF0ZXJpYWxzX2lkJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgICAgICBNYXRlcmlhbCBpcyByZXF1aXJlZFxuICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgICA8YXBwLWVzdGltYXRpb24tZGlzcGxheSAqbmdJZj1cImFkZFJvdXRlRm9ybT8udmFsdWU/LnBpY2t1cF9sYXRfbG5nICYmIGFkZFJvdXRlRm9ybT8udmFsdWU/LmRlbGl2ZXJ5X2xhdF9sbmdcIiBbdmFsdWVdPVwiYWRkUm91dGVGb3JtWyd2YWx1ZSddXCI+PC9hcHAtZXN0aW1hdGlvbi1kaXNwbGF5PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCIgKm5nSWY9XCJhZGRSb3V0ZUZvcm1bJ3ZhbHVlJ11bJ3RydWNrZXJfcGF5X2VzdGltYXRlJ10gJiYgYWRkUm91dGVGb3JtWyd2YWx1ZSddWydjdXN0b21lcl9wcmljZV9lc3RpbWF0ZSddXCI+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb25maWdbJ3JlcG9zaXRvcnknXSAhPT0gJ2N1c3RvbWVyJ1wiIGNsYXNzPVwiZXN0aW1hdGVcIiAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgICAgVHJ1Y2tlciBQYXkgRXN0aW1hdGUgLSA8Yj57eyckJysgYWRkUm91dGVGb3JtWyd2YWx1ZSddWyd0cnVja2VyX3BheV9lc3RpbWF0ZSddfX08L2I+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXN0aW1hdGVcIiAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgICAgQ3VzdG9tZXIgUHJpY2UgRXN0aW1hdGUgLSA8Yj57eyckJysgYWRkUm91dGVGb3JtWyd2YWx1ZSddWydjdXN0b21lcl9wcmljZV9lc3RpbWF0ZSddfX08L2I+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwic3VibWl0XCIgKGNsaWNrKT1cInNhdmVSb3V0ZSgpXCIgKm5nSWY9XCJwcmV2ZW50U2F2ZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImFkZFJvdXRlRm9ybS5pbnZhbGlkICYmIHByZXZlbnRTYXZlIHx8IHByZXZlbnRJbml0aWFsU2F2ZVwiPnt7cm91dGVJZD8gJ1VwZGF0ZScgOiAnU2F2ZSd9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxvYWRlclwiPlxuICAgICAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cIiFwcmV2ZW50U2F2ZVwiPjwvbWF0LXNwaW5uZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
335
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXJvdXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAvc3JjL2xpYi9jb21wb25lbnQvYWRkLXJvdXRlL2FkZC1yb3V0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb29sbWFwL3NyYy9saWIvY29tcG9uZW50L2FkZC1yb3V0ZS9hZGQtcm91dGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBc0IsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQTRCLEtBQUssRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkosT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFjLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVcEUsTUFBTSxPQUFPLGlCQUFpQjtJQXlCNUIsWUFBbUIsY0FBOEIsRUFBUyxLQUFtQixFQUFTLE1BQWlCLEVBQ3hFLE1BQTBCO1FBRHRDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFTLFVBQUssR0FBTCxLQUFLLENBQWM7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ3hFLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBdkJ4QyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN2QyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDL0Qsa0JBQWEsR0FBUSxFQUFFLENBQUM7UUFDeEIsb0JBQWUsR0FBUSxFQUFFLENBQUM7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UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7OytHQXZSVSxpQkFBaUIscUdBMEJsQixZQUFZO21HQTFCWCxpQkFBaUIsb2JDZDlCLDZzT0F1SUE7NEZEekhhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxlQUFlOzswQkE4QnRCLE1BQU07MkJBQUMsWUFBWTs0Q0F6QlksWUFBWTtzQkFBN0MsU0FBUzt1QkFBQyxjQUFjO2dCQUNXLGNBQWM7c0JBQWpELFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUNWLFNBQVM7c0JBQXpCLE1BQU07Z0JBQ1UsZUFBZTtzQkFBL0IsTUFBTTtnQkFRUyxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLG1CQUFtQjtzQkFBbEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBWaWV3Q2hpbGQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBTaW1wbGVDaGFuZ2VzLCBPbkNoYW5nZXMsIElucHV0LCBPbkRlc3Ryb3ksIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZyb21FdmVudCwgbWFwLCBPYnNlcnZhYmxlLCBzdGFydFdpdGgsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL3NoYXJlZC9kaWFsb2cvZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb29sbWFwQ29uZmlnTW9kZWwsIENvb2xtYXBTZXJ2aWNlLCBDdXN0b21lclJlcG9EZXRhaWxzTW9kZWwsIFJvdXRlLCBVdGlsc1NlcnZpY2UgfSBmcm9tICdAYWdnZGlyZWN0L2Nvb2xtYXAtc2VydmljZXMnO1xuXG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWFkZC1yb3V0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGQtcm91dGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hZGQtcm91dGUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBBZGRSb3V0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCdmaWx0ZXJQaWNrdXAnKSBwdWJsaWMgZmlsdGVyUGlja3VwITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnZmlsdGVyRGVsaXZlcnknKSBwdWJsaWMgZmlsdGVyRGVsaXZlcnkhOiBFbGVtZW50UmVmO1xuICBAT3V0cHV0KCkgcHVibGljIGNoYW5nZU5hdiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgcHVibGljIHVwZGF0ZVJvdXRlTGlzdCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgcGlja3VwT3B0aW9uczogYW55ID0gW107XG4gIGRlbGl2ZXJ5T3B0aW9uczogYW55ID0gW107XG4gIHJlcXVlc3RQYXJtc0ZvclJvdXRlRGV0YWlscyA9IHsgcGlja3VwX2xhdF9sbmc6ICcnLCBkZWxpdmVyeV9sYXRfbG5nOiAnJyB9XG4gIGN1c3RvbWVyc0xpc3Q6IGFueSA9IFtdO1xuICB1bml0c0xpc3Q6IGFueSA9IFtdO1xuICBtYXRlcmlhbHNMaXN0OiBhbnkgPSBbXTtcbiAgYWRkUm91dGVGb3JtITogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBwdWJsaWMgcm91dGVEYXRhITogUm91dGU7XG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21lclJlcG9EZXRhaWxzITogQ3VzdG9tZXJSZXBvRGV0YWlsc01vZGVsO1xuICByb3V0ZUlkOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBwcmV2ZW50U2F2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcmV2ZW50SW5pdGlhbFNhdmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY3VzdG9tZXJzTGlzdCQhOiBPYnNlcnZhYmxlPGFueT47XG4gIHJvdXRlRGV0YWlscyE6IHsgcGlja3VwX2xvY2F0aW9uOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkOyBkZWxpdmVyeV9sb2NhdGlvbjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDsgfSB8IG51bGw7XG4gIHB1YmxpYyBkZXN0cm95ZXIkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcG9wdXBEZXRhaWxzOiBSb3V0ZTtcbiAgZW5hYmxlUG9wVXA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJldmFudFBvcHVwQ2xvc2UgPSBmYWxzZTtcbiAgZW5hYmxlRm9ybTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb29sTWFwU2VydmljZTogQ29vbG1hcFNlcnZpY2UsIHB1YmxpYyB1dGlsczogVXRpbHNTZXJ2aWNlLCBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgQEluamVjdCgnbWVtYmVyRGF0YScpIHB1YmxpYyBjb25maWc6IENvb2xtYXBDb25maWdNb2RlbCkgeyAgICAgIFxuICAgIGlmICh0aGlzLmNvbmZpZy5yZXBvc2l0b3J5ID09PSAnY3VzdG9tZXInKSB7XG4gICAgICB0aGlzLnV0aWxzLmZldGNoTWF0ZXJpYWxzTGlzdEZvckN1c3RvbWVyKCkudGhlbigocmVzKT0+eyAgICAgICAgXG4gICAgICAgIHRoaXMubWF0ZXJpYWxzTGlzdCA9IHJlcztcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnV0aWxzLmZldGNoTWF0ZXJpYWxzTGlzdCgpLnRoZW4oKHJlcyk9PntcbiAgICAgICAgdGhpcy5tYXRlcmlhbHNMaXN0ID0gcmVzO1xuICAgICAgfSk7XG4gICAgfVxuICAgXG4gICAgdGhpcy51dGlscy5mZXRjaFVuaXRzTGlzdCgpLnRoZW4oKHJlcyk9PntcbiAgICAgIHRoaXMudW5pdHNMaXN0ID0gcmVzO1xuICAgIH0pO1xuICAgIHRoaXMuZm9ybUluaXQoKTtcbiAgICB0aGlzLnV0aWxzLmdldHJvdXRlRGV0YWlsc1V0aWxpdHkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICBpZiAocmVzKSB7XG4gICAgICAgIGlmIChyZXNbJ2V2ZW50J10gIT09ICdjbGljaycgJiYgIXRoaXMucHJldmFudFBvcHVwQ2xvc2UpIHsgdGhpcy5lbmFibGVQb3BVcCA9IHJlc1snZXZlbnQnXSB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuZW5hYmxlUG9wVXAgJiYgIXRoaXMucHJldmFudFBvcHVwQ2xvc2UpIHsgdGhpcy5wcmV2YW50UG9wdXBDbG9zZSA9IHRydWU7IH1cbiAgICAgICAgaWYgKHJlc1snZXZlbnQnXSAhPT0gJ2NsaWNrJyAmJiAhcmVzWydldmVudCddICYmIHRoaXMucHJldmFudFBvcHVwQ2xvc2UpIHtcbiAgICAgICAgICB0aGlzLnBvcHVwRGV0YWlscyA9IHRoaXMudXRpbHMuZ2V0ZGljdFZhbHVlKCdyb3V0ZS1kZXRhaWxzdjInKTtcbiAgICAgICAgfSBlbHNlIHsgdGhpcy5wb3B1cERldGFpbHMgPSByZXNbJ3JvdXRlJ10gfVxuICAgICAgICBpZiAodGhpcy5lbmFibGVQb3BVcCkgdGhpcy5wb3B1cERldGFpbHNbJ2NyZWF0ZWRfYXQnXSA9IHRoaXMudXRpbHMuZ2V0RGF0ZUZvcm1hdChuZXcgRGF0ZSh0aGlzLnBvcHVwRGV0YWlsc1snY3JlYXRlZF9hdCddKSwgJy8nKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBmaWx0ZXJDdXN0b21lckxpc3QoKSB7XG4gICAgdGhpcy5jdXN0b21lcnNMaXN0JCA9IHRoaXMuYWRkUm91dGVGb3JtLmNvbnRyb2xzWydjdXN0b21lcl9uYW1lJ10udmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICBzdGFydFdpdGgoJycpLFxuICAgICAgbWFwKHZhbHVlID0+IHRoaXMuX2ZpbHRlcih2YWx1ZSB8fCAnJykpLFxuICAgICk7XG4gIH1cbiAgcHVibGljIF9maWx0ZXIodmFsdWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIHRoaXMuY3VzdG9tZXJzTGlzdC5maWx0ZXIoKG9wdGlvbjogYW55KSA9PiBvcHRpb25bJ2N1c3RvbWVyX25hbWUnXS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlKSk7XG4gIH1cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydyb3V0ZURhdGEnXSAmJiAhY2hhbmdlc1sncm91dGVEYXRhJ11bJ2N1cnJlbnRWYWx1ZSddKSB0aGlzLmluSXQobnVsbCk7XG4gIH1cbiAgb3BlbkRpYWxvZygpOiB2b2lkIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKERpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgZGF0YTogeyBib2R5OiAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIHJvdXRlPycgfSxcbiAgICB9KTtcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzID0+IHsgaWYgKHJlcykgeyB0aGlzLmRlbGV0ZVJvdXRlKCkgfSB9KTtcbiAgfVxuICBlZGl0RXZlbnQoKSB7XG4gICAgdGhpcy5wcmV2YW50UG9wdXBDbG9zZSA9IGZhbHNlO1xuICAgIHRoaXMuZW5hYmxlRm9ybSA9IHRydWU7IHRoaXMuZW5hYmxlUG9wVXAgPSBmYWxzZTtcbiAgICB0aGlzLnBvcHVwRGV0YWlsc1sncHJldmVudCddID0gZmFsc2U7XG4gICAgdGhpcy51dGlscy5yZW1vdmVNYXBFbnRpdHkubmV4dCh0aGlzLnBvcHVwRGV0YWlscyk7XG4gICAgdGhpcy5pbkl0KHRoaXMucG9wdXBEZXRhaWxzKTtcbiAgfVxuICBpbkl0KGNoYW5nZXM6IFJvdXRlKSB7XG4gICAgaWYgKGNoYW5nZXMpIHtcbiAgICAgIGlmICghY2hhbmdlc1sncHJldmVudCddKSB7XG4gICAgICAgIHRoaXMucHJldmVudFNhdmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbFZhbHVlKCk7XG4gICAgICAgIHRoaXMucGF0Y2hGb3JtVmFsdWUoY2hhbmdlcykudGhlbigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jaGVja0FuZEZldGNoUm91dGVJbmZvcm1hdGlvbih0cnVlKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFjaGFuZ2VzKSB7XG4gICAgICB0aGlzLmVuYWJsZUZvcm0gPSB0cnVlOyB0aGlzLnByZXZlbnRTYXZlID0gdHJ1ZTtcbiAgICAgIHRoaXMucGF0Y2hGb3JtVmFsdWUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5jaGVja0FuZEZldGNoUm91dGVJbmZvcm1hdGlvbigpXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtQ29udHJvbFZhbHVlKCk7XG4gICAgaWYgKHRoaXMuY29uZmlnLnJlcG9zaXRvcnkgPT09ICdjdXN0b21lcicpIHtcbiAgICAgIHRoaXMuYWRkUm91dGVGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICBjdXN0b21lcl9pZDogdGhpcy5jdXN0b21lclJlcG9EZXRhaWxzLmN1c3RvbWVyLmlkLFxuICAgICAgICBjdXN0b21lcl9uYW1lOiB0aGlzLmN1c3RvbWVyUmVwb0RldGFpbHMuY3VzdG9tZXIubmFtZSxcbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXRpbHMuZmV0Y2hDdXN0b21lcnNMaXN0KCkudGhlbigocmVzKT0+e1xuICAgICAgICB0aGlzLmN1c3RvbWVyc0xpc3QgPSByZXM7IHRoaXMuZmlsdGVyQ3VzdG9tZXJMaXN0KCk7IHRoaXMuYWRkUm91dGVGb3JtLmNvbnRyb2xzWydjdXN0b21lcl9uYW1lJ10uZW5hYmxlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgZnJvbUV2ZW50KHRoaXMuZmlsdGVyUGlja3VwLm5hdGl2ZUVsZW1lbnQsICdrZXl1cCcpLnBpcGUoXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBkZWJvdW5jZVRpbWUoMTUwKSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZXIkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy51dGlscy5mZXRjaEF1dG9Db21wbGV0ZUxvY2F0aW9ucyh0aGlzLmZpbHRlclBpY2t1cC5uYXRpdmVFbGVtZW50LnZhbHVlKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llciQpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5waWNrdXBPcHRpb25zID0gcmVzLmZlYXR1cmVzO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgZnJvbUV2ZW50KHRoaXMuZmlsdGVyRGVsaXZlcnkubmF0aXZlRWxlbWVudCwgJ2tleXVwJykucGlwZShcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIGRlYm91bmNlVGltZSgxNTApKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llciQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnV0aWxzLmZldGNoQXV0b0NvbXBsZXRlTG9jYXRpb25zKHRoaXMuZmlsdGVyRGVsaXZlcnkubmF0aXZlRWxlbWVudC52YWx1ZSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZXIkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuZGVsaXZlcnlPcHRpb25zID0gcmVzLmZlYXR1cmVzO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgZm9ybUNvbnRyb2xWYWx1ZSgpIHtcbiAgICB0aGlzLmFkZFJvdXRlRm9ybS5jb250cm9sc1sncGlja3VwX2xvY2F0aW9uJ10/LnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llciQpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICBpZiAodGhpcy5hZGRSb3V0ZUZvcm0udmFsdWUucGlja3VwX2xvY2F0aW9uICYmIHJlcyAhPT0gdGhpcy5hZGRSb3V0ZUZvcm0udmFsdWUucGlja3VwX2xvY2F0aW9uKSB7XG4gICAgICAgIHRoaXMuYWRkUm91dGVGb3JtLnBhdGNoVmFsdWUoeyBwaWNrdXBfbGF0X2xuZzogJycgfSk7XG4gICAgICAgIHRoaXMuYWRkUm91dGVGb3JtLmNvbnRyb2xzWydwaWNrdXBfbGF0X2xuZyddLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuYWRkUm91dGVGb3JtLmNvbnRyb2xzWydkZWxpdmVyeV9sb2NhdGlvbiddPy52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZXIkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgaWYgKHRoaXMuYWRkUm91dGVGb3JtLnZhbHVlLmRlbGl2ZXJ5X2xvY2F0aW9uICYmIHJlcyAhPT0gdGhpcy5hZGRSb3V0ZUZvcm0udmFsdWUuZGVsaXZlcnlfbG9jYXRpb24pIHtcbiAgICAgICAgdGhpcy5hZGRSb3V0ZUZvcm0ucGF0Y2hWYWx1ZSh7IGRlbGl2ZXJ5X2xhdF9sbmc6ICcnIH0pO1xuICAgICAgICB0aGlzLmFkZFJvdXRlRm9ybS5jb250cm9sc1snZGVsaXZlcnlfbGF0X2xuZyddLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZvcm1Jbml0KCkge1xuICAgIHRoaXMuYWRkUm91dGVGb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICByb3V0ZV9uYW1lOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICBjdXN0b21lcl9uYW1lOiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogJycsIGRpc2FibGVkOiB0cnVlIH0sIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICBjdXN0b21lcl9pZDogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICAgIG1hdGVyaWFsc19pZDogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgdW5pdF9pZDogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgcGF0aDogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgcGlja3VwX2xvY2F0aW9uOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICBwaWNrdXBfbGF0X2xuZzogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgZGVsaXZlcnlfbG9jYXRpb246IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgIGRlbGl2ZXJ5X2xhdF9sbmc6IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgIGVzdGltYXRlZF9kaXN0YW5jZTogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgZXN0aW1hdGVkX3RpbWU6IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgIG5vdGU6IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDIwNDgpXSksXG4gICAgICB0cnVja2VyX3BheV9lc3RpbWF0ZTogbmV3IEZvcm1Db250cm9sKG51bGwpLFxuICAgICAgY3VzdG9tZXJfcHJpY2VfZXN0aW1hdGU6IG5ldyBGb3JtQ29udHJvbChudWxsKSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHBhdGNoRm9ybVZhbHVlKGRhdGE/OiBSb3V0ZSkge1xuICAgIHRoaXMuYWRkUm91dGVGb3JtLnJlc2V0KCk7XG4gICAgdGhpcy5hZGRSb3V0ZUZvcm0ucGF0Y2hWYWx1ZShkYXRhISk7XG4gICAgaWYgKHRoaXMuY29uZmlnLnJlcG9zaXRvcnkgPT09ICdjdXN0b21lcicpIHsgICAgICBcbiAgICAgIHRoaXMuYWRkUm91dGVGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICBjdXN0b21lcl9pZDogdGhpcy5jdXN0b21lclJlcG9EZXRhaWxzLmN1c3RvbWVyLmlkLFxuICAgICAgICBjdXN0b21lcl9uYW1lOiB0aGlzLmN1c3RvbWVyUmVwb0RldGFpbHMuY3VzdG9tZXIubmFtZSxcbiAgICAgIH0pXG4gICAgfVxuICAgIHRoaXMucm91dGVJZCA9IGRhdGE/LnJvdXRlX2lkO1xuICAgIHRoaXMucm91dGVEZXRhaWxzID0gZGF0YSA/IHsgcGlja3VwX2xvY2F0aW9uOiBkYXRhLnBpY2t1cF9sb2NhdGlvbiwgZGVsaXZlcnlfbG9jYXRpb246IGRhdGEuZGVsaXZlcnlfbG9jYXRpb24gfSA6IG51bGw7XG4gICAgdGhpcy5hZGRSb3V0ZUZvcm0udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVyJCkpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgaWYgKHJlcykgeyBpZiAodGhpcy5wcmV2ZW50SW5pdGlhbFNhdmUpIHRoaXMucHJldmVudEluaXRpYWxTYXZlID0gZmFsc2UgfVxuICAgIH0pO1xuICAgIHRoaXMuZmlsdGVyQ3VzdG9tZXJMaXN0KCk7XG4gICAgYXdhaXQgdHJ1ZTtcbiAgfVxuXG4gIHNlbGVjdGVkTG9uZ0xhdCh0eXBlOiBzdHJpbmcsIGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodHlwZSA9PT0gJ3BpY2t1cCcpIHtcbiAgICAgIHRoaXMuYWRkUm91dGVGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICBwaWNrdXBfbGF0X2xuZzogKGV2ZW50Lmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdICsgJywnICsgZXZlbnQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0pLnRvU3RyaW5nKClcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jb29sTWFwU2VydmljZS5jbGVhckJvdW5kV2l0aENvcmRpbmF0ZXMoKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdkZWxpdmVyeScpIHtcbiAgICAgIHRoaXMuYWRkUm91dGVGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICBkZWxpdmVyeV9sYXRfbG5nOiAoZXZlbnQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV0gKyAnLCcgKyBldmVudC5nZW9tZXRyeS5jb29yZGluYXRlc1swXSkudG9TdHJpbmcoKVxuICAgICAgfSlcbiAgICB9XG4gICAgdGhpcy5jaGVja0FuZEZldGNoUm91dGVJbmZvcm1hdGlvbigpO1xuICB9XG5cbiAgY2hlY2tBbmRGZXRjaFJvdXRlSW5mb3JtYXRpb24oaXNpbml0aWFsPzogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLmFkZFJvdXRlRm9ybS52YWx1ZT8uZGVsaXZlcnlfbGF0X2xuZz8ubGVuZ3RoID4gMCAmJiB0aGlzLmFkZFJvdXRlRm9ybS52YWx1ZT8ucGlja3VwX2xhdF9sbmc/Lmxlbmd0aCA+IDAgJiYgdGhpcy5hZGRSb3V0ZUZvcm0udmFsdWUudW5pdF9pZCkge1xuICAgICAgbGV0IHVuaXQgPSB0aGlzLnVuaXRzTGlzdC5maW5kKCh4OiBhbnkpID0+IHguaWQgPT09IHRoaXMuYWRkUm91dGVGb3JtLnZhbHVlLnVuaXRfaWQpO1xuICAgICAgY29uc3QgcGFyYW0gPSB7XG4gICAgICAgIGRlbGl2ZXJ5X2xhdF9sbmc6IHRoaXMuYWRkUm91dGVGb3JtLnZhbHVlLmRlbGl2ZXJ5X2xhdF9sbmcsXG4gICAgICAgIHBpY2t1cF9sYXRfbG5nOiB0aGlzLmFkZFJvdXRlRm9ybS52YWx1ZS5waWNrdXBfbGF0X2xuZyxcbiAgICAgICAgdW5pdDogdW5pdD8udHlwZVxuICAgICAgfTtcbiAgICAgIHRoaXMudXRpbHMucG9zdGRhdGEoJ2NhbGN1bGF0ZS9yb3V0ZXMvZXN0aW1hdGlvbicsIHBhcmFtKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llciQpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXMgJiYgcmVzWydwYXRoJ10pIHtcbiAgICAgICAgICB0aGlzLmFkZFJvdXRlRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICAgIGVzdGltYXRlZF9kaXN0YW5jZTogcmVzWydkaXN0J10sXG4gICAgICAgICAgICBlc3RpbWF0ZWRfdGltZTogcmVzWyd0aW1lJ10sXG4gICAgICAgICAgICBwYXRoOiByZXNbJ3BhdGgnXSxcbiAgICAgICAgICAgIHRydWNrZXJfcGF5X2VzdGltYXRlOiByZXNbJ3RydWNrZXJfaGF1bF9jb3N0J10sXG4gICAgICAgICAgICBjdXN0b21lcl9wcmljZV9lc3RpbWF0ZTogKCsoK3Jlc1sndHJ1Y2tlcl9oYXVsX2Nvc3QnXSAvIDAuODApLnRvRml4ZWQoMikpXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgbGV0IHBhdGggPSByZXNbJ3BhdGgnXS5zcGxpdCgnOycpO1xuICAgICAgICAgIHBhdGggPSBwYXRoLm1hcCgoZWxlOiBzdHJpbmcgfCBhbnkpID0+IHsgcmV0dXJuIGVsZSA9IHRoaXMuZm9ybWF0ZUxhdExvbmcoZWxlKSB9KTtcbiAgICAgICAgICByZXNbJ3BhdGgnXSA9IHBhdGg7XG4gICAgICAgICAgY29uc3QgZWxlbWVudDogYW55ID0ge1xuICAgICAgICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgICAgICAgIGZlYXR1cmVzOiBbeyB0eXBlOiAnRmVhdHVyZScsIHByb3BlcnRpZXM6IHt9LCBnZW9tZXRyeTogeyB0eXBlOiAnTGluZVN0cmluZycsIGNvb3JkaW5hdGVzOiByZXNbJ3BhdGgnXSB9IH1dXG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY29vbE1hcFNlcnZpY2UucmVtb3ZlUm91dGVBbmRNYXJrZXIoMSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB1bml0ID0gdGhpcy51bml0c0xpc3QuZmluZCgoeDogYW55KSA9PiB4LmlkID09PSB0aGlzLmFkZFJvdXRlRm9ybS52YWx1ZS51bml0X2lkKTtcbiAgICAgICAgICAgIGNvbnN0IG1hdGVyaWFsRGV0YWlscyA9IHRoaXMubWF0ZXJpYWxzTGlzdC5maW5kKCh4OiBhbnkpID0+IHguc3ViX21hdGVyaWFsX2lkID09PSB0aGlzLmFkZFJvdXRlRm9ybS52YWx1ZS5tYXRlcmlhbHNfaWQpO1xuICAgICAgICAgICAgdGhpcy5jb29sTWFwU2VydmljZS5sb2FkTWFwUHJvcGVydHkoZWxlbWVudCwgMSwgdW5pdD8udHlwZSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBpY2t1cF9sb2NhdGlvbjogdGhpcy5hZGRSb3V0ZUZvcm0uZ2V0KCdwaWNrdXBfbG9jYXRpb24nKT8udmFsdWUsXG4gICAgICAgICAgICAgICAgZGVsaXZlcnlfbG9jYXRpb246IHRoaXMuYWRkUm91dGVGb3JtLmdldCgnZGVsaXZlcnlfbG9jYXRpb24nKT8udmFsdWUsXG4gICAgICAgICAgICAgICAgcm91dGVfbmFtZTogdGhpcy5hZGRSb3V0ZUZvcm0uZ2V0KCdyb3V0ZV9uYW1lJyk/LnZhbHVlLFxuICAgICAgICAgICAgICAgIG1hdGVyaWFsTGFiZWw6IG1hdGVyaWFsRGV0YWlscz8ubGFiZWwsXG4gICAgICAgICAgICAgICAgdW5pdDogdW5pdD8udHlwZVxuICAgICAgICAgICAgICB9KS50aGVuKChyZXMpID0+IHsgdGhpcy5wcmV2ZW50U2F2ZSA9IHRydWUgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jb29sTWFwU2VydmljZS5yZW1vdmVSb3V0ZUFuZE1hcmtlcigxKTtcbiAgICAgICAgICB0aGlzLnV0aWxzLm9wZW5TbmFja0JhcihyZXNbJ3N0YXR1cyddLCAnZXJyb3InKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yb3V0ZUlkICYmIGlzaW5pdGlhbCkgdGhpcy5wcmV2ZW50SW5pdGlhbFNhdmUgPSB0cnVlO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHsgdGhpcy5jb29sTWFwU2VydmljZS5yZW1vdmVSb3V0ZUFuZE1hcmtlcigxKSB9XG4gIH1cblxuICBmb3JtYXRlTGF0TG9uZyhsYXRsb25nOiBzdHJpbmcpIHsgcmV0dXJuIGxhdGxvbmcgPyBsYXRsb25nLnNwbGl0KCcsJykubWFwKHggPT4gK3gpLnJldmVyc2UoKSA6IG51bGwgfVxuICBzYXZlUm91dGUoKSB7XG4gICAgaWYgKHRoaXMuYWRkUm91dGVGb3JtLnZhbGlkKSB7XG4gICAgICB0aGlzLnByZXZlbnRTYXZlID0gZmFsc2U7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5hZGRSb3V0ZUZvcm0uZ2V0UmF3VmFsdWUoKTtcbiAgICAgIGNvbnN0IHVybCA9IHRoaXMucm91dGVJZCA/IHRoaXMudXRpbHMucG9zdGRhdGEoJ3VwZGF0ZS9yb3V0ZXMnLCBkYXRhKSA6IHRoaXMudXRpbHMucG9zdGRhdGEoJ2FkZC9yb3V0ZXMnLCBkYXRhKVxuICAgICAgaWYgKHRoaXMucm91dGVJZCkgZGF0YVsnaWQnXSA9IHRoaXMucm91dGVJZDtcbiAgICAgIHVybC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llciQpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXMuc3VjY2Vzcykge1xuICAgICAgICAgIHRoaXMudXBkYXRlUm91dGVMaXN0LmVtaXQodHJ1ZSk7XG4gICAgICAgICAgdGhpcy51dGlscy5vcGVuU25hY2tCYXIocmVzLm1lc3NhZ2UsICdzdWNjZXNzJyk7XG4gICAgICAgICAgdGhpcy5wcmV2ZW50SW5pdGlhbFNhdmUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMucHJldmVudFNhdmUgPSB0cnVlO1xuICAgICAgICAgIGlmICghdGhpcy5yb3V0ZUlkKSB0aGlzLmNoYW5nZU5hdi5uZXh0KCdBZGRyb3V0ZScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudXRpbHMub3BlblNuYWNrQmFyKHJlcy5tZXNzYWdlLCAnZXJyb3InKTtcbiAgICAgICAgICB0aGlzLnByZXZlbnRTYXZlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSwgKGVycikgPT4geyBpZiAoZXJyKSB7IHRoaXMucHJldmVudFNhdmUgPSB0cnVlOyB9IH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZFJvdXRlRm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgfVxuICB9XG4gIGRlbGV0ZVJvdXRlKCkge1xuICAgIHRoaXMucHJldmVudFNhdmUgPSBmYWxzZTtcbiAgICB0aGlzLnV0aWxzLnBvc3RkYXRhKCdkZWxldGUvcm91dGVzJywgeyB1dWlkOiB0aGlzLnJvdXRlSWQgfSkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICBpZiAocmVzWydkYXRhJ11bJ3N1Y2Nlc3MnXSkge1xuICAgICAgICB0aGlzLnV0aWxzLm9wZW5TbmFja0JhcihyZXNbJ2RhdGEnXVsnbWVzc2FnZSddLCAnc3VjY2VzcycpO1xuICAgICAgICB0aGlzLnVwZGF0ZVJvdXRlTGlzdC5lbWl0KHRydWUpO1xuICAgICAgICB0aGlzLmNoYW5nZU5hdi5uZXh0KCdBZGRyb3V0ZScpO1xuICAgICAgICB0aGlzLnByZXZlbnRJbml0aWFsU2F2ZSA9IHRydWU7XG4gICAgICAgIHRoaXMucHJldmVudFNhdmUgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy51dGlscy5vcGVuU25hY2tCYXIoJ1NvbXRoaW5nIHdlbnQgd3JvbmcnLCAnZXJyb3InKTtcbiAgICAgICAgdGhpcy5wcmV2ZW50U2F2ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfSwgKGVycikgPT4geyB0aGlzLnByZXZlbnRTYXZlID0gdHJ1ZSB9KVxuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveWVyJC5uZXh0KHRydWUpO1xuICAgIHRoaXMuZGVzdHJveWVyJC51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYWRkcm91dGVib3hcIj5cbiAgPGRpdiBjbGFzcz1cInJvdXRlZGV0YWlsYm94XCIgKm5nSWY9XCJlbmFibGVQb3BVcFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjbG9zZWJ0bnJvdXRlZGV0YWlsXCI+XG4gICAgICA8bWF0LWljb24gKGNsaWNrKT1cInByZXZhbnRQb3B1cENsb3NlID0gZmFsc2U7IGVuYWJsZVBvcFVwID0gZmFsc2U7XCI+Y2xlYXI8L21hdC1pY29uPlxuICAgIDwvZGl2PlxuICAgICAgPGxpYi1yb3V0ZS1pbmZvLWNhcmQgW3Byb3BEYXRhXT1cIntjbGFzc05hbWU6ICdyb3V0ZUNhcmQnLCByZXBvc2l0b3J5OiBjb25maWdbJ3JlcG9zaXRvcnknXX1cIiBbcG9wdXBEYXRhXT1cInBvcHVwRGV0YWlsc1wiPjwvbGliLXJvdXRlLWluZm8tY2FyZD5cbiAgICA8ZGl2IGNsYXNzPVwiY3JlYXRlVHh0XCI+XG4gICAgICA8c21hbGw+XG4gICAgICAgIENyZWF0ZWQgYnkge3twb3B1cERldGFpbHNbJ2NyZWF0ZWRfYnlfbmFtZSddfX0gb24ge3twb3B1cERldGFpbHNbJ2NyZWF0ZWRfYXQnXX19XG4gICAgICA8L3NtYWxsPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImVkaXRidG5cIiAoY2xpY2spPVwiZWRpdEV2ZW50KClcIj5FZGl0PC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYWRkX2FkZF9yb3V0ZV9ib3hcIiBjZGtEcmFnIFtzdHlsZS52aXNpYmlsaXR5XT1cIiFlbmFibGVGb3JtID8gJ2hpZGRlbicgOiAndmlzaWJsZSdcIj5cbiAgICA8ZGl2IGNsYXNzPVwidG9waGVhZGluZ3BydFwiPlxuICAgICAgPGgyPiB7e3JvdXRlSWQ/ICdFRElUJyA6ICdBREQnfX0gUk9VVEUgPC9oMj5cbiAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25wcnRcIj5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInJvdXRlSWRcIiBjbGFzcz1cImRlbGJ0blwiIChjbGljayk9XCJvcGVuRGlhbG9nKClcIj5EZWxldGU8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJjbG9zZWJ0blwiIChjbGljayk9XCJjaGFuZ2VOYXYubmV4dCgnQWRkcm91dGUnKVwiPkNsb3NlPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImFkZFJvdXRlRm9ybVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvdXRlX2Zvcm1fYXJlYVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPlJvdXRlIE5hbWU8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJyb3V0ZV9uYW1lXCIgYXV0b2NvbXBsZXRlPVwibm9wZVwiIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiYWRkUm91dGVGb3JtLmNvbnRyb2xzWydyb3V0ZV9uYW1lJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgICAgUm91dGUgTmFtZSBpcyByZXF1aXJlZFxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiQ3VzdG9tZXIgTmFtZVwiIG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImN1c3RvbWVyX25hbWVcIiBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIiAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBjdXN0b21lciBvZiBjdXN0b21lcnNMaXN0JCB8IGFzeW5jXCIgW3ZhbHVlXT1cImN1c3RvbWVyWydjdXN0b21lcl9uYW1lJ11cIj5cbiAgICAgICAgICAgICAgICB7e2N1c3RvbWVyWydjdXN0b21lcl9uYW1lJ119fVxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1hdXRvY29tcGxldGU+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiYWRkUm91dGVGb3JtLmNvbnRyb2xzWydjdXN0b21lcl9uYW1lJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgICAgQ3VzdG9tZXIgbmFtZSBpcyByZXF1aXJlZC5cbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPlBpY2t1cDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiBtYXRJbnB1dCAjZmlsdGVyUGlja3VwIFttYXRBdXRvY29tcGxldGVdPVwicGlja3VwQXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGlja3VwX2xvY2F0aW9uXCIgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cblxuICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgI3BpY2t1cEF1dG9jb21wbGV0ZT1cIm1hdEF1dG9jb21wbGV0ZVwiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAoY2xpY2spPVwic2VsZWN0ZWRMb25nTGF0KCdwaWNrdXAnLCBvcHRpb24pXCIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwaWNrdXBPcHRpb25zXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uPy5wbGFjZV9uYW1lXCI+XG4gICAgICAgICAgICAgICAge3tvcHRpb24/LnBsYWNlX25hbWV9fVxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1hdXRvY29tcGxldGU+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiYWRkUm91dGVGb3JtLmNvbnRyb2xzWydwaWNrdXBfbGF0X2xuZyddLnRvdWNoZWQgJiYgYWRkUm91dGVGb3JtLmNvbnRyb2xzWydwaWNrdXBfbGF0X2xuZyddLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgICAgICBQbGVhc2Ugc2VsZWN0IHBpY2t1cCBsb2NhdGlvbiBmcm9tIHRoZSBsaXN0LlxuICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5EZWxpdmVyeTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiBtYXRJbnB1dCAjZmlsdGVyRGVsaXZlcnkgW21hdEF1dG9jb21wbGV0ZV09XCJkZWxpdmVyeUF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRlbGl2ZXJ5X2xvY2F0aW9uXCIgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNkZWxpdmVyeUF1dG9jb21wbGV0ZT1cIm1hdEF1dG9jb21wbGV0ZVwiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAoY2xpY2spPVwic2VsZWN0ZWRMb25nTGF0KCdkZWxpdmVyeScsIG9wdGlvbilcIiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGRlbGl2ZXJ5T3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbj8ucGxhY2VfbmFtZVwiPlxuICAgICAgICAgICAgICAgIHt7b3B0aW9uPy5wbGFjZV9uYW1lfX1cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImFkZFJvdXRlRm9ybS5jb250cm9sc1snZGVsaXZlcnlfbGF0X2xuZyddLnRvdWNoZWQgJiYgYWRkUm91dGVGb3JtLmNvbnRyb2xzWydkZWxpdmVyeV9sYXRfbG5nJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgIFBsZWFzZSBzZWxlY3QgZGVsaXZlcnkgbG9jYXRpb24gZnJvbSB0aGUgbGlzdC5cbiAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+Tm90ZXM8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDx0ZXh0YXJlYSBzdHlsZT1cImhlaWdodDogMThweDsgcmVzaXplOiBub25lO1wiIG1hdElucHV0IG5hbWU9XCJcIiBpZD1cIlwiIGNvbHM9XCIzMFwiIHJvd3M9XCIxMFwiIGZvcm1Db250cm9sTmFtZT1cIm5vdGVcIiBhdXRvY29tcGxldGU9XCJub3BlXCIgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj48L3RleHRhcmVhPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImFkZFJvdXRlRm9ybS5jb250cm9sc1snbm90ZSddLmhhc0Vycm9yKCdtYXhsZW5ndGgnKVwiPlxuICAgICAgICAgICAgICBOb3RlcyBzaG91bGQgYmUgd2l0aGluIDIwNDggY2hhcmFjdGVycy5cbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBkLWZsZXhcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXRib3ggbS0wXCI+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgIDxtYXQtbGFiZWw+VW5pdCB0eXBlPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInVuaXRfaWRcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cImNoZWNrQW5kRmV0Y2hSb3V0ZUluZm9ybWF0aW9uKClcIiAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCB1bml0IG9mIHVuaXRzTGlzdFwiIFt2YWx1ZV09XCJ1bml0Py5pZFwiPiB7e3VuaXQ/LnR5cGV9fSA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImFkZFJvdXRlRm9ybS5jb250cm9sc1sndW5pdF9pZCddLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgICAgICAgICAgVW5pdCBpcyByZXF1aXJlZFxuICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXRib3ggbS0wXCI+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgIDxtYXQtbGFiZWw+TWF0ZXJpYWw8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwibWF0ZXJpYWxzX2lkXCIgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgbWF0ZXJpYWwgb2YgbWF0ZXJpYWxzTGlzdFwiIFt2YWx1ZV09XCJjb25maWcucmVwb3NpdG9yeSA9PT0gJ2Nvb2xtYXAnID8gbWF0ZXJpYWw/Lm1hdGVyaWFsX2lkIDogbWF0ZXJpYWw/LnN1Yl9tYXRlcmlhbF9pZFwiPiB7e2NvbmZpZy5yZXBvc2l0b3J5ID09PSAnY29vbG1hcCcgPyBtYXRlcmlhbD8ubWF0ZXJpYWwgOiBtYXRlcmlhbD8ubGFiZWx9fVxuICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiYWRkUm91dGVGb3JtLmNvbnRyb2xzWydtYXRlcmlhbHNfaWQnXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICAgICAgICAgIE1hdGVyaWFsIGlzIHJlcXVpcmVkXG4gICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgIDxhcHAtZXN0aW1hdGlvbi1kaXNwbGF5ICpuZ0lmPVwiYWRkUm91dGVGb3JtPy52YWx1ZT8ucGlja3VwX2xhdF9sbmcgJiYgYWRkUm91dGVGb3JtPy52YWx1ZT8uZGVsaXZlcnlfbGF0X2xuZ1wiIFt2YWx1ZV09XCJhZGRSb3V0ZUZvcm1bJ3ZhbHVlJ11cIj48L2FwcC1lc3RpbWF0aW9uLWRpc3BsYXk+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIiAqbmdJZj1cImFkZFJvdXRlRm9ybVsndmFsdWUnXVsndHJ1Y2tlcl9wYXlfZXN0aW1hdGUnXSAmJiBhZGRSb3V0ZUZvcm1bJ3ZhbHVlJ11bJ2N1c3RvbWVyX3ByaWNlX2VzdGltYXRlJ11cIj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbmZpZ1sncmVwb3NpdG9yeSddICE9PSAnY3VzdG9tZXInXCIgY2xhc3M9XCJlc3RpbWF0ZVwiIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICBUcnVja2VyIFBheSBFc3RpbWF0ZSAtIDxiPnt7JyQnKyBhZGRSb3V0ZUZvcm1bJ3ZhbHVlJ11bJ3RydWNrZXJfcGF5X2VzdGltYXRlJ119fTwvYj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJlc3RpbWF0ZVwiIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICBDdXN0b21lciBQcmljZSBFc3RpbWF0ZSAtIDxiPnt7JyQnKyBhZGRSb3V0ZUZvcm1bJ3ZhbHVlJ11bJ2N1c3RvbWVyX3ByaWNlX2VzdGltYXRlJ119fTwvYj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIHR5cGU9XCJzdWJtaXRcIiAoY2xpY2spPVwic2F2ZVJvdXRlKClcIiAqbmdJZj1cInByZXZlbnRTYXZlXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiYWRkUm91dGVGb3JtLmludmFsaWQgJiYgcHJldmVudFNhdmUgfHwgcHJldmVudEluaXRpYWxTYXZlXCI+e3tyb3V0ZUlkPyAnVXBkYXRlJyA6ICdTYXZlJ319XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibG9hZGVyXCI+XG4gICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiIXByZXZlbnRTYXZlXCI+PC9tYXQtc3Bpbm5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -161,9 +161,9 @@ export class JobCodeComponent {
161
161
  this.destroyer$.unsubscribe();
162
162
  }
163
163
  }
164
- JobCodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: JobCodeComponent, deps: [{ token: i1.UtilsService }, { token: i1.CoolmapService }, { token: 'memberData' }], target: i0.ɵɵFactoryTarget.Component });
165
- JobCodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: JobCodeComponent, selector: "app-job-code", inputs: { jobdetail: "jobdetail", customerRepoDetails: "customerRepoDetails" }, outputs: { clearJobDetails: "clearJobDetails", openShareRoute: "openShareRoute" }, ngImport: i0, template: "<div class=\"jobcode_detailprt\" (click)=\"isOverlapRouteSection = false\" *ngIf=\"jobdetail\" [ngClass]=\"{'overlap': !isOverlapRouteSection}\" cdkDrag>\n <span class=\"close\"><mat-icon (click)=\"clearJob()\">clear</mat-icon></span>\n <div class=\"job_details_area\">\n <div class=\"detailnameprt\">\n <app-jobcode-status [jobValue]=\"jobdetail\"></app-jobcode-status>\n </div>\n <app-jobcode-overview [jobValue]=\"jobdetail\"></app-jobcode-overview>\n </div>\n</div>\n\n<div class=\"route_listprt\" (click)=\"isOverlapRouteSection = true\" [ngClass]=\"{ 'show': isVisible, 'overlap': isOverlapRouteSection}\">\n <div class=\"listing_toggle\" (click)=\"toggleSidemenu()\">\n <img src=\"assets/images/route.svg\" alt=\"\" />\n </div>\n\n <div class=\"listing_box\">\n <div class=\"closebtn\" (click)=\"toggleSidemenu()\">\n <mat-icon>clear</mat-icon>\n </div>\n\n <div class=\"btnprt\">\n <h2> List of Routes </h2>\n <button (click)=\"masterToggle()\">{{routes && routes.length > 0 && routes.length === selectedRoute.selected.length ? 'Uncheck' : 'Check'}} All</button>\n </div>\n\n <app-job-route-list [routes]=\"routes\" [masterRoutes]=\"masterRoutes\" [selectedRoute]=\"selectedRoute\" (changeRoutes)=\"routes = $event\" (changeSelectedRoute)=\"selectedRoute = $event\"></app-job-route-list>\n\n <perfect-scrollbar>\n <ul *ngIf=\"routes['length'] > 0\">\n <li *ngFor=\"let list of routes\">\n <div class=\"iconprt\">\n <span>\n <input type=\"checkbox\" [checked]=\"selectedRoute.isSelected(list)\"\n (change)=\"$event ? selectRoute(list) : null\" /><label>&nbsp;</label>\n <div class=\"border\"></div>\n </span>\n <div class=\"statusunit\" [ngClass]=\"list['unit']\">{{list['unit']}}</div>\n <div class=\"infoicon\">\n <img (mouseenter)=\"togglerouteDetails(true, list)\" (mouseout)=\"togglerouteDetails(false, list, true)\"\n (click)=\"togglerouteDetails('click', list)\" src=\"assets/images/info_icon.png\" [alt]=\"\" />\n </div>\n <div class=\"infoicon\" *ngIf=\"config.repository === 'customer'\">\n <img src=\"assets/images/share_icon.png\" (click)=\"openShareRouteModal(list)\" [alt]=\"\" />\n </div>\n </div>\n <div class=\"pickprtbox\">\n <h2> {{list['route_name']}} </h2>\n <h3><ng-container *ngIf=\"config?.repository === 'coolmap'\">{{list['customer_name']}} | </ng-container>{{config.repository === 'coolmap' ? list['material'] : list['materialLabel']}}</h3>\n <div class=\"pickdropprt\">\n <div class=\"pickprt\">\n <b>\n <h4>{{list['pickup_location']}}</h4>\n </b>\n </div>\n <div class=\"dropprt\">\n <b>\n <h4>{{list['delivery_location']}}</h4>\n </b>\n </div>\n </div>\n </div>\n </li>\n </ul>\n <p style=\"color: #fff;\" *ngIf=\"routes.length === 0\">No Route found</p>\n </perfect-scrollbar>\n </div>\n\n <div class=\"route_detail\" *ngIf=\"detailsCardEnable\">\n <div class=\"closebtnroutedetail\" (click)=\"detailsCardEnable = false; preventMouseout = false\">\n <mat-icon>clear</mat-icon>\n </div>\n <lib-route-info-card [propData]=\"{className: 'listRoutecard', repository: config['repository']}\" [popupData]=\"routeCardDetail\"></lib-route-info-card>\n <div class=\"createTxt\">\n <small>\n Created by {{routeCardDetail?.created_by_name}} on {{routeCardDetail?.created_at}}\n </small>\n </div>\n </div>\n</div>\n", styles: [".jobcode_detailprt{position:absolute;left:300px;bottom:10px;background:white;padding:15px 20px;border-radius:20px;max-width:350px;z-index:999;box-shadow:0 0 5px #0000001a}.jobcode_detailprt .close{box-shadow:0 0 5px #0000001c;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer;background:#fff;position:absolute;top:-11px;left:-11px}@keyframes autoslide{to{transform:translate(calc(90vw - 100%))}0%{transform:translate(0)}}.route_listprt .listing_toggle{background:white;border-radius:15px;padding:5px;position:absolute;right:10px;top:20px;cursor:pointer}.route_listprt .listing_toggle img{width:28px}.route_listprt .listing_box{background:#282828;height:100vh;position:fixed;right:0;top:0;z-index:1111;box-shadow:-3px 0 5px #ffffff14;transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;width:0;border-radius:40px 0 0;opacity:0}.route_listprt .listing_box .closebtn{display:none}.route_listprt .listing_box ul{padding:0 20px 0 0}.route_listprt .listing_box ul li{background:#4a4a4a;padding:10px 15px;border-radius:15px;display:flex;margin-bottom:10px;position:relative;height:inherit}@media (min-width: 1600px){.route_listprt .listing_box ul li{padding:6px 15px;margin-bottom:5px}}.route_listprt .listing_box ul li .iconprt{display:flex;flex-direction:column}.route_listprt .listing_box ul li .iconprt span{display:flex;align-items:center;margin-bottom:32px}.route_listprt .listing_box ul li .iconprt span input[type=checkbox]{width:100%;height:100%;margin-right:10px;opacity:0;position:absolute;left:0;margin-left:0;top:0;z-index:3;cursor:pointer}.route_listprt .listing_box ul li .iconprt span input[type=checkbox]:checked+label{background:url(../../../assets/images/fill-check.png) 16px 15px no-repeat}.route_listprt .listing_box ul li .iconprt span label{background:url(../../../assets/images/blank-check.png) 16px 15px no-repeat;width:100%;position:relative;z-index:2;font-size:12px;color:#878787;height:100%;position:absolute;top:0;left:0}.route_listprt .listing_box ul li .iconprt span .border{position:absolute;width:100%;height:100%;left:0;right:0;top:0;border-radius:15px}.route_listprt .listing_box ul li .iconprt span input:checked~.border{border-left:1px solid white;border-right:1px solid white;border-top:1px solid white;border-bottom:1px solid white}.route_listprt .listing_box ul li .iconprt span h2{margin-left:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px;padding-left:16px;font-size:.9rem;margin-bottom:0;font-weight:400;margin-top:0}.route_listprt .listing_box ul li .iconprt .statusunit{border-radius:30px;font-size:0;color:#fff;text-transform:capitalize;font-weight:500;width:20px;height:20px;text-align:center;line-height:20px;margin-bottom:7px}.route_listprt .listing_box ul li .iconprt .statusunit:first-letter{font-size:.8rem}.route_listprt .listing_box ul li .iconprt .statusunit.Ton{background:#ff7272}.route_listprt .listing_box ul li .iconprt .statusunit.Load{background:#a3c52e}.route_listprt .listing_box ul li .iconprt .statusunit.Hourly{background:#ae23d1}@media (min-width: 1600px){.route_listprt .listing_box ul li .iconprt .statusunit{line-height:21px}}.route_listprt .listing_box ul li .iconprt .infoicon{z-index:5;cursor:pointer}.route_listprt .listing_box ul li .iconprt .infoicon img{width:20px;height:20px}.route_listprt .listing_box ul li .pickprtbox{margin-left:10px}.route_listprt .listing_box ul li .pickprtbox h2{font-size:.9rem;margin:3px 0 5px;white-space:nowrap;text-overflow:ellipsis;max-width:195px;overflow:hidden}.route_listprt .listing_box ul li h3{font-size:.8rem;color:#979797;font-weight:600;margin-top:0;white-space:nowrap;text-overflow:ellipsis;max-width:195px;overflow:hidden;margin-bottom:5px}.route_listprt .listing_box ul li .pickdropprt{font-size:.75rem}.route_listprt .listing_box ul li .pickdropprt .pickprt{position:relative;display:flex;align-items:center;padding-bottom:10px}.route_listprt .listing_box ul li .pickdropprt .pickprt span{padding-left:0;padding-right:20px;display:block}.route_listprt .listing_box ul li .pickdropprt .pickprt b{position:relative}.route_listprt .listing_box ul li .pickdropprt .pickprt b:after{background:#bcbcbc;width:1px;height:100%;left:3px;content:\"\";position:absolute;top:10px}.route_listprt .listing_box ul li .pickdropprt .pickprt h4{position:relative;padding-left:15px;margin:0;line-height:18px;color:#bcbcbc;font-weight:400;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.route_listprt .listing_box ul li .pickdropprt .pickprt h4:before{background:#bcbcbc;top:4px;left:0;position:absolute;content:\"\";width:7px;height:7px;border-radius:100%}.route_listprt .listing_box ul li .pickdropprt .dropprt{position:relative;padding-bottom:10px;display:flex;align-items:center}.route_listprt .listing_box ul li .pickdropprt .dropprt span{padding-left:0;padding-right:20px;display:block}.route_listprt .listing_box ul li .pickdropprt .dropprt b{position:relative}.route_listprt .listing_box ul li .pickdropprt .dropprt b:after{background:#bcbcbc;width:1px;height:12px;left:3px;content:\"\";position:absolute;top:-7px}.route_listprt .listing_box ul li .pickdropprt .dropprt h4{position:relative;padding-left:15px;margin:0;line-height:18px;color:#bcbcbc;font-weight:400;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.route_listprt .listing_box ul li .pickdropprt .dropprt h4:before{background:#bcbcbc;top:4px;left:0;position:absolute;content:\"\";width:7px;height:7px;border-radius:100%}.route_listprt.show .listing_box{width:300px;max-width:300px;flex:0 0 350px;transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;padding:40px 0 40px 20px;opacity:1}.route_listprt.show .listing_box h2{color:#fff;white-space:nowrap}.route_listprt.show .listing_box .closebtn{position:absolute;left:-33px;top:50px;background:#282828;color:#fff;padding:8px;border-top-left-radius:15px;border-bottom-left-radius:15px;cursor:pointer;box-shadow:-4px 2px 5px #ffffff14;display:block}.btnprt{display:flex;justify-content:space-between;align-items:center;padding-right:20px}.btnprt h2{margin:0}.btnprt button{font-size:15px;padding:8px 20px;background-color:#326ad3;color:#fff;border:none;border-radius:10px;box-shadow:none;outline:none}.hidden{display:none}.route_detail{background:#282828;position:absolute;width:260px;top:50%;transform:translateY(-50%);right:310px;border-radius:20px;padding:10px;box-shadow:0 0 5px #ffffff36}.createTxt small{color:#fff;font-size:.7rem}.closebtnroutedetail{box-shadow:0 0 5px #0000001c;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer;background:#f5f5f5;position:absolute;top:-7px;left:-11px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.PerfectScrollbarComponent, selector: "perfect-scrollbar", inputs: ["disabled", "usePSClass", "autoPropagation", "scrollIndicators", "config"], outputs: ["psScrollY", "psScrollX", "psScrollUp", "psScrollDown", "psScrollLeft", "psScrollRight", "psYReachEnd", "psYReachStart", "psXReachEnd", "psXReachStart"], exportAs: ["ngxPerfectScrollbar"] }, { kind: "component", type: i6.JobRouteListComponent, selector: "app-job-route-list", inputs: ["routes", "selectedRoute", "masterRoutes"], outputs: ["changeNav", "changeRoutes", "changeSelectedRoute"] }, { kind: "component", type: i7.JobcodeStatusComponent, selector: "app-jobcode-status", inputs: ["jobValue"] }, { kind: "component", type: i8.JobcodeOverviewComponent, selector: "app-jobcode-overview", inputs: ["jobValue"] }, { kind: "component", type: i9.RouteInfoCardComponent, selector: "lib-route-info-card", inputs: ["popupData", "propData"] }] });
166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: JobCodeComponent, decorators: [{
164
+ JobCodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: JobCodeComponent, deps: [{ token: i1.UtilsService }, { token: i1.CoolmapService }, { token: 'memberData' }], target: i0.ɵɵFactoryTarget.Component });
165
+ JobCodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: JobCodeComponent, selector: "app-job-code", inputs: { jobdetail: "jobdetail", customerRepoDetails: "customerRepoDetails" }, outputs: { clearJobDetails: "clearJobDetails", openShareRoute: "openShareRoute" }, ngImport: i0, template: "<div class=\"jobcode_detailprt\" (click)=\"isOverlapRouteSection = false\" *ngIf=\"jobdetail\" [ngClass]=\"{'overlap': !isOverlapRouteSection}\" cdkDrag>\n <span class=\"close\"><mat-icon (click)=\"clearJob()\">clear</mat-icon></span>\n <div class=\"job_details_area\">\n <div class=\"detailnameprt\">\n <app-jobcode-status [jobValue]=\"jobdetail\"></app-jobcode-status>\n </div>\n <app-jobcode-overview [jobValue]=\"jobdetail\"></app-jobcode-overview>\n </div>\n</div>\n\n<div class=\"route_listprt\" (click)=\"isOverlapRouteSection = true\" [ngClass]=\"{ 'show': isVisible, 'overlap': isOverlapRouteSection}\">\n <div class=\"listing_toggle\" (click)=\"toggleSidemenu()\">\n <img src=\"assets/images/route.svg\" alt=\"\" />\n </div>\n\n <div class=\"listing_box\">\n <div class=\"closebtn\" (click)=\"toggleSidemenu()\">\n <mat-icon>clear</mat-icon>\n </div>\n\n <div class=\"btnprt\">\n <h2> List of Routes </h2>\n <button (click)=\"masterToggle()\">{{routes && routes.length > 0 && routes.length === selectedRoute.selected.length ? 'Uncheck' : 'Check'}} All</button>\n </div>\n\n <app-job-route-list [routes]=\"routes\" [masterRoutes]=\"masterRoutes\" [selectedRoute]=\"selectedRoute\" (changeRoutes)=\"routes = $event\" (changeSelectedRoute)=\"selectedRoute = $event\"></app-job-route-list>\n\n <perfect-scrollbar>\n <ul *ngIf=\"routes['length'] > 0\">\n <li *ngFor=\"let list of routes\">\n <div class=\"iconprt\">\n <span>\n <input type=\"checkbox\" [checked]=\"selectedRoute.isSelected(list)\"\n (change)=\"$event ? selectRoute(list) : null\" /><label>&nbsp;</label>\n <div class=\"border\"></div>\n </span>\n <div class=\"statusunit\" [ngClass]=\"list['unit']\">{{list['unit']}}</div>\n <div class=\"infoicon\">\n <img (mouseenter)=\"togglerouteDetails(true, list)\" (mouseout)=\"togglerouteDetails(false, list, true)\"\n (click)=\"togglerouteDetails('click', list)\" src=\"assets/images/info_icon.png\" [alt]=\"\" />\n </div>\n <div class=\"infoicon\" *ngIf=\"config.repository === 'customer'\">\n <img src=\"assets/images/share_icon.png\" (click)=\"openShareRouteModal(list)\" [alt]=\"\" />\n </div>\n </div>\n <div class=\"pickprtbox\">\n <h2> {{list['route_name']}} </h2>\n <h3><ng-container *ngIf=\"config?.repository === 'coolmap'\">{{list['customer_name']}} | </ng-container>{{config.repository === 'coolmap' ? list['material'] : list['materialLabel']}}</h3>\n <div class=\"pickdropprt\">\n <div class=\"pickprt\">\n <b>\n <h4>{{list['pickup_location']}}</h4>\n </b>\n </div>\n <div class=\"dropprt\">\n <b>\n <h4>{{list['delivery_location']}}</h4>\n </b>\n </div>\n </div>\n </div>\n </li>\n </ul>\n <p style=\"color: #fff;\" *ngIf=\"routes.length === 0\">No Route found</p>\n </perfect-scrollbar>\n </div>\n\n <div class=\"route_detail\" *ngIf=\"detailsCardEnable\">\n <div class=\"closebtnroutedetail\" (click)=\"detailsCardEnable = false; preventMouseout = false\">\n <mat-icon>clear</mat-icon>\n </div>\n <lib-route-info-card [propData]=\"{className: 'listRoutecard', repository: config['repository']}\" [popupData]=\"routeCardDetail\"></lib-route-info-card>\n <div class=\"createTxt\">\n <small>\n Created by {{routeCardDetail?.created_by_name}} on {{routeCardDetail?.created_at}}\n </small>\n </div>\n </div>\n</div>\n", styles: [".jobcode_detailprt{position:absolute;left:300px;bottom:10px;background:white;padding:15px 20px;border-radius:20px;max-width:350px;z-index:999;box-shadow:0 0 5px #0000001a}.jobcode_detailprt .close{box-shadow:0 0 5px #0000001c;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer;background:#fff;position:absolute;top:-11px;left:-11px}@keyframes autoslide{to{transform:translate(calc(90vw - 100%))}0%{transform:translate(0)}}.route_listprt .listing_toggle{background:white;border-radius:15px;padding:5px;position:absolute;right:10px;top:20px;cursor:pointer}.route_listprt .listing_toggle img{width:28px}.route_listprt .listing_box{background:#282828;height:100vh;position:fixed;right:0;top:0;z-index:1111;box-shadow:-3px 0 5px #ffffff14;transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;width:0;border-radius:40px 0 0;opacity:0}.route_listprt .listing_box .closebtn{display:none}.route_listprt .listing_box ul{padding:0 20px 0 0}.route_listprt .listing_box ul li{background:#4a4a4a;padding:10px 15px;border-radius:15px;display:flex;margin-bottom:10px;position:relative;height:inherit}@media (min-width: 1600px){.route_listprt .listing_box ul li{padding:6px 15px;margin-bottom:5px}}.route_listprt .listing_box ul li .iconprt{display:flex;flex-direction:column}.route_listprt .listing_box ul li .iconprt span{display:flex;align-items:center;margin-bottom:32px}.route_listprt .listing_box ul li .iconprt span input[type=checkbox]{width:100%;height:100%;margin-right:10px;opacity:0;position:absolute;left:0;margin-left:0;top:0;z-index:3;cursor:pointer}.route_listprt .listing_box ul li .iconprt span input[type=checkbox]:checked+label{background:url(../../../assets/images/fill-check.png) 16px 15px no-repeat}.route_listprt .listing_box ul li .iconprt span label{background:url(../../../assets/images/blank-check.png) 16px 15px no-repeat;width:100%;position:relative;z-index:2;font-size:12px;color:#878787;height:100%;position:absolute;top:0;left:0}.route_listprt .listing_box ul li .iconprt span .border{position:absolute;width:100%;height:100%;left:0;right:0;top:0;border-radius:15px}.route_listprt .listing_box ul li .iconprt span input:checked~.border{border-left:1px solid white;border-right:1px solid white;border-top:1px solid white;border-bottom:1px solid white}.route_listprt .listing_box ul li .iconprt span h2{margin-left:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px;padding-left:16px;font-size:.9rem;margin-bottom:0;font-weight:400;margin-top:0}.route_listprt .listing_box ul li .iconprt .statusunit{border-radius:30px;font-size:0;color:#fff;text-transform:capitalize;font-weight:500;width:20px;height:20px;text-align:center;line-height:20px;margin-bottom:7px}.route_listprt .listing_box ul li .iconprt .statusunit:first-letter{font-size:.8rem}.route_listprt .listing_box ul li .iconprt .statusunit.Ton{background:#ff7272}.route_listprt .listing_box ul li .iconprt .statusunit.Load{background:#a3c52e}.route_listprt .listing_box ul li .iconprt .statusunit.Hourly{background:#ae23d1}@media (min-width: 1600px){.route_listprt .listing_box ul li .iconprt .statusunit{line-height:21px}}.route_listprt .listing_box ul li .iconprt .infoicon{z-index:5;cursor:pointer}.route_listprt .listing_box ul li .iconprt .infoicon img{width:20px;height:20px}.route_listprt .listing_box ul li .pickprtbox{margin-left:10px}.route_listprt .listing_box ul li .pickprtbox h2{font-size:.9rem;margin:3px 0 5px;white-space:nowrap;text-overflow:ellipsis;max-width:195px;overflow:hidden}.route_listprt .listing_box ul li h3{font-size:.8rem;color:#979797;font-weight:600;margin-top:0;white-space:nowrap;text-overflow:ellipsis;max-width:195px;overflow:hidden;margin-bottom:5px}.route_listprt .listing_box ul li .pickdropprt{font-size:.75rem}.route_listprt .listing_box ul li .pickdropprt .pickprt{position:relative;display:flex;align-items:center;padding-bottom:10px}.route_listprt .listing_box ul li .pickdropprt .pickprt span{padding-left:0;padding-right:20px;display:block}.route_listprt .listing_box ul li .pickdropprt .pickprt b{position:relative}.route_listprt .listing_box ul li .pickdropprt .pickprt b:after{background:#bcbcbc;width:1px;height:100%;left:3px;content:\"\";position:absolute;top:10px}.route_listprt .listing_box ul li .pickdropprt .pickprt h4{position:relative;padding-left:15px;margin:0;line-height:18px;color:#bcbcbc;font-weight:400;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.route_listprt .listing_box ul li .pickdropprt .pickprt h4:before{background:#bcbcbc;top:4px;left:0;position:absolute;content:\"\";width:7px;height:7px;border-radius:100%}.route_listprt .listing_box ul li .pickdropprt .dropprt{position:relative;padding-bottom:10px;display:flex;align-items:center}.route_listprt .listing_box ul li .pickdropprt .dropprt span{padding-left:0;padding-right:20px;display:block}.route_listprt .listing_box ul li .pickdropprt .dropprt b{position:relative}.route_listprt .listing_box ul li .pickdropprt .dropprt b:after{background:#bcbcbc;width:1px;height:12px;left:3px;content:\"\";position:absolute;top:-7px}.route_listprt .listing_box ul li .pickdropprt .dropprt h4{position:relative;padding-left:15px;margin:0;line-height:18px;color:#bcbcbc;font-weight:400;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.route_listprt .listing_box ul li .pickdropprt .dropprt h4:before{background:#bcbcbc;top:4px;left:0;position:absolute;content:\"\";width:7px;height:7px;border-radius:100%}.route_listprt.show .listing_box{width:300px;max-width:300px;flex:0 0 350px;transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;padding:40px 0 40px 20px;opacity:1}.route_listprt.show .listing_box h2{color:#fff;white-space:nowrap}.route_listprt.show .listing_box .closebtn{position:absolute;left:-33px;top:50px;background:#282828;color:#fff;padding:8px;border-top-left-radius:15px;border-bottom-left-radius:15px;cursor:pointer;box-shadow:-4px 2px 5px #ffffff14;display:block}.btnprt{display:flex;justify-content:space-between;align-items:center;padding-right:20px}.btnprt h2{margin:0}.btnprt button{font-size:15px;padding:8px 20px;background-color:#326ad3;color:#fff;border:none;border-radius:10px;box-shadow:none;outline:none}.hidden{display:none}.route_detail{background:#282828;position:absolute;width:260px;top:50%;transform:translateY(-50%);right:310px;border-radius:20px;padding:10px;box-shadow:0 0 5px #ffffff36}.createTxt small{color:#fff;font-size:.7rem}.closebtnroutedetail{box-shadow:0 0 5px #0000001c;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer;background:#f5f5f5;position:absolute;top:-7px;left:-11px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.PerfectScrollbarComponent, selector: "perfect-scrollbar", inputs: ["disabled", "usePSClass", "autoPropagation", "scrollIndicators", "config"], outputs: ["psScrollY", "psScrollX", "psScrollUp", "psScrollDown", "psScrollLeft", "psScrollRight", "psYReachEnd", "psYReachStart", "psXReachEnd", "psXReachStart"], exportAs: ["ngxPerfectScrollbar"] }, { kind: "component", type: i6.JobRouteListComponent, selector: "app-job-route-list", inputs: ["routes", "selectedRoute", "masterRoutes"], outputs: ["changeNav", "changeRoutes", "changeSelectedRoute"] }, { kind: "component", type: i7.JobcodeStatusComponent, selector: "app-jobcode-status", inputs: ["jobValue"] }, { kind: "component", type: i8.JobcodeOverviewComponent, selector: "app-jobcode-overview", inputs: ["jobValue"] }, { kind: "component", type: i9.RouteInfoCardComponent, selector: "lib-route-info-card", inputs: ["popupData", "propData"] }] });
166
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: JobCodeComponent, decorators: [{
167
167
  type: Component,
168
168
  args: [{ selector: 'app-job-code', template: "<div class=\"jobcode_detailprt\" (click)=\"isOverlapRouteSection = false\" *ngIf=\"jobdetail\" [ngClass]=\"{'overlap': !isOverlapRouteSection}\" cdkDrag>\n <span class=\"close\"><mat-icon (click)=\"clearJob()\">clear</mat-icon></span>\n <div class=\"job_details_area\">\n <div class=\"detailnameprt\">\n <app-jobcode-status [jobValue]=\"jobdetail\"></app-jobcode-status>\n </div>\n <app-jobcode-overview [jobValue]=\"jobdetail\"></app-jobcode-overview>\n </div>\n</div>\n\n<div class=\"route_listprt\" (click)=\"isOverlapRouteSection = true\" [ngClass]=\"{ 'show': isVisible, 'overlap': isOverlapRouteSection}\">\n <div class=\"listing_toggle\" (click)=\"toggleSidemenu()\">\n <img src=\"assets/images/route.svg\" alt=\"\" />\n </div>\n\n <div class=\"listing_box\">\n <div class=\"closebtn\" (click)=\"toggleSidemenu()\">\n <mat-icon>clear</mat-icon>\n </div>\n\n <div class=\"btnprt\">\n <h2> List of Routes </h2>\n <button (click)=\"masterToggle()\">{{routes && routes.length > 0 && routes.length === selectedRoute.selected.length ? 'Uncheck' : 'Check'}} All</button>\n </div>\n\n <app-job-route-list [routes]=\"routes\" [masterRoutes]=\"masterRoutes\" [selectedRoute]=\"selectedRoute\" (changeRoutes)=\"routes = $event\" (changeSelectedRoute)=\"selectedRoute = $event\"></app-job-route-list>\n\n <perfect-scrollbar>\n <ul *ngIf=\"routes['length'] > 0\">\n <li *ngFor=\"let list of routes\">\n <div class=\"iconprt\">\n <span>\n <input type=\"checkbox\" [checked]=\"selectedRoute.isSelected(list)\"\n (change)=\"$event ? selectRoute(list) : null\" /><label>&nbsp;</label>\n <div class=\"border\"></div>\n </span>\n <div class=\"statusunit\" [ngClass]=\"list['unit']\">{{list['unit']}}</div>\n <div class=\"infoicon\">\n <img (mouseenter)=\"togglerouteDetails(true, list)\" (mouseout)=\"togglerouteDetails(false, list, true)\"\n (click)=\"togglerouteDetails('click', list)\" src=\"assets/images/info_icon.png\" [alt]=\"\" />\n </div>\n <div class=\"infoicon\" *ngIf=\"config.repository === 'customer'\">\n <img src=\"assets/images/share_icon.png\" (click)=\"openShareRouteModal(list)\" [alt]=\"\" />\n </div>\n </div>\n <div class=\"pickprtbox\">\n <h2> {{list['route_name']}} </h2>\n <h3><ng-container *ngIf=\"config?.repository === 'coolmap'\">{{list['customer_name']}} | </ng-container>{{config.repository === 'coolmap' ? list['material'] : list['materialLabel']}}</h3>\n <div class=\"pickdropprt\">\n <div class=\"pickprt\">\n <b>\n <h4>{{list['pickup_location']}}</h4>\n </b>\n </div>\n <div class=\"dropprt\">\n <b>\n <h4>{{list['delivery_location']}}</h4>\n </b>\n </div>\n </div>\n </div>\n </li>\n </ul>\n <p style=\"color: #fff;\" *ngIf=\"routes.length === 0\">No Route found</p>\n </perfect-scrollbar>\n </div>\n\n <div class=\"route_detail\" *ngIf=\"detailsCardEnable\">\n <div class=\"closebtnroutedetail\" (click)=\"detailsCardEnable = false; preventMouseout = false\">\n <mat-icon>clear</mat-icon>\n </div>\n <lib-route-info-card [propData]=\"{className: 'listRoutecard', repository: config['repository']}\" [popupData]=\"routeCardDetail\"></lib-route-info-card>\n <div class=\"createTxt\">\n <small>\n Created by {{routeCardDetail?.created_by_name}} on {{routeCardDetail?.created_at}}\n </small>\n </div>\n </div>\n</div>\n", styles: [".jobcode_detailprt{position:absolute;left:300px;bottom:10px;background:white;padding:15px 20px;border-radius:20px;max-width:350px;z-index:999;box-shadow:0 0 5px #0000001a}.jobcode_detailprt .close{box-shadow:0 0 5px #0000001c;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer;background:#fff;position:absolute;top:-11px;left:-11px}@keyframes autoslide{to{transform:translate(calc(90vw - 100%))}0%{transform:translate(0)}}.route_listprt .listing_toggle{background:white;border-radius:15px;padding:5px;position:absolute;right:10px;top:20px;cursor:pointer}.route_listprt .listing_toggle img{width:28px}.route_listprt .listing_box{background:#282828;height:100vh;position:fixed;right:0;top:0;z-index:1111;box-shadow:-3px 0 5px #ffffff14;transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;width:0;border-radius:40px 0 0;opacity:0}.route_listprt .listing_box .closebtn{display:none}.route_listprt .listing_box ul{padding:0 20px 0 0}.route_listprt .listing_box ul li{background:#4a4a4a;padding:10px 15px;border-radius:15px;display:flex;margin-bottom:10px;position:relative;height:inherit}@media (min-width: 1600px){.route_listprt .listing_box ul li{padding:6px 15px;margin-bottom:5px}}.route_listprt .listing_box ul li .iconprt{display:flex;flex-direction:column}.route_listprt .listing_box ul li .iconprt span{display:flex;align-items:center;margin-bottom:32px}.route_listprt .listing_box ul li .iconprt span input[type=checkbox]{width:100%;height:100%;margin-right:10px;opacity:0;position:absolute;left:0;margin-left:0;top:0;z-index:3;cursor:pointer}.route_listprt .listing_box ul li .iconprt span input[type=checkbox]:checked+label{background:url(../../../assets/images/fill-check.png) 16px 15px no-repeat}.route_listprt .listing_box ul li .iconprt span label{background:url(../../../assets/images/blank-check.png) 16px 15px no-repeat;width:100%;position:relative;z-index:2;font-size:12px;color:#878787;height:100%;position:absolute;top:0;left:0}.route_listprt .listing_box ul li .iconprt span .border{position:absolute;width:100%;height:100%;left:0;right:0;top:0;border-radius:15px}.route_listprt .listing_box ul li .iconprt span input:checked~.border{border-left:1px solid white;border-right:1px solid white;border-top:1px solid white;border-bottom:1px solid white}.route_listprt .listing_box ul li .iconprt span h2{margin-left:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px;padding-left:16px;font-size:.9rem;margin-bottom:0;font-weight:400;margin-top:0}.route_listprt .listing_box ul li .iconprt .statusunit{border-radius:30px;font-size:0;color:#fff;text-transform:capitalize;font-weight:500;width:20px;height:20px;text-align:center;line-height:20px;margin-bottom:7px}.route_listprt .listing_box ul li .iconprt .statusunit:first-letter{font-size:.8rem}.route_listprt .listing_box ul li .iconprt .statusunit.Ton{background:#ff7272}.route_listprt .listing_box ul li .iconprt .statusunit.Load{background:#a3c52e}.route_listprt .listing_box ul li .iconprt .statusunit.Hourly{background:#ae23d1}@media (min-width: 1600px){.route_listprt .listing_box ul li .iconprt .statusunit{line-height:21px}}.route_listprt .listing_box ul li .iconprt .infoicon{z-index:5;cursor:pointer}.route_listprt .listing_box ul li .iconprt .infoicon img{width:20px;height:20px}.route_listprt .listing_box ul li .pickprtbox{margin-left:10px}.route_listprt .listing_box ul li .pickprtbox h2{font-size:.9rem;margin:3px 0 5px;white-space:nowrap;text-overflow:ellipsis;max-width:195px;overflow:hidden}.route_listprt .listing_box ul li h3{font-size:.8rem;color:#979797;font-weight:600;margin-top:0;white-space:nowrap;text-overflow:ellipsis;max-width:195px;overflow:hidden;margin-bottom:5px}.route_listprt .listing_box ul li .pickdropprt{font-size:.75rem}.route_listprt .listing_box ul li .pickdropprt .pickprt{position:relative;display:flex;align-items:center;padding-bottom:10px}.route_listprt .listing_box ul li .pickdropprt .pickprt span{padding-left:0;padding-right:20px;display:block}.route_listprt .listing_box ul li .pickdropprt .pickprt b{position:relative}.route_listprt .listing_box ul li .pickdropprt .pickprt b:after{background:#bcbcbc;width:1px;height:100%;left:3px;content:\"\";position:absolute;top:10px}.route_listprt .listing_box ul li .pickdropprt .pickprt h4{position:relative;padding-left:15px;margin:0;line-height:18px;color:#bcbcbc;font-weight:400;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.route_listprt .listing_box ul li .pickdropprt .pickprt h4:before{background:#bcbcbc;top:4px;left:0;position:absolute;content:\"\";width:7px;height:7px;border-radius:100%}.route_listprt .listing_box ul li .pickdropprt .dropprt{position:relative;padding-bottom:10px;display:flex;align-items:center}.route_listprt .listing_box ul li .pickdropprt .dropprt span{padding-left:0;padding-right:20px;display:block}.route_listprt .listing_box ul li .pickdropprt .dropprt b{position:relative}.route_listprt .listing_box ul li .pickdropprt .dropprt b:after{background:#bcbcbc;width:1px;height:12px;left:3px;content:\"\";position:absolute;top:-7px}.route_listprt .listing_box ul li .pickdropprt .dropprt h4{position:relative;padding-left:15px;margin:0;line-height:18px;color:#bcbcbc;font-weight:400;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.route_listprt .listing_box ul li .pickdropprt .dropprt h4:before{background:#bcbcbc;top:4px;left:0;position:absolute;content:\"\";width:7px;height:7px;border-radius:100%}.route_listprt.show .listing_box{width:300px;max-width:300px;flex:0 0 350px;transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;padding:40px 0 40px 20px;opacity:1}.route_listprt.show .listing_box h2{color:#fff;white-space:nowrap}.route_listprt.show .listing_box .closebtn{position:absolute;left:-33px;top:50px;background:#282828;color:#fff;padding:8px;border-top-left-radius:15px;border-bottom-left-radius:15px;cursor:pointer;box-shadow:-4px 2px 5px #ffffff14;display:block}.btnprt{display:flex;justify-content:space-between;align-items:center;padding-right:20px}.btnprt h2{margin:0}.btnprt button{font-size:15px;padding:8px 20px;background-color:#326ad3;color:#fff;border:none;border-radius:10px;box-shadow:none;outline:none}.hidden{display:none}.route_detail{background:#282828;position:absolute;width:260px;top:50%;transform:translateY(-50%);right:310px;border-radius:20px;padding:10px;box-shadow:0 0 5px #ffffff36}.createTxt small{color:#fff;font-size:.7rem}.closebtnroutedetail{box-shadow:0 0 5px #0000001c;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer;background:#f5f5f5;position:absolute;top:-7px;left:-11px}\n"] }]
169
169
  }], ctorParameters: function () { return [{ type: i1.UtilsService }, { type: i1.CoolmapService }, { type: i1.CoolmapConfigModel, decorators: [{
@@ -178,4 +178,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
178
178
  }], openShareRoute: [{
179
179
  type: Output
180
180
  }] } });
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLWNvZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29vbG1hcC9zcmMvbGliL2NvbXBvbmVudC9qb2ItY29kZS9qb2ItY29kZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb29sbWFwL3NyYy9saWIvY29tcG9uZW50L2pvYi1jb2RlL2pvYi1jb2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7QUFRMUMsTUFBTSxPQUFPLGdCQUFnQjtJQWlCM0IsWUFBbUIsS0FBbUIsRUFBUyxPQUF1QixFQUN2QyxNQUEwQjtRQUR0QyxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQVMsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDdkMsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFmekQsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixXQUFNLEdBQVksRUFBRSxDQUFDO1FBQ2Qsa0JBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBTSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDdkMsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3JDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUFDLDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQUM3RSxlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUUzQyxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQVMvQixJQUFJLENBQUMsS0FBSyxDQUFDLCtCQUEr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QUE5QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29vbG1hcENvbmZpZ01vZGVsLCBDb29sbWFwU2VydmljZSwgQ3VzdG9tZXJSZXBvRGV0YWlsc01vZGVsLCBSb3V0ZSwgVXRpbHNTZXJ2aWNlIH0gZnJvbSAnQGFnZ2RpcmVjdC9jb29sbWFwLXNlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWpvYi1jb2RlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2pvYi1jb2RlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vam9iLWNvZGUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBKb2JDb2RlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwdWJsaWMgam9iZGV0YWlsITogYW55O1xuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tZXJSZXBvRGV0YWlscyE6IEN1c3RvbWVyUmVwb0RldGFpbHNNb2RlbDtcbiAgaXNWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIHJvdXRlczogUm91dGVbXSA9IFtdO1xuICBwdWJsaWMgc2VsZWN0ZWRSb3V0ZSA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxhbnk+KHRydWUsIFtdKVxuICBAT3V0cHV0KCkgcHVibGljIGNsZWFySm9iRGV0YWlscyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBvcGVuU2hhcmVSb3V0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTsgaXNPdmVybGFwUm91dGVTZWN0aW9uID0gZmFsc2U7XG4gIHB1YmxpYyBkZXN0cm95ZXIkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgZGV0YWlsc0NhcmRFbmFibGU6IGJvb2xlYW4gfCBzdHJpbmc7XG4gIHByZXZlbnRNb3VzZW91dDogYm9vbGVhbiA9IGZhbHNlO1xuICByb3V0ZUNhcmREZXRhaWw6IFJvdXRlO1xuICBwcmV2ZW50TGlzdFVwZGF0ZTogYm9vbGVhbjtcbiAgbWFzdGVyUm91dGVzOiBhbnk7XG4gIHVuaXRMaXN0OiBhbnk7XG4gIG1hdGVyaWFsc0xpc3Q6IGFueTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdXRpbHM6IFV0aWxzU2VydmljZSwgcHVibGljIGNvb2xNYXA6IENvb2xtYXBTZXJ2aWNlLFxuICAgIEBJbmplY3QoJ21lbWJlckRhdGEnKSBwdWJsaWMgY29uZmlnOiBDb29sbWFwQ29uZmlnTW9kZWwpIHtcbiAgICB0aGlzLnV0aWxzLmNsZWFyVmlld1JvdXRlZm9ySm9iQ29kZU9ic2VydmUucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZXIkKSkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICBpZiAocmVzKSB0aGlzLmNvb2xNYXAucmVtb3ZlSm9iRnJvbU1hcCh0aGlzLnNlbGVjdGVkUm91dGUuc2VsZWN0ZWQpOyB0aGlzLnNlbGVjdGVkUm91dGUuY2xlYXIoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQgeyB0aGlzLmNoZWNrQW5kQ2FsbFJvdXRlTGlzdCgpIH1cbiAgY2hlY2tBbmRDYWxsUm91dGVMaXN0KCkge1xuICAgICAgICB0aGlzLnV0aWxzLmNsZWFyT3B0aW9ucygpO1xuICAgIGlmICh0aGlzLmNvbmZpZy5yZXBvc2l0b3J5ID09PSAnY3VzdG9tZXInKSB7XG4gICAgICB0aGlzLnV0aWxzLmZldGNoVW5pdHNMaXN0KCkudGhlbigocmVzKSA9PiB7XG4gICAgICAgIHRoaXMudW5pdExpc3QgPSByZXM7XG4gICAgICAgIHRoaXMudXRpbHMuZmV0Y2hNYXRlcmlhbHNMaXN0Rm9yQ3VzdG9tZXIoKS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICB0aGlzLm1hdGVyaWFsc0xpc3QgPSByZXM7XG4gICAgICAgICAgdGhpcy5nZXRSb3V0ZUxpc3RGb3JDdXN0b21lcigpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdldFJvdXRlTGlzdEZvckNvb2xNYXAoKVxuICAgIH1cbiAgfVxuICBnZXRVbml0TmFtZShkYXRhKTogc3RyaW5nIHtcbiAgICBsZXQgdW5pdE5hbWUgPSAnJztcbiAgICB0aGlzLnVuaXRMaXN0Lm1hcCgocmVzKSA9PiB7XG4gICAgICBpZiAocmVzLmlkID09PSBkYXRhLnVuaXRfaWQpIHtcbiAgICAgICAgdW5pdE5hbWUgPSByZXMudHlwZVxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIHVuaXROYW1lO1xuICB9XG5cbiAgZ2V0TWF0ZXJpYWxOYW1lKGRhdGEpOiBzdHJpbmcge1xuICAgIGxldCBtYXRlcmlhbE5hbWUgPSAnJztcbiAgICB0aGlzLm1hdGVyaWFsc0xpc3QubWFwKChyZXMpID0+IHtcbiAgICAgIGlmIChyZXMuc3ViX21hdGVyaWFsX2lkID09PSBkYXRhLm1hdGVyaWFsc19pZCkge1xuICAgICAgICBtYXRlcmlhbE5hbWUgPSByZXMubGFiZWxcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiBtYXRlcmlhbE5hbWU7XG4gIH1cbiAgZ2V0Um91dGVMaXN0Rm9yQ29vbE1hcCgpIHtcbiAgICB0aGlzLnV0aWxzLmdldERhdGEoJ3JvdXRlcy9hbGwnKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llciQpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICBpZiAocmVzKSB7XG4gICAgICAgIHRoaXMucm91dGVzID0gcmVzLmRhdGE7XG4gICAgICAgIHRoaXMubWFzdGVyUm91dGVzID0gcmVzLmRhdGE7XG4gICAgICAgIHRoaXMucHJldmVudExpc3RVcGRhdGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yb3V0ZXMuZm9yRWFjaCgoZWxlOiBSb3V0ZSkgPT4geyB0aGlzLnV0aWxzLm1ha2VPcHRpb25zKGVsZSkgfSk7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuICBnZXRSb3V0ZUxpc3RGb3JDdXN0b21lcigpIHtcbiAgICBjb25zdCBkYXRhc2V0ID0ge1xuICAgICAgY3VzdG9tZXJfaWQ6IHRoaXMuY3VzdG9tZXJSZXBvRGV0YWlscy5jdXN0b21lci5pZFxuICAgIH1cbiAgICB0aGlzLnV0aWxzLnBvc3RkYXRhKCdyb3V0ZXMvYWxsJywgZGF0YXNldCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZXIkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICB0aGlzLnJvdXRlcyA9IHJlcy5kYXRhO1xuICAgICAgICB0aGlzLnByZXZlbnRMaXN0VXBkYXRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMucm91dGVzLm1hcCgoZWxlOiBSb3V0ZSkgPT4ge1xuICAgICAgICAgIGVsZS51bml0ID0gdGhpcy5nZXRVbml0TmFtZShlbGUpO1xuICAgICAgICAgIGVsZS5tYXRlcmlhbExhYmVsID0gdGhpcy5nZXRNYXRlcmlhbE5hbWUoZWxlKTtcbiAgICAgICAgICBlbGUubWF0ZXJpYWwgPSB0aGlzLmdldE1hdGVyaWFsTmFtZShlbGUpLnNwbGl0KCd8JylbMF0udHJpbSgpO1xuICAgICAgICAgIHRoaXMudXRpbHMubWFrZU9wdGlvbnMoZWxlKVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5tYXN0ZXJSb3V0ZXMgPSB0aGlzLnJvdXRlcztcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHRvZ2dsZVNpZGVtZW51KCkge1xuICAgIHRoaXMuaXNWaXNpYmxlID0gIXRoaXMuaXNWaXNpYmxlO1xuICAgIHRoaXMuZGV0YWlsc0NhcmRFbmFibGUgPSBmYWxzZTtcbiAgICB0aGlzLnByZXZlbnRNb3VzZW91dCA9IGZhbHNlXG4gIH1cbiAgY2xlYXJKb2IoKSB7IHRoaXMuY2xlYXJKb2JEZXRhaWxzLmVtaXQodHJ1ZSk7IHRoaXMudXRpbHMucHJlVmVudEpvYmRldGFpbGNsb3NlLm5leHQoZmFsc2UpIH1cbiAgc2VsZWN0Um91dGUoZXZlbnQ6IFJvdXRlKSB7XG4gICAgY29uc3QgaSA9IHRoaXMuc2VsZWN0ZWRSb3V0ZS5zZWxlY3RlZC5maW5kSW5kZXgoZWxlID0+IGVsZVsnb3JkZXJfbnVtYmVyJ10gPT09IGV2ZW50WydvcmRlcl9udW1iZXInXSk7XG4gICAgdGhpcy5zZWxlY3RlZFJvdXRlLnRvZ2dsZShldmVudCk7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkUm91dGUuaXNTZWxlY3RlZChldmVudCkgJiYgZXZlbnRbJ3JvdXRlX2lkJ10pIHtcbiAgICAgIHRoaXMuY29vbE1hcC5yZW1vdmVSb3V0ZUFuZE1hcmtlcihldmVudFsncm91dGVfaWQnXSkudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5jb29sTWFwLmV4dGVuZFJlQm91bmQoKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvb2xNYXAucGxvdFJvdXRlKGV2ZW50LCBldmVudFsncm91dGVfaWQnXSwgJ2pvYnJvdXRlTGlzdCcsIGZhbHNlLCB0cnVlKTtcbiAgICB9XG4gIH1cbiAgbWFzdGVyVG9nZ2xlKCkge1xuICAgIGlmICh0aGlzLnJvdXRlcy5sZW5ndGggPT09IHRoaXMuc2VsZWN0ZWRSb3V0ZS5zZWxlY3RlZC5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3V0ZS5jbGVhcigpO1xuICAgICAgdGhpcy5yb3V0ZXMuZm9yRWFjaChyb3cgPT4ge1xuICAgICAgICB0aGlzLmNvb2xNYXAucmVtb3ZlUm91dGVBbmRNYXJrZXIocm93Wydyb3V0ZV9pZCddKS50aGVuKChyZXM6IGFueSkgPT4geyB0aGlzLmNvb2xNYXAuZXh0ZW5kUmVCb3VuZCgpIH0pXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3V0ZXMuZm9yRWFjaChyb3cgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUm91dGUuc2VsZWN0KHJvdyk7XG4gICAgICAgIHRoaXMuY29vbE1hcC5wbG90Um91dGUocm93LCByb3dbJ3JvdXRlX2lkJ10sICdqb2Jyb3V0ZUxpc3QnLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgdG9nZ2xlcm91dGVEZXRhaWxzKGV2ZW50VHlwZTogc3RyaW5nIHwgYm9vbGVhbiwgcm91dGU6IFJvdXRlLCBtb3VzZU91dD86IGJvb2xlYW4pIHtcbiAgICBpZiAodHlwZW9mIChldmVudFR5cGUpID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5wcmV2ZW50TW91c2VvdXQgPSB0cnVlOyB0aGlzLnV0aWxzLnNldGRpY3RWYWx1ZSgncm91dGUtZGV0YWlscycsIEpTT04uc3RyaW5naWZ5KHJvdXRlKSk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgKGV2ZW50VHlwZSkgPT09ICdib29sZWFuJyAmJiBldmVudFR5cGUgJiYgIXRoaXMucHJldmVudE1vdXNlb3V0KSB7IHRoaXMuZGV0YWlsc0NhcmRFbmFibGUgPSBldmVudFR5cGUgfTtcbiAgICBpZiAodHlwZW9mIChldmVudFR5cGUpID09PSAnYm9vbGVhbicgJiYgIWV2ZW50VHlwZSAmJiAhdGhpcy5wcmV2ZW50TW91c2VvdXQpIHsgdGhpcy5kZXRhaWxzQ2FyZEVuYWJsZSA9IGV2ZW50VHlwZSB9O1xuICAgIGlmICh0aGlzLnByZXZlbnRNb3VzZW91dCAmJiAhdGhpcy5kZXRhaWxzQ2FyZEVuYWJsZSkgdGhpcy5wcmV2ZW50TW91c2VvdXQgPSBmYWxzZTtcbiAgICBpZiAobW91c2VPdXQpIHtcbiAgICAgIGlmICh0aGlzLnByZXZlbnRNb3VzZW91dCkge1xuICAgICAgICByb3V0ZSA9IHRoaXMudXRpbHMuZ2V0ZGljdFZhbHVlKCdyb3V0ZS1kZXRhaWxzJyk7XG4gICAgICAgIHRoaXMucm91dGVDYXJkRGV0YWlsID0gcm91dGU7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMucHJldmVudE1vdXNlb3V0KSB7XG4gICAgICAgIHRoaXMucm91dGVDYXJkRGV0YWlsID0gcm91dGVcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3V0ZUNhcmREZXRhaWwgPSByb3V0ZVxuICAgIH1cbiAgICB0aGlzLnJvdXRlQ2FyZERldGFpbFsnY3JlYXRlZF9hdCddID0gdGhpcy51dGlscy5nZXREYXRlRm9ybWF0KG5ldyBEYXRlKHRoaXMucm91dGVDYXJkRGV0YWlsWydjcmVhdGVkX2F0J10pLCAnLycpO1xuICB9XG5cbiAgb3BlblNoYXJlUm91dGVNb2RhbChkYXRhKSB7XG4gICAgdGhpcy5vcGVuU2hhcmVSb3V0ZS5lbWl0KGRhdGEpO1xuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveWVyJC5uZXh0KHRydWUpO1xuICAgIHRoaXMuZGVzdHJveWVyJC51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiam9iY29kZV9kZXRhaWxwcnRcIiAoY2xpY2spPVwiaXNPdmVybGFwUm91dGVTZWN0aW9uID0gZmFsc2VcIiAgKm5nSWY9XCJqb2JkZXRhaWxcIiBbbmdDbGFzc109XCJ7J292ZXJsYXAnOiAhaXNPdmVybGFwUm91dGVTZWN0aW9ufVwiIGNka0RyYWc+XG4gIDxzcGFuIGNsYXNzPVwiY2xvc2VcIj48bWF0LWljb24gKGNsaWNrKT1cImNsZWFySm9iKClcIj5jbGVhcjwvbWF0LWljb24+PC9zcGFuPlxuICA8ZGl2IGNsYXNzPVwiam9iX2RldGFpbHNfYXJlYVwiPlxuICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxuYW1lcHJ0XCI+XG4gICAgICA8YXBwLWpvYmNvZGUtc3RhdHVzIFtqb2JWYWx1ZV09XCJqb2JkZXRhaWxcIj48L2FwcC1qb2Jjb2RlLXN0YXR1cz5cbiAgICA8L2Rpdj5cbiAgICA8YXBwLWpvYmNvZGUtb3ZlcnZpZXcgW2pvYlZhbHVlXT1cImpvYmRldGFpbFwiPjwvYXBwLWpvYmNvZGUtb3ZlcnZpZXc+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJyb3V0ZV9saXN0cHJ0XCIgKGNsaWNrKT1cImlzT3ZlcmxhcFJvdXRlU2VjdGlvbiA9IHRydWVcIiBbbmdDbGFzc109XCJ7ICdzaG93JzogaXNWaXNpYmxlLCAnb3ZlcmxhcCc6IGlzT3ZlcmxhcFJvdXRlU2VjdGlvbn1cIj5cbiAgPGRpdiBjbGFzcz1cImxpc3RpbmdfdG9nZ2xlXCIgKGNsaWNrKT1cInRvZ2dsZVNpZGVtZW51KClcIj5cbiAgICA8aW1nIHNyYz1cImFzc2V0cy9pbWFnZXMvcm91dGUuc3ZnXCIgYWx0PVwiXCIgLz5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImxpc3RpbmdfYm94XCI+XG4gICAgPGRpdiBjbGFzcz1cImNsb3NlYnRuXCIgKGNsaWNrKT1cInRvZ2dsZVNpZGVtZW51KClcIj5cbiAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYnRucHJ0XCI+XG4gICAgICA8aDI+IExpc3Qgb2YgUm91dGVzIDwvaDI+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJtYXN0ZXJUb2dnbGUoKVwiPnt7cm91dGVzICYmIHJvdXRlcy5sZW5ndGggPiAwICYmIHJvdXRlcy5sZW5ndGggPT09IHNlbGVjdGVkUm91dGUuc2VsZWN0ZWQubGVuZ3RoID8gJ1VuY2hlY2snIDogJ0NoZWNrJ319IEFsbDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGFwcC1qb2Itcm91dGUtbGlzdCBbcm91dGVzXT1cInJvdXRlc1wiIFttYXN0ZXJSb3V0ZXNdPVwibWFzdGVyUm91dGVzXCIgW3NlbGVjdGVkUm91dGVdPVwic2VsZWN0ZWRSb3V0ZVwiIChjaGFuZ2VSb3V0ZXMpPVwicm91dGVzID0gJGV2ZW50XCIgKGNoYW5nZVNlbGVjdGVkUm91dGUpPVwic2VsZWN0ZWRSb3V0ZSA9ICRldmVudFwiPjwvYXBwLWpvYi1yb3V0ZS1saXN0PlxuXG4gICAgPHBlcmZlY3Qtc2Nyb2xsYmFyPlxuICAgICAgPHVsICpuZ0lmPVwicm91dGVzWydsZW5ndGgnXSA+IDBcIj5cbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBsaXN0IG9mIHJvdXRlc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29ucHJ0XCI+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtjaGVja2VkXT1cInNlbGVjdGVkUm91dGUuaXNTZWxlY3RlZChsaXN0KVwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBzZWxlY3RSb3V0ZShsaXN0KSA6IG51bGxcIiAvPjxsYWJlbD4mbmJzcDs8L2xhYmVsPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyXCI+PC9kaXY+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzdW5pdFwiIFtuZ0NsYXNzXT1cImxpc3RbJ3VuaXQnXVwiPnt7bGlzdFsndW5pdCddfX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvaWNvblwiPlxuICAgICAgICAgICAgICA8aW1nIChtb3VzZWVudGVyKT1cInRvZ2dsZXJvdXRlRGV0YWlscyh0cnVlLCBsaXN0KVwiIChtb3VzZW91dCk9XCJ0b2dnbGVyb3V0ZURldGFpbHMoZmFsc2UsIGxpc3QsIHRydWUpXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZXJvdXRlRGV0YWlscygnY2xpY2snLCBsaXN0KVwiIHNyYz1cImFzc2V0cy9pbWFnZXMvaW5mb19pY29uLnBuZ1wiIFthbHRdPVwiXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm9pY29uXCIgKm5nSWY9XCJjb25maWcucmVwb3NpdG9yeSA9PT0gJ2N1c3RvbWVyJ1wiPlxuICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9pbWFnZXMvc2hhcmVfaWNvbi5wbmdcIiAoY2xpY2spPVwib3BlblNoYXJlUm91dGVNb2RhbChsaXN0KVwiIFthbHRdPVwiXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaWNrcHJ0Ym94XCI+XG4gICAgICAgICAgICA8aDI+IHt7bGlzdFsncm91dGVfbmFtZSddfX0gPC9oMj5cbiAgICAgICAgICAgIDxoMz48bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnPy5yZXBvc2l0b3J5ID09PSAnY29vbG1hcCdcIj57e2xpc3RbJ2N1c3RvbWVyX25hbWUnXX19IHwgPC9uZy1jb250YWluZXI+e3tjb25maWcucmVwb3NpdG9yeSA9PT0gJ2Nvb2xtYXAnID8gbGlzdFsnbWF0ZXJpYWwnXSA6IGxpc3RbJ21hdGVyaWFsTGFiZWwnXX19PC9oMz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaWNrZHJvcHBydFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGlja3BydFwiPlxuICAgICAgICAgICAgICAgIDxiPlxuICAgICAgICAgICAgICAgICAgPGg0Pnt7bGlzdFsncGlja3VwX2xvY2F0aW9uJ119fTwvaDQ+XG4gICAgICAgICAgICAgICAgPC9iPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3BwcnRcIj5cbiAgICAgICAgICAgICAgICA8Yj5cbiAgICAgICAgICAgICAgICAgIDxoND57e2xpc3RbJ2RlbGl2ZXJ5X2xvY2F0aW9uJ119fTwvaDQ+XG4gICAgICAgICAgICAgICAgPC9iPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2xpPlxuICAgICAgPC91bD5cbiAgICAgIDxwIHN0eWxlPVwiY29sb3I6ICNmZmY7XCIgKm5nSWY9XCJyb3V0ZXMubGVuZ3RoID09PSAwXCI+Tm8gUm91dGUgZm91bmQ8L3A+XG4gICAgPC9wZXJmZWN0LXNjcm9sbGJhcj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInJvdXRlX2RldGFpbFwiICpuZ0lmPVwiZGV0YWlsc0NhcmRFbmFibGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2xvc2VidG5yb3V0ZWRldGFpbFwiIChjbGljayk9XCJkZXRhaWxzQ2FyZEVuYWJsZSA9IGZhbHNlOyBwcmV2ZW50TW91c2VvdXQgPSBmYWxzZVwiPlxuICAgICAgPG1hdC1pY29uPmNsZWFyPC9tYXQtaWNvbj5cbiAgICA8L2Rpdj5cbiAgICA8bGliLXJvdXRlLWluZm8tY2FyZCBbcHJvcERhdGFdPVwie2NsYXNzTmFtZTogJ2xpc3RSb3V0ZWNhcmQnLCByZXBvc2l0b3J5OiBjb25maWdbJ3JlcG9zaXRvcnknXX1cIiAgW3BvcHVwRGF0YV09XCJyb3V0ZUNhcmREZXRhaWxcIj48L2xpYi1yb3V0ZS1pbmZvLWNhcmQ+XG4gICAgPGRpdiBjbGFzcz1cImNyZWF0ZVR4dFwiPlxuICAgICAgPHNtYWxsPlxuICAgICAgICBDcmVhdGVkIGJ5IHt7cm91dGVDYXJkRGV0YWlsPy5jcmVhdGVkX2J5X25hbWV9fSBvbiB7e3JvdXRlQ2FyZERldGFpbD8uY3JlYXRlZF9hdH19XG4gICAgICA8L3NtYWxsPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLWNvZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29vbG1hcC9zcmMvbGliL2NvbXBvbmVudC9qb2ItY29kZS9qb2ItY29kZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb29sbWFwL3NyYy9saWIvY29tcG9uZW50L2pvYi1jb2RlL2pvYi1jb2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7QUFTMUMsTUFBTSxPQUFPLGdCQUFnQjtJQWlCM0IsWUFBbUIsS0FBbUIsRUFBUyxPQUF1QixFQUN2QyxNQUEwQjtRQUR0QyxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQVMsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDdkMsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFmekQsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixXQUFNLEdBQVksRUFBRSxDQUFDO1FBQ2Qsa0JBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBTSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDdkMsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3JDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUFDLDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQUM3RSxlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUUzQyxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQVMvQixJQUFJLENBQUMsS0FBSyxDQUFDLCtCQUEr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QUE5QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29vbG1hcENvbmZpZ01vZGVsLCBDb29sbWFwU2VydmljZSwgQ3VzdG9tZXJSZXBvRGV0YWlsc01vZGVsLCBSb3V0ZSwgVXRpbHNTZXJ2aWNlIH0gZnJvbSAnQGFnZ2RpcmVjdC9jb29sbWFwLXNlcnZpY2VzJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtam9iLWNvZGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vam9iLWNvZGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9qb2ItY29kZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEpvYkNvZGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHB1YmxpYyBqb2JkZXRhaWwhOiBhbnk7XG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21lclJlcG9EZXRhaWxzITogQ3VzdG9tZXJSZXBvRGV0YWlsc01vZGVsO1xuICBpc1Zpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcm91dGVzOiBSb3V0ZVtdID0gW107XG4gIHB1YmxpYyBzZWxlY3RlZFJvdXRlID0gbmV3IFNlbGVjdGlvbk1vZGVsPGFueT4odHJ1ZSwgW10pXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2xlYXJKb2JEZXRhaWxzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcHVibGljIG9wZW5TaGFyZVJvdXRlID0gbmV3IEV2ZW50RW1pdHRlcigpOyBpc092ZXJsYXBSb3V0ZVNlY3Rpb24gPSBmYWxzZTtcbiAgcHVibGljIGRlc3Ryb3llciQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBkZXRhaWxzQ2FyZEVuYWJsZTogYm9vbGVhbiB8IHN0cmluZztcbiAgcHJldmVudE1vdXNlb3V0OiBib29sZWFuID0gZmFsc2U7XG4gIHJvdXRlQ2FyZERldGFpbDogUm91dGU7XG4gIHByZXZlbnRMaXN0VXBkYXRlOiBib29sZWFuO1xuICBtYXN0ZXJSb3V0ZXM6IGFueTtcbiAgdW5pdExpc3Q6IGFueTtcbiAgbWF0ZXJpYWxzTGlzdDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB1dGlsczogVXRpbHNTZXJ2aWNlLCBwdWJsaWMgY29vbE1hcDogQ29vbG1hcFNlcnZpY2UsXG4gICAgQEluamVjdCgnbWVtYmVyRGF0YScpIHB1YmxpYyBjb25maWc6IENvb2xtYXBDb25maWdNb2RlbCkge1xuICAgIHRoaXMudXRpbHMuY2xlYXJWaWV3Um91dGVmb3JKb2JDb2RlT2JzZXJ2ZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llciQpKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIGlmIChyZXMpIHRoaXMuY29vbE1hcC5yZW1vdmVKb2JGcm9tTWFwKHRoaXMuc2VsZWN0ZWRSb3V0ZS5zZWxlY3RlZCk7IHRoaXMuc2VsZWN0ZWRSb3V0ZS5jbGVhcigpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7IHRoaXMuY2hlY2tBbmRDYWxsUm91dGVMaXN0KCkgfVxuICBjaGVja0FuZENhbGxSb3V0ZUxpc3QoKSB7XG4gICAgICAgIHRoaXMudXRpbHMuY2xlYXJPcHRpb25zKCk7XG4gICAgaWYgKHRoaXMuY29uZmlnLnJlcG9zaXRvcnkgPT09ICdjdXN0b21lcicpIHtcbiAgICAgIHRoaXMudXRpbHMuZmV0Y2hVbml0c0xpc3QoKS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgdGhpcy51bml0TGlzdCA9IHJlcztcbiAgICAgICAgdGhpcy51dGlscy5mZXRjaE1hdGVyaWFsc0xpc3RGb3JDdXN0b21lcigpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgIHRoaXMubWF0ZXJpYWxzTGlzdCA9IHJlcztcbiAgICAgICAgICB0aGlzLmdldFJvdXRlTGlzdEZvckN1c3RvbWVyKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ2V0Um91dGVMaXN0Rm9yQ29vbE1hcCgpXG4gICAgfVxuICB9XG4gIGdldFVuaXROYW1lKGRhdGEpOiBzdHJpbmcge1xuICAgIGxldCB1bml0TmFtZSA9ICcnO1xuICAgIHRoaXMudW5pdExpc3QubWFwKChyZXMpID0+IHtcbiAgICAgIGlmIChyZXMuaWQgPT09IGRhdGEudW5pdF9pZCkge1xuICAgICAgICB1bml0TmFtZSA9IHJlcy50eXBlXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gdW5pdE5hbWU7XG4gIH1cblxuICBnZXRNYXRlcmlhbE5hbWUoZGF0YSk6IHN0cmluZyB7XG4gICAgbGV0IG1hdGVyaWFsTmFtZSA9ICcnO1xuICAgIHRoaXMubWF0ZXJpYWxzTGlzdC5tYXAoKHJlcykgPT4ge1xuICAgICAgaWYgKHJlcy5zdWJfbWF0ZXJpYWxfaWQgPT09IGRhdGEubWF0ZXJpYWxzX2lkKSB7XG4gICAgICAgIG1hdGVyaWFsTmFtZSA9IHJlcy5sYWJlbFxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIG1hdGVyaWFsTmFtZTtcbiAgfVxuICBnZXRSb3V0ZUxpc3RGb3JDb29sTWFwKCkge1xuICAgIHRoaXMudXRpbHMuZ2V0RGF0YSgncm91dGVzL2FsbCcpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVyJCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXMgPSByZXMuZGF0YTtcbiAgICAgICAgdGhpcy5tYXN0ZXJSb3V0ZXMgPSByZXMuZGF0YTtcbiAgICAgICAgdGhpcy5wcmV2ZW50TGlzdFVwZGF0ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJvdXRlcy5mb3JFYWNoKChlbGU6IFJvdXRlKSA9PiB7IHRoaXMudXRpbHMubWFrZU9wdGlvbnMoZWxlKSB9KTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG4gIGdldFJvdXRlTGlzdEZvckN1c3RvbWVyKCkge1xuICAgIGNvbnN0IGRhdGFzZXQgPSB7XG4gICAgICBjdXN0b21lcl9pZDogdGhpcy5jdXN0b21lclJlcG9EZXRhaWxzLmN1c3RvbWVyLmlkXG4gICAgfVxuICAgIHRoaXMudXRpbHMucG9zdGRhdGEoJ3JvdXRlcy9hbGwnLCBkYXRhc2V0KS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llciQpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICBpZiAocmVzKSB7XG4gICAgICAgIHRoaXMucm91dGVzID0gcmVzLmRhdGE7XG4gICAgICAgIHRoaXMucHJldmVudExpc3RVcGRhdGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yb3V0ZXMubWFwKChlbGU6IFJvdXRlKSA9PiB7XG4gICAgICAgICAgZWxlLnVuaXQgPSB0aGlzLmdldFVuaXROYW1lKGVsZSk7XG4gICAgICAgICAgZWxlLm1hdGVyaWFsTGFiZWwgPSB0aGlzLmdldE1hdGVyaWFsTmFtZShlbGUpO1xuICAgICAgICAgIGVsZS5tYXRlcmlhbCA9IHRoaXMuZ2V0TWF0ZXJpYWxOYW1lKGVsZSkuc3BsaXQoJ3wnKVswXS50cmltKCk7XG4gICAgICAgICAgdGhpcy51dGlscy5tYWtlT3B0aW9ucyhlbGUpXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm1hc3RlclJvdXRlcyA9IHRoaXMucm91dGVzO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdG9nZ2xlU2lkZW1lbnUoKSB7XG4gICAgdGhpcy5pc1Zpc2libGUgPSAhdGhpcy5pc1Zpc2libGU7XG4gICAgdGhpcy5kZXRhaWxzQ2FyZEVuYWJsZSA9IGZhbHNlO1xuICAgIHRoaXMucHJldmVudE1vdXNlb3V0ID0gZmFsc2VcbiAgfVxuICBjbGVhckpvYigpIHsgdGhpcy5jbGVhckpvYkRldGFpbHMuZW1pdCh0cnVlKTsgdGhpcy51dGlscy5wcmVWZW50Sm9iZGV0YWlsY2xvc2UubmV4dChmYWxzZSkgfVxuICBzZWxlY3RSb3V0ZShldmVudDogUm91dGUpIHtcbiAgICBjb25zdCBpID0gdGhpcy5zZWxlY3RlZFJvdXRlLnNlbGVjdGVkLmZpbmRJbmRleChlbGUgPT4gZWxlWydvcmRlcl9udW1iZXInXSA9PT0gZXZlbnRbJ29yZGVyX251bWJlciddKTtcbiAgICB0aGlzLnNlbGVjdGVkUm91dGUudG9nZ2xlKGV2ZW50KTtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRSb3V0ZS5pc1NlbGVjdGVkKGV2ZW50KSAmJiBldmVudFsncm91dGVfaWQnXSkge1xuICAgICAgdGhpcy5jb29sTWFwLnJlbW92ZVJvdXRlQW5kTWFya2VyKGV2ZW50Wydyb3V0ZV9pZCddKS50aGVuKChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmNvb2xNYXAuZXh0ZW5kUmVCb3VuZCgpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29vbE1hcC5wbG90Um91dGUoZXZlbnQsIGV2ZW50Wydyb3V0ZV9pZCddLCAnam9icm91dGVMaXN0JywgZmFsc2UsIHRydWUpO1xuICAgIH1cbiAgfVxuICBtYXN0ZXJUb2dnbGUoKSB7XG4gICAgaWYgKHRoaXMucm91dGVzLmxlbmd0aCA9PT0gdGhpcy5zZWxlY3RlZFJvdXRlLnNlbGVjdGVkLmxlbmd0aCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvdXRlLmNsZWFyKCk7XG4gICAgICB0aGlzLnJvdXRlcy5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICAgIHRoaXMuY29vbE1hcC5yZW1vdmVSb3V0ZUFuZE1hcmtlcihyb3dbJ3JvdXRlX2lkJ10pLnRoZW4oKHJlczogYW55KSA9PiB7IHRoaXMuY29vbE1hcC5leHRlbmRSZUJvdW5kKCkgfSlcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlcy5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3V0ZS5zZWxlY3Qocm93KTtcbiAgICAgICAgdGhpcy5jb29sTWFwLnBsb3RSb3V0ZShyb3csIHJvd1sncm91dGVfaWQnXSwgJ2pvYnJvdXRlTGlzdCcsIGZhbHNlLCB0cnVlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICB0b2dnbGVyb3V0ZURldGFpbHMoZXZlbnRUeXBlOiBzdHJpbmcgfCBib29sZWFuLCByb3V0ZTogUm91dGUsIG1vdXNlT3V0PzogYm9vbGVhbikge1xuICAgIGlmICh0eXBlb2YgKGV2ZW50VHlwZSkgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLnByZXZlbnRNb3VzZW91dCA9IHRydWU7IHRoaXMudXRpbHMuc2V0ZGljdFZhbHVlKCdyb3V0ZS1kZXRhaWxzJywgSlNPTi5zdHJpbmdpZnkocm91dGUpKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiAoZXZlbnRUeXBlKSA9PT0gJ2Jvb2xlYW4nICYmIGV2ZW50VHlwZSAmJiAhdGhpcy5wcmV2ZW50TW91c2VvdXQpIHsgdGhpcy5kZXRhaWxzQ2FyZEVuYWJsZSA9IGV2ZW50VHlwZSB9O1xuICAgIGlmICh0eXBlb2YgKGV2ZW50VHlwZSkgPT09ICdib29sZWFuJyAmJiAhZXZlbnRUeXBlICYmICF0aGlzLnByZXZlbnRNb3VzZW91dCkgeyB0aGlzLmRldGFpbHNDYXJkRW5hYmxlID0gZXZlbnRUeXBlIH07XG4gICAgaWYgKHRoaXMucHJldmVudE1vdXNlb3V0ICYmICF0aGlzLmRldGFpbHNDYXJkRW5hYmxlKSB0aGlzLnByZXZlbnRNb3VzZW91dCA9IGZhbHNlO1xuICAgIGlmIChtb3VzZU91dCkge1xuICAgICAgaWYgKHRoaXMucHJldmVudE1vdXNlb3V0KSB7XG4gICAgICAgIHJvdXRlID0gdGhpcy51dGlscy5nZXRkaWN0VmFsdWUoJ3JvdXRlLWRldGFpbHMnKTtcbiAgICAgICAgdGhpcy5yb3V0ZUNhcmREZXRhaWwgPSByb3V0ZTtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5wcmV2ZW50TW91c2VvdXQpIHtcbiAgICAgICAgdGhpcy5yb3V0ZUNhcmREZXRhaWwgPSByb3V0ZVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlQ2FyZERldGFpbCA9IHJvdXRlXG4gICAgfVxuICAgIHRoaXMucm91dGVDYXJkRGV0YWlsWydjcmVhdGVkX2F0J10gPSB0aGlzLnV0aWxzLmdldERhdGVGb3JtYXQobmV3IERhdGUodGhpcy5yb3V0ZUNhcmREZXRhaWxbJ2NyZWF0ZWRfYXQnXSksICcvJyk7XG4gIH1cblxuICBvcGVuU2hhcmVSb3V0ZU1vZGFsKGRhdGEpIHtcbiAgICB0aGlzLm9wZW5TaGFyZVJvdXRlLmVtaXQoZGF0YSk7XG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95ZXIkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5kZXN0cm95ZXIkLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJqb2Jjb2RlX2RldGFpbHBydFwiIChjbGljayk9XCJpc092ZXJsYXBSb3V0ZVNlY3Rpb24gPSBmYWxzZVwiICAqbmdJZj1cImpvYmRldGFpbFwiIFtuZ0NsYXNzXT1cInsnb3ZlcmxhcCc6ICFpc092ZXJsYXBSb3V0ZVNlY3Rpb259XCIgY2RrRHJhZz5cbiAgPHNwYW4gY2xhc3M9XCJjbG9zZVwiPjxtYXQtaWNvbiAoY2xpY2spPVwiY2xlYXJKb2IoKVwiPmNsZWFyPC9tYXQtaWNvbj48L3NwYW4+XG4gIDxkaXYgY2xhc3M9XCJqb2JfZGV0YWlsc19hcmVhXCI+XG4gICAgPGRpdiBjbGFzcz1cImRldGFpbG5hbWVwcnRcIj5cbiAgICAgIDxhcHAtam9iY29kZS1zdGF0dXMgW2pvYlZhbHVlXT1cImpvYmRldGFpbFwiPjwvYXBwLWpvYmNvZGUtc3RhdHVzPlxuICAgIDwvZGl2PlxuICAgIDxhcHAtam9iY29kZS1vdmVydmlldyBbam9iVmFsdWVdPVwiam9iZGV0YWlsXCI+PC9hcHAtam9iY29kZS1vdmVydmlldz5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cInJvdXRlX2xpc3RwcnRcIiAoY2xpY2spPVwiaXNPdmVybGFwUm91dGVTZWN0aW9uID0gdHJ1ZVwiIFtuZ0NsYXNzXT1cInsgJ3Nob3cnOiBpc1Zpc2libGUsICdvdmVybGFwJzogaXNPdmVybGFwUm91dGVTZWN0aW9ufVwiPlxuICA8ZGl2IGNsYXNzPVwibGlzdGluZ190b2dnbGVcIiAoY2xpY2spPVwidG9nZ2xlU2lkZW1lbnUoKVwiPlxuICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ltYWdlcy9yb3V0ZS5zdmdcIiBhbHQ9XCJcIiAvPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibGlzdGluZ19ib3hcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2xvc2VidG5cIiAoY2xpY2spPVwidG9nZ2xlU2lkZW1lbnUoKVwiPlxuICAgICAgPG1hdC1pY29uPmNsZWFyPC9tYXQtaWNvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJidG5wcnRcIj5cbiAgICAgIDxoMj4gTGlzdCBvZiBSb3V0ZXMgPC9oMj5cbiAgICAgIDxidXR0b24gKGNsaWNrKT1cIm1hc3RlclRvZ2dsZSgpXCI+e3tyb3V0ZXMgJiYgcm91dGVzLmxlbmd0aCA+IDAgJiYgcm91dGVzLmxlbmd0aCA9PT0gc2VsZWN0ZWRSb3V0ZS5zZWxlY3RlZC5sZW5ndGggPyAnVW5jaGVjaycgOiAnQ2hlY2snfX0gQWxsPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8YXBwLWpvYi1yb3V0ZS1saXN0IFtyb3V0ZXNdPVwicm91dGVzXCIgW21hc3RlclJvdXRlc109XCJtYXN0ZXJSb3V0ZXNcIiBbc2VsZWN0ZWRSb3V0ZV09XCJzZWxlY3RlZFJvdXRlXCIgKGNoYW5nZVJvdXRlcyk9XCJyb3V0ZXMgPSAkZXZlbnRcIiAoY2hhbmdlU2VsZWN0ZWRSb3V0ZSk9XCJzZWxlY3RlZFJvdXRlID0gJGV2ZW50XCI+PC9hcHAtam9iLXJvdXRlLWxpc3Q+XG5cbiAgICA8cGVyZmVjdC1zY3JvbGxiYXI+XG4gICAgICA8dWwgKm5nSWY9XCJyb3V0ZXNbJ2xlbmd0aCddID4gMFwiPlxuICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGxpc3Qgb2Ygcm91dGVzXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImljb25wcnRcIj5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwic2VsZWN0ZWRSb3V0ZS5pc1NlbGVjdGVkKGxpc3QpXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IHNlbGVjdFJvdXRlKGxpc3QpIDogbnVsbFwiIC8+PGxhYmVsPiZuYnNwOzwvbGFiZWw+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXJcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXN1bml0XCIgW25nQ2xhc3NdPVwibGlzdFsndW5pdCddXCI+e3tsaXN0Wyd1bml0J119fTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm9pY29uXCI+XG4gICAgICAgICAgICAgIDxpbWcgKG1vdXNlZW50ZXIpPVwidG9nZ2xlcm91dGVEZXRhaWxzKHRydWUsIGxpc3QpXCIgKG1vdXNlb3V0KT1cInRvZ2dsZXJvdXRlRGV0YWlscyhmYWxzZSwgbGlzdCwgdHJ1ZSlcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlcm91dGVEZXRhaWxzKCdjbGljaycsIGxpc3QpXCIgc3JjPVwiYXNzZXRzL2ltYWdlcy9pbmZvX2ljb24ucG5nXCIgW2FsdF09XCJcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mb2ljb25cIiAqbmdJZj1cImNvbmZpZy5yZXBvc2l0b3J5ID09PSAnY3VzdG9tZXInXCI+XG4gICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ltYWdlcy9zaGFyZV9pY29uLnBuZ1wiIChjbGljayk9XCJvcGVuU2hhcmVSb3V0ZU1vZGFsKGxpc3QpXCIgW2FsdF09XCJcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBpY2twcnRib3hcIj5cbiAgICAgICAgICAgIDxoMj4ge3tsaXN0Wydyb3V0ZV9uYW1lJ119fSA8L2gyPlxuICAgICAgICAgICAgPGgzPjxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWc/LnJlcG9zaXRvcnkgPT09ICdjb29sbWFwJ1wiPnt7bGlzdFsnY3VzdG9tZXJfbmFtZSddfX0gfCA8L25nLWNvbnRhaW5lcj57e2NvbmZpZy5yZXBvc2l0b3J5ID09PSAnY29vbG1hcCcgPyBsaXN0WydtYXRlcmlhbCddIDogbGlzdFsnbWF0ZXJpYWxMYWJlbCddfX08L2gzPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBpY2tkcm9wcHJ0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaWNrcHJ0XCI+XG4gICAgICAgICAgICAgICAgPGI+XG4gICAgICAgICAgICAgICAgICA8aDQ+e3tsaXN0WydwaWNrdXBfbG9jYXRpb24nXX19PC9oND5cbiAgICAgICAgICAgICAgICA8L2I+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcHBydFwiPlxuICAgICAgICAgICAgICAgIDxiPlxuICAgICAgICAgICAgICAgICAgPGg0Pnt7bGlzdFsnZGVsaXZlcnlfbG9jYXRpb24nXX19PC9oND5cbiAgICAgICAgICAgICAgICA8L2I+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgICAgPHAgc3R5bGU9XCJjb2xvcjogI2ZmZjtcIiAqbmdJZj1cInJvdXRlcy5sZW5ndGggPT09IDBcIj5ObyBSb3V0ZSBmb3VuZDwvcD5cbiAgICA8L3BlcmZlY3Qtc2Nyb2xsYmFyPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwicm91dGVfZGV0YWlsXCIgKm5nSWY9XCJkZXRhaWxzQ2FyZEVuYWJsZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjbG9zZWJ0bnJvdXRlZGV0YWlsXCIgKGNsaWNrKT1cImRldGFpbHNDYXJkRW5hYmxlID0gZmFsc2U7IHByZXZlbnRNb3VzZW91dCA9IGZhbHNlXCI+XG4gICAgICA8bWF0LWljb24+Y2xlYXI8L21hdC1pY29uPlxuICAgIDwvZGl2PlxuICAgIDxsaWItcm91dGUtaW5mby1jYXJkIFtwcm9wRGF0YV09XCJ7Y2xhc3NOYW1lOiAnbGlzdFJvdXRlY2FyZCcsIHJlcG9zaXRvcnk6IGNvbmZpZ1sncmVwb3NpdG9yeSddfVwiICBbcG9wdXBEYXRhXT1cInJvdXRlQ2FyZERldGFpbFwiPjwvbGliLXJvdXRlLWluZm8tY2FyZD5cbiAgICA8ZGl2IGNsYXNzPVwiY3JlYXRlVHh0XCI+XG4gICAgICA8c21hbGw+XG4gICAgICAgIENyZWF0ZWQgYnkge3tyb3V0ZUNhcmREZXRhaWw/LmNyZWF0ZWRfYnlfbmFtZX19IG9uIHt7cm91dGVDYXJkRGV0YWlsPy5jcmVhdGVkX2F0fX1cbiAgICAgIDwvc21hbGw+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=