@norwegian/core-components 6.30.0 → 6.32.0

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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWZpZWxkLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9udW1iZXItZmllbGQvbW9kZWxzL251bWJlci1maWVsZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBOdW1iZXJGaWVsZE1vZGVsIHtcbiAgICBpY29uOiBzdHJpbmc7XG4gICAgc3R5bGluZzogc3RyaW5nO1xuICAgIGRpc2FibGVkOiBib29sZWFuO1xufVxuIl19
@@ -96,12 +96,30 @@ export class NumberFieldComponent extends NasComponentBase {
96
96
  }
97
97
  }
98
98
  }
99
+ getPlusConfig() {
100
+ if (this.number >= this.max) {
101
+ return { icon: 'plus', styling: 'add', disabled: true };
102
+ }
103
+ if (this.number >= 0) {
104
+ return { icon: 'plus--light', styling: 'add--active', disabled: false };
105
+ }
106
+ return { icon: 'plus', styling: 'add', disabled: false };
107
+ }
108
+ getMinusConfig() {
109
+ if (this.number <= this.min) {
110
+ return { icon: 'minus', styling: 'subtract', disabled: true };
111
+ }
112
+ if (this.number > 0) {
113
+ return { icon: 'minus--light', styling: 'subtract--active', disabled: false };
114
+ }
115
+ return { icon: 'minus', styling: 'subtract', disabled: false };
116
+ }
99
117
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: NumberFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
100
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: NumberFieldComponent, selector: "nas-number-field", inputs: { number: "number", max: "max", min: "min", label: "label", compact: "compact", spaceless: "spaceless", simple: "simple", nasFormControlName: "nasFormControlName", nasFormGroup: "nasFormGroup", hideInput: "hideInput", ariaLabelSubtract: "ariaLabelSubtract", ariaLabelAdd: "ariaLabelAdd", ariaLabel: "ariaLabel" }, outputs: { numberChange: "numberChange" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"!nasFormGroup || !nasFormControlName; else reactiveForm\">\n <div\n [nasClass]=\"getClass('', [exists(compact) && 'compact', exists(spaceless) && 'spaceless', exists(simple) && 'simple', exists(hideInput) && 'hidden'])\">\n <label [nasClass]=\"getClass('title')\"\n *ngIf=\"label\">{{label}}</label>\n <div [nasClass]=\"getClass('wrapper')\">\n <nas-button overrideBaseCssClass\n [cssClass]=\"getClass('button', 'subtract')\"\n [disabled]=\"number <= min\"\n [tabindex]=\"-1\"\n [ariaLabel]=\"ariaLabelSubtract\"\n (clickChange)=\"subtract()\">\n <nas-icon [type]=\"'subtract'\"></nas-icon>\n </nas-button>\n <input #input\n type=\"number\"\n [nasClass]=\"getClass('input')\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.value]=\"number\"\n [attr.aria-valuenow]=\"number\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-label]=\"!ariaLabel ? label : ariaLabel\"\n [(ngModel)]=\"number\"\n (focus)=\"inputFocus()\"\n (keydown.arrowright)=\"add()\"\n (keydown.arrowleft)=\"subtract()\">\n <nas-button overrideBaseCssClass\n [cssClass]=\"getClass('button', 'add')\"\n [disabled]=\"number >= max\"\n [tabindex]=\"-1\"\n [ariaLabel]=\"ariaLabelAdd\"\n (clickChange)=\"add()\">\n <nas-icon [type]=\"'add'\"></nas-icon>\n </nas-button>\n <span [nasClass]=\"getClass('line')\"></span>\n </div>\n </div>\n</ng-container>\n<ng-template #reactiveForm>\n <div\n [nasClass]=\"getClass('', [exists(compact) && 'compact', exists(spaceless) && 'spaceless', exists(simple) && 'simple', exists(hideInput) && 'hidden'])\"\n [formGroup]=\"nasFormGroup\">\n <label [nasClass]=\"getClass('title')\"\n *ngIf=\"label\">{{label}}</label>\n <div [nasClass]=\"getClass('wrapper')\">\n <nas-button overrideBaseCssClass\n [cssClass]=\"getClass('button', 'subtract')\"\n [disabled]=\"number <= min\"\n [tabindex]=\"-1\"\n [ariaLabel]=\"ariaLabelSubtract\"\n (clickChange)=\"subtract()\">\n <nas-icon [type]=\"'subtract'\"></nas-icon>\n </nas-button>\n <input #input\n type=\"number\"\n [formControlName]=\"nasFormControlName\"\n [nasClass]=\"getClass('input')\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.value]=\"number\"\n [attr.aria-valuenow]=\"number\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-label]=\"!ariaLabel ? label : ariaLabel\"\n (focus)=\"inputFocus()\"\n (keydown.arrowright)=\"add()\"\n (keydown.arrowleft)=\"subtract()\">\n <nas-button overrideBaseCssClass\n [cssClass]=\"getClass('button', 'add')\"\n [disabled]=\"number >= max\"\n [tabindex]=\"-1\"\n [ariaLabel]=\"ariaLabelAdd\"\n (clickChange)=\"add()\">\n <nas-icon [type]=\"'add'\"></nas-icon>\n </nas-button>\n <span [nasClass]=\"getClass('line')\"></span>\n </div>\n </div>\n</ng-template>\n", 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-number-field{position:relative;display:inline-block;width:135px;max-width:100%;margin-bottom:24px}.nas-number-field .nas-number-field__line{border-color:#d8d8d8}.nas-number-field__title{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;display:block;text-align:left}.nas-number-field__line{position:absolute;bottom:-6px;left:0;width:100%;margin:0;border:0;border-top:3px solid #c3c3c3}.nas-number-field__input{color:#002a3a;max-height:46px;text-align:center;flex-grow:2;flex-grow:0}.nas-number-field__input[type=number]{padding:0;width:45px}.nas-number-field__input:focus~.nas-number-field__line{border-color:#003251}.nas-number-field__button{flex-shrink:0;flex-grow:0;position:relative;padding:12px 0;height:46px;width:45px;color:transparent;overflow:hidden;background-color:#d8d8d8;transition:transform .15s cubic-bezier(0,0,.1,1)}.nas-number-field__button:hover,.nas-number-field__button:focus{background-color:#c3c3c3}.nas-number-field__button:active{transform:translateY(3px)}.nas-number-field__button [class^=nas-icon-]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.nas-number-field__button[disabled]{pointer-events:none}.nas-number-field__button[disabled] [class^=nas-icon-]{opacity:.4}.nas-number-field__wrapper{position:relative;display:flex;height:46px}.nas-number-field--compact{width:108px}.nas-number-field--compact .nas-number-field__button{height:35px;width:36px}.nas-number-field--compact .nas-number-field__input{font-size:14px;line-height:20px;max-height:35px}.nas-number-field--compact .nas-number-field__input[type=number]{width:36px}.nas-number-field--compact .nas-number-field__title{font-size:14px;line-height:20px;margin-bottom:2px}.nas-number-field--compact .nas-number-field__wrapper{height:35px}.nas-number-field--spaceless{margin-bottom:0}.nas-number-field--simple .nas-number-field__line{display:none}.nas-number-field--hidden.nas-number-field--compact .nas-number-field__button{width:52.5px}.nas-number-field--hidden .nas-number-field__input{visibility:hidden}.nas-number-field--hidden .nas-number-field__input[type=number]{padding:0;width:3px}.nas-number-field--hidden .nas-number-field__button{width:66px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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.ButtonComponent, selector: "nas-button", inputs: ["primary", "secondary", "link", "light", "large", "block", "flex", "compact", "right", "spaceless", "href", "trackingvalue", "canContinueOnDisabled", "disabled", "type", "cssClass", "ariaLabel", "cssStyle", "tabindex", "overrideBaseCssClass", "useRouterLink", "id", "target", "icon", "iconLeft", "buttonlink"], outputs: ["clickChange"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], encapsulation: i0.ViewEncapsulation.None }); }
118
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: NumberFieldComponent, selector: "nas-number-field", inputs: { number: "number", max: "max", min: "min", label: "label", compact: "compact", spaceless: "spaceless", simple: "simple", nasFormControlName: "nasFormControlName", nasFormGroup: "nasFormGroup", hideInput: "hideInput", ariaLabelSubtract: "ariaLabelSubtract", ariaLabelAdd: "ariaLabelAdd", ariaLabel: "ariaLabel" }, outputs: { numberChange: "numberChange" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"!nasFormGroup || !nasFormControlName; else reactiveForm\">\n <div\n [nasClass]=\"getClass('', [exists(compact) && 'compact', exists(spaceless) && 'spaceless', exists(simple) && 'simple', exists(hideInput) && 'hidden'])\">\n <label [nasClass]=\"getClass('title')\"\n *ngIf=\"label\">{{label}}</label>\n <div [nasClass]=\"getClass('wrapper')\">\n <nas-button overrideBaseCssClass\n [cssClass]=\"getClass('button', getMinusConfig().styling)\"\n [disabled]=\"getMinusConfig().disabled\"\n [tabindex]=\"-1\"\n [ariaLabel]=\"ariaLabelSubtract\"\n (clickChange)=\"subtract()\">\n <nas-icon [type]=\"getMinusConfig().icon\"></nas-icon>\n </nas-button>\n <input #input\n type=\"number\"\n [nasClass]=\"getClass('input')\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.value]=\"number\"\n [attr.aria-valuenow]=\"number\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-label]=\"!ariaLabel ? label : ariaLabel\"\n [(ngModel)]=\"number\"\n (focus)=\"inputFocus()\"\n (keydown.arrowright)=\"add()\"\n (keydown.arrowleft)=\"subtract()\">\n <nas-button overrideBaseCssClass\n [cssClass]=\"getClass('button', getPlusConfig().styling)\"\n [disabled]=\"getPlusConfig().disabled\"\n [tabindex]=\"-1\"\n [ariaLabel]=\"ariaLabelAdd\"\n (clickChange)=\"add()\">\n <nas-icon [type]=\"getPlusConfig().icon\"></nas-icon>\n </nas-button>\n </div>\n </div>\n</ng-container>\n<ng-template #reactiveForm>\n <div\n [nasClass]=\"getClass('', [exists(compact) && 'compact', exists(spaceless) && 'spaceless', exists(simple) && 'simple', exists(hideInput) && 'hidden'])\"\n [formGroup]=\"nasFormGroup\">\n <label [nasClass]=\"getClass('title')\"\n *ngIf=\"label\">{{label}}</label>\n <div [nasClass]=\"getClass('wrapper')\">\n <nas-button overrideBaseCssClass\n [cssClass]=\"getClass('button', 'subtract')\"\n [disabled]=\"number <= min\"\n [tabindex]=\"-1\"\n [ariaLabel]=\"ariaLabelSubtract\"\n (clickChange)=\"subtract()\">\n <nas-icon [type]=\"'subtract'\"></nas-icon>\n </nas-button>\n <input #input\n type=\"number\"\n [formControlName]=\"nasFormControlName\"\n [nasClass]=\"getClass('input')\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.value]=\"number\"\n [attr.aria-valuenow]=\"number\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-label]=\"!ariaLabel ? label : ariaLabel\"\n (focus)=\"inputFocus()\"\n (keydown.arrowright)=\"add()\"\n (keydown.arrowleft)=\"subtract()\">\n <nas-button overrideBaseCssClass\n [cssClass]=\"getClass('button', 'add')\"\n [disabled]=\"number >= max\"\n [tabindex]=\"-1\"\n [ariaLabel]=\"ariaLabelAdd\"\n (clickChange)=\"add()\">\n <nas-icon [type]=\"'add'\"></nas-icon>\n </nas-button>\n </div>\n </div>\n</ng-template>\n", 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-number-field{position:relative;display:inline-block;width:135px;max-width:100%;margin-bottom:24px}.nas-number-field__title{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;display:block;text-align:left}.nas-number-field__input{font-weight:700;font-size:16px;line-height:26px;color:#002a3a;max-height:40px;text-align:center;flex-grow:2;flex-grow:0}.nas-number-field__input[type=number]{padding:0;width:40px;height:40px}.nas-number-field__button{flex-shrink:0;flex-grow:0;position:relative;padding:12px 0;height:40px;width:40px;color:transparent;overflow:hidden;background-color:#d8d8d8;transition:transform .15s cubic-bezier(0,0,.1,1)}.nas-number-field__button [class^=nas-icon-]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.nas-number-field__button[disabled]{pointer-events:none;background-color:#e3e3e3}.nas-number-field__button--subtract{background-color:#e3e3e3}.nas-number-field__button--subtract--active{background-color:#15273f}.nas-number-field__button--add{background-color:#e3e3e3}.nas-number-field__button--add--active{background-color:#15273f}.nas-number-field__wrapper{position:relative;display:flex;height:40px}.nas-number-field--compact{width:108px}.nas-number-field--compact .nas-number-field__button{height:35px;width:36px}.nas-number-field--compact .nas-number-field__input{font-size:14px;line-height:20px;max-height:35px}.nas-number-field--compact .nas-number-field__input[type=number]{width:36px}.nas-number-field--compact .nas-number-field__title{font-size:14px;line-height:20px;margin-bottom:2px}.nas-number-field--compact .nas-number-field__wrapper{height:35px}.nas-number-field--spaceless{margin-bottom:0}.nas-number-field--hidden.nas-number-field--compact .nas-number-field__button{width:52.5px}.nas-number-field--hidden .nas-number-field__input{visibility:hidden}.nas-number-field--hidden .nas-number-field__input[type=number]{padding:0;width:3px}.nas-number-field--hidden .nas-number-field__button{width:66px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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.ButtonComponent, selector: "nas-button", inputs: ["primary", "secondary", "link", "light", "large", "block", "flex", "compact", "right", "spaceless", "href", "trackingvalue", "canContinueOnDisabled", "disabled", "type", "cssClass", "ariaLabel", "cssStyle", "tabindex", "overrideBaseCssClass", "useRouterLink", "id", "target", "icon", "iconLeft", "buttonlink"], outputs: ["clickChange"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], encapsulation: i0.ViewEncapsulation.None }); }
101
119
  }
102
120
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: NumberFieldComponent, decorators: [{
103
121
  type: Component,
104
- args: [{ selector: 'nas-number-field', encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"!nasFormGroup || !nasFormControlName; else reactiveForm\">\n <div\n [nasClass]=\"getClass('', [exists(compact) && 'compact', exists(spaceless) && 'spaceless', exists(simple) && 'simple', exists(hideInput) && 'hidden'])\">\n <label [nasClass]=\"getClass('title')\"\n *ngIf=\"label\">{{label}}</label>\n <div [nasClass]=\"getClass('wrapper')\">\n <nas-button overrideBaseCssClass\n [cssClass]=\"getClass('button', 'subtract')\"\n [disabled]=\"number <= min\"\n [tabindex]=\"-1\"\n [ariaLabel]=\"ariaLabelSubtract\"\n (clickChange)=\"subtract()\">\n <nas-icon [type]=\"'subtract'\"></nas-icon>\n </nas-button>\n <input #input\n type=\"number\"\n [nasClass]=\"getClass('input')\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.value]=\"number\"\n [attr.aria-valuenow]=\"number\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-label]=\"!ariaLabel ? label : ariaLabel\"\n [(ngModel)]=\"number\"\n (focus)=\"inputFocus()\"\n (keydown.arrowright)=\"add()\"\n (keydown.arrowleft)=\"subtract()\">\n <nas-button overrideBaseCssClass\n [cssClass]=\"getClass('button', 'add')\"\n [disabled]=\"number >= max\"\n [tabindex]=\"-1\"\n [ariaLabel]=\"ariaLabelAdd\"\n (clickChange)=\"add()\">\n <nas-icon [type]=\"'add'\"></nas-icon>\n </nas-button>\n <span [nasClass]=\"getClass('line')\"></span>\n </div>\n </div>\n</ng-container>\n<ng-template #reactiveForm>\n <div\n [nasClass]=\"getClass('', [exists(compact) && 'compact', exists(spaceless) && 'spaceless', exists(simple) && 'simple', exists(hideInput) && 'hidden'])\"\n [formGroup]=\"nasFormGroup\">\n <label [nasClass]=\"getClass('title')\"\n *ngIf=\"label\">{{label}}</label>\n <div [nasClass]=\"getClass('wrapper')\">\n <nas-button overrideBaseCssClass\n [cssClass]=\"getClass('button', 'subtract')\"\n [disabled]=\"number <= min\"\n [tabindex]=\"-1\"\n [ariaLabel]=\"ariaLabelSubtract\"\n (clickChange)=\"subtract()\">\n <nas-icon [type]=\"'subtract'\"></nas-icon>\n </nas-button>\n <input #input\n type=\"number\"\n [formControlName]=\"nasFormControlName\"\n [nasClass]=\"getClass('input')\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.value]=\"number\"\n [attr.aria-valuenow]=\"number\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-label]=\"!ariaLabel ? label : ariaLabel\"\n (focus)=\"inputFocus()\"\n (keydown.arrowright)=\"add()\"\n (keydown.arrowleft)=\"subtract()\">\n <nas-button overrideBaseCssClass\n [cssClass]=\"getClass('button', 'add')\"\n [disabled]=\"number >= max\"\n [tabindex]=\"-1\"\n [ariaLabel]=\"ariaLabelAdd\"\n (clickChange)=\"add()\">\n <nas-icon [type]=\"'add'\"></nas-icon>\n </nas-button>\n <span [nasClass]=\"getClass('line')\"></span>\n </div>\n </div>\n</ng-template>\n", 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-number-field{position:relative;display:inline-block;width:135px;max-width:100%;margin-bottom:24px}.nas-number-field .nas-number-field__line{border-color:#d8d8d8}.nas-number-field__title{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;display:block;text-align:left}.nas-number-field__line{position:absolute;bottom:-6px;left:0;width:100%;margin:0;border:0;border-top:3px solid #c3c3c3}.nas-number-field__input{color:#002a3a;max-height:46px;text-align:center;flex-grow:2;flex-grow:0}.nas-number-field__input[type=number]{padding:0;width:45px}.nas-number-field__input:focus~.nas-number-field__line{border-color:#003251}.nas-number-field__button{flex-shrink:0;flex-grow:0;position:relative;padding:12px 0;height:46px;width:45px;color:transparent;overflow:hidden;background-color:#d8d8d8;transition:transform .15s cubic-bezier(0,0,.1,1)}.nas-number-field__button:hover,.nas-number-field__button:focus{background-color:#c3c3c3}.nas-number-field__button:active{transform:translateY(3px)}.nas-number-field__button [class^=nas-icon-]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.nas-number-field__button[disabled]{pointer-events:none}.nas-number-field__button[disabled] [class^=nas-icon-]{opacity:.4}.nas-number-field__wrapper{position:relative;display:flex;height:46px}.nas-number-field--compact{width:108px}.nas-number-field--compact .nas-number-field__button{height:35px;width:36px}.nas-number-field--compact .nas-number-field__input{font-size:14px;line-height:20px;max-height:35px}.nas-number-field--compact .nas-number-field__input[type=number]{width:36px}.nas-number-field--compact .nas-number-field__title{font-size:14px;line-height:20px;margin-bottom:2px}.nas-number-field--compact .nas-number-field__wrapper{height:35px}.nas-number-field--spaceless{margin-bottom:0}.nas-number-field--simple .nas-number-field__line{display:none}.nas-number-field--hidden.nas-number-field--compact .nas-number-field__button{width:52.5px}.nas-number-field--hidden .nas-number-field__input{visibility:hidden}.nas-number-field--hidden .nas-number-field__input[type=number]{padding:0;width:3px}.nas-number-field--hidden .nas-number-field__button{width:66px}\n"] }]
122
+ args: [{ selector: 'nas-number-field', encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"!nasFormGroup || !nasFormControlName; else reactiveForm\">\n <div\n [nasClass]=\"getClass('', [exists(compact) && 'compact', exists(spaceless) && 'spaceless', exists(simple) && 'simple', exists(hideInput) && 'hidden'])\">\n <label [nasClass]=\"getClass('title')\"\n *ngIf=\"label\">{{label}}</label>\n <div [nasClass]=\"getClass('wrapper')\">\n <nas-button overrideBaseCssClass\n [cssClass]=\"getClass('button', getMinusConfig().styling)\"\n [disabled]=\"getMinusConfig().disabled\"\n [tabindex]=\"-1\"\n [ariaLabel]=\"ariaLabelSubtract\"\n (clickChange)=\"subtract()\">\n <nas-icon [type]=\"getMinusConfig().icon\"></nas-icon>\n </nas-button>\n <input #input\n type=\"number\"\n [nasClass]=\"getClass('input')\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.value]=\"number\"\n [attr.aria-valuenow]=\"number\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-label]=\"!ariaLabel ? label : ariaLabel\"\n [(ngModel)]=\"number\"\n (focus)=\"inputFocus()\"\n (keydown.arrowright)=\"add()\"\n (keydown.arrowleft)=\"subtract()\">\n <nas-button overrideBaseCssClass\n [cssClass]=\"getClass('button', getPlusConfig().styling)\"\n [disabled]=\"getPlusConfig().disabled\"\n [tabindex]=\"-1\"\n [ariaLabel]=\"ariaLabelAdd\"\n (clickChange)=\"add()\">\n <nas-icon [type]=\"getPlusConfig().icon\"></nas-icon>\n </nas-button>\n </div>\n </div>\n</ng-container>\n<ng-template #reactiveForm>\n <div\n [nasClass]=\"getClass('', [exists(compact) && 'compact', exists(spaceless) && 'spaceless', exists(simple) && 'simple', exists(hideInput) && 'hidden'])\"\n [formGroup]=\"nasFormGroup\">\n <label [nasClass]=\"getClass('title')\"\n *ngIf=\"label\">{{label}}</label>\n <div [nasClass]=\"getClass('wrapper')\">\n <nas-button overrideBaseCssClass\n [cssClass]=\"getClass('button', 'subtract')\"\n [disabled]=\"number <= min\"\n [tabindex]=\"-1\"\n [ariaLabel]=\"ariaLabelSubtract\"\n (clickChange)=\"subtract()\">\n <nas-icon [type]=\"'subtract'\"></nas-icon>\n </nas-button>\n <input #input\n type=\"number\"\n [formControlName]=\"nasFormControlName\"\n [nasClass]=\"getClass('input')\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.value]=\"number\"\n [attr.aria-valuenow]=\"number\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-label]=\"!ariaLabel ? label : ariaLabel\"\n (focus)=\"inputFocus()\"\n (keydown.arrowright)=\"add()\"\n (keydown.arrowleft)=\"subtract()\">\n <nas-button overrideBaseCssClass\n [cssClass]=\"getClass('button', 'add')\"\n [disabled]=\"number >= max\"\n [tabindex]=\"-1\"\n [ariaLabel]=\"ariaLabelAdd\"\n (clickChange)=\"add()\">\n <nas-icon [type]=\"'add'\"></nas-icon>\n </nas-button>\n </div>\n </div>\n</ng-template>\n", 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-number-field{position:relative;display:inline-block;width:135px;max-width:100%;margin-bottom:24px}.nas-number-field__title{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;display:block;text-align:left}.nas-number-field__input{font-weight:700;font-size:16px;line-height:26px;color:#002a3a;max-height:40px;text-align:center;flex-grow:2;flex-grow:0}.nas-number-field__input[type=number]{padding:0;width:40px;height:40px}.nas-number-field__button{flex-shrink:0;flex-grow:0;position:relative;padding:12px 0;height:40px;width:40px;color:transparent;overflow:hidden;background-color:#d8d8d8;transition:transform .15s cubic-bezier(0,0,.1,1)}.nas-number-field__button [class^=nas-icon-]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.nas-number-field__button[disabled]{pointer-events:none;background-color:#e3e3e3}.nas-number-field__button--subtract{background-color:#e3e3e3}.nas-number-field__button--subtract--active{background-color:#15273f}.nas-number-field__button--add{background-color:#e3e3e3}.nas-number-field__button--add--active{background-color:#15273f}.nas-number-field__wrapper{position:relative;display:flex;height:40px}.nas-number-field--compact{width:108px}.nas-number-field--compact .nas-number-field__button{height:35px;width:36px}.nas-number-field--compact .nas-number-field__input{font-size:14px;line-height:20px;max-height:35px}.nas-number-field--compact .nas-number-field__input[type=number]{width:36px}.nas-number-field--compact .nas-number-field__title{font-size:14px;line-height:20px;margin-bottom:2px}.nas-number-field--compact .nas-number-field__wrapper{height:35px}.nas-number-field--spaceless{margin-bottom:0}.nas-number-field--hidden.nas-number-field--compact .nas-number-field__button{width:52.5px}.nas-number-field--hidden .nas-number-field__input{visibility:hidden}.nas-number-field--hidden .nas-number-field__input[type=number]{padding:0;width:3px}.nas-number-field--hidden .nas-number-field__button{width:66px}\n"] }]
105
123
  }], ctorParameters: function () { return []; }, propDecorators: { input: [{
106
124
  type: ViewChild,
107
125
  args: ['input']
@@ -134,4 +152,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
134
152
  }], numberChange: [{
135
153
  type: Output
136
154
  }] } });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvbnVtYmVyLWZpZWxkL251bWJlci1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL251bWJlci1maWVsZC9udW1iZXItZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUNMLFNBQVMsRUFDVCxNQUFNLEVBQ04sWUFBWSxFQUNaLEtBQUssRUFDTCxpQkFBaUIsRUFFakIsU0FBUyxHQUVWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7Ozs7O0FBR3RFOzs7R0FHRztBQU9ILE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxnQkFBZ0I7SUFHeEQ7Ozs7TUFJRTtJQUNGLElBQ0ksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsTUFBYztRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUNsRCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNyQixNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQzthQUNuQjtpQkFBTSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUM1QixNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQzthQUNuQjtTQUNGO1FBRUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FB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S0FBSztnQkFPRyxHQUFHO3NCQUFYLEtBQUs7Z0JBT0csS0FBSztzQkFBYixLQUFLO2dCQU9HLE9BQU87c0JBQWYsS0FBSztnQkFPRyxTQUFTO3NCQUFqQixLQUFLO2dCQU9HLE1BQU07c0JBQWQsS0FBSztnQkFTRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBU0csWUFBWTtzQkFBcEIsS0FBSztnQkFPRyxTQUFTO3NCQUFqQixLQUFLO2dCQU9HLGlCQUFpQjtzQkFBekIsS0FBSztnQkFPRyxZQUFZO3NCQUFwQixLQUFLO2dCQU9HLFNBQVM7c0JBQWpCLEtBQUs7Z0JBT0ksWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBOb3J3ZWdpYW4gQWlyIFNodXR0bGUuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBFbGVtZW50UmVmLFxuICBWaWV3Q2hpbGQsXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXNDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlL25hcy1jb21wb25lbnQuYmFzZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBOb3J3ZWdpYW4gTnVtYmVyIGZpZWxkIENvbXBvbmVudCB8IEZvcm0gQ29udHJvbHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmFzLW51bWJlci1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9udW1iZXItZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9udW1iZXItZmllbGQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgTnVtYmVyRmllbGRDb21wb25lbnQgZXh0ZW5kcyBOYXNDb21wb25lbnRCYXNlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dDogRWxlbWVudFJlZjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgc2VsZWN0ZWQgbnVtYmVyLlxuICAqL1xuICBASW5wdXQoKVxuICBnZXQgbnVtYmVyKCkge1xuICAgIHJldHVybiB0aGlzLm51bWJlclZhbHVlO1xuICB9XG4gIHNldCBudW1iZXIobnVtYmVyOiBudW1iZXIpIHtcbiAgICBpZiAoIXRoaXMubmFzRm9ybUdyb3VwIHx8ICF0aGlzLm5hc0Zvcm1Db250cm9sTmFtZSkge1xuICAgICAgaWYgKG51bWJlciA8IHRoaXMubWluKSB7XG4gICAgICAgIG51bWJlciA9IHRoaXMubWluO1xuICAgICAgfSBlbHNlIGlmIChudW1iZXIgPiB0aGlzLm1heCkge1xuICAgICAgICBudW1iZXIgPSB0aGlzLm1heDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm51bWJlclZhbHVlID0gbnVtYmVyO1xuICAgIHRoaXMubnVtYmVyQ2hhbmdlLmVtaXQobnVtYmVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIE1heGltdW0gbGltaXQuXG4gICovXG4gIEBJbnB1dCgpIG1heDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIE1pbmltdW0gbGltaXQuXG4gICovXG4gIEBJbnB1dCgpIG1pbjogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgbGFiZWwgZm9yIHRoZSBudW1iZXIgZmllbGQgaW5wdXQuXG4gICovXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0cyBjb21wYWN0IHN0eWxpbmcuXG4gICovXG4gIEBJbnB1dCgpIGNvbXBhY3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgc3BhY2VsZXNzIHN0eWxpbmcuXG4gICovXG4gIEBJbnB1dCgpIHNwYWNlbGVzcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0cyBzaW1wbGUgc3R5bGluZy5cbiAgICovXG4gIEBJbnB1dCgpIHNpbXBsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0cyBhIGZvcm1Db250cm9sTmFtZSBkaXJlY3RpdmUgdG8gdGhlIGlucHV0LlxuICAgKiBJdCByZXF1aXJlcyB0aGF0IHRoZSBjb25zdW1lciBpbmNsdWRlZCBSZWFjdGl2ZUZvcm1zTW9kdWxlIGluIGl0J3MgbW9kdWxlLlxuICAgKiBJdCByZXF1aWVycyB0aGF0IHRoZSBuYXNGb3JtR3JvdXAgaW5wdXQgaXMgZmlsbGVkLlxuICAqL1xuICBASW5wdXQoKSBuYXNGb3JtQ29udHJvbE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBZGRzIHRoZSBwYXJlbnQncyBmb3JtIGdyb3VwLlxuICAgKiBJdCByZXF1aXJlcyB0aGF0IHRoZSBjb25zdW1lciBpbmNsdWRlZCBSZWFjdGl2ZUZvcm1zTW9kdWxlIGluIGl0J3MgbW9kdWxlLlxuICAgKiBJdCBpcyByZXF1aWVyZWQgdG8gYmUgZmlsbGVkIGlmIG5hc0Zvcm1Db250cm9sTmFtZSBhZGRlZC5cbiAgKi9cbiAgQElucHV0KCkgbmFzRm9ybUdyb3VwOiBGb3JtR3JvdXA7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogSGlkZXMgdGhlIGlucHV0IGZpZWxkIGFuZCBkaXNwbGF5cyBhIHBsdXMgYW5kIG1pbnVzIGJ1dHRvbiBvbmx5LlxuICAqL1xuICBASW5wdXQoKSBoaWRlSW5wdXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFSSUEgbGFiZWwgZm9yIHRoZSBzdWJ0cmFjdCBidXR0b24uXG4gICovXG4gIEBJbnB1dCgpIGFyaWFMYWJlbFN1YnRyYWN0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQVJJQSBsYWJlbCBmb3IgdGhlIGFkZCBidXR0b24uXG4gICAqL1xuICBASW5wdXQoKSBhcmlhTGFiZWxBZGQ6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBUklBIGxhYmVsIGZvciB0aGUgaW5wdXQgZmllbGQuXG4gICAqL1xuICBASW5wdXQoKSBhcmlhTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IE91dHB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gZXZlbnQgdGhhdCBpcyBmaXJlZCBldmVyeSB0aW1lIHRoZSBudW1iZXIgY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKSBudW1iZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBwcml2YXRlIG51bWJlclZhbHVlID0gMDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignbmFzLW51bWJlci1maWVsZCcpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFyaWFMYWJlbEFkZCkge1xuICAgICAgdGhpcy53YXJuTWlzc2luZ0FjY2Vzc2liaWx0eUlucHV0KCdhcmlhTGFiZWxBZGQnKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuYXJpYUxhYmVsU3VidHJhY3QpIHtcbiAgICAgIHRoaXMud2Fybk1pc3NpbmdBY2Nlc3NpYmlsdHlJbnB1dCgnYXJpYUxhYmVsU3VidHJhY3QnKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMubGFiZWwgJiYgIXRoaXMuYXJpYUxhYmVsKSB7XG4gICAgICB0aGlzLndhcm5NaXNzaW5nQWNjZXNzaWJpbHR5SW5wdXQoJ2FyaWFMYWJlbCcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm5hc0Zvcm1Hcm91cCAmJiB0aGlzLm5hc0Zvcm1Db250cm9sTmFtZSkge1xuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMubmFzRm9ybUdyb3VwLmdldCh0aGlzLm5hc0Zvcm1Db250cm9sTmFtZSk7XG5cbiAgICAgIGlmICghY29udHJvbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMubnVtYmVyID0gY29udHJvbC52YWx1ZTtcblxuICAgICAgY29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZTogbnVtYmVyKSA9PiB7XG4gICAgICAgIHRoaXMubnVtYmVyID0gdmFsdWU7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBpbnB1dEZvY3VzKCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnNlbGVjdCgpO1xuICAgIH0pO1xuICB9XG5cbiAgYWRkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm51bWJlciA+PSB0aGlzLm1heCkge1xuICAgICAgdGhpcy5udW1iZXJDaGFuZ2UuZW1pdCh0aGlzLm51bWJlcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5udW1iZXIgKz0gMTtcblxuICAgIHRoaXMucGF0Y2hSZWFjdGl2ZUZvcm1Db250cm9sVmFsdWUoKTtcbiAgfVxuXG4gIHN1YnRyYWN0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm51bWJlciA8PSB0aGlzLm1pbikge1xuICAgICAgdGhpcy5udW1iZXJDaGFuZ2UuZW1pdCh0aGlzLm51bWJlcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5udW1iZXIgLT0gMTtcblxuICAgIHRoaXMucGF0Y2hSZWFjdGl2ZUZvcm1Db250cm9sVmFsdWUoKTtcbiAgfVxuXG4gIHByaXZhdGUgcGF0Y2hSZWFjdGl2ZUZvcm1Db250cm9sVmFsdWUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubmFzRm9ybUNvbnRyb2xOYW1lICYmIHRoaXMubmFzRm9ybUdyb3VwKSB7XG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5uYXNGb3JtR3JvdXAuY29udHJvbHNbdGhpcy5uYXNGb3JtQ29udHJvbE5hbWVdO1xuXG4gICAgICBpZiAoY29udHJvbCkge1xuICAgICAgICBjb250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgIGNvbnRyb2wucGF0Y2hWYWx1ZSh0aGlzLm51bWJlcik7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIW5hc0Zvcm1Hcm91cCB8fCAhbmFzRm9ybUNvbnRyb2xOYW1lOyBlbHNlIHJlYWN0aXZlRm9ybVwiPlxuICA8ZGl2XG4gICAgW25hc0NsYXNzXT1cImdldENsYXNzKCcnLCBbZXhpc3RzKGNvbXBhY3QpICYmICdjb21wYWN0JywgZXhpc3RzKHNwYWNlbGVzcykgJiYgJ3NwYWNlbGVzcycsIGV4aXN0cyhzaW1wbGUpICYmICdzaW1wbGUnLCBleGlzdHMoaGlkZUlucHV0KSAmJiAnaGlkZGVuJ10pXCI+XG4gICAgPGxhYmVsIFtuYXNDbGFzc109XCJnZXRDbGFzcygndGl0bGUnKVwiXG4gICAgICAqbmdJZj1cImxhYmVsXCI+e3tsYWJlbH19PC9sYWJlbD5cbiAgICA8ZGl2IFtuYXNDbGFzc109XCJnZXRDbGFzcygnd3JhcHBlcicpXCI+XG4gICAgICA8bmFzLWJ1dHRvbiBvdmVycmlkZUJhc2VDc3NDbGFzc1xuICAgICAgICBbY3NzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2J1dHRvbicsICdzdWJ0cmFjdCcpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIm51bWJlciA8PSBtaW5cIlxuICAgICAgICBbdGFiaW5kZXhdPVwiLTFcIlxuICAgICAgICBbYXJpYUxhYmVsXT1cImFyaWFMYWJlbFN1YnRyYWN0XCJcbiAgICAgICAgKGNsaWNrQ2hhbmdlKT1cInN1YnRyYWN0KClcIj5cbiAgICAgICAgPG5hcy1pY29uIFt0eXBlXT1cIidzdWJ0cmFjdCdcIj48L25hcy1pY29uPlxuICAgICAgPC9uYXMtYnV0dG9uPlxuICAgICAgPGlucHV0ICNpbnB1dFxuICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgW25hc0NsYXNzXT1cImdldENsYXNzKCdpbnB1dCcpXCJcbiAgICAgICAgW2F0dHIubWluXT1cIm1pblwiXG4gICAgICAgIFthdHRyLm1heF09XCJtYXhcIlxuICAgICAgICBbYXR0ci52YWx1ZV09XCJudW1iZXJcIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cIm51bWJlclwiXG4gICAgICAgIFthdHRyLmFyaWEtdmFsdWVtaW5dPVwibWluXCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1heF09XCJtYXhcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIiFhcmlhTGFiZWwgPyBsYWJlbCA6IGFyaWFMYWJlbFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwibnVtYmVyXCJcbiAgICAgICAgKGZvY3VzKT1cImlucHV0Rm9jdXMoKVwiXG4gICAgICAgIChrZXlkb3duLmFycm93cmlnaHQpPVwiYWRkKClcIlxuICAgICAgICAoa2V5ZG93bi5hcnJvd2xlZnQpPVwic3VidHJhY3QoKVwiPlxuICAgICAgPG5hcy1idXR0b24gb3ZlcnJpZGVCYXNlQ3NzQ2xhc3NcbiAgICAgICAgW2Nzc0NsYXNzXT1cImdldENsYXNzKCdidXR0b24nLCAnYWRkJylcIlxuICAgICAgICBbZGlzYWJsZWRdPVwibnVtYmVyID49IG1heFwiXG4gICAgICAgIFt0YWJpbmRleF09XCItMVwiXG4gICAgICAgIFthcmlhTGFiZWxdPVwiYXJpYUxhYmVsQWRkXCJcbiAgICAgICAgKGNsaWNrQ2hhbmdlKT1cImFkZCgpXCI+XG4gICAgICAgIDxuYXMtaWNvbiBbdHlwZV09XCInYWRkJ1wiPjwvbmFzLWljb24+XG4gICAgICA8L25hcy1idXR0b24+XG4gICAgICA8c3BhbiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2xpbmUnKVwiPjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbjxuZy10ZW1wbGF0ZSAjcmVhY3RpdmVGb3JtPlxuICA8ZGl2XG4gICAgW25hc0NsYXNzXT1cImdldENsYXNzKCcnLCBbZXhpc3RzKGNvbXBhY3QpICYmICdjb21wYWN0JywgZXhpc3RzKHNwYWNlbGVzcykgJiYgJ3NwYWNlbGVzcycsIGV4aXN0cyhzaW1wbGUpICYmICdzaW1wbGUnLCBleGlzdHMoaGlkZUlucHV0KSAmJiAnaGlkZGVuJ10pXCJcbiAgICBbZm9ybUdyb3VwXT1cIm5hc0Zvcm1Hcm91cFwiPlxuICAgIDxsYWJlbCBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ3RpdGxlJylcIlxuICAgICAgKm5nSWY9XCJsYWJlbFwiPnt7bGFiZWx9fTwvbGFiZWw+XG4gICAgPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ3dyYXBwZXInKVwiPlxuICAgICAgPG5hcy1idXR0b24gb3ZlcnJpZGVCYXNlQ3NzQ2xhc3NcbiAgICAgICAgW2Nzc0NsYXNzXT1cImdldENsYXNzKCdidXR0b24nLCAnc3VidHJhY3QnKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJudW1iZXIgPD0gbWluXCJcbiAgICAgICAgW3RhYmluZGV4XT1cIi0xXCJcbiAgICAgICAgW2FyaWFMYWJlbF09XCJhcmlhTGFiZWxTdWJ0cmFjdFwiXG4gICAgICAgIChjbGlja0NoYW5nZSk9XCJzdWJ0cmFjdCgpXCI+XG4gICAgICAgIDxuYXMtaWNvbiBbdHlwZV09XCInc3VidHJhY3QnXCI+PC9uYXMtaWNvbj5cbiAgICAgIDwvbmFzLWJ1dHRvbj5cbiAgICAgIDxpbnB1dCAjaW5wdXRcbiAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibmFzRm9ybUNvbnRyb2xOYW1lXCJcbiAgICAgICAgW25hc0NsYXNzXT1cImdldENsYXNzKCdpbnB1dCcpXCJcbiAgICAgICAgW2F0dHIubWluXT1cIm1pblwiXG4gICAgICAgIFthdHRyLm1heF09XCJtYXhcIlxuICAgICAgICBbYXR0ci52YWx1ZV09XCJudW1iZXJcIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cIm51bWJlclwiXG4gICAgICAgIFthdHRyLmFyaWEtdmFsdWVtaW5dPVwibWluXCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1heF09XCJtYXhcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIiFhcmlhTGFiZWwgPyBsYWJlbCA6IGFyaWFMYWJlbFwiXG4gICAgICAgIChmb2N1cyk9XCJpbnB1dEZvY3VzKClcIlxuICAgICAgICAoa2V5ZG93bi5hcnJvd3JpZ2h0KT1cImFkZCgpXCJcbiAgICAgICAgKGtleWRvd24uYXJyb3dsZWZ0KT1cInN1YnRyYWN0KClcIj5cbiAgICAgIDxuYXMtYnV0dG9uIG92ZXJyaWRlQmFzZUNzc0NsYXNzXG4gICAgICAgIFtjc3NDbGFzc109XCJnZXRDbGFzcygnYnV0dG9uJywgJ2FkZCcpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIm51bWJlciA+PSBtYXhcIlxuICAgICAgICBbdGFiaW5kZXhdPVwiLTFcIlxuICAgICAgICBbYXJpYUxhYmVsXT1cImFyaWFMYWJlbEFkZFwiXG4gICAgICAgIChjbGlja0NoYW5nZSk9XCJhZGQoKVwiPlxuICAgICAgICA8bmFzLWljb24gW3R5cGVdPVwiJ2FkZCdcIj48L25hcy1pY29uPlxuICAgICAgPC9uYXMtYnV0dG9uPlxuICAgICAgPHNwYW4gW25hc0NsYXNzXT1cImdldENsYXNzKCdsaW5lJylcIj48L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvbnVtYmVyLWZpZWxkL251bWJlci1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL251bWJlci1maWVsZC9udW1iZXItZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUNMLFNBQVMsRUFDVCxNQUFNLEVBQ04sWUFBWSxFQUNaLEtBQUssRUFDTCxpQkFBaUIsRUFFakIsU0FBUyxHQUVWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7Ozs7O0FBSXRFOzs7R0FHRztBQU9ILE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxnQkFBZ0I7SUFHeEQ7Ozs7TUFJRTtJQUNGLElBQ0ksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsTUFBYztRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUNsRCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNyQixNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQzthQUNuQjtpQkFBTSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUM1QixNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQzthQUNuQjtTQUNGO1FBRUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FB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RyxTQUFTO3NCQUFqQixLQUFLO2dCQU9HLGlCQUFpQjtzQkFBekIsS0FBSztnQkFPRyxZQUFZO3NCQUFwQixLQUFLO2dCQU9HLFNBQVM7c0JBQWpCLEtBQUs7Z0JBT0ksWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBOb3J3ZWdpYW4gQWlyIFNodXR0bGUuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBFbGVtZW50UmVmLFxuICBWaWV3Q2hpbGQsXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXNDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlL25hcy1jb21wb25lbnQuYmFzZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOdW1iZXJGaWVsZE1vZGVsIH0gZnJvbSAnLi9tb2RlbHMvbnVtYmVyLWZpZWxkLm1vZGVsJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIE5vcndlZ2lhbiBOdW1iZXIgZmllbGQgQ29tcG9uZW50IHwgRm9ybSBDb250cm9sc1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduYXMtbnVtYmVyLWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL251bWJlci1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL251bWJlci1maWVsZC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBOdW1iZXJGaWVsZENvbXBvbmVudCBleHRlbmRzIE5hc0NvbXBvbmVudEJhc2UgaW1wbGVtZW50cyBPbkluaXQge1xuICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0OiBFbGVtZW50UmVmO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBzZWxlY3RlZCBudW1iZXIuXG4gICovXG4gIEBJbnB1dCgpXG4gIGdldCBudW1iZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMubnVtYmVyVmFsdWU7XG4gIH1cbiAgc2V0IG51bWJlcihudW1iZXI6IG51bWJlcikge1xuICAgIGlmICghdGhpcy5uYXNGb3JtR3JvdXAgfHwgIXRoaXMubmFzRm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICBpZiAobnVtYmVyIDwgdGhpcy5taW4pIHtcbiAgICAgICAgbnVtYmVyID0gdGhpcy5taW47XG4gICAgICB9IGVsc2UgaWYgKG51bWJlciA+IHRoaXMubWF4KSB7XG4gICAgICAgIG51bWJlciA9IHRoaXMubWF4O1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubnVtYmVyVmFsdWUgPSBudW1iZXI7XG4gICAgdGhpcy5udW1iZXJDaGFuZ2UuZW1pdChudW1iZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogTWF4aW11bSBsaW1pdC5cbiAgKi9cbiAgQElucHV0KCkgbWF4OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogTWluaW11bSBsaW1pdC5cbiAgKi9cbiAgQElucHV0KCkgbWluOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBsYWJlbCBmb3IgdGhlIG51bWJlciBmaWVsZCBpbnB1dC5cbiAgKi9cbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXRzIGNvbXBhY3Qgc3R5bGluZy5cbiAgKi9cbiAgQElucHV0KCkgY29tcGFjdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0cyBzcGFjZWxlc3Mgc3R5bGluZy5cbiAgKi9cbiAgQElucHV0KCkgc3BhY2VsZXNzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXRzIHNpbXBsZSBzdHlsaW5nLlxuICAgKi9cbiAgQElucHV0KCkgc2ltcGxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXRzIGEgZm9ybUNvbnRyb2xOYW1lIGRpcmVjdGl2ZSB0byB0aGUgaW5wdXQuXG4gICAqIEl0IHJlcXVpcmVzIHRoYXQgdGhlIGNvbnN1bWVyIGluY2x1ZGVkIFJlYWN0aXZlRm9ybXNNb2R1bGUgaW4gaXQncyBtb2R1bGUuXG4gICAqIEl0IHJlcXVpZXJzIHRoYXQgdGhlIG5hc0Zvcm1Hcm91cCBpbnB1dCBpcyBmaWxsZWQuXG4gICovXG4gIEBJbnB1dCgpIG5hc0Zvcm1Db250cm9sTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFkZHMgdGhlIHBhcmVudCdzIGZvcm0gZ3JvdXAuXG4gICAqIEl0IHJlcXVpcmVzIHRoYXQgdGhlIGNvbnN1bWVyIGluY2x1ZGVkIFJlYWN0aXZlRm9ybXNNb2R1bGUgaW4gaXQncyBtb2R1bGUuXG4gICAqIEl0IGlzIHJlcXVpZXJlZCB0byBiZSBmaWxsZWQgaWYgbmFzRm9ybUNvbnRyb2xOYW1lIGFkZGVkLlxuICAqL1xuICBASW5wdXQoKSBuYXNGb3JtR3JvdXA6IEZvcm1Hcm91cDtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBIaWRlcyB0aGUgaW5wdXQgZmllbGQgYW5kIGRpc3BsYXlzIGEgcGx1cyBhbmQgbWludXMgYnV0dG9uIG9ubHkuXG4gICovXG4gIEBJbnB1dCgpIGhpZGVJbnB1dD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQVJJQSBsYWJlbCBmb3IgdGhlIHN1YnRyYWN0IGJ1dHRvbi5cbiAgKi9cbiAgQElucHV0KCkgYXJpYUxhYmVsU3VidHJhY3Q6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBUklBIGxhYmVsIGZvciB0aGUgYWRkIGJ1dHRvbi5cbiAgICovXG4gIEBJbnB1dCgpIGFyaWFMYWJlbEFkZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFSSUEgbGFiZWwgZm9yIHRoZSBpbnB1dCBmaWVsZC5cbiAgICovXG4gIEBJbnB1dCgpIGFyaWFMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgT3V0cHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBbiBldmVudCB0aGF0IGlzIGZpcmVkIGV2ZXJ5IHRpbWUgdGhlIG51bWJlciBjaGFuZ2VzLlxuICAgKi9cbiAgQE91dHB1dCgpIG51bWJlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIHByaXZhdGUgbnVtYmVyVmFsdWUgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCduYXMtbnVtYmVyLWZpZWxkJyk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYXJpYUxhYmVsQWRkKSB7XG4gICAgICB0aGlzLndhcm5NaXNzaW5nQWNjZXNzaWJpbHR5SW5wdXQoJ2FyaWFMYWJlbEFkZCcpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5hcmlhTGFiZWxTdWJ0cmFjdCkge1xuICAgICAgdGhpcy53YXJuTWlzc2luZ0FjY2Vzc2liaWx0eUlucHV0KCdhcmlhTGFiZWxTdWJ0cmFjdCcpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5sYWJlbCAmJiAhdGhpcy5hcmlhTGFiZWwpIHtcbiAgICAgIHRoaXMud2Fybk1pc3NpbmdBY2Nlc3NpYmlsdHlJbnB1dCgnYXJpYUxhYmVsJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmFzRm9ybUdyb3VwICYmIHRoaXMubmFzRm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5uYXNGb3JtR3JvdXAuZ2V0KHRoaXMubmFzRm9ybUNvbnRyb2xOYW1lKTtcblxuICAgICAgaWYgKCFjb250cm9sKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5udW1iZXIgPSBjb250cm9sLnZhbHVlO1xuXG4gICAgICBjb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlOiBudW1iZXIpID0+IHtcbiAgICAgICAgdGhpcy5udW1iZXIgPSB2YWx1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGlucHV0Rm9jdXMoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0KCk7XG4gICAgfSk7XG4gIH1cblxuICBhZGQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubnVtYmVyID49IHRoaXMubWF4KSB7XG4gICAgICB0aGlzLm51bWJlckNoYW5nZS5lbWl0KHRoaXMubnVtYmVyKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm51bWJlciArPSAxO1xuXG4gICAgdGhpcy5wYXRjaFJlYWN0aXZlRm9ybUNvbnRyb2xWYWx1ZSgpO1xuICB9XG5cbiAgc3VidHJhY3QoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubnVtYmVyIDw9IHRoaXMubWluKSB7XG4gICAgICB0aGlzLm51bWJlckNoYW5nZS5lbWl0KHRoaXMubnVtYmVyKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm51bWJlciAtPSAxO1xuXG4gICAgdGhpcy5wYXRjaFJlYWN0aXZlRm9ybUNvbnRyb2xWYWx1ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXRjaFJlYWN0aXZlRm9ybUNvbnRyb2xWYWx1ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5uYXNGb3JtQ29udHJvbE5hbWUgJiYgdGhpcy5uYXNGb3JtR3JvdXApIHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLm5hc0Zvcm1Hcm91cC5jb250cm9sc1t0aGlzLm5hc0Zvcm1Db250cm9sTmFtZV07XG5cbiAgICAgIGlmIChjb250cm9sKSB7XG4gICAgICAgIGNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgICAgICAgY29udHJvbC5wYXRjaFZhbHVlKHRoaXMubnVtYmVyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRQbHVzQ29uZmlnKCk6IE51bWJlckZpZWxkTW9kZWwge1xuICAgIGlmICh0aGlzLm51bWJlciA+PSB0aGlzLm1heCkge1xuICAgICAgcmV0dXJuIHsgaWNvbjogJ3BsdXMnLCBzdHlsaW5nOiAnYWRkJywgZGlzYWJsZWQ6IHRydWUgfTtcbiAgICB9XG4gICAgaWYgKHRoaXMubnVtYmVyID49IDApIHtcbiAgICAgIHJldHVybiB7IGljb246ICdwbHVzLS1saWdodCcsIHN0eWxpbmc6ICdhZGQtLWFjdGl2ZScsIGRpc2FibGVkOiBmYWxzZSB9O1xuICAgIH1cbiAgICByZXR1cm4geyBpY29uOiAncGx1cycsIHN0eWxpbmc6ICdhZGQnLCBkaXNhYmxlZDogZmFsc2UgfTtcbiAgfVxuXG4gIGdldE1pbnVzQ29uZmlnKCk6IE51bWJlckZpZWxkTW9kZWwge1xuICAgIGlmICh0aGlzLm51bWJlciA8PSB0aGlzLm1pbikge1xuICAgICAgcmV0dXJuIHsgaWNvbjogJ21pbnVzJywgc3R5bGluZzogJ3N1YnRyYWN0JywgZGlzYWJsZWQ6IHRydWUgfTtcbiAgICB9XG4gICAgaWYgKHRoaXMubnVtYmVyID4gMCkge1xuICAgICAgcmV0dXJuIHsgaWNvbjogJ21pbnVzLS1saWdodCcsIHN0eWxpbmc6ICdzdWJ0cmFjdC0tYWN0aXZlJywgZGlzYWJsZWQ6IGZhbHNlIH07XG4gICAgfVxuICAgIHJldHVybiB7IGljb246ICdtaW51cycsIHN0eWxpbmc6ICdzdWJ0cmFjdCcsIGRpc2FibGVkOiBmYWxzZSB9O1xuICB9XG5cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIhbmFzRm9ybUdyb3VwIHx8ICFuYXNGb3JtQ29udHJvbE5hbWU7IGVsc2UgcmVhY3RpdmVGb3JtXCI+XG4gIDxkaXZcbiAgICBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJycsIFtleGlzdHMoY29tcGFjdCkgJiYgJ2NvbXBhY3QnLCBleGlzdHMoc3BhY2VsZXNzKSAmJiAnc3BhY2VsZXNzJywgZXhpc3RzKHNpbXBsZSkgJiYgJ3NpbXBsZScsIGV4aXN0cyhoaWRlSW5wdXQpICYmICdoaWRkZW4nXSlcIj5cbiAgICA8bGFiZWwgW25hc0NsYXNzXT1cImdldENsYXNzKCd0aXRsZScpXCJcbiAgICAgICpuZ0lmPVwibGFiZWxcIj57e2xhYmVsfX08L2xhYmVsPlxuICAgIDxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzKCd3cmFwcGVyJylcIj5cbiAgICAgIDxuYXMtYnV0dG9uIG92ZXJyaWRlQmFzZUNzc0NsYXNzXG4gICAgICAgIFtjc3NDbGFzc109XCJnZXRDbGFzcygnYnV0dG9uJywgZ2V0TWludXNDb25maWcoKS5zdHlsaW5nKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJnZXRNaW51c0NvbmZpZygpLmRpc2FibGVkXCJcbiAgICAgICAgW3RhYmluZGV4XT1cIi0xXCJcbiAgICAgICAgW2FyaWFMYWJlbF09XCJhcmlhTGFiZWxTdWJ0cmFjdFwiXG4gICAgICAgIChjbGlja0NoYW5nZSk9XCJzdWJ0cmFjdCgpXCI+XG4gICAgICAgIDxuYXMtaWNvbiBbdHlwZV09XCJnZXRNaW51c0NvbmZpZygpLmljb25cIj48L25hcy1pY29uPlxuICAgICAgPC9uYXMtYnV0dG9uPlxuICAgICAgPGlucHV0ICNpbnB1dFxuICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgW25hc0NsYXNzXT1cImdldENsYXNzKCdpbnB1dCcpXCJcbiAgICAgICAgW2F0dHIubWluXT1cIm1pblwiXG4gICAgICAgIFthdHRyLm1heF09XCJtYXhcIlxuICAgICAgICBbYXR0ci52YWx1ZV09XCJudW1iZXJcIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cIm51bWJlclwiXG4gICAgICAgIFthdHRyLmFyaWEtdmFsdWVtaW5dPVwibWluXCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1heF09XCJtYXhcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIiFhcmlhTGFiZWwgPyBsYWJlbCA6IGFyaWFMYWJlbFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwibnVtYmVyXCJcbiAgICAgICAgKGZvY3VzKT1cImlucHV0Rm9jdXMoKVwiXG4gICAgICAgIChrZXlkb3duLmFycm93cmlnaHQpPVwiYWRkKClcIlxuICAgICAgICAoa2V5ZG93bi5hcnJvd2xlZnQpPVwic3VidHJhY3QoKVwiPlxuICAgICAgPG5hcy1idXR0b24gb3ZlcnJpZGVCYXNlQ3NzQ2xhc3NcbiAgICAgICAgW2Nzc0NsYXNzXT1cImdldENsYXNzKCdidXR0b24nLCBnZXRQbHVzQ29uZmlnKCkuc3R5bGluZylcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZ2V0UGx1c0NvbmZpZygpLmRpc2FibGVkXCJcbiAgICAgICAgW3RhYmluZGV4XT1cIi0xXCJcbiAgICAgICAgW2FyaWFMYWJlbF09XCJhcmlhTGFiZWxBZGRcIlxuICAgICAgICAoY2xpY2tDaGFuZ2UpPVwiYWRkKClcIj5cbiAgICAgICAgPG5hcy1pY29uIFt0eXBlXT1cImdldFBsdXNDb25maWcoKS5pY29uXCI+PC9uYXMtaWNvbj5cbiAgICAgIDwvbmFzLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbjxuZy10ZW1wbGF0ZSAjcmVhY3RpdmVGb3JtPlxuICA8ZGl2XG4gICAgW25hc0NsYXNzXT1cImdldENsYXNzKCcnLCBbZXhpc3RzKGNvbXBhY3QpICYmICdjb21wYWN0JywgZXhpc3RzKHNwYWNlbGVzcykgJiYgJ3NwYWNlbGVzcycsIGV4aXN0cyhzaW1wbGUpICYmICdzaW1wbGUnLCBleGlzdHMoaGlkZUlucHV0KSAmJiAnaGlkZGVuJ10pXCJcbiAgICBbZm9ybUdyb3VwXT1cIm5hc0Zvcm1Hcm91cFwiPlxuICAgIDxsYWJlbCBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ3RpdGxlJylcIlxuICAgICAgKm5nSWY9XCJsYWJlbFwiPnt7bGFiZWx9fTwvbGFiZWw+XG4gICAgPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ3dyYXBwZXInKVwiPlxuICAgICAgPG5hcy1idXR0b24gb3ZlcnJpZGVCYXNlQ3NzQ2xhc3NcbiAgICAgICAgW2Nzc0NsYXNzXT1cImdldENsYXNzKCdidXR0b24nLCAnc3VidHJhY3QnKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJudW1iZXIgPD0gbWluXCJcbiAgICAgICAgW3RhYmluZGV4XT1cIi0xXCJcbiAgICAgICAgW2FyaWFMYWJlbF09XCJhcmlhTGFiZWxTdWJ0cmFjdFwiXG4gICAgICAgIChjbGlja0NoYW5nZSk9XCJzdWJ0cmFjdCgpXCI+XG4gICAgICAgIDxuYXMtaWNvbiBbdHlwZV09XCInc3VidHJhY3QnXCI+PC9uYXMtaWNvbj5cbiAgICAgIDwvbmFzLWJ1dHRvbj5cbiAgICAgIDxpbnB1dCAjaW5wdXRcbiAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibmFzRm9ybUNvbnRyb2xOYW1lXCJcbiAgICAgICAgW25hc0NsYXNzXT1cImdldENsYXNzKCdpbnB1dCcpXCJcbiAgICAgICAgW2F0dHIubWluXT1cIm1pblwiXG4gICAgICAgIFthdHRyLm1heF09XCJtYXhcIlxuICAgICAgICBbYXR0ci52YWx1ZV09XCJudW1iZXJcIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cIm51bWJlclwiXG4gICAgICAgIFthdHRyLmFyaWEtdmFsdWVtaW5dPVwibWluXCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1heF09XCJtYXhcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIiFhcmlhTGFiZWwgPyBsYWJlbCA6IGFyaWFMYWJlbFwiXG4gICAgICAgIChmb2N1cyk9XCJpbnB1dEZvY3VzKClcIlxuICAgICAgICAoa2V5ZG93bi5hcnJvd3JpZ2h0KT1cImFkZCgpXCJcbiAgICAgICAgKGtleWRvd24uYXJyb3dsZWZ0KT1cInN1YnRyYWN0KClcIj5cbiAgICAgIDxuYXMtYnV0dG9uIG92ZXJyaWRlQmFzZUNzc0NsYXNzXG4gICAgICAgIFtjc3NDbGFzc109XCJnZXRDbGFzcygnYnV0dG9uJywgJ2FkZCcpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIm51bWJlciA+PSBtYXhcIlxuICAgICAgICBbdGFiaW5kZXhdPVwiLTFcIlxuICAgICAgICBbYXJpYUxhYmVsXT1cImFyaWFMYWJlbEFkZFwiXG4gICAgICAgIChjbGlja0NoYW5nZSk9XCJhZGQoKVwiPlxuICAgICAgICA8bmFzLWljb24gW3R5cGVdPVwiJ2FkZCdcIj48L25hcy1pY29uPlxuICAgICAgPC9uYXMtYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -2,7 +2,7 @@
2
2
  * @license
3
3
  * Copyright Norwegian Air Shuttle. All Rights Reserved.
4
4
  */
5
- import { Component, EventEmitter, Input, Output, ViewChildren, } from '@angular/core';
5
+ import { Component, EventEmitter, Input, Output, ViewChildren } from '@angular/core';
6
6
  import { PassengerType } from './enums/passenger-type.enum';
7
7
  import { NasComponentBase } from '../../core/base/nas-component.base';
8
8
  import { NumberFieldComponent } from '../number-field/number-field.component';
@@ -53,6 +53,8 @@ export class PassengerSelectComponent extends NasComponentBase {
53
53
  return this.childrenLabel;
54
54
  case PassengerType.Infant:
55
55
  return this.infantsLabel;
56
+ case PassengerType.Youth:
57
+ return this.youthsLabel;
56
58
  }
57
59
  }
58
60
  keyDown(event, index) {
@@ -99,23 +101,41 @@ export class PassengerSelectComponent extends NasComponentBase {
99
101
  }
100
102
  }
101
103
  }
104
+ if (passengers.type === PassengerType.Adult || passengers.type === PassengerType.Youth) {
105
+ const adult = this.passengers.find(x => x.type === PassengerType.Adult);
106
+ const youth = this.passengers.find(x => x.type === PassengerType.Youth);
107
+ if (adult && youth) {
108
+ if (passengers.type === PassengerType.Adult && adult.count > 0) {
109
+ youth.count = 0;
110
+ }
111
+ if (passengers.type === PassengerType.Youth) {
112
+ adult.count = youth.count > 0 ? 0 : this.minAdultCount ? this.minAdultCount : adult.count;
113
+ }
114
+ }
115
+ }
102
116
  this.setTotalCount();
103
117
  this.passengersChange.emit(this.passengers);
104
118
  }
105
119
  getMax(passengers) {
106
120
  if (passengers.type === PassengerType.Infant) {
107
121
  const adults = this.passengers.find(x => x.type === PassengerType.Adult);
122
+ const youths = this.passengers.find(x => x.type === PassengerType.Youth);
108
123
  if (!adults) {
109
124
  return 0;
110
125
  }
111
- if (!adults.formGroup || !adults.formControlName) {
112
- return adults.count;
126
+ if (adults.count > 0) {
127
+ if (!adults.formGroup || !adults.formControlName) {
128
+ return adults.count;
129
+ }
130
+ const adultsFormControl = adults.formGroup.get(adults.formControlName);
131
+ if (!adultsFormControl) {
132
+ return adults.count;
133
+ }
134
+ return adultsFormControl.value;
113
135
  }
114
- const adultsFormControl = adults.formGroup.get(adults.formControlName);
115
- if (!adultsFormControl) {
116
- return adults.count;
136
+ if (youths && youths.count > 0) {
137
+ return 0;
117
138
  }
118
- return adultsFormControl.value;
119
139
  }
120
140
  else if (this.totalCount >= this.maxPaxCount) {
121
141
  if (!passengers.formGroup || !passengers.formControlName) {
@@ -132,17 +152,29 @@ export class PassengerSelectComponent extends NasComponentBase {
132
152
  }
133
153
  }
134
154
  getMin(passengers) {
135
- if (passengers.type === PassengerType.Adult) {
136
- return this.minAdultCount;
155
+ const adult = this.passengers.find(x => x.type === PassengerType.Adult);
156
+ const youth = this.passengers.find(x => x.type === PassengerType.Youth);
157
+ if (passengers.type === PassengerType.Adult && youth) {
158
+ if (passengers.type === PassengerType.Adult && adult.count < 1 && youth.count === 0) {
159
+ passengers.count = 1;
160
+ return 1;
161
+ }
137
162
  }
138
- else {
139
- return 0;
163
+ else if (!adult && passengers.type === PassengerType.Youth) {
164
+ const min = !this.minAdultCount ? 0 : this.minAdultCount;
165
+ return min;
140
166
  }
167
+ else if (passengers.type === PassengerType.Adult) {
168
+ return this.minAdultCount;
169
+ }
170
+ return 0;
141
171
  }
142
172
  setTotalCount() {
143
173
  const adult = this.passengers.find(x => x.type === PassengerType.Adult);
174
+ const youth = this.passengers.find(x => x.type === PassengerType.Youth);
144
175
  const child = this.passengers.find(x => x.type === PassengerType.Child);
145
176
  let adultCount = 0;
177
+ let youthCount = 0;
146
178
  let childCount = 0;
147
179
  if (adult) {
148
180
  if (!adult.formGroup || !adult.formControlName) {
@@ -158,6 +190,20 @@ export class PassengerSelectComponent extends NasComponentBase {
158
190
  }
159
191
  }
160
192
  }
193
+ if (youth) {
194
+ if (!youth.formGroup || !youth.formControlName) {
195
+ youthCount = youth.count;
196
+ }
197
+ else {
198
+ const youthsControl = youth.formGroup.get(youth.formControlName);
199
+ if (!youthsControl) {
200
+ youthCount = youth.count;
201
+ }
202
+ else {
203
+ youthCount = youthsControl.value;
204
+ }
205
+ }
206
+ }
161
207
  if (child) {
162
208
  if (!child.formGroup || !child.formControlName) {
163
209
  childCount = child.count;
@@ -172,7 +218,7 @@ export class PassengerSelectComponent extends NasComponentBase {
172
218
  }
173
219
  }
174
220
  }
175
- this.totalCount = adultCount + childCount;
221
+ this.totalCount = adultCount + childCount + youthCount;
176
222
  if (this.nasFormGroup && this.nasFormControlGroupBooking) {
177
223
  const groupBookingControl = this.nasFormGroup.get(this.nasFormControlGroupBooking);
178
224
  this.isGroupBooking = this.totalCount >= this.groupBookingLimit;
@@ -183,9 +229,12 @@ export class PassengerSelectComponent extends NasComponentBase {
183
229
  groupBookingControl.patchValue(this.isGroupBooking);
184
230
  }
185
231
  }
232
+ else if (this.groupBookingLimit) {
233
+ this.isGroupBooking = this.totalCount >= this.groupBookingLimit;
234
+ }
186
235
  }
187
236
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: PassengerSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
188
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: PassengerSelectComponent, selector: "nas-passenger-select", inputs: { passengers: "passengers", maxPaxCount: "maxPaxCount", minAdultCount: "minAdultCount", groupBookingLimit: "groupBookingLimit", title: "title", adultsLabel: "adultsLabel", childrenLabel: "childrenLabel", infantsLabel: "infantsLabel", groupBookingLabel: "groupBookingLabel", nasFormGroup: "nasFormGroup", nasFormControlGroupBooking: "nasFormControlGroupBooking", ariaLabelSubtract: "ariaLabelSubtract", ariaLabelAdd: "ariaLabelAdd" }, outputs: { passengersChange: "passengersChange", focusOnNext: "focusOnNext", focusOnPrevious: "focusOnPrevious" }, viewQueries: [{ propertyName: "numberFields", predicate: NumberFieldComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<h2 *ngIf=\"title\"\n [nasClass]=\"getClass('title', isGroupBooking && 'group-booking')\">{{title}}<ng-container *ngIf=\"isGroupBooking\">:\n <div>{{groupBookingLabel}}</div>\n </ng-container>\n</h2>\n<ul [nasClass]=\"getClass('list')\">\n <li *ngFor=\"let item of passengers; index as count\"\n [nasClass]=\"getClass('list-item')\">\n <label [nasClass]=\"getClass('label')\"\n [attr.aria-label]=\"getLabel(item.type)\">{{getLabel(item.type)}}</label>\n <ng-container *ngIf=\"!item.formGroup || !item.formControlName; else reactiveForm\">\n <nas-number-field compact\n spaceless\n simple\n [ariaLabel]=\"getLabel(item.type)\"\n [ariaLabelSubtract]=\"ariaLabelSubtract\"\n [ariaLabelAdd]=\"ariaLabelAdd\"\n [number]=\"item.count\"\n [max]=\"getMax(item)\"\n [min]=\"getMin(item)\"\n (numberChange)=\"setPassengersCount(item, $event)\"\n (keydown)=\"keyDown($event, count)\"></nas-number-field>\n </ng-container>\n <ng-template #reactiveForm>\n <nas-number-field compact\n spaceless\n simple\n [ariaLabel]=\"getLabel(item.type)\"\n [ariaLabelSubtract]=\"ariaLabelSubtract\"\n [ariaLabelAdd]=\"ariaLabelAdd\"\n [nasFormGroup]=\"item.formGroup\"\n [nasFormControlName]=\"item.formControlName\"\n [number]=\"item.formGroup?.get(item.formControlName)?.value\"\n [max]=\"getMax(item)\"\n [min]=\"getMin(item)\"\n (keydown)=\"keyDown($event, count)\"\n (numberChange)=\"setPassengersCount(item, $event)\"></nas-number-field>\n </ng-template>\n </li>\n</ul>", 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-passenger-select{position:relative;display:flex;flex-wrap:wrap;margin:16px 0 24px}.nas-passenger-select__list{margin-top:12px}.nas-passenger-select__list-item{display:flex;align-items:center;justify-content:space-between;padding:6px 0 0}.nas-passenger-select__list-item:not(:last-child){padding:6px 0 9px;border-bottom:2px solid #f1f1f1}.nas-passenger-select__label{flex-grow:2;margin:0 6px 0 0}.nas-passenger-select__title{font-size:18px;line-height:26px;display:block;min-width:124px}.nas-passenger-select__title--small{font-size:16px;line-height:26px;margin:0}.nas-passenger-select__title--group-booking{animation:pop-in-from-top .5s linear both}.nas-passenger-select__actions{display:flex}.nas-passenger-select__action{padding:12px;width:100%;background-color:#fff}.nas-passenger-select__action:hover,.nas-passenger-select__action:focus{background-color:#e3e3e3}.nas-passenger-select__action--active,.nas-passenger-select__action--active:hover,.nas-passenger-select__action--active:focus{color:#fff;background-color:#003251}.nas-passenger-select__icon{margin-bottom:9px}.nas-passenger-select__dropdown{margin-right:9px;margin-bottom:6px}@media (min-width: 640px){.nas-passenger-select__dropdown{margin-right:9px;margin-bottom:0}.nas-passenger-select__dropdown:not(:first-child){margin-left:9px}}.nas-passenger-select__transit-icon{position:relative;display:flex;justify-content:center;width:calc(100% - 48px);margin:12px auto;height:24px;background-color:inherit}.nas-passenger-select__transit-icon:before{content:\"\";position:absolute;height:2px;left:0;width:100%;top:calc(50% - 1px);background-color:currentColor}.nas-passenger-select__transit-icon:after{content:\"\";position:absolute;width:10px;height:10px;right:0;top:calc(50% - 5px);border-top:2px solid currentColor;border-right:2px solid currentColor;transform:rotate(45deg)}.nas-passenger-select__transit-icon-stop{position:relative;top:calc(50% - 5px);width:10px;height:10px;border:2px solid currentColor;border-radius:50%;background-color:inherit}@media (min-width: 1000px){.nas-passenger-select--combined{margin:0}.nas-passenger-select--combined:after{content:\"\";position:absolute;bottom:-3px;left:-3px;width:calc(100% + 3px);border-bottom:3px solid #c3c3c3}.nas-passenger-select--combined .nas-passenger-select__dropdown{margin:0 3px 0 0}.nas-passenger-select--combined .nas-passenger-select__dropdown:last-child{margin:0}.nas-passenger-select--combined .dropdown__toggle{height:calc(100% - 3px);margin:0;padding-left:16px;padding-right:16px;background-color:#fff}}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.NumberFieldComponent, selector: "nas-number-field", inputs: ["number", "max", "min", "label", "compact", "spaceless", "simple", "nasFormControlName", "nasFormGroup", "hideInput", "ariaLabelSubtract", "ariaLabelAdd", "ariaLabel"], outputs: ["numberChange"] }, { kind: "directive", type: i3.NasClassDirective, selector: "[nasClass]", inputs: ["nasClass", "attr.class"] }] }); }
237
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: PassengerSelectComponent, selector: "nas-passenger-select", inputs: { passengers: "passengers", maxPaxCount: "maxPaxCount", minAdultCount: "minAdultCount", groupBookingLimit: "groupBookingLimit", title: "title", adultsLabel: "adultsLabel", childrenLabel: "childrenLabel", infantsLabel: "infantsLabel", youthsLabel: "youthsLabel", groupBookingLabel: "groupBookingLabel", nasFormGroup: "nasFormGroup", nasFormControlGroupBooking: "nasFormControlGroupBooking", ariaLabelSubtract: "ariaLabelSubtract", ariaLabelAdd: "ariaLabelAdd" }, outputs: { passengersChange: "passengersChange", focusOnNext: "focusOnNext", focusOnPrevious: "focusOnPrevious" }, viewQueries: [{ propertyName: "numberFields", predicate: NumberFieldComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<h2 *ngIf=\"title\"\n [nasClass]=\"getClass('title', isGroupBooking && 'group-booking')\">{{title}}<ng-container *ngIf=\"isGroupBooking\">:\n <div>{{groupBookingLabel}}</div>\n </ng-container>\n</h2>\n<ul [nasClass]=\"getClass('list')\">\n <li *ngFor=\"let item of passengers; index as count\"\n [nasClass]=\"getClass('list-item')\">\n <label [nasClass]=\"getClass('label')\"\n [attr.aria-label]=\"getLabel(item.type)\">{{getLabel(item.type)}}</label>\n <ng-container *ngIf=\"!item.formGroup || !item.formControlName; else reactiveForm\">\n <nas-number-field compact\n spaceless\n simple\n [ariaLabel]=\"getLabel(item.type)\"\n [ariaLabelSubtract]=\"ariaLabelSubtract\"\n [ariaLabelAdd]=\"ariaLabelAdd\"\n [number]=\"item.count\"\n [max]=\"getMax(item)\"\n [min]=\"getMin(item)\"\n (numberChange)=\"setPassengersCount(item, $event)\"\n (keydown)=\"keyDown($event, count)\"></nas-number-field>\n </ng-container>\n <ng-template #reactiveForm>\n <nas-number-field compact\n spaceless\n simple\n [ariaLabel]=\"getLabel(item.type)\"\n [ariaLabelSubtract]=\"ariaLabelSubtract\"\n [ariaLabelAdd]=\"ariaLabelAdd\"\n [nasFormGroup]=\"item.formGroup\"\n [nasFormControlName]=\"item.formControlName\"\n [number]=\"item.formGroup?.get(item.formControlName)?.value\"\n [max]=\"getMax(item)\"\n [min]=\"getMin(item)\"\n (keydown)=\"keyDown($event, count)\"\n (numberChange)=\"setPassengersCount(item, $event)\"></nas-number-field>\n </ng-template>\n </li>\n</ul>", 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-passenger-select{position:relative;display:flex;flex-wrap:wrap;margin:16px 0 24px}.nas-passenger-select__list{margin-top:12px}.nas-passenger-select__list-item{display:flex;align-items:center;justify-content:space-between;padding:6px 0 0}.nas-passenger-select__list-item:not(:last-child){padding:6px 0 9px;border-bottom:2px solid #f1f1f1}.nas-passenger-select__label{flex-grow:2;margin:0 6px 0 0}.nas-passenger-select__title{font-size:18px;line-height:26px;display:block;min-width:124px}.nas-passenger-select__title--small{font-size:16px;line-height:26px;margin:0}.nas-passenger-select__title--group-booking{animation:pop-in-from-top .5s linear both}.nas-passenger-select__actions{display:flex}.nas-passenger-select__action{padding:12px;width:100%;background-color:#fff}.nas-passenger-select__action:hover,.nas-passenger-select__action:focus{background-color:#e3e3e3}.nas-passenger-select__action--active,.nas-passenger-select__action--active:hover,.nas-passenger-select__action--active:focus{color:#fff;background-color:#003251}.nas-passenger-select__icon{margin-bottom:9px}.nas-passenger-select__dropdown{margin-right:9px;margin-bottom:6px}@media (min-width: 640px){.nas-passenger-select__dropdown{margin-right:9px;margin-bottom:0}.nas-passenger-select__dropdown:not(:first-child){margin-left:9px}}.nas-passenger-select__transit-icon{position:relative;display:flex;justify-content:center;width:calc(100% - 48px);margin:12px auto;height:24px;background-color:inherit}.nas-passenger-select__transit-icon:before{content:\"\";position:absolute;height:2px;left:0;width:100%;top:calc(50% - 1px);background-color:currentColor}.nas-passenger-select__transit-icon:after{content:\"\";position:absolute;width:10px;height:10px;right:0;top:calc(50% - 5px);border-top:2px solid currentColor;border-right:2px solid currentColor;transform:rotate(45deg)}.nas-passenger-select__transit-icon-stop{position:relative;top:calc(50% - 5px);width:10px;height:10px;border:2px solid currentColor;border-radius:50%;background-color:inherit}@media (min-width: 1000px){.nas-passenger-select--combined{margin:0}.nas-passenger-select--combined:after{content:\"\";position:absolute;bottom:-3px;left:-3px;width:calc(100% + 3px);border-bottom:3px solid #c3c3c3}.nas-passenger-select--combined .nas-passenger-select__dropdown{margin:0 3px 0 0}.nas-passenger-select--combined .nas-passenger-select__dropdown:last-child{margin:0}.nas-passenger-select--combined .dropdown__toggle{height:calc(100% - 3px);margin:0;padding-left:16px;padding-right:16px;background-color:#fff}}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.NumberFieldComponent, selector: "nas-number-field", inputs: ["number", "max", "min", "label", "compact", "spaceless", "simple", "nasFormControlName", "nasFormGroup", "hideInput", "ariaLabelSubtract", "ariaLabelAdd", "ariaLabel"], outputs: ["numberChange"] }, { kind: "directive", type: i3.NasClassDirective, selector: "[nasClass]", inputs: ["nasClass", "attr.class"] }] }); }
189
238
  }
190
239
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: PassengerSelectComponent, decorators: [{
191
240
  type: Component,
@@ -209,6 +258,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
209
258
  type: Input
210
259
  }], infantsLabel: [{
211
260
  type: Input
261
+ }], youthsLabel: [{
262
+ type: Input
212
263
  }], groupBookingLabel: [{
213
264
  type: Input
214
265
  }], nasFormGroup: [{
@@ -226,4 +277,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
226
277
  }], focusOnPrevious: [{
227
278
  type: Output
228
279
  }] } });
229
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc2VuZ2VyLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3Bhc3Nlbmdlci1zZWxlY3QvcGFzc2VuZ2VyLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3Bhc3Nlbmdlci1zZWxlY3QvcGFzc2VuZ2VyLXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFlBQVksR0FFYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7O0FBRTlFOzs7RUFHRTtBQU1GLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxnQkFBZ0I7SUF5SDVEO1FBQ0UsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFwSGhDOzs7O1VBSUU7UUFDTyxlQUFVLEdBQUcsSUFBSSxLQUFLLEVBQW1CLENBQUM7UUF5Rm5EOzs7O1VBSUU7UUFDUSxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBMEIsQ0FBQztRQUV4RTs7OztVQUlFO1FBQ1EsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRWhEOzs7O1VBSUU7UUFDUSxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFJcEQsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFD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LElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUNyRDtTQUNGO0lBQ0gsQ0FBQzs4R0EvUlUsd0JBQXdCO2tHQUF4Qix3QkFBd0IsMG9CQUNyQixvQkFBb0IsdUVDN0JwQyw0bURBdUNLOzsyRkRYUSx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0Usc0JBQXNCOzBFQUtJLFlBQVk7c0JBQS9DLFlBQVk7dUJBQUMsb0JBQW9CO2dCQVV6QixVQUFVO3NCQUFsQixLQUFLO2dCQU9HLFdBQVc7c0JBQW5CLEtBQUs7Z0JBT0csYUFBYTtzQkFBckIsS0FBSztnQkFPRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBT0csS0FBSztzQkFBYixLQUFLO2dCQU9HLFdBQVc7c0JBQW5CLEtBQUs7Z0JBT0csYUFBYTtzQkFBckIsS0FBSztnQkFNRyxZQUFZO3NCQUFwQixLQUFLO2dCQU9HLGlCQUFpQjtzQkFBekIsS0FBSztnQkFTRyxZQUFZO3NCQUFwQixLQUFLO2dCQVNHLDBCQUEwQjtzQkFBbEMsS0FBSztnQkFPRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBT0csWUFBWTtzQkFBcEIsS0FBSztnQkFPSSxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBT0csV0FBVztzQkFBcEIsTUFBTTtnQkFPRyxlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IE5vcndlZ2lhbiBBaXIgU2h1dHRsZS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkcmVuLFxuICBRdWVyeUxpc3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUGFzc2VuZ2VyVHlwZSB9IGZyb20gJy4vZW51bXMvcGFzc2VuZ2VyLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBQYXNzZW5nZXJzTW9kZWwgfSBmcm9tICcuL21vZGVscy9wYXNzZW5nZXJzLm1vZGVsJztcbmltcG9ydCB7IE5hc0NvbXBvbmVudEJhc2UgfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UvbmFzLWNvbXBvbmVudC5iYXNlJztcbmltcG9ydCB7IE51bWJlckZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vbnVtYmVyLWZpZWxkL251bWJlci1maWVsZC5jb21wb25lbnQnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogTm9yd2VnaWFuIFBhc3NlbmdlciBTZWxlY3QgQ29tcG9uZW50IHwgRnVuY3Rpb25hbFxuKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25hcy1wYXNzZW5nZXItc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Bhc3Nlbmdlci1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYXNzZW5nZXItc2VsZWN0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUGFzc2VuZ2VyU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgTmFzQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGRyZW4oTnVtYmVyRmllbGRDb21wb25lbnQpIG51bWJlckZpZWxkcyE6IFF1ZXJ5TGlzdDxOdW1iZXJGaWVsZENvbXBvbmVudD47XG5cbiAgdG90YWxDb3VudDogbnVtYmVyO1xuICBpc0dyb3VwQm9va2luZzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBbiBhcnJheSBvZiBkaWZmZXJlbnQgcGFzc2VuZ2VyIHR5cGVzIHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQuXG4gICovXG4gIEBJbnB1dCgpIHBhc3NlbmdlcnMgPSBuZXcgQXJyYXk8UGFzc2VuZ2Vyc01vZGVsPigpO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSB0b3RhbCBtYXhpbXVtIGFtb3VudCBvZiBwYXNzZW5nZXJzLlxuICAqL1xuICBASW5wdXQoKSBtYXhQYXhDb3VudDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBtaW5pbXVtIGFtb3VudCBvZiBhZHVsdHMgdGhhdCBjYW4gYmUgc2VsZWN0ZWQuXG4gICovXG4gIEBJbnB1dCgpIG1pbkFkdWx0Q291bnQ6IG51bWJlcjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgbGltaXQgZm9yIHdoZW4gdGhlIHRvdGFsIGFtb3VudCBvZiBwYXNzZW5nZXJzIGV4Y2VlZHMgdG8gYmUgYSBncm91cCBib29raW5nLlxuICAqL1xuICBASW5wdXQoKSBncm91cEJvb2tpbmdMaW1pdDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgdGl0bGUgdGhhdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBkcm9wZG93bi5cbiAgKi9cbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGxhYmVsIGZvciB0aGUgYWR1bHRzIHBhc3NlbmdlciB0eXBlLlxuICAqL1xuICBASW5wdXQoKSBhZHVsdHNMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgbGFiZWwgZm9yIHRoZSBjaGlsZHJlbiBwYXNzZW5nZXIgdHlwZS5cbiAgKi9cbiAgQElucHV0KCkgY2hpbGRyZW5MYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBsYWJlbCBmb3IgdGhlIGluZmFudHMgcGFzc2VuZ2VyIHR5cGUuXG4gICAqL1xuICBASW5wdXQoKSBpbmZhbnRzTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGxhYmVsIHRoYXQgd2lsbCBhcHBlYXIgd2hlbiB0b3RhbCBudW1iZXIgb2Ygc2VsZWN0ZWQgcGFzc2VuZ2VycyBleGNlZWRzIHRoZSBncm91cCBib29raW5nIGxpbWl0XG4gICovXG4gIEBJbnB1dCgpIGdyb3VwQm9va2luZ0xhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQWRkcyB0aGUgcGFyZW50J3MgZm9ybSBncm91cC5cbiAgICogSXQgcmVxdWlyZXMgdGhhdCB0aGUgY29uc3VtZXIgaW5jbHVkZWQgUmVhY3RpdmVGb3Jtc01vZHVsZSBpbiBpdCdzIG1vZHVsZS5cbiAgICogSXQgaXMgcmVxdWllcmVkIHRvIGJlIGZpbGxlZCBpZiBuYXNGb3JtQ29udHJvbE5hbWUgYWRkZWQuXG4gICovXG4gIEBJbnB1dCgpIG5hc0Zvcm1Hcm91cDogRm9ybUdyb3VwO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgYSBmb3JtQ29udHJvbE5hbWUgZGlyZWN0aXZlIHRvIHRoZSBpbnB1dC5cbiAgICogSXQgcmVxdWlyZXMgdGhhdCB0aGUgY29uc3VtZXIgaW5jbHVkZWQgUmVhY3RpdmVGb3Jtc01vZHVsZSBpbiBpdCdzIG1vZHVsZS5cbiAgICogSXQgcmVxdWllcnMgdGhhdCB0aGUgbmFzRm9ybUdyb3VwIGlucHV0IGlzIGZpbGxlZC5cbiAgKi9cbiAgQElucHV0KCkgbmFzRm9ybUNvbnRyb2xHcm91cEJvb2tpbmc6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBUklBIGxhYmVsIGZvciB0aGUgc3VidHJhY3QgYnV0dG9ucy5cbiAgKi9cbiAgQElucHV0KCkgYXJpYUxhYmVsU3VidHJhY3Q6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBUklBIGxhYmVsIGZvciB0aGUgYWRkIGJ1dHRvbnMuXG4gICAqL1xuICBASW5wdXQoKSBhcmlhTGFiZWxBZGQ6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IE91dHB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gZXZlbnQgdGhhdCBpcyBmaXJlZCBldmVyeSB0aW1lIGEgcGFzc2VuZ2VyIHNlbGVjdGlvbiBjaGFuZ2UgaXMgcGVyZm9ybWVkLlxuICAqL1xuICBAT3V0cHV0KCkgcGFzc2VuZ2Vyc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8UGFzc2VuZ2Vyc01vZGVsPj4oKTtcblxuICAvKipcbiAgICogQHByb3BlcnR5IE91dHB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gZXZlbnQgdGhhdCBpcyBmaXJlZCBldmVyeSB0aW1lIGEgcGFzc2VuZ2VyIHNlbGVjdGlvbiBjaGFuZ2UgaXMgcGVyZm9ybWVkLlxuICAqL1xuICBAT3V0cHV0KCkgZm9jdXNPbk5leHQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKipcbiAgICogQHByb3BlcnR5IE91dHB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gZXZlbnQgdGhhdCBpcyBmaXJlZCBldmVyeSB0aW1lIGEgcGFzc2VuZ2VyIHNlbGVjdGlvbiBjaGFuZ2UgaXMgcGVyZm9ybWVkLlxuICAqL1xuICBAT3V0cHV0KCkgZm9jdXNPblByZXZpb3VzID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoJ25hcy1wYXNzZW5nZXItc2VsZWN0Jyk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldFRvdGFsQ291bnQoKTtcbiAgfVxuXG4gIGdldExhYmVsKHR5cGU6IFBhc3NlbmdlclR5cGUpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBQYXNzZW5nZXJUeXBlLkFkdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy5hZHVsdHNMYWJlbDtcbiAgICAgIGNhc2UgUGFzc2VuZ2VyVHlwZS5DaGlsZDpcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW5MYWJlbDtcbiAgICAgIGNhc2UgUGFzc2VuZ2VyVHlwZS5JbmZhbnQ6XG4gICAgICAgIHJldHVybiB0aGlzLmluZmFudHNMYWJlbDtcbiAgICB9XG4gIH1cblxuICBrZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICBpZiAoaW5kZXggPT09IHRoaXMucGFzc2VuZ2Vycy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgdGhpcy5udW1iZXJGaWVsZHMuZmlyc3QuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubnVtYmVyRmllbGRzLnRvQXJyYXkoKVtpbmRleCArIDFdLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICB0aGlzLm51bWJlckZpZWxkcy50b0FycmF5KClbdGhpcy5wYXNzZW5nZXJzLmxlbmd0aCAtIDFdLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm51bWJlckZpZWxkcy50b0FycmF5KClbaW5kZXggLSAxXS5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdUYWInOlxuICAgICAgICBpZiAoIWV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgdGhpcy5mb2N1c09uTmV4dC5lbWl0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICB0aGlzLmZvY3VzT25QcmV2aW91cy5lbWl0KCk7XG4gICAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRQYXNzZW5nZXJzQ291bnQocGFzc2VuZ2VyczogUGFzc2VuZ2Vyc01vZGVsLCBjb3VudDogbnVtYmVyKTogdm9pZCB7XG4gICAgcGFzc2VuZ2Vycy5jb3VudCA9IGNvdW50O1xuXG4gICAgaWYgKHBhc3NlbmdlcnMudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5BZHVsdCkge1xuICAgICAgaWYgKHRoaXMucGFzc2VuZ2Vycy5maW5kKHggPT4geC50eXBlID09PSBQYXNzZW5nZXJUeXBlLkluZmFudCkpIHtcbiAgICAgICAgY29uc3QgaW5mYW50c0NvdW50ID0gdGhpcy5wYXNzZW5nZXJzLmZpbmQoeCA9PiB4LnR5cGUgPT09IFBhc3NlbmdlclR5cGUuSW5mYW50KS5jb3VudDtcbiAgICAgICAgaWYgKGluZmFudHNDb3VudCA+IHBhc3NlbmdlcnMuY291bnQgJiYgdGhpcy5wYXNzZW5nZXJzLmZpbmQoeCA9PiB4LnR5cGUgPT09IFBhc3NlbmdlclR5cGUuSW5mYW50KSkge1xuICAgICAgICAgIGNvbnN0IGluZmFudCA9IHRoaXMucGFzc2VuZ2Vycy5maW5kKHggPT4geC50eXBlID09PSBQYXNzZW5nZXJUeXBlLkluZmFudCk7XG5cbiAgICAgICAgICBpZiAoaW5mYW50KSB7XG4gICAgICAgICAgICBpbmZhbnQuY291bnQgPSBwYXNzZW5nZXJzLmNvdW50O1xuXG4gICAgICAgICAgICBpZiAoaW5mYW50LmZvcm1Hcm91cCAmJiBpbmZhbnQuZm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICAgICAgICAgIGluZmFudC5mb3JtR3JvdXAuZ2V0KGluZmFudC5mb3JtQ29udHJvbE5hbWUpLnBhdGNoVmFsdWUoaW5mYW50LmNvdW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnNldFRvdGFsQ291bnQoKTtcbiAgICB0aGlzLnBhc3NlbmdlcnNDaGFuZ2UuZW1pdCh0aGlzLnBhc3NlbmdlcnMpO1xuICB9XG5cbiAgZ2V0TWF4KHBhc3NlbmdlcnM6IFBhc3NlbmdlcnNNb2RlbCk6IG51bWJlciB7XG4gICAgaWYgKHBhc3NlbmdlcnMudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5JbmZhbnQpIHtcbiAgICAgIGNvbnN0IGFkdWx0cyA9IHRoaXMucGFzc2VuZ2Vycy5maW5kKHggPT4geC50eXBlID09PSBQYXNzZW5nZXJUeXBlLkFkdWx0KTtcblxuICAgICAgaWYgKCFhZHVsdHMpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG5cbiAgICAgIGlmICghYWR1bHRzLmZvcm1Hcm91cCB8fCAhYWR1bHRzLmZvcm1Db250cm9sTmFtZSkge1xuICAgICAgICByZXR1cm4gYWR1bHRzLmNvdW50O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBhZHVsdHNGb3JtQ29udHJvbCA9IGFkdWx0cy5mb3JtR3JvdXAuZ2V0KGFkdWx0cy5mb3JtQ29udHJvbE5hbWUpO1xuXG4gICAgICBpZiAoIWFkdWx0c0Zvcm1Db250cm9sKSB7XG4gICAgICAgIHJldHVybiBhZHVsdHMuY291bnQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhZHVsdHNGb3JtQ29udHJvbC52YWx1ZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudG90YWxDb3VudCA+PSB0aGlzLm1heFBheENvdW50KSB7XG5cbiAgICAgIGlmICghcGFzc2VuZ2Vycy5mb3JtR3JvdXAgfHwgIXBhc3NlbmdlcnMuZm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICAgIHJldHVybiBwYXNzZW5nZXJzLmNvdW50O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwYXNzZW5nZXJzRm9ybUNvbnRyb2wgPSBwYXNzZW5nZXJzLmZvcm1Hcm91cC5nZXQocGFzc2VuZ2Vycy5mb3JtQ29udHJvbE5hbWUpO1xuXG4gICAgICBpZiAoIXBhc3NlbmdlcnNGb3JtQ29udHJvbCkge1xuICAgICAgICByZXR1cm4gcGFzc2VuZ2Vycy5jb3VudDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHBhc3NlbmdlcnNGb3JtQ29udHJvbC52YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMubWF4UGF4Q291bnQ7XG4gICAgfVxuICB9XG5cbiAgZ2V0TWluKHBhc3NlbmdlcnM6IFBhc3NlbmdlcnNNb2RlbCk6IG51bWJlciB7XG4gICAgaWYgKHBhc3NlbmdlcnMudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5BZHVsdCkge1xuICAgICAgcmV0dXJuIHRoaXMubWluQWR1bHRDb3VudDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRUb3RhbENvdW50KCkge1xuICAgIGNvbnN0IGFkdWx0ID0gdGhpcy5wYXNzZW5nZXJzLmZpbmQoeCA9PiB4LnR5cGUgPT09IFBhc3NlbmdlclR5cGUuQWR1bHQpO1xuICAgIGNvbnN0IGNoaWxkID0gdGhpcy5wYXNzZW5nZXJzLmZpbmQoeCA9PiB4LnR5cGUgPT09IFBhc3NlbmdlclR5cGUuQ2hpbGQpO1xuXG4gICAgbGV0IGFkdWx0Q291bnQgPSAwO1xuICAgIGxldCBjaGlsZENvdW50ID0gMDtcblxuICAgIGlmIChhZHVsdCkge1xuXG4gICAgICBpZiAoIWFkdWx0LmZvcm1Hcm91cCB8fCAhYWR1bHQuZm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICAgIGFkdWx0Q291bnQgPSBhZHVsdC5jb3VudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFkdWx0c0NvbnRyb2wgPSBhZHVsdC5mb3JtR3JvdXAuZ2V0KGFkdWx0LmZvcm1Db250cm9sTmFtZSk7XG5cbiAgICAgICAgaWYgKCFhZHVsdHNDb250cm9sKSB7XG4gICAgICAgICAgYWR1bHRDb3VudCA9IGFkdWx0LmNvdW50O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFkdWx0Q291bnQgPSBhZHVsdHNDb250cm9sLnZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNoaWxkKSB7XG4gICAgICBpZiAoIWNoaWxkLmZvcm1Hcm91cCB8fCAhY2hpbGQuZm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICAgIGNoaWxkQ291bnQgPSBjaGlsZC5jb3VudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNoaWxkc0NvbnRyb2wgPSBjaGlsZC5mb3JtR3JvdXAuZ2V0KGNoaWxkLmZvcm1Db250cm9sTmFtZSk7XG5cbiAgICAgICAgaWYgKCFjaGlsZHNDb250cm9sKSB7XG4gICAgICAgICAgY2hpbGRDb3VudCA9IGNoaWxkLmNvdW50O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNoaWxkQ291bnQgPSBjaGlsZHNDb250cm9sLnZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy50b3RhbENvdW50ID0gYWR1bHRDb3VudCArIGNoaWxkQ291bnQ7XG5cbiAgICBpZiAodGhpcy5uYXNGb3JtR3JvdXAgJiYgdGhpcy5uYXNGb3JtQ29udHJvbEdyb3VwQm9va2luZykge1xuICAgICAgY29uc3QgZ3JvdXBCb29raW5nQ29udHJvbCA9IHRoaXMubmFzRm9ybUdyb3VwLmdldCh0aGlzLm5hc0Zvcm1Db250cm9sR3JvdXBCb29raW5nKTtcblxuICAgICAgdGhpcy5pc0dyb3VwQm9va2luZyA9IHRoaXMudG90YWxDb3VudCA+PSB0aGlzLmdyb3VwQm9va2luZ0xpbWl0O1xuXG4gICAgICBpZiAodGhpcy5ncm91cEJvb2tpbmdMaW1pdCA8IDEpIHtcbiAgICAgICAgdGhpcy5pc0dyb3VwQm9va2luZyA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZ3JvdXBCb29raW5nQ29udHJvbC52YWx1ZSAhPT0gdGhpcy5pc0dyb3VwQm9va2luZykge1xuICAgICAgICBncm91cEJvb2tpbmdDb250cm9sLnBhdGNoVmFsdWUodGhpcy5pc0dyb3VwQm9va2luZyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCI8aDIgKm5nSWY9XCJ0aXRsZVwiXG4gIFtuYXNDbGFzc109XCJnZXRDbGFzcygndGl0bGUnLCBpc0dyb3VwQm9va2luZyAmJiAnZ3JvdXAtYm9va2luZycpXCI+e3t0aXRsZX19PG5nLWNvbnRhaW5lciAqbmdJZj1cImlzR3JvdXBCb29raW5nXCI+OlxuICAgIDxkaXY+e3tncm91cEJvb2tpbmdMYWJlbH19PC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9oMj5cbjx1bCBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2xpc3QnKVwiPlxuICA8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcGFzc2VuZ2VyczsgaW5kZXggYXMgY291bnRcIlxuICAgIFtuYXNDbGFzc109XCJnZXRDbGFzcygnbGlzdC1pdGVtJylcIj5cbiAgICA8bGFiZWwgW25hc0NsYXNzXT1cImdldENsYXNzKCdsYWJlbCcpXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0TGFiZWwoaXRlbS50eXBlKVwiPnt7Z2V0TGFiZWwoaXRlbS50eXBlKX19PC9sYWJlbD5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW0uZm9ybUdyb3VwIHx8ICFpdGVtLmZvcm1Db250cm9sTmFtZTsgZWxzZSByZWFjdGl2ZUZvcm1cIj5cbiAgICAgIDxuYXMtbnVtYmVyLWZpZWxkIGNvbXBhY3RcbiAgICAgICAgc3BhY2VsZXNzXG4gICAgICAgIHNpbXBsZVxuICAgICAgICBbYXJpYUxhYmVsXT1cImdldExhYmVsKGl0ZW0udHlwZSlcIlxuICAgICAgICBbYXJpYUxhYmVsU3VidHJhY3RdPVwiYXJpYUxhYmVsU3VidHJhY3RcIlxuICAgICAgICBbYXJpYUxhYmVsQWRkXT1cImFyaWFMYWJlbEFkZFwiXG4gICAgICAgIFtudW1iZXJdPVwiaXRlbS5jb3VudFwiXG4gICAgICAgIFttYXhdPVwiZ2V0TWF4KGl0ZW0pXCJcbiAgICAgICAgW21pbl09XCJnZXRNaW4oaXRlbSlcIlxuICAgICAgICAobnVtYmVyQ2hhbmdlKT1cInNldFBhc3NlbmdlcnNDb3VudChpdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgKGtleWRvd24pPVwia2V5RG93bigkZXZlbnQsIGNvdW50KVwiPjwvbmFzLW51bWJlci1maWVsZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI3JlYWN0aXZlRm9ybT5cbiAgICAgIDxuYXMtbnVtYmVyLWZpZWxkIGNvbXBhY3RcbiAgICAgICAgc3BhY2VsZXNzXG4gICAgICAgIHNpbXBsZVxuICAgICAgICBbYXJpYUxhYmVsXT1cImdldExhYmVsKGl0ZW0udHlwZSlcIlxuICAgICAgICBbYXJpYUxhYmVsU3VidHJhY3RdPVwiYXJpYUxhYmVsU3VidHJhY3RcIlxuICAgICAgICBbYXJpYUxhYmVsQWRkXT1cImFyaWFMYWJlbEFkZFwiXG4gICAgICAgIFtuYXNGb3JtR3JvdXBdPVwiaXRlbS5mb3JtR3JvdXBcIlxuICAgICAgICBbbmFzRm9ybUNvbnRyb2xOYW1lXT1cIml0ZW0uZm9ybUNvbnRyb2xOYW1lXCJcbiAgICAgICAgW251bWJlcl09XCJpdGVtLmZvcm1Hcm91cD8uZ2V0KGl0ZW0uZm9ybUNvbnRyb2xOYW1lKT8udmFsdWVcIlxuICAgICAgICBbbWF4XT1cImdldE1heChpdGVtKVwiXG4gICAgICAgIFttaW5dPVwiZ2V0TWluKGl0ZW0pXCJcbiAgICAgICAgKGtleWRvd24pPVwia2V5RG93bigkZXZlbnQsIGNvdW50KVwiXG4gICAgICAgIChudW1iZXJDaGFuZ2UpPVwic2V0UGFzc2VuZ2Vyc0NvdW50KGl0ZW0sICRldmVudClcIj48L25hcy1udW1iZXItZmllbGQ+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9saT5cbjwvdWw+Il19
280
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc2VuZ2VyLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3Bhc3Nlbmdlci1zZWxlY3QvcGFzc2VuZ2VyLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3Bhc3Nlbmdlci1zZWxlY3QvcGFzc2VuZ2VyLXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFlBQVksRUFFYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7O0FBRTlFOzs7RUFHRTtBQU1GLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxnQkFBZ0I7SUFnSTVEO1FBQ0UsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUEzSGhDOzs7O1VBSUU7UUFDTyxlQUFVLEdBQUcsSUFBSSxLQUFLLEVBQW1CLENBQUM7UUFnR25EOzs7O1VBSUU7UUFDUSxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBMEIsQ0FBQztRQUV4RTs7OztVQUlFO1FBQ1EsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRWhEOzs7O1VBSUU7UUFDUSxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFJcEQsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFD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SztnQkFTRywwQkFBMEI7c0JBQWxDLEtBQUs7Z0JBT0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQU9HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBT0ksZ0JBQWdCO3NCQUF6QixNQUFNO2dCQU9HLFdBQVc7c0JBQXBCLE1BQU07Z0JBT0csZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBOb3J3ZWdpYW4gQWlyIFNodXR0bGUuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZHJlbixcbiAgUXVlcnlMaXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUGFzc2VuZ2VyVHlwZSB9IGZyb20gJy4vZW51bXMvcGFzc2VuZ2VyLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBQYXNzZW5nZXJzTW9kZWwgfSBmcm9tICcuL21vZGVscy9wYXNzZW5nZXJzLm1vZGVsJztcbmltcG9ydCB7IE5hc0NvbXBvbmVudEJhc2UgfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UvbmFzLWNvbXBvbmVudC5iYXNlJztcbmltcG9ydCB7IE51bWJlckZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vbnVtYmVyLWZpZWxkL251bWJlci1maWVsZC5jb21wb25lbnQnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogTm9yd2VnaWFuIFBhc3NlbmdlciBTZWxlY3QgQ29tcG9uZW50IHwgRnVuY3Rpb25hbFxuKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25hcy1wYXNzZW5nZXItc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Bhc3Nlbmdlci1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYXNzZW5nZXItc2VsZWN0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUGFzc2VuZ2VyU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgTmFzQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGRyZW4oTnVtYmVyRmllbGRDb21wb25lbnQpIG51bWJlckZpZWxkcyE6IFF1ZXJ5TGlzdDxOdW1iZXJGaWVsZENvbXBvbmVudD47XG5cbiAgdG90YWxDb3VudDogbnVtYmVyO1xuICBpc0dyb3VwQm9va2luZzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBbiBhcnJheSBvZiBkaWZmZXJlbnQgcGFzc2VuZ2VyIHR5cGVzIHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQuXG4gICovXG4gIEBJbnB1dCgpIHBhc3NlbmdlcnMgPSBuZXcgQXJyYXk8UGFzc2VuZ2Vyc01vZGVsPigpO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSB0b3RhbCBtYXhpbXVtIGFtb3VudCBvZiBwYXNzZW5nZXJzLlxuICAqL1xuICBASW5wdXQoKSBtYXhQYXhDb3VudDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBtaW5pbXVtIGFtb3VudCBvZiBhZHVsdHMgdGhhdCBjYW4gYmUgc2VsZWN0ZWQuXG4gICovXG4gIEBJbnB1dCgpIG1pbkFkdWx0Q291bnQ6IG51bWJlcjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgbGltaXQgZm9yIHdoZW4gdGhlIHRvdGFsIGFtb3VudCBvZiBwYXNzZW5nZXJzIGV4Y2VlZHMgdG8gYmUgYSBncm91cCBib29raW5nLlxuICAqL1xuICBASW5wdXQoKSBncm91cEJvb2tpbmdMaW1pdDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgdGl0bGUgdGhhdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBkcm9wZG93bi5cbiAgKi9cbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGxhYmVsIGZvciB0aGUgYWR1bHRzIHBhc3NlbmdlciB0eXBlLlxuICAqL1xuICBASW5wdXQoKSBhZHVsdHNMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgbGFiZWwgZm9yIHRoZSBjaGlsZHJlbiBwYXNzZW5nZXIgdHlwZS5cbiAgKi9cbiAgQElucHV0KCkgY2hpbGRyZW5MYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBsYWJlbCBmb3IgdGhlIGluZmFudHMgcGFzc2VuZ2VyIHR5cGUuXG4gICAqL1xuICBASW5wdXQoKSBpbmZhbnRzTGFiZWw6IHN0cmluZztcblxuICAgIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgbGFiZWwgZm9yIHRoZSBhZHVsdHMgcGFzc2VuZ2VyIHR5cGUuXG4gICovXG4gICAgQElucHV0KCkgeW91dGhzTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGxhYmVsIHRoYXQgd2lsbCBhcHBlYXIgd2hlbiB0b3RhbCBudW1iZXIgb2Ygc2VsZWN0ZWQgcGFzc2VuZ2VycyBleGNlZWRzIHRoZSBncm91cCBib29raW5nIGxpbWl0XG4gICovXG4gIEBJbnB1dCgpIGdyb3VwQm9va2luZ0xhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQWRkcyB0aGUgcGFyZW50J3MgZm9ybSBncm91cC5cbiAgICogSXQgcmVxdWlyZXMgdGhhdCB0aGUgY29uc3VtZXIgaW5jbHVkZWQgUmVhY3RpdmVGb3Jtc01vZHVsZSBpbiBpdCdzIG1vZHVsZS5cbiAgICogSXQgaXMgcmVxdWllcmVkIHRvIGJlIGZpbGxlZCBpZiBuYXNGb3JtQ29udHJvbE5hbWUgYWRkZWQuXG4gICovXG4gIEBJbnB1dCgpIG5hc0Zvcm1Hcm91cDogRm9ybUdyb3VwO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgYSBmb3JtQ29udHJvbE5hbWUgZGlyZWN0aXZlIHRvIHRoZSBpbnB1dC5cbiAgICogSXQgcmVxdWlyZXMgdGhhdCB0aGUgY29uc3VtZXIgaW5jbHVkZWQgUmVhY3RpdmVGb3Jtc01vZHVsZSBpbiBpdCdzIG1vZHVsZS5cbiAgICogSXQgcmVxdWllcnMgdGhhdCB0aGUgbmFzRm9ybUdyb3VwIGlucHV0IGlzIGZpbGxlZC5cbiAgKi9cbiAgQElucHV0KCkgbmFzRm9ybUNvbnRyb2xHcm91cEJvb2tpbmc6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBUklBIGxhYmVsIGZvciB0aGUgc3VidHJhY3QgYnV0dG9ucy5cbiAgKi9cbiAgQElucHV0KCkgYXJpYUxhYmVsU3VidHJhY3Q6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBUklBIGxhYmVsIGZvciB0aGUgYWRkIGJ1dHRvbnMuXG4gICAqL1xuICBASW5wdXQoKSBhcmlhTGFiZWxBZGQ6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IE91dHB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gZXZlbnQgdGhhdCBpcyBmaXJlZCBldmVyeSB0aW1lIGEgcGFzc2VuZ2VyIHNlbGVjdGlvbiBjaGFuZ2UgaXMgcGVyZm9ybWVkLlxuICAqL1xuICBAT3V0cHV0KCkgcGFzc2VuZ2Vyc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8UGFzc2VuZ2Vyc01vZGVsPj4oKTtcblxuICAvKipcbiAgICogQHByb3BlcnR5IE91dHB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gZXZlbnQgdGhhdCBpcyBmaXJlZCBldmVyeSB0aW1lIGEgcGFzc2VuZ2VyIHNlbGVjdGlvbiBjaGFuZ2UgaXMgcGVyZm9ybWVkLlxuICAqL1xuICBAT3V0cHV0KCkgZm9jdXNPbk5leHQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKipcbiAgICogQHByb3BlcnR5IE91dHB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gZXZlbnQgdGhhdCBpcyBmaXJlZCBldmVyeSB0aW1lIGEgcGFzc2VuZ2VyIHNlbGVjdGlvbiBjaGFuZ2UgaXMgcGVyZm9ybWVkLlxuICAqL1xuICBAT3V0cHV0KCkgZm9jdXNPblByZXZpb3VzID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoJ25hcy1wYXNzZW5nZXItc2VsZWN0Jyk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldFRvdGFsQ291bnQoKTtcbiAgfVxuXG4gIGdldExhYmVsKHR5cGU6IFBhc3NlbmdlclR5cGUpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBQYXNzZW5nZXJUeXBlLkFkdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy5hZHVsdHNMYWJlbDtcbiAgICAgIGNhc2UgUGFzc2VuZ2VyVHlwZS5DaGlsZDpcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW5MYWJlbDtcbiAgICAgIGNhc2UgUGFzc2VuZ2VyVHlwZS5JbmZhbnQ6XG4gICAgICAgIHJldHVybiB0aGlzLmluZmFudHNMYWJlbDtcbiAgICAgIGNhc2UgUGFzc2VuZ2VyVHlwZS5Zb3V0aDpcbiAgICAgICAgcmV0dXJuIHRoaXMueW91dGhzTGFiZWw7XG4gICAgfVxuICB9XG5cbiAga2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgaWYgKGluZGV4ID09PSB0aGlzLnBhc3NlbmdlcnMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIHRoaXMubnVtYmVyRmllbGRzLmZpcnN0LmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm51bWJlckZpZWxkcy50b0FycmF5KClbaW5kZXggKyAxXS5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5udW1iZXJGaWVsZHMudG9BcnJheSgpW3RoaXMucGFzc2VuZ2Vycy5sZW5ndGggLSAxXS5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5udW1iZXJGaWVsZHMudG9BcnJheSgpW2luZGV4IC0gMV0uaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnVGFiJzpcbiAgICAgICAgaWYgKCFldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgIHRoaXMuZm9jdXNPbk5leHQuZW1pdCgpO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgdGhpcy5mb2N1c09uUHJldmlvdXMuZW1pdCgpO1xuICAgICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0UGFzc2VuZ2Vyc0NvdW50KHBhc3NlbmdlcnM6IFBhc3NlbmdlcnNNb2RlbCwgY291bnQ6IG51bWJlcik6IHZvaWQge1xuICAgIHBhc3NlbmdlcnMuY291bnQgPSBjb3VudDtcblxuICAgIGlmIChwYXNzZW5nZXJzLnR5cGUgPT09IFBhc3NlbmdlclR5cGUuQWR1bHQpIHtcbiAgICAgIGlmICh0aGlzLnBhc3NlbmdlcnMuZmluZCh4ID0+IHgudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5JbmZhbnQpKSB7XG4gICAgICAgIGNvbnN0IGluZmFudHNDb3VudCA9IHRoaXMucGFzc2VuZ2Vycy5maW5kKHggPT4geC50eXBlID09PSBQYXNzZW5nZXJUeXBlLkluZmFudCkuY291bnQ7XG4gICAgICAgIGlmIChpbmZhbnRzQ291bnQgPiBwYXNzZW5nZXJzLmNvdW50ICYmIHRoaXMucGFzc2VuZ2Vycy5maW5kKHggPT4geC50eXBlID09PSBQYXNzZW5nZXJUeXBlLkluZmFudCkpIHtcbiAgICAgICAgICBjb25zdCBpbmZhbnQgPSB0aGlzLnBhc3NlbmdlcnMuZmluZCh4ID0+IHgudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5JbmZhbnQpO1xuXG4gICAgICAgICAgaWYgKGluZmFudCkge1xuICAgICAgICAgICAgaW5mYW50LmNvdW50ID0gcGFzc2VuZ2Vycy5jb3VudDtcblxuICAgICAgICAgICAgaWYgKGluZmFudC5mb3JtR3JvdXAgJiYgaW5mYW50LmZvcm1Db250cm9sTmFtZSkge1xuICAgICAgICAgICAgICBpbmZhbnQuZm9ybUdyb3VwLmdldChpbmZhbnQuZm9ybUNvbnRyb2xOYW1lKS5wYXRjaFZhbHVlKGluZmFudC5jb3VudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBhc3NlbmdlcnMudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5BZHVsdCB8fCBwYXNzZW5nZXJzLnR5cGUgPT09IFBhc3NlbmdlclR5cGUuWW91dGgpIHtcbiAgICAgIGNvbnN0IGFkdWx0ID0gdGhpcy5wYXNzZW5nZXJzLmZpbmQoeCA9PiB4LnR5cGUgPT09IFBhc3NlbmdlclR5cGUuQWR1bHQpO1xuICAgICAgY29uc3QgeW91dGggPSB0aGlzLnBhc3NlbmdlcnMuZmluZCh4ID0+IHgudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5Zb3V0aCk7XG5cbiAgICAgIGlmIChhZHVsdCAmJiB5b3V0aCkge1xuICAgICAgICBpZiAocGFzc2VuZ2Vycy50eXBlID09PSBQYXNzZW5nZXJUeXBlLkFkdWx0ICYmIGFkdWx0LmNvdW50ID4gMCkge1xuICAgICAgICAgIHlvdXRoLmNvdW50ID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXNzZW5nZXJzLnR5cGUgPT09IFBhc3NlbmdlclR5cGUuWW91dGgpIHtcbiAgICAgICAgICBhZHVsdC5jb3VudCA9IHlvdXRoLmNvdW50ID4gMCA/IDAgOiB0aGlzLm1pbkFkdWx0Q291bnQgPyB0aGlzLm1pbkFkdWx0Q291bnQgOiBhZHVsdC5jb3VudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc2V0VG90YWxDb3VudCgpO1xuICAgIHRoaXMucGFzc2VuZ2Vyc0NoYW5nZS5lbWl0KHRoaXMucGFzc2VuZ2Vycyk7XG4gIH1cblxuICBnZXRNYXgocGFzc2VuZ2VyczogUGFzc2VuZ2Vyc01vZGVsKTogbnVtYmVyIHtcbiAgICBpZiAocGFzc2VuZ2Vycy50eXBlID09PSBQYXNzZW5nZXJUeXBlLkluZmFudCkge1xuICAgICAgY29uc3QgYWR1bHRzID0gdGhpcy5wYXNzZW5nZXJzLmZpbmQoeCA9PiB4LnR5cGUgPT09IFBhc3NlbmdlclR5cGUuQWR1bHQpO1xuICAgICAgY29uc3QgeW91dGhzID0gdGhpcy5wYXNzZW5nZXJzLmZpbmQoeCA9PiB4LnR5cGUgPT09IFBhc3NlbmdlclR5cGUuWW91dGgpO1xuXG4gICAgICBpZiAoIWFkdWx0cykge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cblxuICAgICAgaWYgKGFkdWx0cy5jb3VudCA+IDApIHtcbiAgICAgICAgaWYgKCFhZHVsdHMuZm9ybUdyb3VwIHx8ICFhZHVsdHMuZm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICAgICAgcmV0dXJuIGFkdWx0cy5jb3VudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFkdWx0c0Zvcm1Db250cm9sID0gYWR1bHRzLmZvcm1Hcm91cC5nZXQoYWR1bHRzLmZvcm1Db250cm9sTmFtZSk7XG5cbiAgICAgICAgaWYgKCFhZHVsdHNGb3JtQ29udHJvbCkge1xuICAgICAgICAgIHJldHVybiBhZHVsdHMuY291bnQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWR1bHRzRm9ybUNvbnRyb2wudmFsdWUgYXMgbnVtYmVyO1xuICAgICAgfVxuXG4gICAgICBpZiAoeW91dGhzICYmIHlvdXRocy5jb3VudCA+IDApIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnRvdGFsQ291bnQgPj0gdGhpcy5tYXhQYXhDb3VudCkge1xuXG4gICAgICBpZiAoIXBhc3NlbmdlcnMuZm9ybUdyb3VwIHx8ICFwYXNzZW5nZXJzLmZvcm1Db250cm9sTmFtZSkge1xuICAgICAgICByZXR1cm4gcGFzc2VuZ2Vycy5jb3VudDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcGFzc2VuZ2Vyc0Zvcm1Db250cm9sID0gcGFzc2VuZ2Vycy5mb3JtR3JvdXAuZ2V0KHBhc3NlbmdlcnMuZm9ybUNvbnRyb2xOYW1lKTtcblxuICAgICAgaWYgKCFwYXNzZW5nZXJzRm9ybUNvbnRyb2wpIHtcbiAgICAgICAgcmV0dXJuIHBhc3NlbmdlcnMuY291bnQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwYXNzZW5nZXJzRm9ybUNvbnRyb2wudmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm1heFBheENvdW50O1xuICAgIH1cbiAgfVxuXG4gIGdldE1pbihwYXNzZW5nZXJzOiBQYXNzZW5nZXJzTW9kZWwpOiBudW1iZXIge1xuICAgIGNvbnN0IGFkdWx0ID0gdGhpcy5wYXNzZW5nZXJzLmZpbmQoeCA9PiB4LnR5cGUgPT09IFBhc3NlbmdlclR5cGUuQWR1bHQpO1xuICAgIGNvbnN0IHlvdXRoID0gdGhpcy5wYXNzZW5nZXJzLmZpbmQoeCA9PiB4LnR5cGUgPT09IFBhc3NlbmdlclR5cGUuWW91dGgpO1xuXG4gICAgaWYgKHBhc3NlbmdlcnMudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5BZHVsdCAmJiB5b3V0aCkge1xuICAgICAgaWYgKHBhc3NlbmdlcnMudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5BZHVsdCAmJiBhZHVsdC5jb3VudCA8IDEgJiYgeW91dGguY291bnQgPT09IDApIHtcbiAgICAgICAgcGFzc2VuZ2Vycy5jb3VudCA9IDE7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgIH0gIGVsc2UgaWYgKCFhZHVsdCAmJiBwYXNzZW5nZXJzLnR5cGUgPT09IFBhc3NlbmdlclR5cGUuWW91dGgpIHtcbiAgICAgIGNvbnN0IG1pbiA9ICF0aGlzLm1pbkFkdWx0Q291bnQgPyAwIDogdGhpcy5taW5BZHVsdENvdW50O1xuICAgICAgcmV0dXJuIG1pbjtcbiAgICB9IGVsc2UgaWYgKHBhc3NlbmdlcnMudHlwZSA9PT0gUGFzc2VuZ2VyVHlwZS5BZHVsdCkge1xuICAgICAgcmV0dXJuIHRoaXMubWluQWR1bHRDb3VudDtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VG90YWxDb3VudCgpIHtcbiAgICBjb25zdCBhZHVsdCA9IHRoaXMucGFzc2VuZ2Vycy5maW5kKHggPT4geC50eXBlID09PSBQYXNzZW5nZXJUeXBlLkFkdWx0KTtcbiAgICBjb25zdCB5b3V0aCA9IHRoaXMucGFzc2VuZ2Vycy5maW5kKHggPT4geC50eXBlID09PSBQYXNzZW5nZXJUeXBlLllvdXRoKTtcbiAgICBjb25zdCBjaGlsZCA9IHRoaXMucGFzc2VuZ2Vycy5maW5kKHggPT4geC50eXBlID09PSBQYXNzZW5nZXJUeXBlLkNoaWxkKTtcblxuICAgIGxldCBhZHVsdENvdW50ID0gMDtcbiAgICBsZXQgeW91dGhDb3VudCA9IDA7XG4gICAgbGV0IGNoaWxkQ291bnQgPSAwO1xuXG4gICAgaWYgKGFkdWx0KSB7XG5cbiAgICAgIGlmICghYWR1bHQuZm9ybUdyb3VwIHx8ICFhZHVsdC5mb3JtQ29udHJvbE5hbWUpIHtcbiAgICAgICAgYWR1bHRDb3VudCA9IGFkdWx0LmNvdW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgYWR1bHRzQ29udHJvbCA9IGFkdWx0LmZvcm1Hcm91cC5nZXQoYWR1bHQuZm9ybUNvbnRyb2xOYW1lKTtcblxuICAgICAgICBpZiAoIWFkdWx0c0NvbnRyb2wpIHtcbiAgICAgICAgICBhZHVsdENvdW50ID0gYWR1bHQuY291bnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWR1bHRDb3VudCA9IGFkdWx0c0NvbnRyb2wudmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoeW91dGgpIHtcbiAgICAgIGlmICgheW91dGguZm9ybUdyb3VwIHx8ICF5b3V0aC5mb3JtQ29udHJvbE5hbWUpIHtcbiAgICAgICAgeW91dGhDb3VudCA9IHlvdXRoLmNvdW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgeW91dGhzQ29udHJvbCA9IHlvdXRoLmZvcm1Hcm91cC5nZXQoeW91dGguZm9ybUNvbnRyb2xOYW1lKTtcblxuICAgICAgICBpZiAoIXlvdXRoc0NvbnRyb2wpIHtcbiAgICAgICAgICB5b3V0aENvdW50ID0geW91dGguY291bnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgeW91dGhDb3VudCA9IHlvdXRoc0NvbnRyb2wudmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2hpbGQpIHtcbiAgICAgIGlmICghY2hpbGQuZm9ybUdyb3VwIHx8ICFjaGlsZC5mb3JtQ29udHJvbE5hbWUpIHtcbiAgICAgICAgY2hpbGRDb3VudCA9IGNoaWxkLmNvdW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgY2hpbGRzQ29udHJvbCA9IGNoaWxkLmZvcm1Hcm91cC5nZXQoY2hpbGQuZm9ybUNvbnRyb2xOYW1lKTtcblxuICAgICAgICBpZiAoIWNoaWxkc0NvbnRyb2wpIHtcbiAgICAgICAgICBjaGlsZENvdW50ID0gY2hpbGQuY291bnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2hpbGRDb3VudCA9IGNoaWxkc0NvbnRyb2wudmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnRvdGFsQ291bnQgPSBhZHVsdENvdW50ICsgY2hpbGRDb3VudCArIHlvdXRoQ291bnQ7XG5cbiAgICBpZiAodGhpcy5uYXNGb3JtR3JvdXAgJiYgdGhpcy5uYXNGb3JtQ29udHJvbEdyb3VwQm9va2luZykge1xuICAgICAgY29uc3QgZ3JvdXBCb29raW5nQ29udHJvbCA9IHRoaXMubmFzRm9ybUdyb3VwLmdldCh0aGlzLm5hc0Zvcm1Db250cm9sR3JvdXBCb29raW5nKTtcblxuICAgICAgdGhpcy5pc0dyb3VwQm9va2luZyA9IHRoaXMudG90YWxDb3VudCA+PSB0aGlzLmdyb3VwQm9va2luZ0xpbWl0O1xuXG4gICAgICBpZiAodGhpcy5ncm91cEJvb2tpbmdMaW1pdCA8IDEpIHtcbiAgICAgICAgdGhpcy5pc0dyb3VwQm9va2luZyA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZ3JvdXBCb29raW5nQ29udHJvbC52YWx1ZSAhPT0gdGhpcy5pc0dyb3VwQm9va2luZykge1xuICAgICAgICBncm91cEJvb2tpbmdDb250cm9sLnBhdGNoVmFsdWUodGhpcy5pc0dyb3VwQm9va2luZyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLmdyb3VwQm9va2luZ0xpbWl0KSB7XG4gICAgICB0aGlzLmlzR3JvdXBCb29raW5nID0gdGhpcy50b3RhbENvdW50ID49IHRoaXMuZ3JvdXBCb29raW5nTGltaXQ7XG4gICAgfVxuXG4gIH1cblxufVxuIiwiPGgyICpuZ0lmPVwidGl0bGVcIlxuICBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ3RpdGxlJywgaXNHcm91cEJvb2tpbmcgJiYgJ2dyb3VwLWJvb2tpbmcnKVwiPnt7dGl0bGV9fTxuZy1jb250YWluZXIgKm5nSWY9XCJpc0dyb3VwQm9va2luZ1wiPjpcbiAgICA8ZGl2Pnt7Z3JvdXBCb29raW5nTGFiZWx9fTwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvaDI+XG48dWwgW25hc0NsYXNzXT1cImdldENsYXNzKCdsaXN0JylcIj5cbiAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIHBhc3NlbmdlcnM7IGluZGV4IGFzIGNvdW50XCJcbiAgICBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2xpc3QtaXRlbScpXCI+XG4gICAgPGxhYmVsIFtuYXNDbGFzc109XCJnZXRDbGFzcygnbGFiZWwnKVwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImdldExhYmVsKGl0ZW0udHlwZSlcIj57e2dldExhYmVsKGl0ZW0udHlwZSl9fTwvbGFiZWw+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpdGVtLmZvcm1Hcm91cCB8fCAhaXRlbS5mb3JtQ29udHJvbE5hbWU7IGVsc2UgcmVhY3RpdmVGb3JtXCI+XG4gICAgICA8bmFzLW51bWJlci1maWVsZCBjb21wYWN0XG4gICAgICAgIHNwYWNlbGVzc1xuICAgICAgICBzaW1wbGVcbiAgICAgICAgW2FyaWFMYWJlbF09XCJnZXRMYWJlbChpdGVtLnR5cGUpXCJcbiAgICAgICAgW2FyaWFMYWJlbFN1YnRyYWN0XT1cImFyaWFMYWJlbFN1YnRyYWN0XCJcbiAgICAgICAgW2FyaWFMYWJlbEFkZF09XCJhcmlhTGFiZWxBZGRcIlxuICAgICAgICBbbnVtYmVyXT1cIml0ZW0uY291bnRcIlxuICAgICAgICBbbWF4XT1cImdldE1heChpdGVtKVwiXG4gICAgICAgIFttaW5dPVwiZ2V0TWluKGl0ZW0pXCJcbiAgICAgICAgKG51bWJlckNoYW5nZSk9XCJzZXRQYXNzZW5nZXJzQ291bnQoaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgIChrZXlkb3duKT1cImtleURvd24oJGV2ZW50LCBjb3VudClcIj48L25hcy1udW1iZXItZmllbGQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNyZWFjdGl2ZUZvcm0+XG4gICAgICA8bmFzLW51bWJlci1maWVsZCBjb21wYWN0XG4gICAgICAgIHNwYWNlbGVzc1xuICAgICAgICBzaW1wbGVcbiAgICAgICAgW2FyaWFMYWJlbF09XCJnZXRMYWJlbChpdGVtLnR5cGUpXCJcbiAgICAgICAgW2FyaWFMYWJlbFN1YnRyYWN0XT1cImFyaWFMYWJlbFN1YnRyYWN0XCJcbiAgICAgICAgW2FyaWFMYWJlbEFkZF09XCJhcmlhTGFiZWxBZGRcIlxuICAgICAgICBbbmFzRm9ybUdyb3VwXT1cIml0ZW0uZm9ybUdyb3VwXCJcbiAgICAgICAgW25hc0Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmZvcm1Db250cm9sTmFtZVwiXG4gICAgICAgIFtudW1iZXJdPVwiaXRlbS5mb3JtR3JvdXA/LmdldChpdGVtLmZvcm1Db250cm9sTmFtZSk/LnZhbHVlXCJcbiAgICAgICAgW21heF09XCJnZXRNYXgoaXRlbSlcIlxuICAgICAgICBbbWluXT1cImdldE1pbihpdGVtKVwiXG4gICAgICAgIChrZXlkb3duKT1cImtleURvd24oJGV2ZW50LCBjb3VudClcIlxuICAgICAgICAobnVtYmVyQ2hhbmdlKT1cInNldFBhc3NlbmdlcnNDb3VudChpdGVtLCAkZXZlbnQpXCI+PC9uYXMtbnVtYmVyLWZpZWxkPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbGk+XG48L3VsPiJdfQ==