@norwegian/core-components 6.53.0 → 6.53.1

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 (29) hide show
  1. package/assets/icons/icon-remove--secondary.svg +8 -0
  2. package/assets/icons/icon-vector--secondary.svg +6 -0
  3. package/assets/icons/medium/clock--light.svg +3 -0
  4. package/assets/icons/medium/clock.svg +3 -0
  5. package/assets/icons/small/clock--light.svg +3 -0
  6. package/assets/icons/small/clock.svg +3 -0
  7. package/assets/icons/small/interlining--light.svg +11 -0
  8. package/assets/icons/small/interlining.svg +11 -0
  9. package/esm2022/lib/components/airport-select-new/airport-select-dropdown/airport-select-dropdown.component.mjs +10 -3
  10. package/esm2022/lib/components/airport-select-new/airport-select-new.component.mjs +14 -3
  11. package/esm2022/lib/components/autocomplete-new/autocomplete-new.component.mjs +6 -4
  12. package/esm2022/lib/components/button-new/button-new.component.mjs +2 -2
  13. package/esm2022/lib/components/datepicker-combo-new/datepicker-combo-new.component.mjs +2 -2
  14. package/esm2022/lib/components/datepicker-new/calendar-new/calendar-new.component.mjs +2 -2
  15. package/esm2022/lib/components/datepicker-new/datepicker-new.component.mjs +3 -3
  16. package/esm2022/lib/components/filter-new/filter-new.component.mjs +4 -4
  17. package/esm2022/lib/components/icon/icon.component.mjs +2 -2
  18. package/esm2022/lib/components/passenger-select-new/passenger-select-new.component.mjs +2 -2
  19. package/esm2022/lib/components/subsidy-discount/subsidy-discount.component.mjs +2 -2
  20. package/fesm2022/norwegian-core-components.mjs +44 -24
  21. package/fesm2022/norwegian-core-components.mjs.map +1 -1
  22. package/lib/components/airport-select-new/airport-select-dropdown/airport-select-dropdown.component.d.ts +3 -1
  23. package/lib/components/airport-select-new/airport-select-new.component.d.ts +3 -0
  24. package/lib/components/autocomplete-new/autocomplete-new.component.d.ts +1 -0
  25. package/package.json +1 -1
  26. /package/assets/icons/{icon-status-error.svg → large/status-error.svg} +0 -0
  27. /package/assets/icons/{icon-status-info.svg → large/status-info.svg} +0 -0
  28. /package/assets/icons/{icon-status-success.svg → large/status-success.svg} +0 -0
  29. /package/assets/icons/{icon-status-warning.svg → large/status-warning.svg} +0 -0
@@ -64,6 +64,9 @@ export class AirportSelectNewComponent extends NasComponentBase {
64
64
  geolocation: '',
65
65
  geolocationDenied: ''
66
66
  };
67
+ this.originOpen = false;
68
+ this.destinationOpen = false;
69
+ this.cleared = false;
67
70
  /**
68
71
  * @property Input
69
72
  * @required
@@ -196,6 +199,9 @@ export class AirportSelectNewComponent extends NasComponentBase {
196
199
  this.originOpen = false;
197
200
  this.destinationOpenChange.emit(open);
198
201
  }
202
+ onSelectionCleared() {
203
+ this.cleared = true;
204
+ }
199
205
  setSelectedOrigin(airport) {
200
206
  if (!airport) {
201
207
  return;
@@ -207,6 +213,7 @@ export class AirportSelectNewComponent extends NasComponentBase {
207
213
  this.updateValidAirportDestinations(airport);
208
214
  this.setCurrentLatestSearchesDestination();
209
215
  }
216
+ this.cleared = false;
210
217
  this.originChange.emit(airport);
211
218
  }
212
219
  setSelectedDestination(airport) {
@@ -215,6 +222,7 @@ export class AirportSelectNewComponent extends NasComponentBase {
215
222
  }
216
223
  this.destination = airport;
217
224
  this.destinationAirportCodeValue = airport.code;
225
+ this.cleared = false;
218
226
  this.destinationChange.emit(airport);
219
227
  }
220
228
  setFocusOnNext(event) {
@@ -359,12 +367,15 @@ export class AirportSelectNewComponent extends NasComponentBase {
359
367
  });
360
368
  }
361
369
  }
370
+ setVectorIcon() {
371
+ return (this.destinationAirportCodeValue && this.originAirportCodeValue) ? 'vector--secondary' : 'vector';
372
+ }
362
373
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: AirportSelectNewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
363
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: AirportSelectNewComponent, selector: "nas-airport-select-new", inputs: { airports: "airports", airportRelations: "airportRelations", latestSearchesOrigin: "latestSearchesOrigin", latestSearchesDestination: "latestSearchesDestination", closestAirports: "closestAirports", allowedOriginAiports: "allowedOriginAiports", allowedDestinationAirports: "allowedDestinationAirports", displayLatestSearches: "displayLatestSearches", displayClosestAirports: "displayClosestAirports", combo: "combo", useSwitch: "useSwitch", allAirportsLabel: "allAirportsLabel", latestSearchesLabel: "latestSearchesLabel", closestAirportsLabel: "closestAirportsLabel", geolocationLabel: "geolocationLabel", geolocationBlockedLabel: "geolocationBlockedLabel", selectOriginFirstLabel: "selectOriginFirstLabel", invalidDestinationText: "invalidDestinationText", labelOrigin: "labelOrigin", placeholderOrigin: "placeholderOrigin", labelDestination: "labelDestination", placeholderDestination: "placeholderDestination", keepSelection: "keepSelection", nasFormControlNameOrigin: "nasFormControlNameOrigin", nasFormControlNameDestination: "nasFormControlNameDestination", nasFormGroup: "nasFormGroup", originAirportCode: "originAirportCode", destinationAirportCode: "destinationAirportCode", ariaLabelClear: "ariaLabelClear", ariaLabelBackdrop: "ariaLabelBackdrop" }, outputs: { originChange: "originChange", originOpenChange: "originOpenChange", destinationChange: "destinationChange", destinationOpenChange: "destinationOpenChange", focusOnNext: "focusOnNext", positionChange: "positionChange" }, viewQueries: [{ propertyName: "switchButton", first: true, predicate: ["switchButton"], descendants: true }, { propertyName: "airportSelectDropdownOrigin", first: true, predicate: ["airportSelectDropdownOrigin"], descendants: true }, { propertyName: "airportSelectDropdownDestination", first: true, predicate: ["airportSelectDropdownDestination"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"exists(combo); else airportSelectTemplate\"\n [nasClass]=\"getAirportSelectComboClass()\">\n <ng-container *ngTemplateOutlet=\"airportSelectTemplate\"></ng-container>\n</div>\n<ng-template #airportSelectTemplate>\n <div [nasClass]=\"getClass('', exists(useSwitch) && 'padding-origin')\"\n *ngIf=\"airportsOrigin\">\n <nas-airport-select-dropdown #airportSelectDropdownOrigin\n displayLatestSearches\n [enableGeolocation]=\"displayClosestAirports\"\n [displayClosestAirports]=\"displayClosestAirports\"\n [airportSelectLabel]=\"labelOrigin\"\n [latestSearches]=\"latestSearchesOrigin\"\n [closestAirports]=\"closestAirports\"\n [airport]=\"origin\"\n [airports]=\"airportsOrigin\"\n [resultsLabels]=\"resultsLabels\"\n [airportSelectPlaceholder]=\"placeholderOrigin\"\n [open]=\"originOpen\"\n [keepSelection]=\"keepSelection\"\n [airportSelectIconModifier]=\"'flight-departure'\"\n [nasFormControlName]=\"nasFormControlNameOrigin\"\n [nasFormGroup]=\"nasFormGroup\"\n [ariaLabelClear]=\"ariaLabelClear\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n (selected)=\"setSelectedOrigin($event)\"\n (openChange)=\"onOriginOpen($event)\"\n (focusOnNext)=\"setDestinationOpen($event)\"\n (positionChange)=\"getClosestAirports($event)\"></nas-airport-select-dropdown>\n </div>\n <ng-container *ngIf=\"exists(combo)\">\n <div [nasClass]=\"getClass('', exists(useSwitch) && 'padding-destination')\"\n *ngIf=\"airportsDestination && airportsDestination.length > 0\">\n <nas-airport-select-dropdown #airportSelectDropdownDestination\n displayLatestSearches\n [airportSelectLabel]=\"labelDestination\"\n [displayClosestAirports]=\"false\"\n [latestSearches]=\"currentLatestSearchesDestination\"\n [airports]=\"airportsDestination\"\n [resultsLabels]=\"resultsLabels\"\n [airport]=\"destination\"\n [airportSelectPlaceholder]=\"placeholderDestination\"\n [open]=\"destinationOpen\"\n [keepSelection]=\"keepSelection\"\n [airportSelectIconModifier]=\"'flight-arrival'\"\n [nasFormControlName]=\"nasFormControlNameDestination\"\n [nasFormGroup]=\"nasFormGroup\"\n [ariaLabelClear]=\"ariaLabelClear\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n [isValid]=\"isDestinationValid\"\n [invalidText]=\"invalidDestinationText\"\n (selected)=\"setSelectedDestination($event)\"\n (openChange)=\"onDestinationOpen($event)\"\n (focusOnNext)=\"setFocusOnNext($event)\"\n (focusOnPrevious)=\"onOriginFocus()\"></nas-airport-select-dropdown>\n </div>\n <div *ngIf=\"exists(useSwitch)\"\n #switchButton\n [nasClass]=\"getAirportSelectComboClass('switcher')\"\n (mouseover)=\"changeSwitchIcon()\"\n (mouseleave)=\"changeSwitchIcon()\"\n (keydown)=\"swapKeyDown($event)\"\n (click)=\"swapAirports()\">\n <nas-icon [type]=\"'vector'\"></nas-icon>\n </div>\n </ng-container>\n</ng-template>", styles: ["@keyframes fade-in{0%{opacity:0}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-out{to{opacity:0}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}.nas-airport-select-new{position:relative;width:100%;text-align:left;height:67px;border:2px solid #6f6f6f}.nas-airport-select-new:first-child{margin-bottom:0}.nas-airport-select-new:only-child{max-width:360px}.nas-airport-select-new--expanded{z-index:30}.nas-airport-select-new__wrapper{position:relative;display:block;z-index:3;background-color:#fff}.nas-airport-select-new__wrapper--active{background-color:#ebf4ff}.nas-airport-select-new__list-section-label{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:14px;line-height:20px;position:relative;z-index:2;text-align:center;padding:3px 12px;background-color:#f1f1f1}.nas-airport-select-new__list-section-label:not(:first-child){margin-top:-1px}.nas-airport-select-new__label{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:14px;line-height:20px;display:block;position:relative;z-index:3;padding:9px 16px 0;margin-bottom:auto;background-color:inherit}.nas-airport-select-new__input{height:64px;position:relative;z-index:3;line-height:1;margin:0;background-color:transparent}.nas-airport-select-new__input[type=text]{padding:0 16px 9px}.nas-airport-select-new__input[type=text]:focus{border-bottom:none}.nas-airport-select-new__label+.nas-airport-select-new__input{height:34px;position:relative;z-index:3;line-height:1;margin:0;background-color:transparent}.nas-airport-select-new__label+.nas-airport-select-new__input[type=text]{padding:0 16px 9px}.nas-airport-select-new__icon{position:absolute;z-index:4;right:18px;bottom:18px}.nas-airport-select-new__results-wrapper{position:relative;z-index:4;perspective:1000px;margin-top:-4px}.nas-airport-select-new__results{position:absolute;z-index:3;width:100%;left:0;max-height:50vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;border:2px solid #15273f;background-color:#fff;transform-origin:center top;transform-style:preserve-3d;-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:airport-select-results .65s ease both}.nas-airport-select-new__dummy{position:absolute;left:-100px}.nas-airport-select-new__backdrop{display:block;position:fixed;z-index:2;top:0;left:0;width:100%;height:100%;color:transparent;background-color:#0b14202b;animation:airport-select-backdrop .7s ease-out both}.nas-airport-select-new__list-item{border-bottom:2px solid #eaeaea}.nas-airport-select-new__list-item:not(:last-of-type):after{content:\"\";display:block;width:100%;position:absolute;bottom:0;border-bottom:1px solid #c3c3c3}.nas-airport-select-new__geolocation--label{align-self:center;padding-left:4px}.nas-airport-select-new__geolocation--icon{padding-right:26px}.nas-airport-select-new__item{display:block;position:relative;z-index:2;width:100%;text-align:left;padding:16px;margin-top:-1px;display:flex;justify-content:space-between;outline:0}.nas-airport-select-new__item--focus,.nas-airport-select-new__item:hover,.nas-airport-select-new__item:focus{background-color:#f8f8f8}.nas-airport-select-new__item--focus,.nas-airport-select-new__item--focus .nas-airport-select-new__name,.nas-airport-select-new__item--focus .nas-airport-select-new__code,.nas-airport-select-new__item:hover,.nas-airport-select-new__item:hover .nas-airport-select-new__name,.nas-airport-select-new__item:hover .nas-airport-select-new__code,.nas-airport-select-new__item:focus,.nas-airport-select-new__item:focus .nas-airport-select-new__name,.nas-airport-select-new__item:focus .nas-airport-select-new__code{color:#15273f!important}.nas-airport-select-new__item--disabled{border-bottom-width:0}.nas-airport-select-new__item--disabled,.nas-airport-select-new__item--disabled .nas-airport-select-new__name,.nas-airport-select-new__item--disabled .nas-airport-select-new__code{color:#909090!important}.nas-airport-select-new__item--disabled:hover,.nas-airport-select-new__item--disabled:focus{background-color:#fff;cursor:auto}.nas-airport-select-new__item--disabled:hover,.nas-airport-select-new__item--disabled:hover .nas-airport-select-new__name,.nas-airport-select-new__item--disabled:hover .nas-airport-select-new__code,.nas-airport-select-new__item--disabled:focus,.nas-airport-select-new__item--disabled:focus .nas-airport-select-new__name,.nas-airport-select-new__item--disabled:focus .nas-airport-select-new__code{color:#909090!important}.nas-airport-select-new__name,.nas-airport-select-new__code{display:inline-block;font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;line-height:1;color:#15273f;margin-bottom:3px}.nas-airport-select-new__name--invalid,.nas-airport-select-new__code--invalid{margin:12px}.nas-airport-select-new__code{margin-left:.12em}.nas-airport-select-new__country{display:block;font-size:14px}.nas-airport-select-new__empty{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:16px;line-height:1.4;color:#15273f;margin:0;padding:12px}.nas-icon-vector{margin-bottom:2px}.nas-filter .nas-airport-select-new-combo,.nas-search-filter .nas-airport-select-new-combo{margin:0 3px 0 0}.nas-airport-select-new-combo{position:relative;display:flex;flex-direction:column;width:100%;margin:8px auto;gap:8px}.nas-airport-select-new-combo__switcher{position:absolute;top:48px;z-index:4;left:76%;cursor:pointer;border:2px solid #6f6f6f;border-radius:50%;width:40px;height:40px;background-color:#fff;justify-content:center;align-items:center;display:flex}.nas-airport-select-new-combo__switcher:focus{outline:none;box-shadow:0 0 1px 2px #e3e3e3,0 0 2px 3px #3b99fc}@keyframes airport-select-backdrop{0%{opacity:0}}@keyframes airport-select-results{0%{transform:rotateX(-90deg)}40%{transform:rotateX(20deg)}to{transform:rotateX(0)}}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NasClassDirective, selector: "[nasClass]", inputs: ["nasClass", "attr.class"] }, { kind: "component", type: i3.IconComponent, selector: "nas-icon", inputs: ["icon", "type", "isIndicator", "lightCircularBackground", "cssClass"] }, { kind: "component", type: i4.AirportSelectDropdownComponent, selector: "nas-airport-select-dropdown", inputs: ["displayLatestSearches", "displayClosestAirports", "latestSearches", "resultsLabels", "airportSelectLabel", "airportSelectPlaceholder", "airportSelectIconModifier", "keepSelection", "nasFormControlName", "nasFormGroup", "enableGeolocation", "ariaLabelClear", "ariaLabelBackdrop", "isValid", "invalidText", "closestAirports", "airport", "open", "airports"], outputs: ["selected", "openChange", "focusOnNext", "focusOnPrevious", "positionChange"] }], encapsulation: i0.ViewEncapsulation.None }); }
374
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: AirportSelectNewComponent, selector: "nas-airport-select-new", inputs: { airports: "airports", airportRelations: "airportRelations", latestSearchesOrigin: "latestSearchesOrigin", latestSearchesDestination: "latestSearchesDestination", closestAirports: "closestAirports", allowedOriginAiports: "allowedOriginAiports", allowedDestinationAirports: "allowedDestinationAirports", displayLatestSearches: "displayLatestSearches", displayClosestAirports: "displayClosestAirports", combo: "combo", useSwitch: "useSwitch", allAirportsLabel: "allAirportsLabel", latestSearchesLabel: "latestSearchesLabel", closestAirportsLabel: "closestAirportsLabel", geolocationLabel: "geolocationLabel", geolocationBlockedLabel: "geolocationBlockedLabel", selectOriginFirstLabel: "selectOriginFirstLabel", invalidDestinationText: "invalidDestinationText", labelOrigin: "labelOrigin", placeholderOrigin: "placeholderOrigin", labelDestination: "labelDestination", placeholderDestination: "placeholderDestination", keepSelection: "keepSelection", nasFormControlNameOrigin: "nasFormControlNameOrigin", nasFormControlNameDestination: "nasFormControlNameDestination", nasFormGroup: "nasFormGroup", originAirportCode: "originAirportCode", destinationAirportCode: "destinationAirportCode", ariaLabelClear: "ariaLabelClear", ariaLabelBackdrop: "ariaLabelBackdrop" }, outputs: { originChange: "originChange", originOpenChange: "originOpenChange", destinationChange: "destinationChange", destinationOpenChange: "destinationOpenChange", focusOnNext: "focusOnNext", positionChange: "positionChange" }, viewQueries: [{ propertyName: "switchButton", first: true, predicate: ["switchButton"], descendants: true }, { propertyName: "airportSelectDropdownOrigin", first: true, predicate: ["airportSelectDropdownOrigin"], descendants: true }, { propertyName: "airportSelectDropdownDestination", first: true, predicate: ["airportSelectDropdownDestination"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"exists(combo); else airportSelectTemplate\"\n [nasClass]=\"getAirportSelectComboClass()\">\n <ng-container *ngTemplateOutlet=\"airportSelectTemplate\"></ng-container>\n</div>\n<ng-template #airportSelectTemplate>\n <div [nasClass]=\"getClass('', exists(useSwitch) && 'padding-origin')\"\n *ngIf=\"airportsOrigin\">\n <nas-airport-select-dropdown #airportSelectDropdownOrigin\n displayLatestSearches\n [enableGeolocation]=\"displayClosestAirports\"\n [displayClosestAirports]=\"displayClosestAirports\"\n [airportSelectLabel]=\"labelOrigin\"\n [latestSearches]=\"latestSearchesOrigin\"\n [closestAirports]=\"closestAirports\"\n [airport]=\"origin\"\n [airports]=\"airportsOrigin\"\n [resultsLabels]=\"resultsLabels\"\n [airportSelectPlaceholder]=\"placeholderOrigin\"\n [open]=\"originOpen\"\n [keepSelection]=\"keepSelection\"\n [airportSelectIconModifier]=\"'flight-departure'\"\n [nasFormControlName]=\"nasFormControlNameOrigin\"\n [nasFormGroup]=\"nasFormGroup\"\n [ariaLabelClear]=\"ariaLabelClear\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n (clearedSelection)=\"onSelectionCleared()\"\n (selected)=\"setSelectedOrigin($event)\"\n (openChange)=\"onOriginOpen($event)\"\n (focusOnNext)=\"setDestinationOpen($event)\"\n (positionChange)=\"getClosestAirports($event)\"></nas-airport-select-dropdown>\n </div>\n <ng-container *ngIf=\"exists(combo)\">\n <div [nasClass]=\"getClass('', exists(useSwitch) && 'padding-destination')\"\n *ngIf=\"airportsDestination && airportsDestination.length > 0\">\n <nas-airport-select-dropdown #airportSelectDropdownDestination\n displayLatestSearches\n [airportSelectLabel]=\"labelDestination\"\n [displayClosestAirports]=\"false\"\n [latestSearches]=\"currentLatestSearchesDestination\"\n [airports]=\"airportsDestination\"\n [resultsLabels]=\"resultsLabels\"\n [airport]=\"destination\"\n [airportSelectPlaceholder]=\"placeholderDestination\"\n [open]=\"destinationOpen\"\n [keepSelection]=\"keepSelection\"\n [airportSelectIconModifier]=\"'flight-arrival'\"\n [nasFormControlName]=\"nasFormControlNameDestination\"\n [nasFormGroup]=\"nasFormGroup\"\n [ariaLabelClear]=\"ariaLabelClear\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n [isValid]=\"isDestinationValid\"\n [invalidText]=\"invalidDestinationText\"\n (clearedSelection)=\"onSelectionCleared()\"\n (selected)=\"setSelectedDestination($event)\"\n (openChange)=\"onDestinationOpen($event)\"\n (focusOnNext)=\"setFocusOnNext($event)\"\n (focusOnPrevious)=\"onOriginFocus()\"></nas-airport-select-dropdown>\n </div>\n <div *ngIf=\"exists(useSwitch) && !(originOpen || destinationOpen || cleared)\"\n #switchButton\n [nasClass]=\"getAirportSelectComboClass('switcher', (originAirportCodeValue && destinationAirportCodeValue) && 'filled')\"\n (mouseover)=\"changeSwitchIcon()\"\n (mouseleave)=\"changeSwitchIcon()\"\n (keydown)=\"swapKeyDown($event)\"\n (click)=\"swapAirports()\">\n <nas-icon [type]=\"setVectorIcon()\"></nas-icon>\n </div>\n </ng-container>\n</ng-template>", styles: ["@keyframes fade-in{0%{opacity:0}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-out{to{opacity:0}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}.nas-airport-select-new{position:relative;width:100%;text-align:left;height:67px}.nas-airport-select-new label,.nas-airport-select-new:first-child{margin-bottom:0}.nas-airport-select-new:only-child{max-width:360px}.nas-airport-select-new--expanded{z-index:30}.nas-airport-select-new__wrapper{position:relative;display:block;z-index:3;background-color:#fff;border:2px solid #6f6f6f}.nas-airport-select-new__wrapper--active{background-color:#ebf4ff;border:2px solid #15273f}.nas-airport-select-new__wrapper--filled{border:2px solid #15273f}.nas-airport-select-new__list-section-label{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:14px;line-height:20px;position:relative;z-index:2;text-align:center;padding:3px 12px;background-color:#f1f1f1}.nas-airport-select-new__list-section-label:not(:first-child){margin-top:-1px}.nas-airport-select-new__label{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:14px;line-height:20px;display:block;position:relative;z-index:3;padding:9px 16px 0;background-color:inherit}.nas-airport-select-new__input{height:64px;position:relative;z-index:3;line-height:1;margin:0;background-color:transparent}.nas-airport-select-new__input[type=text]{padding:0 16px 9px}.nas-airport-select-new__input[type=text]:focus{border-bottom:none}.nas-airport-select-new__label+.nas-airport-select-new__input{height:34px;position:relative;z-index:3;line-height:1;margin:0;background-color:transparent}.nas-airport-select-new__label+.nas-airport-select-new__input[type=text]{padding:0 16px 9px}.nas-airport-select-new__icon{position:absolute;z-index:4;right:18px;bottom:18px}.nas-airport-select-new__results-wrapper{position:relative;z-index:4;perspective:1000px;margin-top:-4px}.nas-airport-select-new__results{position:absolute;z-index:3;width:100%;left:0;max-height:50vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;border:2px solid #15273f;background-color:#fff;transform-origin:center top;transform-style:preserve-3d;-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:airport-select-results .65s ease both}.nas-airport-select-new__dummy{position:absolute;left:-100px}.nas-airport-select-new__backdrop{display:block;position:fixed;z-index:2;top:0;left:0;width:100%;height:100%;color:transparent;background-color:#0b14202b;animation:airport-select-backdrop .7s ease-out both}.nas-airport-select-new__list-item{border-bottom:2px solid #eaeaea}.nas-airport-select-new__list-item:not(:last-of-type):after{content:\"\";display:block;width:100%;position:absolute;bottom:0;border-bottom:1px solid #c3c3c3}.nas-airport-select-new__geolocation--label{align-self:center;padding-left:4px}.nas-airport-select-new__geolocation--icon{margin-right:3px}.nas-airport-select-new__item{display:block;position:relative;z-index:2;width:100%;text-align:left;padding:16px;margin-top:-1px;display:flex;justify-content:space-between;outline:0}.nas-airport-select-new__item--focus,.nas-airport-select-new__item:hover,.nas-airport-select-new__item:focus{background-color:#f8f8f8}.nas-airport-select-new__item--focus,.nas-airport-select-new__item--focus .nas-airport-select-new__name,.nas-airport-select-new__item--focus .nas-airport-select-new__code,.nas-airport-select-new__item:hover,.nas-airport-select-new__item:hover .nas-airport-select-new__name,.nas-airport-select-new__item:hover .nas-airport-select-new__code,.nas-airport-select-new__item:focus,.nas-airport-select-new__item:focus .nas-airport-select-new__name,.nas-airport-select-new__item:focus .nas-airport-select-new__code{color:#15273f!important}.nas-airport-select-new__item--disabled{border-bottom-width:0}.nas-airport-select-new__item--disabled,.nas-airport-select-new__item--disabled .nas-airport-select-new__name,.nas-airport-select-new__item--disabled .nas-airport-select-new__code{color:#909090!important}.nas-airport-select-new__item--disabled:hover,.nas-airport-select-new__item--disabled:focus{background-color:#fff;cursor:auto}.nas-airport-select-new__item--disabled:hover,.nas-airport-select-new__item--disabled:hover .nas-airport-select-new__name,.nas-airport-select-new__item--disabled:hover .nas-airport-select-new__code,.nas-airport-select-new__item--disabled:focus,.nas-airport-select-new__item--disabled:focus .nas-airport-select-new__name,.nas-airport-select-new__item--disabled:focus .nas-airport-select-new__code{color:#909090!important}.nas-airport-select-new__name,.nas-airport-select-new__code{display:inline-block;font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;line-height:1;color:#15273f;margin-bottom:3px}.nas-airport-select-new__name--invalid,.nas-airport-select-new__code--invalid{margin:12px}.nas-airport-select-new__code{margin-left:.12em}.nas-airport-select-new__country{display:block;font-size:14px}.nas-airport-select-new__empty{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:16px;line-height:1.4;color:#15273f;margin:0;padding:12px}.nas-icon-vector,.nas-icon-vector--secondary{margin-bottom:2px}.nas-filter .nas-airport-select-new-combo,.nas-search-filter .nas-airport-select-new-combo{margin:0 3px 0 0}.nas-airport-select-new-combo{position:relative;display:flex;flex-direction:column;width:100%;margin:8px auto;gap:8px}.nas-airport-select-new-combo__switcher{position:absolute;top:48px;z-index:4;left:76%;cursor:pointer;border:2px solid #6f6f6f;border-radius:50%;width:40px;height:40px;background-color:#fff;justify-content:center;align-items:center;display:flex}.nas-airport-select-new-combo__switcher:focus{outline:none;box-shadow:0 0 1px 2px #e3e3e3,0 0 2px 3px #3b99fc}.nas-airport-select-new-combo__switcher--filled{border:2px solid #15273f}@keyframes airport-select-backdrop{0%{opacity:0}}@keyframes airport-select-results{0%{transform:rotateX(-90deg)}40%{transform:rotateX(20deg)}to{transform:rotateX(0)}}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NasClassDirective, selector: "[nasClass]", inputs: ["nasClass", "attr.class"] }, { kind: "component", type: i3.IconComponent, selector: "nas-icon", inputs: ["icon", "type", "isIndicator", "lightCircularBackground", "cssClass"] }, { kind: "component", type: i4.AirportSelectDropdownComponent, selector: "nas-airport-select-dropdown", inputs: ["displayLatestSearches", "displayClosestAirports", "latestSearches", "resultsLabels", "airportSelectLabel", "airportSelectPlaceholder", "airportSelectIconModifier", "keepSelection", "nasFormControlName", "nasFormGroup", "enableGeolocation", "ariaLabelClear", "ariaLabelBackdrop", "isValid", "invalidText", "closestAirports", "airport", "open", "airports"], outputs: ["selected", "openChange", "focusOnNext", "focusOnPrevious", "positionChange", "clearedSelection"] }], encapsulation: i0.ViewEncapsulation.None }); }
364
375
  }
365
376
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: AirportSelectNewComponent, decorators: [{
366
377
  type: Component,
367
- args: [{ selector: 'nas-airport-select-new', encapsulation: ViewEncapsulation.None, template: "<div *ngIf=\"exists(combo); else airportSelectTemplate\"\n [nasClass]=\"getAirportSelectComboClass()\">\n <ng-container *ngTemplateOutlet=\"airportSelectTemplate\"></ng-container>\n</div>\n<ng-template #airportSelectTemplate>\n <div [nasClass]=\"getClass('', exists(useSwitch) && 'padding-origin')\"\n *ngIf=\"airportsOrigin\">\n <nas-airport-select-dropdown #airportSelectDropdownOrigin\n displayLatestSearches\n [enableGeolocation]=\"displayClosestAirports\"\n [displayClosestAirports]=\"displayClosestAirports\"\n [airportSelectLabel]=\"labelOrigin\"\n [latestSearches]=\"latestSearchesOrigin\"\n [closestAirports]=\"closestAirports\"\n [airport]=\"origin\"\n [airports]=\"airportsOrigin\"\n [resultsLabels]=\"resultsLabels\"\n [airportSelectPlaceholder]=\"placeholderOrigin\"\n [open]=\"originOpen\"\n [keepSelection]=\"keepSelection\"\n [airportSelectIconModifier]=\"'flight-departure'\"\n [nasFormControlName]=\"nasFormControlNameOrigin\"\n [nasFormGroup]=\"nasFormGroup\"\n [ariaLabelClear]=\"ariaLabelClear\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n (selected)=\"setSelectedOrigin($event)\"\n (openChange)=\"onOriginOpen($event)\"\n (focusOnNext)=\"setDestinationOpen($event)\"\n (positionChange)=\"getClosestAirports($event)\"></nas-airport-select-dropdown>\n </div>\n <ng-container *ngIf=\"exists(combo)\">\n <div [nasClass]=\"getClass('', exists(useSwitch) && 'padding-destination')\"\n *ngIf=\"airportsDestination && airportsDestination.length > 0\">\n <nas-airport-select-dropdown #airportSelectDropdownDestination\n displayLatestSearches\n [airportSelectLabel]=\"labelDestination\"\n [displayClosestAirports]=\"false\"\n [latestSearches]=\"currentLatestSearchesDestination\"\n [airports]=\"airportsDestination\"\n [resultsLabels]=\"resultsLabels\"\n [airport]=\"destination\"\n [airportSelectPlaceholder]=\"placeholderDestination\"\n [open]=\"destinationOpen\"\n [keepSelection]=\"keepSelection\"\n [airportSelectIconModifier]=\"'flight-arrival'\"\n [nasFormControlName]=\"nasFormControlNameDestination\"\n [nasFormGroup]=\"nasFormGroup\"\n [ariaLabelClear]=\"ariaLabelClear\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n [isValid]=\"isDestinationValid\"\n [invalidText]=\"invalidDestinationText\"\n (selected)=\"setSelectedDestination($event)\"\n (openChange)=\"onDestinationOpen($event)\"\n (focusOnNext)=\"setFocusOnNext($event)\"\n (focusOnPrevious)=\"onOriginFocus()\"></nas-airport-select-dropdown>\n </div>\n <div *ngIf=\"exists(useSwitch)\"\n #switchButton\n [nasClass]=\"getAirportSelectComboClass('switcher')\"\n (mouseover)=\"changeSwitchIcon()\"\n (mouseleave)=\"changeSwitchIcon()\"\n (keydown)=\"swapKeyDown($event)\"\n (click)=\"swapAirports()\">\n <nas-icon [type]=\"'vector'\"></nas-icon>\n </div>\n </ng-container>\n</ng-template>", styles: ["@keyframes fade-in{0%{opacity:0}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-out{to{opacity:0}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}.nas-airport-select-new{position:relative;width:100%;text-align:left;height:67px;border:2px solid #6f6f6f}.nas-airport-select-new:first-child{margin-bottom:0}.nas-airport-select-new:only-child{max-width:360px}.nas-airport-select-new--expanded{z-index:30}.nas-airport-select-new__wrapper{position:relative;display:block;z-index:3;background-color:#fff}.nas-airport-select-new__wrapper--active{background-color:#ebf4ff}.nas-airport-select-new__list-section-label{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:14px;line-height:20px;position:relative;z-index:2;text-align:center;padding:3px 12px;background-color:#f1f1f1}.nas-airport-select-new__list-section-label:not(:first-child){margin-top:-1px}.nas-airport-select-new__label{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:14px;line-height:20px;display:block;position:relative;z-index:3;padding:9px 16px 0;margin-bottom:auto;background-color:inherit}.nas-airport-select-new__input{height:64px;position:relative;z-index:3;line-height:1;margin:0;background-color:transparent}.nas-airport-select-new__input[type=text]{padding:0 16px 9px}.nas-airport-select-new__input[type=text]:focus{border-bottom:none}.nas-airport-select-new__label+.nas-airport-select-new__input{height:34px;position:relative;z-index:3;line-height:1;margin:0;background-color:transparent}.nas-airport-select-new__label+.nas-airport-select-new__input[type=text]{padding:0 16px 9px}.nas-airport-select-new__icon{position:absolute;z-index:4;right:18px;bottom:18px}.nas-airport-select-new__results-wrapper{position:relative;z-index:4;perspective:1000px;margin-top:-4px}.nas-airport-select-new__results{position:absolute;z-index:3;width:100%;left:0;max-height:50vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;border:2px solid #15273f;background-color:#fff;transform-origin:center top;transform-style:preserve-3d;-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:airport-select-results .65s ease both}.nas-airport-select-new__dummy{position:absolute;left:-100px}.nas-airport-select-new__backdrop{display:block;position:fixed;z-index:2;top:0;left:0;width:100%;height:100%;color:transparent;background-color:#0b14202b;animation:airport-select-backdrop .7s ease-out both}.nas-airport-select-new__list-item{border-bottom:2px solid #eaeaea}.nas-airport-select-new__list-item:not(:last-of-type):after{content:\"\";display:block;width:100%;position:absolute;bottom:0;border-bottom:1px solid #c3c3c3}.nas-airport-select-new__geolocation--label{align-self:center;padding-left:4px}.nas-airport-select-new__geolocation--icon{padding-right:26px}.nas-airport-select-new__item{display:block;position:relative;z-index:2;width:100%;text-align:left;padding:16px;margin-top:-1px;display:flex;justify-content:space-between;outline:0}.nas-airport-select-new__item--focus,.nas-airport-select-new__item:hover,.nas-airport-select-new__item:focus{background-color:#f8f8f8}.nas-airport-select-new__item--focus,.nas-airport-select-new__item--focus .nas-airport-select-new__name,.nas-airport-select-new__item--focus .nas-airport-select-new__code,.nas-airport-select-new__item:hover,.nas-airport-select-new__item:hover .nas-airport-select-new__name,.nas-airport-select-new__item:hover .nas-airport-select-new__code,.nas-airport-select-new__item:focus,.nas-airport-select-new__item:focus .nas-airport-select-new__name,.nas-airport-select-new__item:focus .nas-airport-select-new__code{color:#15273f!important}.nas-airport-select-new__item--disabled{border-bottom-width:0}.nas-airport-select-new__item--disabled,.nas-airport-select-new__item--disabled .nas-airport-select-new__name,.nas-airport-select-new__item--disabled .nas-airport-select-new__code{color:#909090!important}.nas-airport-select-new__item--disabled:hover,.nas-airport-select-new__item--disabled:focus{background-color:#fff;cursor:auto}.nas-airport-select-new__item--disabled:hover,.nas-airport-select-new__item--disabled:hover .nas-airport-select-new__name,.nas-airport-select-new__item--disabled:hover .nas-airport-select-new__code,.nas-airport-select-new__item--disabled:focus,.nas-airport-select-new__item--disabled:focus .nas-airport-select-new__name,.nas-airport-select-new__item--disabled:focus .nas-airport-select-new__code{color:#909090!important}.nas-airport-select-new__name,.nas-airport-select-new__code{display:inline-block;font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;line-height:1;color:#15273f;margin-bottom:3px}.nas-airport-select-new__name--invalid,.nas-airport-select-new__code--invalid{margin:12px}.nas-airport-select-new__code{margin-left:.12em}.nas-airport-select-new__country{display:block;font-size:14px}.nas-airport-select-new__empty{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:16px;line-height:1.4;color:#15273f;margin:0;padding:12px}.nas-icon-vector{margin-bottom:2px}.nas-filter .nas-airport-select-new-combo,.nas-search-filter .nas-airport-select-new-combo{margin:0 3px 0 0}.nas-airport-select-new-combo{position:relative;display:flex;flex-direction:column;width:100%;margin:8px auto;gap:8px}.nas-airport-select-new-combo__switcher{position:absolute;top:48px;z-index:4;left:76%;cursor:pointer;border:2px solid #6f6f6f;border-radius:50%;width:40px;height:40px;background-color:#fff;justify-content:center;align-items:center;display:flex}.nas-airport-select-new-combo__switcher:focus{outline:none;box-shadow:0 0 1px 2px #e3e3e3,0 0 2px 3px #3b99fc}@keyframes airport-select-backdrop{0%{opacity:0}}@keyframes airport-select-results{0%{transform:rotateX(-90deg)}40%{transform:rotateX(20deg)}to{transform:rotateX(0)}}\n"] }]
378
+ args: [{ selector: 'nas-airport-select-new', encapsulation: ViewEncapsulation.None, template: "<div *ngIf=\"exists(combo); else airportSelectTemplate\"\n [nasClass]=\"getAirportSelectComboClass()\">\n <ng-container *ngTemplateOutlet=\"airportSelectTemplate\"></ng-container>\n</div>\n<ng-template #airportSelectTemplate>\n <div [nasClass]=\"getClass('', exists(useSwitch) && 'padding-origin')\"\n *ngIf=\"airportsOrigin\">\n <nas-airport-select-dropdown #airportSelectDropdownOrigin\n displayLatestSearches\n [enableGeolocation]=\"displayClosestAirports\"\n [displayClosestAirports]=\"displayClosestAirports\"\n [airportSelectLabel]=\"labelOrigin\"\n [latestSearches]=\"latestSearchesOrigin\"\n [closestAirports]=\"closestAirports\"\n [airport]=\"origin\"\n [airports]=\"airportsOrigin\"\n [resultsLabels]=\"resultsLabels\"\n [airportSelectPlaceholder]=\"placeholderOrigin\"\n [open]=\"originOpen\"\n [keepSelection]=\"keepSelection\"\n [airportSelectIconModifier]=\"'flight-departure'\"\n [nasFormControlName]=\"nasFormControlNameOrigin\"\n [nasFormGroup]=\"nasFormGroup\"\n [ariaLabelClear]=\"ariaLabelClear\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n (clearedSelection)=\"onSelectionCleared()\"\n (selected)=\"setSelectedOrigin($event)\"\n (openChange)=\"onOriginOpen($event)\"\n (focusOnNext)=\"setDestinationOpen($event)\"\n (positionChange)=\"getClosestAirports($event)\"></nas-airport-select-dropdown>\n </div>\n <ng-container *ngIf=\"exists(combo)\">\n <div [nasClass]=\"getClass('', exists(useSwitch) && 'padding-destination')\"\n *ngIf=\"airportsDestination && airportsDestination.length > 0\">\n <nas-airport-select-dropdown #airportSelectDropdownDestination\n displayLatestSearches\n [airportSelectLabel]=\"labelDestination\"\n [displayClosestAirports]=\"false\"\n [latestSearches]=\"currentLatestSearchesDestination\"\n [airports]=\"airportsDestination\"\n [resultsLabels]=\"resultsLabels\"\n [airport]=\"destination\"\n [airportSelectPlaceholder]=\"placeholderDestination\"\n [open]=\"destinationOpen\"\n [keepSelection]=\"keepSelection\"\n [airportSelectIconModifier]=\"'flight-arrival'\"\n [nasFormControlName]=\"nasFormControlNameDestination\"\n [nasFormGroup]=\"nasFormGroup\"\n [ariaLabelClear]=\"ariaLabelClear\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n [isValid]=\"isDestinationValid\"\n [invalidText]=\"invalidDestinationText\"\n (clearedSelection)=\"onSelectionCleared()\"\n (selected)=\"setSelectedDestination($event)\"\n (openChange)=\"onDestinationOpen($event)\"\n (focusOnNext)=\"setFocusOnNext($event)\"\n (focusOnPrevious)=\"onOriginFocus()\"></nas-airport-select-dropdown>\n </div>\n <div *ngIf=\"exists(useSwitch) && !(originOpen || destinationOpen || cleared)\"\n #switchButton\n [nasClass]=\"getAirportSelectComboClass('switcher', (originAirportCodeValue && destinationAirportCodeValue) && 'filled')\"\n (mouseover)=\"changeSwitchIcon()\"\n (mouseleave)=\"changeSwitchIcon()\"\n (keydown)=\"swapKeyDown($event)\"\n (click)=\"swapAirports()\">\n <nas-icon [type]=\"setVectorIcon()\"></nas-icon>\n </div>\n </ng-container>\n</ng-template>", styles: ["@keyframes fade-in{0%{opacity:0}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-out{to{opacity:0}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}.nas-airport-select-new{position:relative;width:100%;text-align:left;height:67px}.nas-airport-select-new label,.nas-airport-select-new:first-child{margin-bottom:0}.nas-airport-select-new:only-child{max-width:360px}.nas-airport-select-new--expanded{z-index:30}.nas-airport-select-new__wrapper{position:relative;display:block;z-index:3;background-color:#fff;border:2px solid #6f6f6f}.nas-airport-select-new__wrapper--active{background-color:#ebf4ff;border:2px solid #15273f}.nas-airport-select-new__wrapper--filled{border:2px solid #15273f}.nas-airport-select-new__list-section-label{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:14px;line-height:20px;position:relative;z-index:2;text-align:center;padding:3px 12px;background-color:#f1f1f1}.nas-airport-select-new__list-section-label:not(:first-child){margin-top:-1px}.nas-airport-select-new__label{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:14px;line-height:20px;display:block;position:relative;z-index:3;padding:9px 16px 0;background-color:inherit}.nas-airport-select-new__input{height:64px;position:relative;z-index:3;line-height:1;margin:0;background-color:transparent}.nas-airport-select-new__input[type=text]{padding:0 16px 9px}.nas-airport-select-new__input[type=text]:focus{border-bottom:none}.nas-airport-select-new__label+.nas-airport-select-new__input{height:34px;position:relative;z-index:3;line-height:1;margin:0;background-color:transparent}.nas-airport-select-new__label+.nas-airport-select-new__input[type=text]{padding:0 16px 9px}.nas-airport-select-new__icon{position:absolute;z-index:4;right:18px;bottom:18px}.nas-airport-select-new__results-wrapper{position:relative;z-index:4;perspective:1000px;margin-top:-4px}.nas-airport-select-new__results{position:absolute;z-index:3;width:100%;left:0;max-height:50vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;border:2px solid #15273f;background-color:#fff;transform-origin:center top;transform-style:preserve-3d;-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:airport-select-results .65s ease both}.nas-airport-select-new__dummy{position:absolute;left:-100px}.nas-airport-select-new__backdrop{display:block;position:fixed;z-index:2;top:0;left:0;width:100%;height:100%;color:transparent;background-color:#0b14202b;animation:airport-select-backdrop .7s ease-out both}.nas-airport-select-new__list-item{border-bottom:2px solid #eaeaea}.nas-airport-select-new__list-item:not(:last-of-type):after{content:\"\";display:block;width:100%;position:absolute;bottom:0;border-bottom:1px solid #c3c3c3}.nas-airport-select-new__geolocation--label{align-self:center;padding-left:4px}.nas-airport-select-new__geolocation--icon{margin-right:3px}.nas-airport-select-new__item{display:block;position:relative;z-index:2;width:100%;text-align:left;padding:16px;margin-top:-1px;display:flex;justify-content:space-between;outline:0}.nas-airport-select-new__item--focus,.nas-airport-select-new__item:hover,.nas-airport-select-new__item:focus{background-color:#f8f8f8}.nas-airport-select-new__item--focus,.nas-airport-select-new__item--focus .nas-airport-select-new__name,.nas-airport-select-new__item--focus .nas-airport-select-new__code,.nas-airport-select-new__item:hover,.nas-airport-select-new__item:hover .nas-airport-select-new__name,.nas-airport-select-new__item:hover .nas-airport-select-new__code,.nas-airport-select-new__item:focus,.nas-airport-select-new__item:focus .nas-airport-select-new__name,.nas-airport-select-new__item:focus .nas-airport-select-new__code{color:#15273f!important}.nas-airport-select-new__item--disabled{border-bottom-width:0}.nas-airport-select-new__item--disabled,.nas-airport-select-new__item--disabled .nas-airport-select-new__name,.nas-airport-select-new__item--disabled .nas-airport-select-new__code{color:#909090!important}.nas-airport-select-new__item--disabled:hover,.nas-airport-select-new__item--disabled:focus{background-color:#fff;cursor:auto}.nas-airport-select-new__item--disabled:hover,.nas-airport-select-new__item--disabled:hover .nas-airport-select-new__name,.nas-airport-select-new__item--disabled:hover .nas-airport-select-new__code,.nas-airport-select-new__item--disabled:focus,.nas-airport-select-new__item--disabled:focus .nas-airport-select-new__name,.nas-airport-select-new__item--disabled:focus .nas-airport-select-new__code{color:#909090!important}.nas-airport-select-new__name,.nas-airport-select-new__code{display:inline-block;font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;line-height:1;color:#15273f;margin-bottom:3px}.nas-airport-select-new__name--invalid,.nas-airport-select-new__code--invalid{margin:12px}.nas-airport-select-new__code{margin-left:.12em}.nas-airport-select-new__country{display:block;font-size:14px}.nas-airport-select-new__empty{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;font-size:16px;line-height:1.4;color:#15273f;margin:0;padding:12px}.nas-icon-vector,.nas-icon-vector--secondary{margin-bottom:2px}.nas-filter .nas-airport-select-new-combo,.nas-search-filter .nas-airport-select-new-combo{margin:0 3px 0 0}.nas-airport-select-new-combo{position:relative;display:flex;flex-direction:column;width:100%;margin:8px auto;gap:8px}.nas-airport-select-new-combo__switcher{position:absolute;top:48px;z-index:4;left:76%;cursor:pointer;border:2px solid #6f6f6f;border-radius:50%;width:40px;height:40px;background-color:#fff;justify-content:center;align-items:center;display:flex}.nas-airport-select-new-combo__switcher:focus{outline:none;box-shadow:0 0 1px 2px #e3e3e3,0 0 2px 3px #3b99fc}.nas-airport-select-new-combo__switcher--filled{border:2px solid #15273f}@keyframes airport-select-backdrop{0%{opacity:0}}@keyframes airport-select-results{0%{transform:rotateX(-90deg)}40%{transform:rotateX(20deg)}to{transform:rotateX(0)}}\n"] }]
368
379
  }], ctorParameters: function () { return []; }, propDecorators: { switchButton: [{
369
380
  type: ViewChild,
370
381
  args: ['switchButton']
@@ -447,4 +458,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
447
458
  }], positionChange: [{
448
459
  type: Output
449
460
  }] } });
450
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWlycG9ydC1zZWxlY3QtbmV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYWlycG9ydC1zZWxlY3QtbmV3L2FpcnBvcnQtc2VsZWN0LW5ldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2FpcnBvcnQtc2VsZWN0LW5ldy9haXJwb3J0LXNlbGVjdC1uZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixpQkFBaUIsRUFDakIsU0FBUyxFQUdWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQzs7Ozs7O0FBSTlDOzs7R0FHRztBQU9ILE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxnQkFBZ0I7SUFrTzdEOzs7O09BSUc7SUFDSCxJQUNJLGlCQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUNyQyxDQUFDO0lBQ0QsSUFBSSxpQkFBaUIsQ0FBQyxJQUFZO1FBQ2hDLElBQUksSUFBSSxFQUFFO1lBQ1IsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLHNCQUFzQixFQUFFO2dCQUN4QyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO2dCQUNuQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7YUFDbEI7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDcEI7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQ0ksc0JBQXNCO1FBQ3hCLE9B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QkFBaEMsS0FBSztnQkFTRyw2QkFBNkI7c0JBQXJDLEtBQUs7Z0JBU0csWUFBWTtzQkFBcEIsS0FBSztnQkFRRixpQkFBaUI7c0JBRHBCLEtBQUs7Z0JBc0JGLHNCQUFzQjtzQkFEekIsS0FBSztnQkFxQkcsY0FBYztzQkFBdEIsS0FBSztnQkFPRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBT0ksWUFBWTtzQkFBckIsTUFBTTtnQkFPRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBT0csaUJBQWlCO3NCQUExQixNQUFNO2dCQU9HLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFPRyxXQUFXO3NCQUFwQixNQUFNO2dCQU9HLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgTm9yd2VnaWFuIEFpciBTaHV0dGxlLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7IEFpcnBvcnRNb2RlbCB9IGZyb20gJy4vbW9kZWxzL2FpcnBvcnQubW9kZWwnO1xuaW1wb3J0IHsgQ2xhc3NNb2RlbCB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzL2NsYXNzLm1vZGVsJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOYXNDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBSZXN1bHRzTGFiZWxzTW9kZWwgfSBmcm9tICcuL21vZGVscy9yZXN1bHRzLWxhYmVscy5tb2RlbCc7XG5pbXBvcnQgeyBBaXJwb3J0U2VsZWN0RHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL2FpcnBvcnQtc2VsZWN0LWRyb3Bkb3duL2FpcnBvcnQtc2VsZWN0LWRyb3Bkb3duLmNvbXBvbmVudCc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBOb3J3ZWdpYW4gQWlycG9ydCBTZWxlY3QgQ29tcG9uZW50IHwgTmV3IGRlc2lnbiB8IEJldGFcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmFzLWFpcnBvcnQtc2VsZWN0LW5ldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9haXJwb3J0LXNlbGVjdC1uZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9haXJwb3J0LXNlbGVjdC1uZXcuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBBaXJwb3J0U2VsZWN0TmV3Q29tcG9uZW50IGV4dGVuZHMgTmFzQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGFpcnBvcnRzT3JpZ2luOiBBcnJheTxBaXJwb3J0TW9kZWw+O1xuICBhaXJwb3J0c0Rlc3RpbmF0aW9uID0gbmV3IEFycmF5PEFpcnBvcnRNb2RlbD4oKTtcbiAgY3VycmVudExhdGVzdFNlYXJjaGVzRGVzdGluYXRpb246IEFycmF5PEFpcnBvcnRNb2RlbD47XG4gIGNsb3Nlc3RBaXJwb3J0c0Rlc3RpbmF0aW9uOiBBcnJheTxBaXJwb3J0TW9kZWw+O1xuICBmb2N1c0Rlc3RpbmF0aW9uID0gZmFsc2U7XG4gIHRleHRTZWxlY3RPcmlnaW5GaXJzdDogc3RyaW5nO1xuICBmb2N1c2VkTGF0ZXN0U2VhcmNoZXNBaXJwb3J0Q29kZURlc3RpbmF0aW9uOiBzdHJpbmc7XG4gIGZvY3VzZWRBaXJwb3J0Q29kZURlc3RpbmF0aW9uOiBzdHJpbmc7XG4gIGZvY3VzZWRMYXRlc3RTZWFyY2hlc0luZGV4RGVzdGluYXRpb24gPSAtMTtcbiAgZm9jdXNlZEFpcnBvcnRJbmRleERlc3RpbmF0aW9uID0gLTE7XG4gIHN3aXRjaFR5cGUgPSAnc3dpdGNoJztcbiAgaXNEZXN0aW5hdGlvblZhbGlkOiBib29sZWFuO1xuXG4gIHJlc3VsdHNMYWJlbHM6IFJlc3VsdHNMYWJlbHNNb2RlbCA9IHtcbiAgICBhbGxBaXJwb3J0czogJycsXG4gICAgY2xvc2VzdEFpcnBvcnRzOiAnJyxcbiAgICBsYXRlc3RTZWFyY2hlczogJycsXG4gICAgZ2VvbG9jYXRpb246ICcnLFxuICAgIGdlb2xvY2F0aW9uRGVuaWVkOiAnJ1xuICB9O1xuXG4gIG9yaWdpbk9wZW46IGJvb2xlYW47XG4gIGRlc3RpbmF0aW9uT3BlbjogYm9vbGVhbjtcblxuICBAVmlld0NoaWxkKCdzd2l0Y2hCdXR0b24nKSBzd2l0Y2hCdXR0b246IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2FpcnBvcnRTZWxlY3REcm9wZG93bk9yaWdpbicpIGFpcnBvcnRTZWxlY3REcm9wZG93bk9yaWdpbjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnYWlycG9ydFNlbGVjdERyb3Bkb3duRGVzdGluYXRpb24nKSBhaXJwb3J0U2VsZWN0RHJvcGRvd25EZXN0aW5hdGlvbjogQWlycG9ydFNlbGVjdERyb3Bkb3duQ29tcG9uZW50O1xuXG4gIG9yaWdpbjogQWlycG9ydE1vZGVsO1xuICBkZXN0aW5hdGlvbjogQWlycG9ydE1vZGVsO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQHJlcXVpcmVkXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBbGwgYWlycG9ydHMgdGhhdCB3aWxsIGJlIHBvcHVsYXRlZCBpbnRvIHRoZSBkcm9wZG93biBsaXN0cy5cbiAgICovXG4gIEBJbnB1dCgpIGFpcnBvcnRzOiBBcnJheTxBaXJwb3J0TW9kZWw+O1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgcmVjb3JkIGNvbnRhaW5pbmcga2V5cyB3aXRoIGFsbCBhaXJwb3J0IGNvZGVzIHdpdGggY29ycmVzcG9uZGluZyBhcnJheSBvZiBhaXJwb3J0IGNvZGVzIGNvbm5lY3RlZCB0byB0aGUga2V5LlxuICAgKi9cbiAgQElucHV0KCkgYWlycG9ydFJlbGF0aW9uczogUmVjb3JkPHN0cmluZywgQXJyYXk8c3RyaW5nPj47XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gYXJyYXkgb2Ygb3JpZ2luIGFpcnBvcnRzIHRoYXQgdGhlIHVzZXIgaGFzIGFsbHJlYWR5IHNlYXJjaCBmb3IuXG4gICAqL1xuICBASW5wdXQoKSBsYXRlc3RTZWFyY2hlc09yaWdpbjogQXJyYXk8QWlycG9ydE1vZGVsPjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBbiBhcnJheSBvZiBkZXN0aW5hdGlvbiBhaXJwb3J0cyB0aGF0IHRoZSB1c2VyIGhhcyBhbGxyZWFkeSBzZWFyY2ggZm9yLlxuICAgKi9cbiAgQElucHV0KCkgbGF0ZXN0U2VhcmNoZXNEZXN0aW5hdGlvbjogQXJyYXk8QWlycG9ydE1vZGVsPjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBbiBhcnJheSBvZiBhaXJwb3J0cyB0aGF0IGFyZSBjbG9zZSB0byB0aGUgdXNlci5cbiAgICovXG4gIEBJbnB1dCgpIGNsb3Nlc3RBaXJwb3J0czogQXJyYXk8QWlycG9ydE1vZGVsPjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGxpc3Qgb2YgYWlycG9ydHMgdGhhdCBzaG91bGQgYmUgZGlzcGxheWVkIGluIHRoZSBvcmlnaW4gZHJvcGRvd24uXG4gICAqIElmIG5vdCBpbmNsdWRlZCwgYWxsIGFpcnBvcnRzIHdpbGwgYmUgZGlzcGxheWVkLlxuICAgKi9cbiAgQElucHV0KCkgYWxsb3dlZE9yaWdpbkFpcG9ydHM6IEFycmF5PEFpcnBvcnRNb2RlbD47XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gYXJyYXkgb2YgYWlycG9ydHMgdGhhdCBhcmUgcmVzdHJpY3RlZCBmb3IgZGVzdGluYXRpb24gYWlycG9ydHMuIEl0IHdpbGwgZGVmYXVsdCB0byBhaXJwb3J0cyBpZiBub3Qgc2V0LlxuICAgKi9cbiAgQElucHV0KCkgYWxsb3dlZERlc3RpbmF0aW9uQWlycG9ydHM6IEFycmF5PEFpcnBvcnRNb2RlbD47XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBib29sZWFuIGluZGljYXRpbmcgaWYgYWlycG9ydHMgdGhhdCB0aGUgdXNlciBhbGxyZWFkeSBoYXMgc2VhcmggZm9yIHNob3VsZCBiZSBkaXNwbGF5ZWQuXG4gICAqL1xuICBASW5wdXQoKSBkaXNwbGF5TGF0ZXN0U2VhcmNoZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIGFpcnBvcnRzIHRoYXQgYXJlIGNsb3NlIHRvIHRoZSB1c2VyIHNob3VsZCBiZSBkaXNwbGF5ZWQuXG4gICAqL1xuICBASW5wdXQoKSBkaXNwbGF5Q2xvc2VzdEFpcnBvcnRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBEaXNwbGF5IGJvdGggb3JnaW4gYW5kIGRlc3RpbmF0aW9uIGFpcnBvcnQgc2VsZWN0b3IuXG4gICAqL1xuICBASW5wdXQoKSBjb21ibz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRGlzcGxheSBzd2l0Y2ggVUkgdG8gaW50ZXJjaGFuZ2Ugb3JpZ2luIGFuZCBkZXN0aW5hdGlvbiBhaXJwb3J0LlxuICAgKi9cbiAgQElucHV0KCkgdXNlU3dpdGNoPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGxhYmVsIHRoYXQgd2lsbCBhcHBlYXIgb24gdG9wIG9mIGFsbCBhaXJwb3J0cyBpbiB0aGUgZHJvcCBkb3duIGxpc3QuXG4gICAqL1xuICBASW5wdXQoKSBhbGxBaXJwb3J0c0xhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBsYWJlbCB0aGF0IHdpbGwgYXBwZWFyIG9uIHRvcCBvZiB0aGUgbGF0ZXN0IHNlYXJjaGVzIGluIHRoZSBkcm9wIGRvd24gbGlzdC5cbiAgICovXG4gIEBJbnB1dCgpIGxhdGVzdFNlYXJjaGVzTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGxhYmVsIHRoYXQgd2lsbCBhcHBlYXIgb24gdG9wIG9mIHRoZSBjbG9zZXN0IGFpcnBvcnRzIGluIHRoZSBkcm9wIGRvd24gbGlzdC5cbiAgICovXG4gIEBJbnB1dCgpIGNsb3Nlc3RBaXJwb3J0c0xhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBsYWJlbCB0aGF0IHdpbGwgYXBwZWFyIGluIG15IGxvY2F0aW9uIGluIHRoZSBkcm9wIGRvd24gbGlzdC5cbiAgICovXG4gIEBJbnB1dCgpIGdlb2xvY2F0aW9uTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGxhYmVsIHRoYXQgd2lsbCBhcHBlYXIgaW4gbXkgbG9jYXRpb24sIGluIHRoZSBkcm9wIGRvd24gbGlzdCBpZiB1c2VyIGhhcyBkZW5pZWQgZ2VvbG9jYXRpb24uXG4gICAqL1xuICBASW5wdXQoKSBnZW9sb2NhdGlvbkJsb2NrZWRMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgbGFiZWwgdGhhdCB3aWxsIGFwcGVhciBpbiB0aGUgZGVzdGluYXRpb24gaW5wdXQgZmllbGQgaWYgdGhlXG4gICAqIHVzZXIgdHJpZXMgdG8gc2VsZWN0IGEgZGVzdGluYXRpb24gYWlycG9ydCB3aXRob3V0IHNlbGVjdGluZyBhbiBvcmlnaW4gYWlycG9ydC5cbiAgICovXG4gIEBJbnB1dCgpIHNlbGVjdE9yaWdpbkZpcnN0TGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIHRleHQgdGhhdCBhcHBlYXJzIGluIHRoZSBkZXN0aW5hdGlvbnMgZHJvcGRvd24gbGlzdCB3aGVuIG9yaWdpbiBhaXJwb3J0IGlzIG5vdCBzZXQuXG4gICAqL1xuICBASW5wdXQoKSBpbnZhbGlkRGVzdGluYXRpb25UZXh0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAcmVxdWlyZWRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgbGFiZWwgdGhhdCB3aWxsIGFwcGVhciBvbiB0b3Agb2YgdGhlIG9yaWdpbiBhaXJwb3J0IGlucHV0IGZpZWxkLlxuICAgKi9cbiAgQElucHV0KCkgbGFiZWxPcmlnaW4gPSAnJztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIHBsYWNlaG9sZGVyIHRoYXQgd2lsbCBhcHBlYXIgb24gdGhlIG9yaWdpbiBhaXJwb3J0IGlucHV0IGZpZWxkLlxuICAgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXJPcmlnaW4gPSAnJztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGxhYmVsIHRoYXQgd2lsbCBhcHBlYXIgb24gdG9wIG9mIHRoZSBkZXN0aW5hdGlvbiBhaXJwb3J0IGlucHV0IGZpZWxkLlxuICAgKi9cbiAgQElucHV0KCkgbGFiZWxEZXN0aW5hdGlvbiA9ICcnO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgcGxhY2Vob2xkZXIgdGhhdCB3aWxsIGFwcGVhciBvbiB0aGUgZGVzdGluYXRpb24gYWlycG9ydCBpbnB1dCBmaWVsZC5cbiAgICovXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyRGVzdGluYXRpb24gPSAnJztcblxuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgbW9kaWZpZXIgdGhhdCB3aWxsIGFsbG93IGFsd2F5cyBrZWVwaW5nIHRoZSBzZWxlY3RlZCBhaXJwb3J0LlxuICAgKiBUaGUgbGFzdCBzZWxlY3RlZCBhaXJwb3J0IHdpbGwgYmUgc2hvd24gb25jZSB1c2VyIGNsZWFycyB0aGUgc2VsZWN0aW9uIGFuZCBibHVyLlxuICAgKi9cbiAgQElucHV0KCkga2VlcFNlbGVjdGlvbjogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXRzIGEgZm9ybUNvbnRyb2xOYW1lIGRpcmVjdGl2ZSB0byB0aGUgaW5wdXQuXG4gICAqIEl0IHJlcXVpcmVzIHRoYXQgdGhlIGNvbnN1bWVyIGluY2x1ZGVkIFJlYWN0aXZlRm9ybXNNb2R1bGUgaW4gaXQncyBtb2R1bGUuXG4gICAqIEl0IHJlcXVpZXJzIHRoYXQgdGhlIG5hc0Zvcm1Hcm91cCBpbnB1dCBpcyBmaWxsZWQuXG4gICAqL1xuICBASW5wdXQoKSBuYXNGb3JtQ29udHJvbE5hbWVPcmlnaW46IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXRzIGEgZm9ybUNvbnRyb2xOYW1lIGRpcmVjdGl2ZSB0byB0aGUgaW5wdXQuXG4gICAqIEl0IHJlcXVpcmVzIHRoYXQgdGhlIGNvbnN1bWVyIGluY2x1ZGVkIFJlYWN0aXZlRm9ybXNNb2R1bGUgaW4gaXQncyBtb2R1bGUuXG4gICAqIEl0IHJlcXVpZXJzIHRoYXQgdGhlIG5hc0Zvcm1Hcm91cCBpbnB1dCBpcyBmaWxsZWQuXG4gICAqL1xuICBASW5wdXQoKSBuYXNGb3JtQ29udHJvbE5hbWVEZXN0aW5hdGlvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFkZHMgdGhlIHBhcmVudCdzIGZvcm0gZ3JvdXAuXG4gICAqIEl0IHJlcXVpcmVzIHRoYXQgdGhlIGNvbnN1bWVyIGluY2x1ZGVkIFJlYWN0aXZlRm9ybXNNb2R1bGUgaW4gaXQncyBtb2R1bGUuXG4gICAqIEl0IGlzIHJlcXVpZXJlZCB0byBiZSBmaWxsZWQgaWYgbmFzRm9ybUNvbnRyb2xOYW1lIGFkZGVkLlxuICAgKi9cbiAgQElucHV0KCkgbmFzRm9ybUdyb3VwOiBGb3JtR3JvdXA7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVGhlIGFpcnBvcnQgY29kZSBvZiB0aGUgb3JpZ2luIGFpcnBvcnQuIEl0IHdpbGwgc2V0IHRoZSBzZWxlY3RlZCBvcmlnaW4gYWlycG9ydCBiYXNlZCBvbiB0aGlzIHZhbHVlLlxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IG9yaWdpbkFpcnBvcnRDb2RlKCkge1xuICAgIHJldHVybiB0aGlzLm9yaWdpbkFpcnBvcnRDb2RlVmFsdWU7XG4gIH1cbiAgc2V0IG9yaWdpbkFpcnBvcnRDb2RlKGNvZGU6IHN0cmluZykge1xuICAgIGlmIChjb2RlKSB7XG4gICAgICBpZiAoY29kZSAhPT0gdGhpcy5vcmlnaW5BaXJwb3J0Q29kZVZhbHVlKSB7XG4gICAgICAgIHRoaXMub3JpZ2luQWlycG9ydENvZGVWYWx1ZSA9IGNvZGU7XG4gICAgICAgIHRoaXMuc2V0T3JpZ2luKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3JpZ2luQWlycG9ydENvZGVWYWx1ZSA9ICcnO1xuICAgICAgdGhpcy5jbGVhck9yaWdpbigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBhaXJwb3J0IGNvZGUgb2YgdGhlIGRlc3RpbmF0aW9uIGFpcnBvcnQuIEl0IHdpbGwgc2V0IHRoZSBzZWxlY3RlZCBkZXN0aW5hdGlvbiBhaXJwb3J0IGJhc2VkIG9uIHRoaXMgdmFsdWUuXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgZGVzdGluYXRpb25BaXJwb3J0Q29kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5kZXN0aW5hdGlvbkFpcnBvcnRDb2RlVmFsdWU7XG4gIH1cbiAgc2V0IGRlc3RpbmF0aW9uQWlycG9ydENvZGUoY29kZTogc3RyaW5nKSB7XG4gICAgaWYgKGNvZGUpIHtcbiAgICAgIGlmIChjb2RlICE9PSB0aGlzLmRlc3RpbmF0aW9uQWlycG9ydENvZGVWYWx1ZSkge1xuICAgICAgICB0aGlzLmRlc3RpbmF0aW9uQWlycG9ydENvZGVWYWx1ZSA9IGNvZGU7XG4gICAgICAgIHRoaXMuc2V0RGVzdGluYXRpb24oKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kZXN0aW5hdGlvbkFpcnBvcnRDb2RlVmFsdWUgPSAnJztcbiAgICAgIHRoaXMuY2xlYXJEZXN0aW5hdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFkZHMgJ2FyaWEtbGFiZWwnIG9uIHRoZSBjbGVhciBidXR0b24gaW5zaWRlIHRoZSBhaXJwb3J0IHNlbGVjdCBpbnB1dHMuXG4gICAqL1xuICBASW5wdXQoKSBhcmlhTGFiZWxDbGVhcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFkZHMgJ2FyaWEtbGFiZWwnIHRvIHRoZSBiYWNrZHJvcHMuXG4gICAqL1xuICBASW5wdXQoKSBhcmlhTGFiZWxCYWNrZHJvcDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgT3V0cHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBbiBldmVudCB0aGF0IGlzIGZpcmVkIGV2ZXJ5IHRpbWUgdGhlIHNlbGVjdGVkIG9yaWdpbiBhaXJwb3J0IGNoYW5nZXMuXG4gICAqL1xuICBAT3V0cHV0KCkgb3JpZ2luQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxBaXJwb3J0TW9kZWw+KCk7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBPdXRwdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFuIGV2ZW50IHRoYXQgaXMgZmlyZWQgZXZlcnkgdGltZSB0aGUgb3JpZ2luIGRyb3Bkb3duIHNlbGVjdG9yIG9wZW5zIG9yIGNsb3Nlcy5cbiAgICovXG4gIEBPdXRwdXQoKSBvcmlnaW5PcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIC8qKlxuICAqIEBwcm9wZXJ0eSBPdXRwdXRcbiAgKiBAZGVzY3JpcHRpb25cbiAgKiBBbiBldmVudCB0aGF0IGlzIGZpcmVkIGV2ZXJ5IHRpbWUgdGhlIG9yaWdpbiBkcm9wZG93biBzZWxlY3RvciBvcGVucyBvciBjbG9zZXMuXG4gICovXG4gIEBPdXRwdXQoKSBkZXN0aW5hdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8QWlycG9ydE1vZGVsPigpO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgT3V0cHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBbiBldmVudCB0aGF0IGlzIGZpcmVkIGV2ZXJ5IHRpbWUgdGhlIGRlc3RpbmF0aW9uIGRyb3Bkb3duIHNlbGVjdG9yIG9wZW5zIG9yIGNsb3Nlcy5cbiAgICovXG4gIEBPdXRwdXQoKSBkZXN0aW5hdGlvbk9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBPdXRwdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFuIGV2ZW50IHRoYXQgaXMgZmlyZWQgd2hlbiB0aGUgZGVzdGluYXRpb24gZHJvcGRvd24gY2xvc2VzLlxuICAgKi9cbiAgQE91dHB1dCgpIGZvY3VzT25OZXh0ID0gbmV3IEV2ZW50RW1pdHRlcjxLZXlib2FyZEV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgT3V0cHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBbiBldmVudCB0aGF0IGlzIGZpcmVkIHdoZW4gZ2VvbG9jYXRpb24gcG9zaXRpb24gaGFzIGNoYW5nZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgcG9zaXRpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEdlb2xvY2F0aW9uUG9zaXRpb24+KCk7XG5cbiAgcHJpdmF0ZSBvcmlnaW5BaXJwb3J0Q29kZVZhbHVlOiBzdHJpbmc7XG4gIHByaXZhdGUgZGVzdGluYXRpb25BaXJwb3J0Q29kZVZhbHVlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoJ25hcy1haXJwb3J0LXNlbGVjdC1uZXcnKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5haXJwb3J0cykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGlucHV0OiBbYWlycG9ydHNdJyk7XG4gICAgfVxuXG4gICAgdGhpcy5yZXN1bHRzTGFiZWxzID0ge1xuICAgICAgYWxsQWlycG9ydHM6IHRoaXMuYWxsQWlycG9ydHNMYWJlbCB8fCAnJyxcbiAgICAgIGNsb3Nlc3RBaXJwb3J0czogdGhpcy5jbG9zZXN0QWlycG9ydHNMYWJlbCB8fCAnJyxcbiAgICAgIGxhdGVzdFNlYXJjaGVzOiB0aGlzLmxhdGVzdFNlYXJjaGVzTGFiZWwgfHwgJycsXG4gICAgICBnZW9sb2NhdGlvbjogdGhpcy5nZW9sb2NhdGlvbkxhYmVsIHx8ICcnLFxuICAgICAgZ2VvbG9jYXRpb25EZW5pZWQ6IHRoaXMuZ2VvbG9jYXRpb25CbG9ja2VkTGFiZWwgfHwgJydcbiAgICB9O1xuXG4gICAgdGhpcy50ZXh0U2VsZWN0T3JpZ2luRmlyc3QgPSB0aGlzLnNlbGVjdE9yaWdpbkZpcnN0TGFiZWw7XG4gICAgdGhpcy5haXJwb3J0c09yaWdpbiA9IHRoaXMuYWxsb3dlZE9yaWdpbkFpcG9ydHMgJiYgdGhpcy5hbGxvd2VkT3JpZ2luQWlwb3J0cy5sZW5ndGggPiAwID8gdGhpcy5hbGxvd2VkT3JpZ2luQWlwb3J0cyA6IHRoaXMuYWlycG9ydHM7XG5cbiAgICB0aGlzLmFpcnBvcnRzRGVzdGluYXRpb24gPSB0aGlzLmdldEFpcnBvcnRzRGVzdGluYXRpb25zKCk7XG5cbiAgICBpZiAodGhpcy5uYXNGb3JtR3JvdXApIHtcbiAgICAgIGlmICh0aGlzLm5hc0Zvcm1Db250cm9sTmFtZU9yaWdpbikge1xuICAgICAgICBjb25zdCBvcmlnaW5Db250cm9sID0gdGhpcy5uYXNGb3JtR3JvdXAuZ2V0KHRoaXMubmFzRm9ybUNvbnRyb2xOYW1lT3JpZ2luKTtcblxuICAgICAgICBpZiAob3JpZ2luQ29udHJvbCkge1xuICAgICAgICAgIGNvbnN0IG9yaWdpbiA9IHRoaXMuYWlycG9ydHNPcmlnaW4uZmluZCh4ID0+IHgubmFtZSA9PT0gb3JpZ2luQ29udHJvbC52YWx1ZSk7XG5cbiAgICAgICAgICBpZiAob3JpZ2luKSB7XG4gICAgICAgICAgICB0aGlzLm9yaWdpbkFpcnBvcnRDb2RlID0gb3JpZ2luLmNvZGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLm5hc0Zvcm1Db250cm9sTmFtZURlc3RpbmF0aW9uKSB7XG4gICAgICAgIGNvbnN0IGRlc3RpbmF0aW9uQ29udHJvbCA9IHRoaXMubmFzRm9ybUdyb3VwLmdldCh0aGlzLm5hc0Zvcm1Db250cm9sTmFtZURlc3RpbmF0aW9uKTtcblxuICAgICAgICBpZiAoZGVzdGluYXRpb25Db250cm9sKSB7XG4gICAgICAgICAgY29uc3QgZGVzdGluYXRpb24gPSB0aGlzLmFpcnBvcnRzRGVzdGluYXRpb24uZmluZCh4ID0+IHgubmFtZSA9PT0gZGVzdGluYXRpb25Db250cm9sLnZhbHVlKTtcblxuICAgICAgICAgIGlmIChkZXN0aW5hdGlvbikge1xuICAgICAgICAgICAgdGhpcy5kZXN0aW5hdGlvbkFpcnBvcnRDb2RlID0gZGVzdGluYXRpb24uY29kZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghdGhpcy5kZXN0aW5hdGlvbikge1xuICAgICAgdGhpcy5jbGVhckRlc3RpbmF0aW9uKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5kZXN0aW5hdGlvbkNoYW5nZS5lbWl0KHRoaXMuZGVzdGluYXRpb24pO1xuICAgIHRoaXMub3JpZ2luQ2hhbmdlLmVtaXQodGhpcy5vcmlnaW4pO1xuXG5cbiAgICBpZiAodGhpcy5vcmlnaW5BaXJwb3J0Q29kZSkge1xuICAgICAgdGhpcy5zZXRPcmlnaW4oKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kZXN0aW5hdGlvbkFpcnBvcnRDb2RlKSB7XG4gICAgICB0aGlzLnNldERlc3RpbmF0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0QWlycG9ydFNlbGVjdENvbWJvQ2xhc3MoZWxlbWVudD86IHN0cmluZywgbW9kaWZpZXJzSW5wdXQ/OiBhbnkpOiBDbGFzc01vZGVsIHtcbiAgICBsZXQgbW9kaWZpZXJzID0gbW9kaWZpZXJzSW5wdXQ7XG5cbiAgICBpZiAodHlwZW9mIG1vZGlmaWVyc0lucHV0ID09PSAnc3RyaW5nJyB8fCBtb2RpZmllcnNJbnB1dCBpbnN0YW5jZW9mIFN0cmluZykge1xuICAgICAgbW9kaWZpZXJzID0gW21vZGlmaWVyc0lucHV0XTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYmxvY2s6ICduYXMtYWlycG9ydC1zZWxlY3QtbmV3LWNvbWJvJyxcbiAgICAgIGVsZW1lbnQ6IGVsZW1lbnQsXG4gICAgICBtb2RpZmllcnM6IG1vZGlmaWVyc1xuICAgIH07XG4gIH1cblxuICBvbk9yaWdpbk9wZW4ob3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5vcmlnaW5PcGVuID0gb3BlbjtcbiAgICB9KTtcblxuICAgIHRoaXMuZGVzdGluYXRpb25PcGVuID0gZmFsc2U7XG4gICAgdGhpcy5vcmlnaW5PcGVuQ2hhbmdlLmVtaXQob3Blbik7XG4gIH1cblxuICBvbkRlc3RpbmF0aW9uT3BlbihvcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0aW5hdGlvbk9wZW4gPSBvcGVuO1xuICAgIHRoaXMub3JpZ2luT3BlbiA9IGZhbHNlO1xuXG4gICAgdGhpcy5kZXN0aW5hdGlvbk9wZW5DaGFuZ2UuZW1pdChvcGVuKTtcbiAgfVxuXG4gIHNldFNlbGVjdGVkT3JpZ2luKGFpcnBvcnQ6IEFpcnBvcnRNb2RlbCk6IHZvaWQge1xuICAgIGlmICghYWlycG9ydCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMub3JpZ2luID0gYWlycG9ydDtcbiAgICB0aGlzLm9yaWdpbkFpcnBvcnRDb2RlVmFsdWUgPSBhaXJwb3J0LmNvZGU7XG4gICAgdGhpcy5pc0Rlc3RpbmF0aW9uVmFsaWQgPSBhaXJwb3J0LmNvZGUgPyB0cnVlIDogZmFsc2U7XG5cbiAgICBpZiAodGhpcy5haXJwb3J0UmVsYXRpb25zICYmIHRoaXMuaGFzVmFsaWREZXN0aW5hdGlvbnMoYWlycG9ydCkpIHtcbiAgICAgIHRoaXMudXBkYXRlVmFsaWRBaXJwb3J0RGVzdGluYXRpb25zKGFpcnBvcnQpO1xuICAgICAgdGhpcy5zZXRDdXJyZW50TGF0ZXN0U2VhcmNoZXNEZXN0aW5hdGlvbigpO1xuICAgIH1cblxuICAgIHRoaXMub3JpZ2luQ2hhbmdlLmVtaXQoYWlycG9ydCk7XG4gIH1cblxuICBzZXRTZWxlY3RlZERlc3RpbmF0aW9uKGFpcnBvcnQ6IEFpcnBvcnRNb2RlbCk6IHZvaWQge1xuICAgIGlmICghYWlycG9ydCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZGVzdGluYXRpb24gPSBhaXJwb3J0O1xuICAgIHRoaXMuZGVzdGluYXRpb25BaXJwb3J0Q29kZVZhbHVlID0gYWlycG9ydC5jb2RlO1xuICAgIHRoaXMuZGVzdGluYXRpb25DaGFuZ2UuZW1pdChhaXJwb3J0KTtcbiAgfVxuXG4gIHNldEZvY3VzT25OZXh0KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5mb2N1c09uTmV4dC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uT3JpZ2luRm9jdXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWlycG9ydFNlbGVjdERyb3Bkb3duT3JpZ2luKSB7XG4gICAgICB0aGlzLm9uT3JpZ2luT3Blbih0cnVlKTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VTd2l0Y2hJY29uKCk6IHZvaWQge1xuICAgIHRoaXMuc3dpdGNoVHlwZSA9IHRoaXMuc3dpdGNoVHlwZSA9PT0gJ3N3aXRjaCcgPyAnc3dpdGNoLS1zZWNvbmRhcnknIDogJ3N3aXRjaCc7XG4gIH1cblxuICBzd2FwQWlycG9ydHMoKTogdm9pZCB7XG4gICAgY29uc3QgZGVzdGluYXRpb24gPSB7IC4uLnRoaXMuZGVzdGluYXRpb24gfTtcbiAgICBjb25zdCBvcmlnaW4gPSB7IC4uLnRoaXMub3JpZ2luIH07XG4gICAgdGhpcy5kZXN0aW5hdGlvbiA9IG9yaWdpbjtcbiAgICB0aGlzLm9yaWdpbiA9IGRlc3RpbmF0aW9uO1xuXG4gICAgdGhpcy5zZXRTZWxlY3RlZERlc3RpbmF0aW9uKHRoaXMuZGVzdGluYXRpb24pO1xuICAgIHRoaXMuc2V0U2VsZWN0ZWRPcmlnaW4odGhpcy5vcmlnaW4pO1xuICB9XG5cbiAgc3dhcEtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICB0aGlzLnN3YXBBaXJwb3J0cygpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBzZXREZXN0aW5hdGlvbk9wZW4oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5leGlzdHModGhpcy5jb21ibykpIHtcbiAgICAgIHRoaXMuZGVzdGluYXRpb25PcGVuID0gdHJ1ZTtcbiAgICAgIHRoaXMub3JpZ2luT3BlbiA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldEZvY3VzT25OZXh0KGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBnZXRDbG9zZXN0QWlycG9ydHMocG9zaXRpb246IEdlb2xvY2F0aW9uUG9zaXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLnBvc2l0aW9uQ2hhbmdlLmVtaXQocG9zaXRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBaXJwb3J0c0Rlc3RpbmF0aW9ucygpOiBBcnJheTxBaXJwb3J0TW9kZWw+IHtcbiAgICBjb25zdCBhbGxvd2VkRGVzdGluYXRpb25BaXJwb3J0cyA9IHRoaXMuYWxsb3dlZERlc3RpbmF0aW9uQWlycG9ydHM7XG5cbiAgICByZXR1cm4gYWxsb3dlZERlc3RpbmF0aW9uQWlycG9ydHMgJiYgYWxsb3dlZERlc3RpbmF0aW9uQWlycG9ydHMubGVuZ3RoID4gMFxuICAgICAgPyBhbGxvd2VkRGVzdGluYXRpb25BaXJwb3J0c1xuICAgICAgOiB0aGlzLmFpcnBvcnRzO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRPcmlnaW4oKTogdm9pZCB7XG4gICAgY29uc3QgYWlycG9ydCA9IHRoaXMuYWlycG9ydHMuZmluZCh4ID0+IHguY29kZSA9PT0gdGhpcy5vcmlnaW5BaXJwb3J0Q29kZSk7XG5cbiAgICBpZiAoYWlycG9ydCkge1xuICAgICAgdGhpcy5zZXRTZWxlY3RlZE9yaWdpbihhaXJwb3J0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldERlc3RpbmF0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IGFpcnBvcnQgPSB0aGlzLmFpcnBvcnRzLmZpbmQoeCA9PiB4LmNvZGUgPT09IHRoaXMuZGVzdGluYXRpb25BaXJwb3J0Q29kZSk7XG5cbiAgICBpZiAoYWlycG9ydCkge1xuICAgICAgdGhpcy5zZXRTZWxlY3RlZERlc3RpbmF0aW9uKGFpcnBvcnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVmFsaWRBaXJwb3J0RGVzdGluYXRpb25zKGFpcnBvcnQ6IEFpcnBvcnRNb2RlbCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5haXJwb3J0UmVsYXRpb25zKSB7XG4gICAgICB0aGlzLmFpcnBvcnRzRGVzdGluYXRpb24gPSB0aGlzLmFpcnBvcnRzT3JpZ2luO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB2YWxpZERlc3RpbmF0aW9ucyA9IHRoaXMuZ2V0QWlycG9ydFJlbGF0aW9ucyhhaXJwb3J0KTtcblxuICAgICAgaWYgKCF2YWxpZERlc3RpbmF0aW9ucykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWxpZERlc3RpbmF0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5jbGVhckRlc3RpbmF0aW9ucygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGlzRGVzdGluYXRpb25WYWxpZDogYm9vbGVhbjtcbiAgICAgICAgaWYgKHRoaXMuZGVzdGluYXRpb24gJiYgdGhpcy5kZXN0aW5hdGlvbi5jb2RlKSB7XG4gICAgICAgICAgaXNEZXN0aW5hdGlvblZhbGlkID0gdmFsaWREZXN0aW5hdGlvbnMuc29tZSh4ID0+IHggJiYgeC50b0xvd2VyQ2FzZSgpID09PSB0aGlzLmRlc3RpbmF0aW9uLmNvZGUudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0Rlc3RpbmF0aW9uVmFsaWQpIHtcbiAgICAgICAgICB0aGlzLmNsZWFyRGVzdGluYXRpb24oKTtcbiAgICAgICAgICB0aGlzLmRlc3RpbmF0aW9uQ2hhbmdlLmVtaXQobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5haXJwb3J0cykge1xuICAgICAgICAgIHRoaXMuYWlycG9ydHNEZXN0aW5hdGlvbiA9IHRoaXMuYWlycG9ydHNcbiAgICAgICAgICAgIC5maWx0ZXIoYWlycG9ydEl0ZW0gPT4gYWlycG9ydEl0ZW1cbiAgICAgICAgICAgICAgJiYgYWlycG9ydEl0ZW0uY29kZVxuICAgICAgICAgICAgICAmJiB2YWxpZERlc3RpbmF0aW9ucy5zb21lKHggPT4geCAmJiBhaXJwb3J0SXRlbS5jb2RlLnRvTG93ZXJDYXNlKCkgPT09IHgudG9Mb3dlckNhc2UoKSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYXNWYWxpZERlc3RpbmF0aW9ucyhvcmlnaW46IEFpcnBvcnRNb2RlbCk6IGJvb2xlYW4ge1xuICAgIGlmICghb3JpZ2luKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVsYXRpb25zID0gdGhpcy5nZXRBaXJwb3J0UmVsYXRpb25zKG9yaWdpbik7XG5cbiAgICByZXR1cm4gcmVsYXRpb25zICYmIHJlbGF0aW9ucy5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBaXJwb3J0UmVsYXRpb25zKGFpcnBvcnQ6IEFpcnBvcnRNb2RlbCk6IEFycmF5PHN0cmluZz4ge1xuICAgIGlmICghdGhpcy5haXJwb3J0cykge1xuICAgICAgcmV0dXJuIG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYWlycG9ydFJlbGF0aW9uc1thaXJwb3J0LmNvZGUudG9Mb3dlckNhc2UoKV0gfHwgdGhpcy5haXJwb3J0UmVsYXRpb25zW2FpcnBvcnQuY29kZS50b1VwcGVyQ2FzZSgpXTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJPcmlnaW4oKSB7XG4gICAgdGhpcy5zZXRTZWxlY3RlZE9yaWdpbih7XG4gICAgICBjb2RlOiAnJyxcbiAgICAgIGNvdW50cnlOYW1lOiAnJyxcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgYWlycG9ydE5hbWU6ICcnLFxuICAgICAgZGlzcGxheU5hbWU6ICcnLFxuICAgICAgbm9ybWFsaXplZEFpcnBvcnROYW1lOiAnJ1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckRlc3RpbmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0U2VsZWN0ZWREZXN0aW5hdGlvbih7XG4gICAgICBjb2RlOiAnJyxcbiAgICAgIGNvdW50cnlOYW1lOiAnJyxcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgYWlycG9ydE5hbWU6ICcnLFxuICAgICAgZGlzcGxheU5hbWU6ICcnLFxuICAgICAgbm9ybWFsaXplZEFpcnBvcnROYW1lOiAnJ1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckRlc3RpbmF0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLmFpcnBvcnRzRGVzdGluYXRpb24gPSBuZXcgQXJyYXk8QWlycG9ydE1vZGVsPigpO1xuXG4gICAgY29uc3QgbW9kZWwgPSB7XG4gICAgICBuYW1lOiB0aGlzLnRleHRTZWxlY3RPcmlnaW5GaXJzdCxcbiAgICAgIGNvdW50cnlOYW1lOiAnJyxcbiAgICAgIGNvZGU6ICcnLFxuICAgICAgYWlycG9ydE5hbWU6ICcnLFxuICAgICAgZGlzcGxheU5hbWU6ICcnLFxuICAgICAgbm9ybWFsaXplZEFpcnBvcnROYW1lOiAnJ1xuICAgIH07XG5cbiAgICB0aGlzLmFpcnBvcnRzRGVzdGluYXRpb24ucHVzaChtb2RlbCk7XG4gICAgdGhpcy5jbGVhckRlc3RpbmF0aW9uKCk7XG4gICAgdGhpcy5kZXN0aW5hdGlvbkNoYW5nZS5lbWl0KG1vZGVsKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q3VycmVudExhdGVzdFNlYXJjaGVzRGVzdGluYXRpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWlycG9ydHNEZXN0aW5hdGlvbikge1xuICAgICAgdGhpcy5jdXJyZW50TGF0ZXN0U2VhcmNoZXNEZXN0aW5hdGlvbiA9IHRoaXMuYWlycG9ydHNEZXN0aW5hdGlvbi5maWx0ZXIoYWlycG9ydCA9PiB7XG4gICAgICAgIGlmICh0aGlzLmxhdGVzdFNlYXJjaGVzRGVzdGluYXRpb24pIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5sYXRlc3RTZWFyY2hlc0Rlc3RpbmF0aW9uLnNvbWUoeCA9PiB4LmNvZGUgJiYgeC5jb2RlLnRvTG93ZXJDYXNlKCkgPT09IGFpcnBvcnQuY29kZS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbn1cbiIsIjxkaXYgKm5nSWY9XCJleGlzdHMoY29tYm8pOyBlbHNlIGFpcnBvcnRTZWxlY3RUZW1wbGF0ZVwiXG4gIFtuYXNDbGFzc109XCJnZXRBaXJwb3J0U2VsZWN0Q29tYm9DbGFzcygpXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhaXJwb3J0U2VsZWN0VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNhaXJwb3J0U2VsZWN0VGVtcGxhdGU+XG4gIDxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzKCcnLCBleGlzdHModXNlU3dpdGNoKSAmJiAncGFkZGluZy1vcmlnaW4nKVwiXG4gICAgKm5nSWY9XCJhaXJwb3J0c09yaWdpblwiPlxuICAgIDxuYXMtYWlycG9ydC1zZWxlY3QtZHJvcGRvd24gI2FpcnBvcnRTZWxlY3REcm9wZG93bk9yaWdpblxuICAgICAgZGlzcGxheUxhdGVzdFNlYXJjaGVzXG4gICAgICBbZW5hYmxlR2VvbG9jYXRpb25dPVwiZGlzcGxheUNsb3Nlc3RBaXJwb3J0c1wiXG4gICAgICBbZGlzcGxheUNsb3Nlc3RBaXJwb3J0c109XCJkaXNwbGF5Q2xvc2VzdEFpcnBvcnRzXCJcbiAgICAgIFthaXJwb3J0U2VsZWN0TGFiZWxdPVwibGFiZWxPcmlnaW5cIlxuICAgICAgW2xhdGVzdFNlYXJjaGVzXT1cImxhdGVzdFNlYXJjaGVzT3JpZ2luXCJcbiAgICAgIFtjbG9zZXN0QWlycG9ydHNdPVwiY2xvc2VzdEFpcnBvcnRzXCJcbiAgICAgIFthaXJwb3J0XT1cIm9yaWdpblwiXG4gICAgICBbYWlycG9ydHNdPVwiYWlycG9ydHNPcmlnaW5cIlxuICAgICAgW3Jlc3VsdHNMYWJlbHNdPVwicmVzdWx0c0xhYmVsc1wiXG4gICAgICBbYWlycG9ydFNlbGVjdFBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyT3JpZ2luXCJcbiAgICAgIFtvcGVuXT1cIm9yaWdpbk9wZW5cIlxuICAgICAgW2tlZXBTZWxlY3Rpb25dPVwia2VlcFNlbGVjdGlvblwiXG4gICAgICBbYWlycG9ydFNlbGVjdEljb25Nb2RpZmllcl09XCInZmxpZ2h0LWRlcGFydHVyZSdcIlxuICAgICAgW25hc0Zvcm1Db250cm9sTmFtZV09XCJuYXNGb3JtQ29udHJvbE5hbWVPcmlnaW5cIlxuICAgICAgW25hc0Zvcm1Hcm91cF09XCJuYXNGb3JtR3JvdXBcIlxuICAgICAgW2FyaWFMYWJlbENsZWFyXT1cImFyaWFMYWJlbENsZWFyXCJcbiAgICAgIFthcmlhTGFiZWxCYWNrZHJvcF09XCJhcmlhTGFiZWxCYWNrZHJvcFwiXG4gICAgICAoc2VsZWN0ZWQpPVwic2V0U2VsZWN0ZWRPcmlnaW4oJGV2ZW50KVwiXG4gICAgICAob3BlbkNoYW5nZSk9XCJvbk9yaWdpbk9wZW4oJGV2ZW50KVwiXG4gICAgICAoZm9jdXNPbk5leHQpPVwic2V0RGVzdGluYXRpb25PcGVuKCRldmVudClcIlxuICAgICAgKHBvc2l0aW9uQ2hhbmdlKT1cImdldENsb3Nlc3RBaXJwb3J0cygkZXZlbnQpXCI+PC9uYXMtYWlycG9ydC1zZWxlY3QtZHJvcGRvd24+XG4gIDwvZGl2PlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXhpc3RzKGNvbWJvKVwiPlxuICAgIDxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzKCcnLCBleGlzdHModXNlU3dpdGNoKSAmJiAncGFkZGluZy1kZXN0aW5hdGlvbicpXCJcbiAgICAgICpuZ0lmPVwiYWlycG9ydHNEZXN0aW5hdGlvbiAmJiBhaXJwb3J0c0Rlc3RpbmF0aW9uLmxlbmd0aCA+IDBcIj5cbiAgICAgIDxuYXMtYWlycG9ydC1zZWxlY3QtZHJvcGRvd24gI2FpcnBvcnRTZWxlY3REcm9wZG93bkRlc3RpbmF0aW9uXG4gICAgICAgIGRpc3BsYXlMYXRlc3RTZWFyY2hlc1xuICAgICAgICBbYWlycG9ydFNlbGVjdExhYmVsXT1cImxhYmVsRGVzdGluYXRpb25cIlxuICAgICAgICBbZGlzcGxheUNsb3Nlc3RBaXJwb3J0c109XCJmYWxzZVwiXG4gICAgICAgIFtsYXRlc3RTZWFyY2hlc109XCJjdXJyZW50TGF0ZXN0U2VhcmNoZXNEZXN0aW5hdGlvblwiXG4gICAgICAgIFthaXJwb3J0c109XCJhaXJwb3J0c0Rlc3RpbmF0aW9uXCJcbiAgICAgICAgW3Jlc3VsdHNMYWJlbHNdPVwicmVzdWx0c0xhYmVsc1wiXG4gICAgICAgIFthaXJwb3J0XT1cImRlc3RpbmF0aW9uXCJcbiAgICAgICAgW2FpcnBvcnRTZWxlY3RQbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlckRlc3RpbmF0aW9uXCJcbiAgICAgICAgW29wZW5dPVwiZGVzdGluYXRpb25PcGVuXCJcbiAgICAgICAgW2tlZXBTZWxlY3Rpb25dPVwia2VlcFNlbGVjdGlvblwiXG4gICAgICAgIFthaXJwb3J0U2VsZWN0SWNvbk1vZGlmaWVyXT1cIidmbGlnaHQtYXJyaXZhbCdcIlxuICAgICAgICBbbmFzRm9ybUNvbnRyb2xOYW1lXT1cIm5hc0Zvcm1Db250cm9sTmFtZURlc3RpbmF0aW9uXCJcbiAgICAgICAgW25hc0Zvcm1Hcm91cF09XCJuYXNGb3JtR3JvdXBcIlxuICAgICAgICBbYXJpYUxhYmVsQ2xlYXJdPVwiYXJpYUxhYmVsQ2xlYXJcIlxuICAgICAgICBbYXJpYUxhYmVsQmFja2Ryb3BdPVwiYXJpYUxhYmVsQmFja2Ryb3BcIlxuICAgICAgICBbaXNWYWxpZF09XCJpc0Rlc3RpbmF0aW9uVmFsaWRcIlxuICAgICAgICBbaW52YWxpZFRleHRdPVwiaW52YWxpZERlc3RpbmF0aW9uVGV4dFwiXG4gICAgICAgIChzZWxlY3RlZCk9XCJzZXRTZWxlY3RlZERlc3RpbmF0aW9uKCRldmVudClcIlxuICAgICAgICAob3BlbkNoYW5nZSk9XCJvbkRlc3RpbmF0aW9uT3BlbigkZXZlbnQpXCJcbiAgICAgICAgKGZvY3VzT25OZXh0KT1cInNldEZvY3VzT25OZXh0KCRldmVudClcIlxuICAgICAgICAoZm9jdXNPblByZXZpb3VzKT1cIm9uT3JpZ2luRm9jdXMoKVwiPjwvbmFzLWFpcnBvcnQtc2VsZWN0LWRyb3Bkb3duPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJleGlzdHModXNlU3dpdGNoKVwiXG4gICAgICAjc3dpdGNoQnV0dG9uXG4gICAgICBbbmFzQ2xhc3NdPVwiZ2V0QWlycG9ydFNlbGVjdENvbWJvQ2xhc3MoJ3N3aXRjaGVyJylcIlxuICAgICAgKG1vdXNlb3Zlcik9XCJjaGFuZ2VTd2l0Y2hJY29uKClcIlxuICAgICAgKG1vdXNlbGVhdmUpPVwiY2hhbmdlU3dpdGNoSWNvbigpXCJcbiAgICAgIChrZXlkb3duKT1cInN3YXBLZXlEb3duKCRldmVudClcIlxuICAgICAgKGNsaWNrKT1cInN3YXBBaXJwb3J0cygpXCI+XG4gICAgICA8bmFzLWljb24gW3R5cGVdPVwiJ3ZlY3RvcidcIj48L25hcy1pY29uPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+Il19
461
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWlycG9ydC1zZWxlY3QtbmV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYWlycG9ydC1zZWxlY3QtbmV3L2FpcnBvcnQtc2VsZWN0LW5ldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2FpcnBvcnQtc2VsZWN0LW5ldy9haXJwb3J0LXNlbGVjdC1uZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixpQkFBaUIsRUFDakIsU0FBUyxFQUdWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQzs7Ozs7O0FBSTlDOzs7R0FHRztBQU9ILE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxnQkFBZ0I7SUFtTzdEOzs7O09BSUc7SUFDSCxJQUNJLGlCQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUNyQyxDQUFDO0lBQ0QsSUFBSSxpQkFBaUIsQ0FBQyxJQUFZO1FBQ2hDLElBQUksSUFBSSxFQUFFO1lBQ1IsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLHNCQUFzQixFQUFFO2dCQUN4QyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO2dCQUNuQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7YUFDbEI7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDcEI7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQ0ksc0JBQXNCO1FBQ3hCLE9B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S0FBSztnQkFPRyxTQUFTO3NCQUFqQixLQUFLO2dCQU9HLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFPRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBT0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQU9HLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFPRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBUUcsc0JBQXNCO3NCQUE5QixLQUFLO2dCQU9HLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFRRyxXQUFXO3NCQUFuQixLQUFLO2dCQU9HLGlCQUFpQjtzQkFBekIsS0FBSztnQkFPRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBT0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQVNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBU0csd0JBQXdCO3NCQUFoQyxLQUFLO2dCQVNHLDZCQUE2QjtzQkFBckMsS0FBSztnQkFTRyxZQUFZO3NCQUFwQixLQUFLO2dCQVFGLGlCQUFpQjtzQkFEcEIsS0FBSztnQkFzQkYsc0JBQXNCO3NCQUR6QixLQUFLO2dCQXFCRyxjQUFjO3NCQUF0QixLQUFLO2dCQU9HLGlCQUFpQjtzQkFBekIsS0FBSztnQkFPSSxZQUFZO3NCQUFyQixNQUFNO2dCQU9HLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFPRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBT0cscUJBQXFCO3NCQUE5QixNQUFNO2dCQU9HLFdBQVc7c0JBQXBCLE1BQU07Z0JBT0csY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBOb3J3ZWdpYW4gQWlyIFNodXR0bGUuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHsgQWlycG9ydE1vZGVsIH0gZnJvbSAnLi9tb2RlbHMvYWlycG9ydC5tb2RlbCc7XG5pbXBvcnQgeyBDbGFzc01vZGVsIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMvY2xhc3MubW9kZWwnO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBWaWV3Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIE9uSW5pdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE5hc0NvbXBvbmVudEJhc2UgfSBmcm9tICcuLi8uLi9jb3JlJztcbmltcG9ydCB7IFJlc3VsdHNMYWJlbHNNb2RlbCB9IGZyb20gJy4vbW9kZWxzL3Jlc3VsdHMtbGFiZWxzLm1vZGVsJztcbmltcG9ydCB7IEFpcnBvcnRTZWxlY3REcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4vYWlycG9ydC1zZWxlY3QtZHJvcGRvd24vYWlycG9ydC1zZWxlY3QtZHJvcGRvd24uY29tcG9uZW50JztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIE5vcndlZ2lhbiBBaXJwb3J0IFNlbGVjdCBDb21wb25lbnQgfCBOZXcgZGVzaWduIHwgQmV0YVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduYXMtYWlycG9ydC1zZWxlY3QtbmV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FpcnBvcnQtc2VsZWN0LW5ldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FpcnBvcnQtc2VsZWN0LW5ldy5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEFpcnBvcnRTZWxlY3ROZXdDb21wb25lbnQgZXh0ZW5kcyBOYXNDb21wb25lbnRCYXNlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgYWlycG9ydHNPcmlnaW46IEFycmF5PEFpcnBvcnRNb2RlbD47XG4gIGFpcnBvcnRzRGVzdGluYXRpb24gPSBuZXcgQXJyYXk8QWlycG9ydE1vZGVsPigpO1xuICBjdXJyZW50TGF0ZXN0U2VhcmNoZXNEZXN0aW5hdGlvbjogQXJyYXk8QWlycG9ydE1vZGVsPjtcbiAgY2xvc2VzdEFpcnBvcnRzRGVzdGluYXRpb246IEFycmF5PEFpcnBvcnRNb2RlbD47XG4gIGZvY3VzRGVzdGluYXRpb24gPSBmYWxzZTtcbiAgdGV4dFNlbGVjdE9yaWdpbkZpcnN0OiBzdHJpbmc7XG4gIGZvY3VzZWRMYXRlc3RTZWFyY2hlc0FpcnBvcnRDb2RlRGVzdGluYXRpb246IHN0cmluZztcbiAgZm9jdXNlZEFpcnBvcnRDb2RlRGVzdGluYXRpb246IHN0cmluZztcbiAgZm9jdXNlZExhdGVzdFNlYXJjaGVzSW5kZXhEZXN0aW5hdGlvbiA9IC0xO1xuICBmb2N1c2VkQWlycG9ydEluZGV4RGVzdGluYXRpb24gPSAtMTtcbiAgc3dpdGNoVHlwZSA9ICdzd2l0Y2gnO1xuICBpc0Rlc3RpbmF0aW9uVmFsaWQ6IGJvb2xlYW47XG5cbiAgcmVzdWx0c0xhYmVsczogUmVzdWx0c0xhYmVsc01vZGVsID0ge1xuICAgIGFsbEFpcnBvcnRzOiAnJyxcbiAgICBjbG9zZXN0QWlycG9ydHM6ICcnLFxuICAgIGxhdGVzdFNlYXJjaGVzOiAnJyxcbiAgICBnZW9sb2NhdGlvbjogJycsXG4gICAgZ2VvbG9jYXRpb25EZW5pZWQ6ICcnXG4gIH07XG5cbiAgb3JpZ2luT3BlbiA9IGZhbHNlO1xuICBkZXN0aW5hdGlvbk9wZW4gPSBmYWxzZTtcbiAgY2xlYXJlZCA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ3N3aXRjaEJ1dHRvbicpIHN3aXRjaEJ1dHRvbjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnYWlycG9ydFNlbGVjdERyb3Bkb3duT3JpZ2luJykgYWlycG9ydFNlbGVjdERyb3Bkb3duT3JpZ2luOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdhaXJwb3J0U2VsZWN0RHJvcGRvd25EZXN0aW5hdGlvbicpIGFpcnBvcnRTZWxlY3REcm9wZG93bkRlc3RpbmF0aW9uOiBBaXJwb3J0U2VsZWN0RHJvcGRvd25Db21wb25lbnQ7XG5cbiAgb3JpZ2luOiBBaXJwb3J0TW9kZWw7XG4gIGRlc3RpbmF0aW9uOiBBaXJwb3J0TW9kZWw7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAcmVxdWlyZWRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFsbCBhaXJwb3J0cyB0aGF0IHdpbGwgYmUgcG9wdWxhdGVkIGludG8gdGhlIGRyb3Bkb3duIGxpc3RzLlxuICAgKi9cbiAgQElucHV0KCkgYWlycG9ydHM6IEFycmF5PEFpcnBvcnRNb2RlbD47XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSByZWNvcmQgY29udGFpbmluZyBrZXlzIHdpdGggYWxsIGFpcnBvcnQgY29kZXMgd2l0aCBjb3JyZXNwb25kaW5nIGFycmF5IG9mIGFpcnBvcnQgY29kZXMgY29ubmVjdGVkIHRvIHRoZSBrZXkuXG4gICAqL1xuICBASW5wdXQoKSBhaXJwb3J0UmVsYXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBBcnJheTxzdHJpbmc+PjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBbiBhcnJheSBvZiBvcmlnaW4gYWlycG9ydHMgdGhhdCB0aGUgdXNlciBoYXMgYWxscmVhZHkgc2VhcmNoIGZvci5cbiAgICovXG4gIEBJbnB1dCgpIGxhdGVzdFNlYXJjaGVzT3JpZ2luOiBBcnJheTxBaXJwb3J0TW9kZWw+O1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFuIGFycmF5IG9mIGRlc3RpbmF0aW9uIGFpcnBvcnRzIHRoYXQgdGhlIHVzZXIgaGFzIGFsbHJlYWR5IHNlYXJjaCBmb3IuXG4gICAqL1xuICBASW5wdXQoKSBsYXRlc3RTZWFyY2hlc0Rlc3RpbmF0aW9uOiBBcnJheTxBaXJwb3J0TW9kZWw+O1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFuIGFycmF5IG9mIGFpcnBvcnRzIHRoYXQgYXJlIGNsb3NlIHRvIHRoZSB1c2VyLlxuICAgKi9cbiAgQElucHV0KCkgY2xvc2VzdEFpcnBvcnRzOiBBcnJheTxBaXJwb3J0TW9kZWw+O1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgbGlzdCBvZiBhaXJwb3J0cyB0aGF0IHNob3VsZCBiZSBkaXNwbGF5ZWQgaW4gdGhlIG9yaWdpbiBkcm9wZG93bi5cbiAgICogSWYgbm90IGluY2x1ZGVkLCBhbGwgYWlycG9ydHMgd2lsbCBiZSBkaXNwbGF5ZWQuXG4gICAqL1xuICBASW5wdXQoKSBhbGxvd2VkT3JpZ2luQWlwb3J0czogQXJyYXk8QWlycG9ydE1vZGVsPjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBbiBhcnJheSBvZiBhaXJwb3J0cyB0aGF0IGFyZSByZXN0cmljdGVkIGZvciBkZXN0aW5hdGlvbiBhaXJwb3J0cy4gSXQgd2lsbCBkZWZhdWx0IHRvIGFpcnBvcnRzIGlmIG5vdCBzZXQuXG4gICAqL1xuICBASW5wdXQoKSBhbGxvd2VkRGVzdGluYXRpb25BaXJwb3J0czogQXJyYXk8QWlycG9ydE1vZGVsPjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGJvb2xlYW4gaW5kaWNhdGluZyBpZiBhaXJwb3J0cyB0aGF0IHRoZSB1c2VyIGFsbHJlYWR5IGhhcyBzZWFyaCBmb3Igc2hvdWxkIGJlIGRpc3BsYXllZC5cbiAgICovXG4gIEBJbnB1dCgpIGRpc3BsYXlMYXRlc3RTZWFyY2hlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBib29sZWFuIGluZGljYXRpbmcgaWYgYWlycG9ydHMgdGhhdCBhcmUgY2xvc2UgdG8gdGhlIHVzZXIgc2hvdWxkIGJlIGRpc3BsYXllZC5cbiAgICovXG4gIEBJbnB1dCgpIGRpc3BsYXlDbG9zZXN0QWlycG9ydHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIERpc3BsYXkgYm90aCBvcmdpbiBhbmQgZGVzdGluYXRpb24gYWlycG9ydCBzZWxlY3Rvci5cbiAgICovXG4gIEBJbnB1dCgpIGNvbWJvPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBEaXNwbGF5IHN3aXRjaCBVSSB0byBpbnRlcmNoYW5nZSBvcmlnaW4gYW5kIGRlc3RpbmF0aW9uIGFpcnBvcnQuXG4gICAqL1xuICBASW5wdXQoKSB1c2VTd2l0Y2g/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgbGFiZWwgdGhhdCB3aWxsIGFwcGVhciBvbiB0b3Agb2YgYWxsIGFpcnBvcnRzIGluIHRoZSBkcm9wIGRvd24gbGlzdC5cbiAgICovXG4gIEBJbnB1dCgpIGFsbEFpcnBvcnRzTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGxhYmVsIHRoYXQgd2lsbCBhcHBlYXIgb24gdG9wIG9mIHRoZSBsYXRlc3Qgc2VhcmNoZXMgaW4gdGhlIGRyb3AgZG93biBsaXN0LlxuICAgKi9cbiAgQElucHV0KCkgbGF0ZXN0U2VhcmNoZXNMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgbGFiZWwgdGhhdCB3aWxsIGFwcGVhciBvbiB0b3Agb2YgdGhlIGNsb3Nlc3QgYWlycG9ydHMgaW4gdGhlIGRyb3AgZG93biBsaXN0LlxuICAgKi9cbiAgQElucHV0KCkgY2xvc2VzdEFpcnBvcnRzTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGxhYmVsIHRoYXQgd2lsbCBhcHBlYXIgaW4gbXkgbG9jYXRpb24gaW4gdGhlIGRyb3AgZG93biBsaXN0LlxuICAgKi9cbiAgQElucHV0KCkgZ2VvbG9jYXRpb25MYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgbGFiZWwgdGhhdCB3aWxsIGFwcGVhciBpbiBteSBsb2NhdGlvbiwgaW4gdGhlIGRyb3AgZG93biBsaXN0IGlmIHVzZXIgaGFzIGRlbmllZCBnZW9sb2NhdGlvbi5cbiAgICovXG4gIEBJbnB1dCgpIGdlb2xvY2F0aW9uQmxvY2tlZExhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBsYWJlbCB0aGF0IHdpbGwgYXBwZWFyIGluIHRoZSBkZXN0aW5hdGlvbiBpbnB1dCBmaWVsZCBpZiB0aGVcbiAgICogdXNlciB0cmllcyB0byBzZWxlY3QgYSBkZXN0aW5hdGlvbiBhaXJwb3J0IHdpdGhvdXQgc2VsZWN0aW5nIGFuIG9yaWdpbiBhaXJwb3J0LlxuICAgKi9cbiAgQElucHV0KCkgc2VsZWN0T3JpZ2luRmlyc3RMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgdGV4dCB0aGF0IGFwcGVhcnMgaW4gdGhlIGRlc3RpbmF0aW9ucyBkcm9wZG93biBsaXN0IHdoZW4gb3JpZ2luIGFpcnBvcnQgaXMgbm90IHNldC5cbiAgICovXG4gIEBJbnB1dCgpIGludmFsaWREZXN0aW5hdGlvblRleHQ6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEByZXF1aXJlZFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBsYWJlbCB0aGF0IHdpbGwgYXBwZWFyIG9uIHRvcCBvZiB0aGUgb3JpZ2luIGFpcnBvcnQgaW5wdXQgZmllbGQuXG4gICAqL1xuICBASW5wdXQoKSBsYWJlbE9yaWdpbiA9ICcnO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgcGxhY2Vob2xkZXIgdGhhdCB3aWxsIGFwcGVhciBvbiB0aGUgb3JpZ2luIGFpcnBvcnQgaW5wdXQgZmllbGQuXG4gICAqL1xuICBASW5wdXQoKSBwbGFjZWhvbGRlck9yaWdpbiA9ICcnO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgbGFiZWwgdGhhdCB3aWxsIGFwcGVhciBvbiB0b3Agb2YgdGhlIGRlc3RpbmF0aW9uIGFpcnBvcnQgaW5wdXQgZmllbGQuXG4gICAqL1xuICBASW5wdXQoKSBsYWJlbERlc3RpbmF0aW9uID0gJyc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBwbGFjZWhvbGRlciB0aGF0IHdpbGwgYXBwZWFyIG9uIHRoZSBkZXN0aW5hdGlvbiBhaXJwb3J0IGlucHV0IGZpZWxkLlxuICAgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXJEZXN0aW5hdGlvbiA9ICcnO1xuXG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBtb2RpZmllciB0aGF0IHdpbGwgYWxsb3cgYWx3YXlzIGtlZXBpbmcgdGhlIHNlbGVjdGVkIGFpcnBvcnQuXG4gICAqIFRoZSBsYXN0IHNlbGVjdGVkIGFpcnBvcnQgd2lsbCBiZSBzaG93biBvbmNlIHVzZXIgY2xlYXJzIHRoZSBzZWxlY3Rpb24gYW5kIGJsdXIuXG4gICAqL1xuICBASW5wdXQoKSBrZWVwU2VsZWN0aW9uOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgYSBmb3JtQ29udHJvbE5hbWUgZGlyZWN0aXZlIHRvIHRoZSBpbnB1dC5cbiAgICogSXQgcmVxdWlyZXMgdGhhdCB0aGUgY29uc3VtZXIgaW5jbHVkZWQgUmVhY3RpdmVGb3Jtc01vZHVsZSBpbiBpdCdzIG1vZHVsZS5cbiAgICogSXQgcmVxdWllcnMgdGhhdCB0aGUgbmFzRm9ybUdyb3VwIGlucHV0IGlzIGZpbGxlZC5cbiAgICovXG4gIEBJbnB1dCgpIG5hc0Zvcm1Db250cm9sTmFtZU9yaWdpbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgYSBmb3JtQ29udHJvbE5hbWUgZGlyZWN0aXZlIHRvIHRoZSBpbnB1dC5cbiAgICogSXQgcmVxdWlyZXMgdGhhdCB0aGUgY29uc3VtZXIgaW5jbHVkZWQgUmVhY3RpdmVGb3Jtc01vZHVsZSBpbiBpdCdzIG1vZHVsZS5cbiAgICogSXQgcmVxdWllcnMgdGhhdCB0aGUgbmFzRm9ybUdyb3VwIGlucHV0IGlzIGZpbGxlZC5cbiAgICovXG4gIEBJbnB1dCgpIG5hc0Zvcm1Db250cm9sTmFtZURlc3RpbmF0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQWRkcyB0aGUgcGFyZW50J3MgZm9ybSBncm91cC5cbiAgICogSXQgcmVxdWlyZXMgdGhhdCB0aGUgY29uc3VtZXIgaW5jbHVkZWQgUmVhY3RpdmVGb3Jtc01vZHVsZSBpbiBpdCdzIG1vZHVsZS5cbiAgICogSXQgaXMgcmVxdWllcmVkIHRvIGJlIGZpbGxlZCBpZiBuYXNGb3JtQ29udHJvbE5hbWUgYWRkZWQuXG4gICAqL1xuICBASW5wdXQoKSBuYXNGb3JtR3JvdXA6IEZvcm1Hcm91cDtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgYWlycG9ydCBjb2RlIG9mIHRoZSBvcmlnaW4gYWlycG9ydC4gSXQgd2lsbCBzZXQgdGhlIHNlbGVjdGVkIG9yaWdpbiBhaXJwb3J0IGJhc2VkIG9uIHRoaXMgdmFsdWUuXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgb3JpZ2luQWlycG9ydENvZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMub3JpZ2luQWlycG9ydENvZGVWYWx1ZTtcbiAgfVxuICBzZXQgb3JpZ2luQWlycG9ydENvZGUoY29kZTogc3RyaW5nKSB7XG4gICAgaWYgKGNvZGUpIHtcbiAgICAgIGlmIChjb2RlICE9PSB0aGlzLm9yaWdpbkFpcnBvcnRDb2RlVmFsdWUpIHtcbiAgICAgICAgdGhpcy5vcmlnaW5BaXJwb3J0Q29kZVZhbHVlID0gY29kZTtcbiAgICAgICAgdGhpcy5zZXRPcmlnaW4oKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcmlnaW5BaXJwb3J0Q29kZVZhbHVlID0gJyc7XG4gICAgICB0aGlzLmNsZWFyT3JpZ2luKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVGhlIGFpcnBvcnQgY29kZSBvZiB0aGUgZGVzdGluYXRpb24gYWlycG9ydC4gSXQgd2lsbCBzZXQgdGhlIHNlbGVjdGVkIGRlc3RpbmF0aW9uIGFpcnBvcnQgYmFzZWQgb24gdGhpcyB2YWx1ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBkZXN0aW5hdGlvbkFpcnBvcnRDb2RlKCkge1xuICAgIHJldHVybiB0aGlzLmRlc3RpbmF0aW9uQWlycG9ydENvZGVWYWx1ZTtcbiAgfVxuICBzZXQgZGVzdGluYXRpb25BaXJwb3J0Q29kZShjb2RlOiBzdHJpbmcpIHtcbiAgICBpZiAoY29kZSkge1xuICAgICAgaWYgKGNvZGUgIT09IHRoaXMuZGVzdGluYXRpb25BaXJwb3J0Q29kZVZhbHVlKSB7XG4gICAgICAgIHRoaXMuZGVzdGluYXRpb25BaXJwb3J0Q29kZVZhbHVlID0gY29kZTtcbiAgICAgICAgdGhpcy5zZXREZXN0aW5hdGlvbigpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlc3RpbmF0aW9uQWlycG9ydENvZGVWYWx1ZSA9ICcnO1xuICAgICAgdGhpcy5jbGVhckRlc3RpbmF0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQWRkcyAnYXJpYS1sYWJlbCcgb24gdGhlIGNsZWFyIGJ1dHRvbiBpbnNpZGUgdGhlIGFpcnBvcnQgc2VsZWN0IGlucHV0cy5cbiAgICovXG4gIEBJbnB1dCgpIGFyaWFMYWJlbENsZWFyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQWRkcyAnYXJpYS1sYWJlbCcgdG8gdGhlIGJhY2tkcm9wcy5cbiAgICovXG4gIEBJbnB1dCgpIGFyaWFMYWJlbEJhY2tkcm9wOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBPdXRwdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFuIGV2ZW50IHRoYXQgaXMgZmlyZWQgZXZlcnkgdGltZSB0aGUgc2VsZWN0ZWQgb3JpZ2luIGFpcnBvcnQgY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKSBvcmlnaW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEFpcnBvcnRNb2RlbD4oKTtcblxuICAvKipcbiAgICogQHByb3BlcnR5IE91dHB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gZXZlbnQgdGhhdCBpcyBmaXJlZCBldmVyeSB0aW1lIHRoZSBvcmlnaW4gZHJvcGRvd24gc2VsZWN0b3Igb3BlbnMgb3IgY2xvc2VzLlxuICAgKi9cbiAgQE91dHB1dCgpIG9yaWdpbk9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgLyoqXG4gICogQHByb3BlcnR5IE91dHB1dFxuICAqIEBkZXNjcmlwdGlvblxuICAqIEFuIGV2ZW50IHRoYXQgaXMgZmlyZWQgZXZlcnkgdGltZSB0aGUgb3JpZ2luIGRyb3Bkb3duIHNlbGVjdG9yIG9wZW5zIG9yIGNsb3Nlcy5cbiAgKi9cbiAgQE91dHB1dCgpIGRlc3RpbmF0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxBaXJwb3J0TW9kZWw+KCk7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBPdXRwdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFuIGV2ZW50IHRoYXQgaXMgZmlyZWQgZXZlcnkgdGltZSB0aGUgZGVzdGluYXRpb24gZHJvcGRvd24gc2VsZWN0b3Igb3BlbnMgb3IgY2xvc2VzLlxuICAgKi9cbiAgQE91dHB1dCgpIGRlc3RpbmF0aW9uT3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAvKipcbiAgICogQHByb3BlcnR5IE91dHB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gZXZlbnQgdGhhdCBpcyBmaXJlZCB3aGVuIHRoZSBkZXN0aW5hdGlvbiBkcm9wZG93biBjbG9zZXMuXG4gICAqL1xuICBAT3V0cHV0KCkgZm9jdXNPbk5leHQgPSBuZXcgRXZlbnRFbWl0dGVyPEtleWJvYXJkRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBPdXRwdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFuIGV2ZW50IHRoYXQgaXMgZmlyZWQgd2hlbiBnZW9sb2NhdGlvbiBwb3NpdGlvbiBoYXMgY2hhbmdlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBwb3NpdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8R2VvbG9jYXRpb25Qb3NpdGlvbj4oKTtcblxuICBwcml2YXRlIG9yaWdpbkFpcnBvcnRDb2RlVmFsdWU6IHN0cmluZztcbiAgcHJpdmF0ZSBkZXN0aW5hdGlvbkFpcnBvcnRDb2RlVmFsdWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignbmFzLWFpcnBvcnQtc2VsZWN0LW5ldycpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFpcnBvcnRzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgaW5wdXQ6IFthaXJwb3J0c10nKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlc3VsdHNMYWJlbHMgPSB7XG4gICAgICBhbGxBaXJwb3J0czogdGhpcy5hbGxBaXJwb3J0c0xhYmVsIHx8ICcnLFxuICAgICAgY2xvc2VzdEFpcnBvcnRzOiB0aGlzLmNsb3Nlc3RBaXJwb3J0c0xhYmVsIHx8ICcnLFxuICAgICAgbGF0ZXN0U2VhcmNoZXM6IHRoaXMubGF0ZXN0U2VhcmNoZXNMYWJlbCB8fCAnJyxcbiAgICAgIGdlb2xvY2F0aW9uOiB0aGlzLmdlb2xvY2F0aW9uTGFiZWwgfHwgJycsXG4gICAgICBnZW9sb2NhdGlvbkRlbmllZDogdGhpcy5nZW9sb2NhdGlvbkJsb2NrZWRMYWJlbCB8fCAnJ1xuICAgIH07XG5cbiAgICB0aGlzLnRleHRTZWxlY3RPcmlnaW5GaXJzdCA9IHRoaXMuc2VsZWN0T3JpZ2luRmlyc3RMYWJlbDtcbiAgICB0aGlzLmFpcnBvcnRzT3JpZ2luID0gdGhpcy5hbGxvd2VkT3JpZ2luQWlwb3J0cyAmJiB0aGlzLmFsbG93ZWRPcmlnaW5BaXBvcnRzLmxlbmd0aCA+IDAgPyB0aGlzLmFsbG93ZWRPcmlnaW5BaXBvcnRzIDogdGhpcy5haXJwb3J0cztcblxuICAgIHRoaXMuYWlycG9ydHNEZXN0aW5hdGlvbiA9IHRoaXMuZ2V0QWlycG9ydHNEZXN0aW5hdGlvbnMoKTtcblxuICAgIGlmICh0aGlzLm5hc0Zvcm1Hcm91cCkge1xuICAgICAgaWYgKHRoaXMubmFzRm9ybUNvbnRyb2xOYW1lT3JpZ2luKSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbkNvbnRyb2wgPSB0aGlzLm5hc0Zvcm1Hcm91cC5nZXQodGhpcy5uYXNGb3JtQ29udHJvbE5hbWVPcmlnaW4pO1xuXG4gICAgICAgIGlmIChvcmlnaW5Db250cm9sKSB7XG4gICAgICAgICAgY29uc3Qgb3JpZ2luID0gdGhpcy5haXJwb3J0c09yaWdpbi5maW5kKHggPT4geC5uYW1lID09PSBvcmlnaW5Db250cm9sLnZhbHVlKTtcblxuICAgICAgICAgIGlmIChvcmlnaW4pIHtcbiAgICAgICAgICAgIHRoaXMub3JpZ2luQWlycG9ydENvZGUgPSBvcmlnaW4uY29kZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMubmFzRm9ybUNvbnRyb2xOYW1lRGVzdGluYXRpb24pIHtcbiAgICAgICAgY29uc3QgZGVzdGluYXRpb25Db250cm9sID0gdGhpcy5uYXNGb3JtR3JvdXAuZ2V0KHRoaXMubmFzRm9ybUNvbnRyb2xOYW1lRGVzdGluYXRpb24pO1xuXG4gICAgICAgIGlmIChkZXN0aW5hdGlvbkNvbnRyb2wpIHtcbiAgICAgICAgICBjb25zdCBkZXN0aW5hdGlvbiA9IHRoaXMuYWlycG9ydHNEZXN0aW5hdGlvbi5maW5kKHggPT4geC5uYW1lID09PSBkZXN0aW5hdGlvbkNvbnRyb2wudmFsdWUpO1xuXG4gICAgICAgICAgaWYgKGRlc3RpbmF0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmRlc3RpbmF0aW9uQWlycG9ydENvZGUgPSBkZXN0aW5hdGlvbi5jb2RlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmRlc3RpbmF0aW9uKSB7XG4gICAgICB0aGlzLmNsZWFyRGVzdGluYXRpb24oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmRlc3RpbmF0aW9uQ2hhbmdlLmVtaXQodGhpcy5kZXN0aW5hdGlvbik7XG4gICAgdGhpcy5vcmlnaW5DaGFuZ2UuZW1pdCh0aGlzLm9yaWdpbik7XG5cblxuICAgIGlmICh0aGlzLm9yaWdpbkFpcnBvcnRDb2RlKSB7XG4gICAgICB0aGlzLnNldE9yaWdpbigpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRlc3RpbmF0aW9uQWlycG9ydENvZGUpIHtcbiAgICAgIHRoaXMuc2V0RGVzdGluYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBnZXRBaXJwb3J0U2VsZWN0Q29tYm9DbGFzcyhlbGVtZW50Pzogc3RyaW5nLCBtb2RpZmllcnNJbnB1dD86IGFueSk6IENsYXNzTW9kZWwge1xuICAgIGxldCBtb2RpZmllcnMgPSBtb2RpZmllcnNJbnB1dDtcblxuICAgIGlmICh0eXBlb2YgbW9kaWZpZXJzSW5wdXQgPT09ICdzdHJpbmcnIHx8IG1vZGlmaWVyc0lucHV0IGluc3RhbmNlb2YgU3RyaW5nKSB7XG4gICAgICBtb2RpZmllcnMgPSBbbW9kaWZpZXJzSW5wdXRdO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBibG9jazogJ25hcy1haXJwb3J0LXNlbGVjdC1uZXctY29tYm8nLFxuICAgICAgZWxlbWVudDogZWxlbWVudCxcbiAgICAgIG1vZGlmaWVyczogbW9kaWZpZXJzXG4gICAgfTtcbiAgfVxuXG4gIG9uT3JpZ2luT3BlbihvcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm9yaWdpbk9wZW4gPSBvcGVuO1xuICAgIH0pO1xuICAgIHRoaXMuZGVzdGluYXRpb25PcGVuID0gZmFsc2U7XG4gICAgdGhpcy5vcmlnaW5PcGVuQ2hhbmdlLmVtaXQob3Blbik7XG4gIH1cblxuICBvbkRlc3RpbmF0aW9uT3BlbihvcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0aW5hdGlvbk9wZW4gPSBvcGVuO1xuICAgIHRoaXMub3JpZ2luT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuZGVzdGluYXRpb25PcGVuQ2hhbmdlLmVtaXQob3Blbik7XG4gIH1cblxuICBvblNlbGVjdGlvbkNsZWFyZWQoKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhcmVkID0gdHJ1ZTtcbiAgfVxuXG4gIHNldFNlbGVjdGVkT3JpZ2luKGFpcnBvcnQ6IEFpcnBvcnRNb2RlbCk6IHZvaWQge1xuICAgIGlmICghYWlycG9ydCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMub3JpZ2luID0gYWlycG9ydDtcbiAgICB0aGlzLm9yaWdpbkFpcnBvcnRDb2RlVmFsdWUgPSBhaXJwb3J0LmNvZGU7XG4gICAgdGhpcy5pc0Rlc3RpbmF0aW9uVmFsaWQgPSBhaXJwb3J0LmNvZGUgPyB0cnVlIDogZmFsc2U7XG5cbiAgICBpZiAodGhpcy5haXJwb3J0UmVsYXRpb25zICYmIHRoaXMuaGFzVmFsaWREZXN0aW5hdGlvbnMoYWlycG9ydCkpIHtcbiAgICAgIHRoaXMudXBkYXRlVmFsaWRBaXJwb3J0RGVzdGluYXRpb25zKGFpcnBvcnQpO1xuICAgICAgdGhpcy5zZXRDdXJyZW50TGF0ZXN0U2VhcmNoZXNEZXN0aW5hdGlvbigpO1xuICAgIH1cbiAgICB0aGlzLmNsZWFyZWQgPSBmYWxzZTtcbiAgICB0aGlzLm9yaWdpbkNoYW5nZS5lbWl0KGFpcnBvcnQpO1xuICB9XG5cbiAgc2V0U2VsZWN0ZWREZXN0aW5hdGlvbihhaXJwb3J0OiBBaXJwb3J0TW9kZWwpOiB2b2lkIHtcbiAgICBpZiAoIWFpcnBvcnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmRlc3RpbmF0aW9uID0gYWlycG9ydDtcbiAgICB0aGlzLmRlc3RpbmF0aW9uQWlycG9ydENvZGVWYWx1ZSA9IGFpcnBvcnQuY29kZTtcbiAgICB0aGlzLmNsZWFyZWQgPSBmYWxzZTtcbiAgICB0aGlzLmRlc3RpbmF0aW9uQ2hhbmdlLmVtaXQoYWlycG9ydCk7XG4gIH1cblxuICBzZXRGb2N1c09uTmV4dChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuZm9jdXNPbk5leHQuZW1pdChldmVudCk7XG4gIH1cblxuICBvbk9yaWdpbkZvY3VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFpcnBvcnRTZWxlY3REcm9wZG93bk9yaWdpbikge1xuICAgICAgdGhpcy5vbk9yaWdpbk9wZW4odHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlU3dpdGNoSWNvbigpOiB2b2lkIHtcbiAgICB0aGlzLnN3aXRjaFR5cGUgPSB0aGlzLnN3aXRjaFR5cGUgPT09ICdzd2l0Y2gnID8gJ3N3aXRjaC0tc2Vjb25kYXJ5JyA6ICdzd2l0Y2gnO1xuICB9XG5cbiAgc3dhcEFpcnBvcnRzKCk6IHZvaWQge1xuICAgIGNvbnN0IGRlc3RpbmF0aW9uID0geyAuLi50aGlzLmRlc3RpbmF0aW9uIH07XG4gICAgY29uc3Qgb3JpZ2luID0geyAuLi50aGlzLm9yaWdpbiB9O1xuICAgIHRoaXMuZGVzdGluYXRpb24gPSBvcmlnaW47XG4gICAgdGhpcy5vcmlnaW4gPSBkZXN0aW5hdGlvbjtcblxuICAgIHRoaXMuc2V0U2VsZWN0ZWREZXN0aW5hdGlvbih0aGlzLmRlc3RpbmF0aW9uKTtcbiAgICB0aGlzLnNldFNlbGVjdGVkT3JpZ2luKHRoaXMub3JpZ2luKTtcbiAgfVxuXG4gIHN3YXBLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgdGhpcy5zd2FwQWlycG9ydHMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgc2V0RGVzdGluYXRpb25PcGVuKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZXhpc3RzKHRoaXMuY29tYm8pKSB7XG4gICAgICB0aGlzLmRlc3RpbmF0aW9uT3BlbiA9IHRydWU7XG4gICAgICB0aGlzLm9yaWdpbk9wZW4gPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRGb2N1c09uTmV4dChldmVudCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q2xvc2VzdEFpcnBvcnRzKHBvc2l0aW9uOiBHZW9sb2NhdGlvblBvc2l0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5wb3NpdGlvbkNoYW5nZS5lbWl0KHBvc2l0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWlycG9ydHNEZXN0aW5hdGlvbnMoKTogQXJyYXk8QWlycG9ydE1vZGVsPiB7XG4gICAgY29uc3QgYWxsb3dlZERlc3RpbmF0aW9uQWlycG9ydHMgPSB0aGlzLmFsbG93ZWREZXN0aW5hdGlvbkFpcnBvcnRzO1xuXG4gICAgcmV0dXJuIGFsbG93ZWREZXN0aW5hdGlvbkFpcnBvcnRzICYmIGFsbG93ZWREZXN0aW5hdGlvbkFpcnBvcnRzLmxlbmd0aCA+IDBcbiAgICAgID8gYWxsb3dlZERlc3RpbmF0aW9uQWlycG9ydHNcbiAgICAgIDogdGhpcy5haXJwb3J0cztcbiAgfVxuXG4gIHByaXZhdGUgc2V0T3JpZ2luKCk6IHZvaWQge1xuICAgIGNvbnN0IGFpcnBvcnQgPSB0aGlzLmFpcnBvcnRzLmZpbmQoeCA9PiB4LmNvZGUgPT09IHRoaXMub3JpZ2luQWlycG9ydENvZGUpO1xuXG4gICAgaWYgKGFpcnBvcnQpIHtcbiAgICAgIHRoaXMuc2V0U2VsZWN0ZWRPcmlnaW4oYWlycG9ydCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXREZXN0aW5hdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCBhaXJwb3J0ID0gdGhpcy5haXJwb3J0cy5maW5kKHggPT4geC5jb2RlID09PSB0aGlzLmRlc3RpbmF0aW9uQWlycG9ydENvZGUpO1xuXG4gICAgaWYgKGFpcnBvcnQpIHtcbiAgICAgIHRoaXMuc2V0U2VsZWN0ZWREZXN0aW5hdGlvbihhaXJwb3J0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVZhbGlkQWlycG9ydERlc3RpbmF0aW9ucyhhaXJwb3J0OiBBaXJwb3J0TW9kZWwpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYWlycG9ydFJlbGF0aW9ucykge1xuICAgICAgdGhpcy5haXJwb3J0c0Rlc3RpbmF0aW9uID0gdGhpcy5haXJwb3J0c09yaWdpbjtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdmFsaWREZXN0aW5hdGlvbnMgPSB0aGlzLmdldEFpcnBvcnRSZWxhdGlvbnMoYWlycG9ydCk7XG5cbiAgICAgIGlmICghdmFsaWREZXN0aW5hdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsaWREZXN0aW5hdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuY2xlYXJEZXN0aW5hdGlvbnMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBpc0Rlc3RpbmF0aW9uVmFsaWQ6IGJvb2xlYW47XG4gICAgICAgIGlmICh0aGlzLmRlc3RpbmF0aW9uICYmIHRoaXMuZGVzdGluYXRpb24uY29kZSkge1xuICAgICAgICAgIGlzRGVzdGluYXRpb25WYWxpZCA9IHZhbGlkRGVzdGluYXRpb25zLnNvbWUoeCA9PiB4ICYmIHgudG9Mb3dlckNhc2UoKSA9PT0gdGhpcy5kZXN0aW5hdGlvbi5jb2RlLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNEZXN0aW5hdGlvblZhbGlkKSB7XG4gICAgICAgICAgdGhpcy5jbGVhckRlc3RpbmF0aW9uKCk7XG4gICAgICAgICAgdGhpcy5kZXN0aW5hdGlvbkNoYW5nZS5lbWl0KG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYWlycG9ydHMpIHtcbiAgICAgICAgICB0aGlzLmFpcnBvcnRzRGVzdGluYXRpb24gPSB0aGlzLmFpcnBvcnRzXG4gICAgICAgICAgICAuZmlsdGVyKGFpcnBvcnRJdGVtID0+IGFpcnBvcnRJdGVtXG4gICAgICAgICAgICAgICYmIGFpcnBvcnRJdGVtLmNvZGVcbiAgICAgICAgICAgICAgJiYgdmFsaWREZXN0aW5hdGlvbnMuc29tZSh4ID0+IHggJiYgYWlycG9ydEl0ZW0uY29kZS50b0xvd2VyQ2FzZSgpID09PSB4LnRvTG93ZXJDYXNlKCkpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFzVmFsaWREZXN0aW5hdGlvbnMob3JpZ2luOiBBaXJwb3J0TW9kZWwpOiBib29sZWFuIHtcbiAgICBpZiAoIW9yaWdpbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlbGF0aW9ucyA9IHRoaXMuZ2V0QWlycG9ydFJlbGF0aW9ucyhvcmlnaW4pO1xuXG4gICAgcmV0dXJuIHJlbGF0aW9ucyAmJiByZWxhdGlvbnMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWlycG9ydFJlbGF0aW9ucyhhaXJwb3J0OiBBaXJwb3J0TW9kZWwpOiBBcnJheTxzdHJpbmc+IHtcbiAgICBpZiAoIXRoaXMuYWlycG9ydHMpIHtcbiAgICAgIHJldHVybiBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFpcnBvcnRSZWxhdGlvbnNbYWlycG9ydC5jb2RlLnRvTG93ZXJDYXNlKCldIHx8IHRoaXMuYWlycG9ydFJlbGF0aW9uc1thaXJwb3J0LmNvZGUudG9VcHBlckNhc2UoKV07XG4gIH1cblxuICBwcml2YXRlIGNsZWFyT3JpZ2luKCkge1xuICAgIHRoaXMuc2V0U2VsZWN0ZWRPcmlnaW4oe1xuICAgICAgY29kZTogJycsXG4gICAgICBjb3VudHJ5TmFtZTogJycsXG4gICAgICBuYW1lOiAnJyxcbiAgICAgIGFpcnBvcnROYW1lOiAnJyxcbiAgICAgIGRpc3BsYXlOYW1lOiAnJyxcbiAgICAgIG5vcm1hbGl6ZWRBaXJwb3J0TmFtZTogJydcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJEZXN0aW5hdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnNldFNlbGVjdGVkRGVzdGluYXRpb24oe1xuICAgICAgY29kZTogJycsXG4gICAgICBjb3VudHJ5TmFtZTogJycsXG4gICAgICBuYW1lOiAnJyxcbiAgICAgIGFpcnBvcnROYW1lOiAnJyxcbiAgICAgIGRpc3BsYXlOYW1lOiAnJyxcbiAgICAgIG5vcm1hbGl6ZWRBaXJwb3J0TmFtZTogJydcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJEZXN0aW5hdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5haXJwb3J0c0Rlc3RpbmF0aW9uID0gbmV3IEFycmF5PEFpcnBvcnRNb2RlbD4oKTtcblxuICAgIGNvbnN0IG1vZGVsID0ge1xuICAgICAgbmFtZTogdGhpcy50ZXh0U2VsZWN0T3JpZ2luRmlyc3QsXG4gICAgICBjb3VudHJ5TmFtZTogJycsXG4gICAgICBjb2RlOiAnJyxcbiAgICAgIGFpcnBvcnROYW1lOiAnJyxcbiAgICAgIGRpc3BsYXlOYW1lOiAnJyxcbiAgICAgIG5vcm1hbGl6ZWRBaXJwb3J0TmFtZTogJydcbiAgICB9O1xuXG4gICAgdGhpcy5haXJwb3J0c0Rlc3RpbmF0aW9uLnB1c2gobW9kZWwpO1xuICAgIHRoaXMuY2xlYXJEZXN0aW5hdGlvbigpO1xuICAgIHRoaXMuZGVzdGluYXRpb25DaGFuZ2UuZW1pdChtb2RlbCk7XG4gIH1cblxuICBwcml2YXRlIHNldEN1cnJlbnRMYXRlc3RTZWFyY2hlc0Rlc3RpbmF0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFpcnBvcnRzRGVzdGluYXRpb24pIHtcbiAgICAgIHRoaXMuY3VycmVudExhdGVzdFNlYXJjaGVzRGVzdGluYXRpb24gPSB0aGlzLmFpcnBvcnRzRGVzdGluYXRpb24uZmlsdGVyKGFpcnBvcnQgPT4ge1xuICAgICAgICBpZiAodGhpcy5sYXRlc3RTZWFyY2hlc0Rlc3RpbmF0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubGF0ZXN0U2VhcmNoZXNEZXN0aW5hdGlvbi5zb21lKHggPT4geC5jb2RlICYmIHguY29kZS50b0xvd2VyQ2FzZSgpID09PSBhaXJwb3J0LmNvZGUudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0VmVjdG9ySWNvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiAodGhpcy5kZXN0aW5hdGlvbkFpcnBvcnRDb2RlVmFsdWUgJiYgdGhpcy5vcmlnaW5BaXJwb3J0Q29kZVZhbHVlKSA/ICd2ZWN0b3ItLXNlY29uZGFyeScgOiAndmVjdG9yJztcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cImV4aXN0cyhjb21ibyk7IGVsc2UgYWlycG9ydFNlbGVjdFRlbXBsYXRlXCJcbiAgW25hc0NsYXNzXT1cImdldEFpcnBvcnRTZWxlY3RDb21ib0NsYXNzKClcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFpcnBvcnRTZWxlY3RUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG48bmctdGVtcGxhdGUgI2FpcnBvcnRTZWxlY3RUZW1wbGF0ZT5cbiAgPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJycsIGV4aXN0cyh1c2VTd2l0Y2gpICYmICdwYWRkaW5nLW9yaWdpbicpXCJcbiAgICAqbmdJZj1cImFpcnBvcnRzT3JpZ2luXCI+XG4gICAgPG5hcy1haXJwb3J0LXNlbGVjdC1kcm9wZG93biAjYWlycG9ydFNlbGVjdERyb3Bkb3duT3JpZ2luXG4gICAgICBkaXNwbGF5TGF0ZXN0U2VhcmNoZXNcbiAgICAgIFtlbmFibGVHZW9sb2NhdGlvbl09XCJkaXNwbGF5Q2xvc2VzdEFpcnBvcnRzXCJcbiAgICAgIFtkaXNwbGF5Q2xvc2VzdEFpcnBvcnRzXT1cImRpc3BsYXlDbG9zZXN0QWlycG9ydHNcIlxuICAgICAgW2FpcnBvcnRTZWxlY3RMYWJlbF09XCJsYWJlbE9yaWdpblwiXG4gICAgICBbbGF0ZXN0U2VhcmNoZXNdPVwibGF0ZXN0U2VhcmNoZXNPcmlnaW5cIlxuICAgICAgW2Nsb3Nlc3RBaXJwb3J0c109XCJjbG9zZXN0QWlycG9ydHNcIlxuICAgICAgW2FpcnBvcnRdPVwib3JpZ2luXCJcbiAgICAgIFthaXJwb3J0c109XCJhaXJwb3J0c09yaWdpblwiXG4gICAgICBbcmVzdWx0c0xhYmVsc109XCJyZXN1bHRzTGFiZWxzXCJcbiAgICAgIFthaXJwb3J0U2VsZWN0UGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJPcmlnaW5cIlxuICAgICAgW29wZW5dPVwib3JpZ2luT3BlblwiXG4gICAgICBba2VlcFNlbGVjdGlvbl09XCJrZWVwU2VsZWN0aW9uXCJcbiAgICAgIFthaXJwb3J0U2VsZWN0SWNvbk1vZGlmaWVyXT1cIidmbGlnaHQtZGVwYXJ0dXJlJ1wiXG4gICAgICBbbmFzRm9ybUNvbnRyb2xOYW1lXT1cIm5hc0Zvcm1Db250cm9sTmFtZU9yaWdpblwiXG4gICAgICBbbmFzRm9ybUdyb3VwXT1cIm5hc0Zvcm1Hcm91cFwiXG4gICAgICBbYXJpYUxhYmVsQ2xlYXJdPVwiYXJpYUxhYmVsQ2xlYXJcIlxuICAgICAgW2FyaWFMYWJlbEJhY2tkcm9wXT1cImFyaWFMYWJlbEJhY2tkcm9wXCJcbiAgICAgIChjbGVhcmVkU2VsZWN0aW9uKT1cIm9uU2VsZWN0aW9uQ2xlYXJlZCgpXCJcbiAgICAgIChzZWxlY3RlZCk9XCJzZXRTZWxlY3RlZE9yaWdpbigkZXZlbnQpXCJcbiAgICAgIChvcGVuQ2hhbmdlKT1cIm9uT3JpZ2luT3BlbigkZXZlbnQpXCJcbiAgICAgIChmb2N1c09uTmV4dCk9XCJzZXREZXN0aW5hdGlvbk9wZW4oJGV2ZW50KVwiXG4gICAgICAocG9zaXRpb25DaGFuZ2UpPVwiZ2V0Q2xvc2VzdEFpcnBvcnRzKCRldmVudClcIj48L25hcy1haXJwb3J0LXNlbGVjdC1kcm9wZG93bj5cbiAgPC9kaXY+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJleGlzdHMoY29tYm8pXCI+XG4gICAgPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJycsIGV4aXN0cyh1c2VTd2l0Y2gpICYmICdwYWRkaW5nLWRlc3RpbmF0aW9uJylcIlxuICAgICAgKm5nSWY9XCJhaXJwb3J0c0Rlc3RpbmF0aW9uICYmIGFpcnBvcnRzRGVzdGluYXRpb24ubGVuZ3RoID4gMFwiPlxuICAgICAgPG5hcy1haXJwb3J0LXNlbGVjdC1kcm9wZG93biAjYWlycG9ydFNlbGVjdERyb3Bkb3duRGVzdGluYXRpb25cbiAgICAgICAgZGlzcGxheUxhdGVzdFNlYXJjaGVzXG4gICAgICAgIFthaXJwb3J0U2VsZWN0TGFiZWxdPVwibGFiZWxEZXN0aW5hdGlvblwiXG4gICAgICAgIFtkaXNwbGF5Q2xvc2VzdEFpcnBvcnRzXT1cImZhbHNlXCJcbiAgICAgICAgW2xhdGVzdFNlYXJjaGVzXT1cImN1cnJlbnRMYXRlc3RTZWFyY2hlc0Rlc3RpbmF0aW9uXCJcbiAgICAgICAgW2FpcnBvcnRzXT1cImFpcnBvcnRzRGVzdGluYXRpb25cIlxuICAgICAgICBbcmVzdWx0c0xhYmVsc109XCJyZXN1bHRzTGFiZWxzXCJcbiAgICAgICAgW2FpcnBvcnRdPVwiZGVzdGluYXRpb25cIlxuICAgICAgICBbYWlycG9ydFNlbGVjdFBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyRGVzdGluYXRpb25cIlxuICAgICAgICBbb3Blbl09XCJkZXN0aW5hdGlvbk9wZW5cIlxuICAgICAgICBba2VlcFNlbGVjdGlvbl09XCJrZWVwU2VsZWN0aW9uXCJcbiAgICAgICAgW2FpcnBvcnRTZWxlY3RJY29uTW9kaWZpZXJdPVwiJ2ZsaWdodC1hcnJpdmFsJ1wiXG4gICAgICAgIFtuYXNGb3JtQ29udHJvbE5hbWVdPVwibmFzRm9ybUNvbnRyb2xOYW1lRGVzdGluYXRpb25cIlxuICAgICAgICBbbmFzRm9ybUdyb3VwXT1cIm5hc0Zvcm1Hcm91cFwiXG4gICAgICAgIFthcmlhTGFiZWxDbGVhcl09XCJhcmlhTGFiZWxDbGVhclwiXG4gICAgICAgIFthcmlhTGFiZWxCYWNrZHJvcF09XCJhcmlhTGFiZWxCYWNrZHJvcFwiXG4gICAgICAgIFtpc1ZhbGlkXT1cImlzRGVzdGluYXRpb25WYWxpZFwiXG4gICAgICAgIFtpbnZhbGlkVGV4dF09XCJpbnZhbGlkRGVzdGluYXRpb25UZXh0XCJcbiAgICAgICAgKGNsZWFyZWRTZWxlY3Rpb24pPVwib25TZWxlY3Rpb25DbGVhcmVkKClcIlxuICAgICAgICAoc2VsZWN0ZWQpPVwic2V0U2VsZWN0ZWREZXN0aW5hdGlvbigkZXZlbnQpXCJcbiAgICAgICAgKG9wZW5DaGFuZ2UpPVwib25EZXN0aW5hdGlvbk9wZW4oJGV2ZW50KVwiXG4gICAgICAgIChmb2N1c09uTmV4dCk9XCJzZXRGb2N1c09uTmV4dCgkZXZlbnQpXCJcbiAgICAgICAgKGZvY3VzT25QcmV2aW91cyk9XCJvbk9yaWdpbkZvY3VzKClcIj48L25hcy1haXJwb3J0LXNlbGVjdC1kcm9wZG93bj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiZXhpc3RzKHVzZVN3aXRjaCkgJiYgIShvcmlnaW5PcGVuIHx8IGRlc3RpbmF0aW9uT3BlbiB8fCBjbGVhcmVkKVwiXG4gICAgICAjc3dpdGNoQnV0dG9uXG4gICAgICBbbmFzQ2xhc3NdPVwiZ2V0QWlycG9ydFNlbGVjdENvbWJvQ2xhc3MoJ3N3aXRjaGVyJywgKG9yaWdpbkFpcnBvcnRDb2RlVmFsdWUgJiYgZGVzdGluYXRpb25BaXJwb3J0Q29kZVZhbHVlKSAmJiAnZmlsbGVkJylcIlxuICAgICAgKG1vdXNlb3Zlcik9XCJjaGFuZ2VTd2l0Y2hJY29uKClcIlxuICAgICAgKG1vdXNlbGVhdmUpPVwiY2hhbmdlU3dpdGNoSWNvbigpXCJcbiAgICAgIChrZXlkb3duKT1cInN3YXBLZXlEb3duKCRldmVudClcIlxuICAgICAgKGNsaWNrKT1cInN3YXBBaXJwb3J0cygpXCI+XG4gICAgICA8bmFzLWljb24gW3R5cGVdPVwic2V0VmVjdG9ySWNvbigpXCI+PC9uYXMtaWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPiJdfQ==