@norwegian/core-components 6.31.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.
- package/esm2022/lib/components/filter/filter.component.mjs +1 -1
- package/esm2022/lib/components/passenger-select/passenger-select.component.mjs +65 -14
- package/fesm2022/norwegian-core-components.mjs +64 -13
- package/fesm2022/norwegian-core-components.mjs.map +1 -1
- package/lib/components/passenger-select/passenger-select.component.d.ts +7 -1
- package/package.json +1 -1
|
@@ -1028,7 +1028,7 @@ export class FilterComponent extends NasComponentBase {
|
|
|
1028
1028
|
}
|
|
1029
1029
|
}
|
|
1030
1030
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: FilterComponent, deps: [{ token: i1.DeviceHelper }, { token: i2.SortService }, { token: i3.AbandonedBasketService }, { token: i4.DateHelper }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1031
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: FilterComponent, selector: "nas-filter", inputs: { airportRelations: "airportRelations", ariaLabelClear: "ariaLabelClear", ariaLabelSubtract: "ariaLabelSubtract", ariaLabelBackdrop: "ariaLabelBackdrop", ariaLabelAdd: "ariaLabelAdd", allowedOriginAirports: "allowedOriginAirports", allowedDestinationAirports: "allowedDestinationAirports", displayLatestSearches: "displayLatestSearches", useSwitch: "useSwitch", displayClosestAirports: "displayClosestAirports", originAirportCode: "originAirportCode", destinationAirportCode: "destinationAirportCode", passengerSelectLabel: "passengerSelectLabel", maxPaxCount: "maxPaxCount", passengers: "passengers", minAdultCount: "minAdultCount", tripSwitchRoundTripLabel: "tripSwitchRoundTripLabel", tripSwitchOneWayLabel: "tripSwitchOneWayLabel", directOnlyLabel: "directOnlyLabel", directTransitLabel: "directTransitLabel", minimizeOnMobile: "minimizeOnMobile", expandedAccordionMobile: "expandedAccordionMobile", defaultSummarySeparator: "defaultSummarySeparator", lastSummarySeparator: "lastSummarySeparator", passengerSelectTitle: "passengerSelectTitle", passengerSelectAdultsLabel: "passengerSelectAdultsLabel", passengerSelectChildrenLabel: "passengerSelectChildrenLabel", passengerSelectInfantsLabel: "passengerSelectInfantsLabel", groupBookingLabel: "groupBookingLabel", allAirportsLabel: "allAirportsLabel", latestSearchesLabel: "latestSearchesLabel", closestAirportsLabel: "closestAirportsLabel", selectOriginFirstLabel: "selectOriginFirstLabel", labelOrigin: "labelOrigin", placeholderOrigin: "placeholderOrigin", labelDestination: "labelDestination", geolocationLabel: "geolocationLabel", geolocationBlockedLabel: "geolocationBlockedLabel", placeholderDestination: "placeholderDestination", keepSelection: "keepSelection", editSearchTitle: "editSearchTitle", nasFormGroup: "nasFormGroup", nasFormControlNameOrigin: "nasFormControlNameOrigin", nasFormControlNameDestination: "nasFormControlNameDestination", nasFormControlNameTripType: "nasFormControlNameTripType", nasFormControlNameDirectOnly: "nasFormControlNameDirectOnly", nasFormControlNameOutbound: "nasFormControlNameOutbound", nasFormControlNameInbound: "nasFormControlNameInbound", nasFormControlGroupBooking: "nasFormControlGroupBooking", nasFormControlNameSubsidyDiscount: "nasFormControlNameSubsidyDiscount", overrideOrigin: "overrideOrigin", enableSuggestions: "enableSuggestions", closestAirports: "closestAirports", minimize: "minimize", airports: "airports", tripType: "tripType", directOnly: "directOnly", groupBookingLimit: "groupBookingLimit", subsidyDiscounts: "subsidyDiscounts", selectedSubsidyDiscount: "selectedSubsidyDiscount", subsidyDiscountLabel: "subsidyDiscountLabel", ariaLabelPreviousMonth: "ariaLabelPreviousMonth", ariaLabelNextMonth: "ariaLabelNextMonth", noAvailableFlightsLabel: "noAvailableFlightsLabel", availableFlightsLabel: "availableFlightsLabel", disablePastSelection: "disablePastSelection", outboundLabel: "outboundLabel", inboundLabel: "inboundLabel", availability: "availability", outboundAvailableDates: "outboundAvailableDates", inboundAvailableDates: "inboundAvailableDates", times: "times", dateDisplayFormat: "dateDisplayFormat", timeDisplayFormat: "timeDisplayFormat", locale: "locale", compact: "compact", outboundDisabled: "outboundDisabled", inboundDisabled: "inboundDisabled", enableDatepickers: "enableDatepickers", minimizingLabel: "minimizingLabel", maximizingLabel: "maximizingLabel", directOnlyMobileLabel: "directOnlyMobileLabel", orLabel: "orLabel", invalidDestinationText: "invalidDestinationText", outboundSelectedDate: "outboundSelectedDate", inboundSelectedDate: "inboundSelectedDate", enableDestinationSelect: "enableDestinationSelect", enablePassengersSelect: "enablePassengersSelect", enableTripSwitch: "enableTripSwitch", enableTransitSwitch: "enableTransitSwitch" }, outputs: { originOpenChange: "originOpenChange", destinationOpenChange: "destinationOpenChange", passengerSelectOpenChange: "passengerSelectOpenChange", originChange: "originChange", destinationChange: "destinationChange", passengersChange: "passengersChange", tripTypeChange: "tripTypeChange", directOnlyChange: "directOnlyChange", outboundSelectedDateChange: "outboundSelectedDateChange", inboundSelectedDateChange: "inboundSelectedDateChange", outboundOpenChange: "outboundOpenChange", inboundOpenChange: "inboundOpenChange", outboundMonthChange: "outboundMonthChange", inboundMonthChange: "inboundMonthChange", focusOnNextChange: "focusOnNextChange", positionChange: "positionChange", subsidyDiscountInfoClick: "subsidyDiscountInfoClick" }, viewQueries: [{ propertyName: "passengerSelectDropdown", first: true, predicate: ["passengerSelectDropdown"], descendants: true }, { propertyName: "passengerSelect", first: true, predicate: ["passengerSelect"], descendants: true }, { propertyName: "tripSwitch", first: true, predicate: ["tripSwitch"], descendants: true }, { propertyName: "transitSwitch", first: true, predicate: ["transitSwitch"], descendants: true }, { propertyName: "airportSelect", first: true, predicate: ["airportSelect"], descendants: true }, { propertyName: "datepickerCombo", first: true, predicate: ["datepickerCombo"], descendants: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "tripTypeOneway", first: true, predicate: ["tripTypeOneway"], descendants: true }, { propertyName: "tripTypeRoundTrip", first: true, predicate: ["tripTypeRoundTrip"], descendants: true }, { propertyName: "transitTypeDirectOnly", first: true, predicate: ["transitTypeDirectOnly"], descendants: true }, { propertyName: "transitTypeTransit", first: true, predicate: ["transitTypeTransit"], descendants: true }, { propertyName: "subsidyDiscount", first: true, predicate: ["subsidyDiscount"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<nas-accordion *ngIf=\"deviceHelper?.isMobile() && exists(minimizeOnMobile); else filterTemplate\"\n simple\n containerOnToggle\n transparent\n [expanded]=\"expandedAccordionMobile\"\n [title]=\"editSearchTitle\"\n (toggleChange)=\"onAccordionToggleChange($event)\">\n <ng-container *ngTemplateOutlet=\"filterTemplate\"></ng-container>\n</nas-accordion>\n<div class=\"container\"\n *ngIf=\"deviceHelper?.isMobile() && exists(minimizeOnMobile) && displaySummary\">{{getSummary()}}</div>\n\n<ng-template #filterTemplate>\n <div #container\n [nasClass]=\"getContainerClass()\">\n <div [nasClass]=\"getFilterClass('filters', [exists(minimize) && 'minimized', maximize && 'maximize'])\">\n <ng-container *ngIf=\"airports?.length > 0\">\n <nas-airport-select *ngIf=\"airports && airportRelations && (enableDestinationSelect)\"\n #airportSelect\n combo\n [ariaLabelClear]=\"ariaLabelClear\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n [nasFormGroup]=\"nasFormGroup\"\n [nasFormControlNameOrigin]=\"nasFormControlNameOrigin\"\n [nasFormControlNameDestination]=\"nasFormControlNameDestination\"\n [useSwitch]=\"useSwitch\"\n [nasClass]=\"getAirportSelectClass()\"\n [airports]=\"airports\"\n [allowedOriginAiports]=\"allowedOriginAirports\"\n [allowedDestinationAirports]=\"allowedDestinationAirports\"\n [airportRelations]=\"airportRelations\"\n [latestSearchesOrigin]=\"latestSearchesOrigin\"\n [latestSearchesDestination]=\"latestSearchesDestination\"\n [displayLatestSearches]=\"displayLatestSearches\"\n [displayClosestAirports]=\"displayClosestAirports\"\n [originAirportCode]=\"originAirportCode\"\n [destinationAirportCode]=\"destinationAirportCode\"\n [allAirportsLabel]=\"allAirportsLabel\"\n [latestSearchesLabel]=\"latestSearchesLabel\"\n [closestAirportsLabel]=\"closestAirportsLabel\"\n [closestAirports]=\"closestAirports\"\n [selectOriginFirstLabel]=\"selectOriginFirstLabel\"\n [labelOrigin]=\"labelOrigin\"\n [placeholderOrigin]=\"placeholderOrigin\"\n [labelDestination]=\"labelDestination\"\n [geolocationLabel]=\"geolocationLabel\"\n [geolocationBlockedLabel]=\"geolocationBlockedLabel\"\n [placeholderDestination]=\"placeholderDestination\"\n [keepSelection]=\"keepSelection\"\n [invalidDestinationText]=\"invalidDestinationText\"\n (originChange)=\"setSelectedOriginAirport($event)\"\n (destinationChange)=\"onDestinationChange($event)\"\n (focusOnNext)=\"setFocusOnPassengerSelect($event)\"\n (originOpenChange)=\"onOriginOpen($event)\"\n (destinationOpenChange)=\"onDestinationOpen($event)\"\n (positionChange)=\"getClosestAirports($event)\"></nas-airport-select>\n <nas-airport-select *ngIf=\"airports && (!enableDestinationSelect)\"\n #airportSelect\n [ariaLabelClear]=\"ariaLabelClear\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n [nasFormGroup]=\"nasFormGroup\"\n [nasFormControlNameOrigin]=\"nasFormControlNameOrigin\"\n [useSwitch]=\"useSwitch\"\n [nasClass]=\"getClass('airport-origin-select')\"\n [airports]=\"airports\"\n [allowedOriginAiports]=\"allowedOriginAirports\"\n [airportRelations]=\"airportRelations\"\n [latestSearchesOrigin]=\"latestSearchesOrigin\"\n [displayLatestSearches]=\"displayLatestSearches\"\n [displayClosestAirports]=\"displayClosestAirports\"\n [originAirportCode]=\"originAirportCode\"\n [allAirportsLabel]=\"allAirportsLabel\"\n [latestSearchesLabel]=\"latestSearchesLabel\"\n [closestAirportsLabel]=\"closestAirportsLabel\"\n [closestAirports]=\"closestAirports\"\n [selectOriginFirstLabel]=\"selectOriginFirstLabel\"\n [labelOrigin]=\"labelOrigin\"\n [placeholderOrigin]=\"placeholderOrigin\"\n [geolocationLabel]=\"geolocationLabel\"\n [geolocationBlockedLabel]=\"geolocationBlockedLabel\"\n [keepSelection]=\"keepSelection\"\n (originChange)=\"setSelectedOriginAirport($event)\"\n (focusOnNext)=\"setFocusOnPassengerSelect($event)\"\n (originOpenChange)=\"onOriginOpen($event)\"\n (positionChange)=\"getClosestAirports($event)\"></nas-airport-select>\n <nas-suggestions *ngIf=\"(closestAirports || latestSearchesOrigin) && exists(enableSuggestions)\"\n [nasClass]=\"getFilterClass('suggestions')\"\n [suggestions]=\"getSuggestions()\"\n [orLabel]=\"orLabel\"\n (airportSelect)=\"setSelectedOriginAirport($event)\"></nas-suggestions>\n </ng-container>\n <ng-container *ngIf=\"shouldMaximize()\">\n <div\n [nasClass]=\"!enableDestinationSelect ? getClass('origin-combined') :\n getTravelDetailsClass('', ['combined', exists(enableDatepickers) && 'no-border', exists(minimize) && 'minimized'])\">\n <ng-container *ngIf=\"enablePassengersSelect\">\n <nas-dropdown #passengerSelectDropdown\n *ngIf=\"passengers?.length > 0\"\n [nasClass]=\"getTravelDetailsClass('dropdown', 'passengers')\"\n [cssClass]=\"getTravelDetailsClass('dropdown')\"\n [label]=\"passengerSelectLabel\"\n [labelStyle]=\"{'width': '102px'}\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n (openChange)=\"onPassengerSelectOpen($event)\"\n (keydown)=\"passengerKeyDown($event)\">\n <nas-passenger-select #passengerSelect\n [ariaLabelAdd]=\"ariaLabelAdd\"\n [ariaLabelSubtract]=\"ariaLabelSubtract\"\n [adultsLabel]=\"passengerSelectAdultsLabel\"\n [childrenLabel]=\"passengerSelectChildrenLabel\"\n [infantsLabel]=\"passengerSelectInfantsLabel\"\n [maxPaxCount]=\"maxPaxCount\"\n [minAdultCount]=\"minAdultCount\"\n [title]=\"passengerSelectTitle\"\n [nasFormGroup]=\"nasFormGroup\"\n [nasFormControlGroupBooking]=\"nasFormControlGroupBooking\"\n [groupBookingLabel]=\"groupBookingLabel\"\n [groupBookingLimit]=\"groupBookingLimit\"\n (focusOnNext)=\"onPassengersSelectFocusOnNext()\"\n (focusOnPrevious)=\"onPassengersSelectFocusOnPrevious()\"\n [(passengers)]=\"passengers\"></nas-passenger-select>\n </nas-dropdown>\n </ng-container>\n <ng-container *ngIf=\"enableTripSwitch\">\n <nas-dropdown *ngIf=\"tripSwitchOneWayLabel && tripSwitchRoundTripLabel\"\n #tripSwitch\n [nasClass]=\"getTravelDetailsClass('dropdown', 'trip-type')\"\n [cssClass]=\"getTravelDetailsClass('dropdown')\"\n [label]=\"getTripSwitchLabel()\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n (openChange)=\"onTripSwitchOpen($event)\"\n (keydown)=\"onTripSwitchKeyDown($event)\">\n <div [nasClass]=\"getTravelDetailsClass('actions')\">\n <button type=\"button\"\n #tripTypeRoundTrip\n [nasClass]=\"getTravelDetailsClass('action', tripType === 2 && 'active')\"\n (click)=\"onTripTypeChange(2)\">\n <nas-icon [type]=\"'medium'\"\n [icon]=\"tripType === 2 ? 'flight-return--light' : 'flight-return'\"></nas-icon>\n <span [nasClass]=\"getTravelDetailsClass('title', 'small')\">{{tripSwitchRoundTripLabel}}</span>\n </button>\n <button type=\"button\"\n #tripTypeOneway\n [nasClass]=\"getTravelDetailsClass('action', tripType === 1 && 'active')\"\n (click)=\"onTripTypeChange(1)\">\n <nas-icon [type]=\"'medium'\"\n [icon]=\"tripType === 1 ? 'flight-oneway--light' : 'flight-oneway'\"></nas-icon>\n <span [nasClass]=\"getTravelDetailsClass('title', ['small'])\">{{tripSwitchOneWayLabel}}</span>\n </button>\n </div>\n </nas-dropdown>\n </ng-container>\n <ng-container *ngIf=\"enableTransitSwitch\">\n <nas-dropdown *ngIf=\"directOnlyLabel && directTransitLabel\"\n #transitSwitch\n [nasClass]=\"getTravelDetailsClass('dropdown', 'transit-type')\"\n [cssClass]=\"getTravelDetailsClass('dropdown')\"\n [label]=\"getTransitLabel()\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n (openChange)=\"onTransitSwitchOpen($event)\"\n (keydown)=\"transitKeyDown($event)\">\n <div [nasClass]=\"getTravelDetailsClass('actions')\">\n <button type=\"button\"\n #transitTypeTransit\n [nasClass]=\"getTravelDetailsClass('action', !directOnly && 'active')\"\n (click)=\"onTransitChange(false)\">\n <span [nasClass]=\"getTravelDetailsClass('transit-icon')\">\n <span [nasClass]=\"getTravelDetailsClass('transit-icon-stop')\"></span>\n </span>\n <span [nasClass]=\"getTravelDetailsClass('title', 'small')\">{{directTransitLabel}}</span>\n </button>\n <button [nasClass]=\"getTravelDetailsClass('action', directOnly && 'active')\"\n type=\"button\"\n #transitTypeDirectOnly\n (click)=\"onTransitChange(true)\">\n <span [nasClass]=\"getTravelDetailsClass('transit-icon')\"></span>\n <span [nasClass]=\"getTravelDetailsClass('title', 'small')\">{{directOnlyLabel}}</span>\n </button>\n </div>\n </nas-dropdown>\n </ng-container>\n </div>\n <div *ngIf=\"exists(enableDatepickers)\"\n [nasClass]=\"getDatePickersClass()\">\n <nas-datepicker-combo #datepickerCombo\n compact\n [nasFormGroup]=\"nasFormGroup\"\n [nasFormControlNameOutbound]=\"nasFormControlNameOutbound\"\n [nasFormControlNameInbound]=\"nasFormControlNameInbound\"\n [availability]=\"availability\"\n [availableFlightsLabel]=\"availableFlightsLabel\"\n [dateDisplayFormat]=\"dateDisplayFormat\"\n [disablePastSelection]=\"disablePastSelection\"\n [locale]=\"locale\"\n [noAvailableFlightsLabel]=\"noAvailableFlightsLabel\"\n [inboundAvailableDates]=\"inboundAvailableDates\"\n [inboundLabel]=\"inboundLabel\"\n [noAvailableFlightsLabel]=\"noAvailableFlightsLabel\"\n [outboundAvailableDates]=\"outboundAvailableDates\"\n [outboundLabel]=\"outboundLabel\"\n [timeDisplayFormat]=\"timeDisplayFormat\"\n [times]=\"times\"\n [outboundDisabled]=\"outboundDisabled\"\n [inboundDisabled]=\"inboundDisabled\"\n [outboundOnly]=\"tripType === 1\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n [ariaLabelPreviousMonth]=\"ariaLabelPreviousMonth\"\n [ariaLabelNextMonth]=\"ariaLabelNextMonth\"\n (focusOnNextChange)=\"onFocusOnNextChange($event)\"\n (focusOnPreviousChange)=\"onDatepickerFocusOnPrevious($event)\"\n (inboundMonthChange)=\"onInboundMonthChange($event)\"\n (outboundMonthChange)=\"onOutboundMonthChange($event)\"\n [(outboundOpen)]=\"outboundOpen\"\n [(inboundOpen)]=\"inboundOpen\"\n [(inboundSelectedDate)]=\"inboundSelectedDate\"\n [(outboundSelectedDate)]=\"outboundSelectedDate\">\n </nas-datepicker-combo>\n </div>\n <div *ngIf=\"subsidyDiscounts && subsidyDiscounts.length > 0\"\n [nasClass]=\"getFilterClass('subsidy-discount')\">\n <nas-subsidy-discount #subsidyDiscount\n [discounts]=\"subsidyDiscounts\"\n [selectedDiscount]=\"selectedSubsidyDiscount\"\n [label]=\"subsidyDiscountLabel\"\n (infoButtonClick)=\"onSubsidyDiscountInfoClick()\"\n (discountSelectChange)=\"onSubsidyDiscountSelectChange($event)\"\n (infoButtonKeydown)=\"onSubsidyDiscountInfoButtonKeydown($event)\"></nas-subsidy-discount>\n </div>\n </ng-container>\n </div>\n </div>\n</ng-template>", styles: ["@keyframes fade-in{0%{opacity:0}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-out{to{opacity:0}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}.nas-filter{background-color:#f1f1f1;position:relative;z-index:6}.nas-filter__title{margin-top:24px;font-size:28px;line-height:34px}@media screen and (min-width: 640px){.nas-filter__title{font-size:32px;line-height:38px}}.nas-filter__title--md{margin-top:60px}.nas-filter__filters{margin-top:12px;display:flex;flex-wrap:wrap;order:2}.nas-filter__filters .nas-filter__date-combo{order:2;flex:1;z-index:2}.nas-filter__filters--minimized .nas-filter__airport-select:after{content:\"\";position:absolute;bottom:-3px;left:0px;width:100%;border-bottom:3px solid #c3c3c3}.nas-filter__filters--maximize .nas-filter__airport-select:after{display:none}.nas-filter__filters--md .nas-filter__date-combo{flex:0 0 100%}.nas-filter__filters--lg{display:flex;align-items:stretch}.nas-filter__filters--lg .nas-filter__date-combo{order:3;flex:0 0 100%;z-index:1}.nas-filter__filters--lg .nas-filter__suggestions{order:3}.nas-filter__filters--lg .nas-filter__filters--minimized .nas-filter__airport-select{margin-right:0;flex:0 1 100%}.nas-filter__filters--lg .nas-filter__filters--maximize .nas-filter__airport-select{margin-right:3px;flex:auto}.nas-filter__filters--lg.nas-filter__filters--maximize .nas-filter__date-combo{border-bottom:3px solid #c3c3c3}.nas-filter__suggestions{flex-basis:100%;position:relative;margin-top:3px}.nas-filter__suggestions:before{content:\"\";position:absolute;top:-3px;left:0px;width:100%;border-top:3px solid #c3c3c3}.nas-filter__airport-select{order:0;flex:0 0 100%;position:relative}.nas-filter__airport-select--lg{width:0;margin:0 3px 0 0;flex:1 1 auto}.nas-filter__toggler{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;font-size:18px;line-height:26px;color:#003251;margin-top:6px;z-index:1}.nas-filter__toggler .nas-filter__toggle-action{cursor:pointer;margin-top:2px;float:right}.nas-filter__toggler .nas-filter__direct-only{display:inline-block}.travel-details{position:relative;display:flex;margin:0;flex-wrap:wrap;z-index:1}.travel-details__list{margin-top:12px}.travel-details__list-item{display:flex;align-items:center;justify-content:space-between;padding:6px 0 0}.travel-details__list-item:not(:last-child){padding:6px 0 9px;border-bottom:2px solid #f1f1f1}.travel-details__label{flex-grow:2;margin:0 6px 0 0}.travel-details__title{font-size:18px;line-height:26px;display:block;min-width:124px}.travel-details__title--small{font-size:16px;line-height:26px;margin:0}.travel-details__actions{display:flex}.travel-details__action{padding:12px;width:100%;background-color:#fff}.travel-details__action:hover,.travel-details__action:focus{background-color:#e3e3e3}.travel-details__action--active,.travel-details__action--active:hover,.travel-details__action--active:focus{color:#fff;background-color:#003251}.travel-details__action:focus{outline:none;box-shadow:inset 0 0 2px #c3c3c3,inset 0 0 2px 3px #3b99fc;z-index:1}.travel-details__icon{margin-bottom:9px}.travel-details__dropdown{margin-right:0}.travel-details__dropdown:after{content:\"\";position:absolute;bottom:-3px;left:0px;width:100%;border-bottom:3px solid #c3c3c3}.travel-details__dropdown--trip-type{order:1;flex:1;margin-right:3px;margin-bottom:3px}.travel-details__dropdown--transit-type{order:2;flex:1;margin-bottom:3px}.travel-details__dropdown--passengers{order:3;flex:1 0 100%;margin-bottom:3px}.travel-details__dropdown--md.travel-details__dropdown--trip-type{order:2;flex:1;margin-right:3px}.travel-details__dropdown--md.travel-details__dropdown--transit-type{order:3;flex:1}.travel-details__dropdown--md.travel-details__dropdown--passengers{order:1;flex:1;margin-right:3px}.travel-details__dropdown--lg.travel-details__dropdown--trip-type{order:2;flex:1 1 auto;margin-right:3px}.travel-details__dropdown--lg.travel-details__dropdown--transit-type{order:3;flex:1 1 auto}.travel-details__dropdown--lg.travel-details__dropdown--passengers{order:1;flex:1 1 auto;margin-right:3px}.travel-details__dropdown--lg:focus{outline:none}.travel-details__dropdown--lg:after{display:none}.travel-details__transit-icon{position:relative;display:flex;justify-content:center;width:calc(100% - 48px);margin:12px auto;height:24px;background-color:inherit}.travel-details__transit-icon:before{content:\"\";position:absolute;height:2px;left:0;width:100%;top:calc(50% - 1px);background-color:currentColor}.travel-details__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)}.travel-details__transit-icon-stop{position:relative;top:calc(50% - 5px);width:10px;height:10px;border:2px solid currentColor;border-radius:50%;background-color:inherit}.travel-details--combined{order:3;flex:0 0 100%}.travel-details--combined.travel-details--md:after{content:\"\";position:absolute;bottom:-6px;left:0px;width:100%;border-bottom:3px solid #c3c3c3}.travel-details--combined.travel-details--md .travel-details__dropdown{margin:0 3px 0 0}.travel-details--combined.travel-details--md .travel-details__dropdown:last-child{margin:0}.travel-details--combined.travel-details--md .dropdown__toggle{height:calc(100% - 3px);margin:0;padding-left:16px;padding-right:16px}.travel-details--combined.travel-details--lg{order:2;flex:0 0 auto;margin:0 0 0 -3px;padding-left:3px;z-index:2}.travel-details--combined.travel-details--lg:after{content:\"\";position:absolute;bottom:-3px;left:0px;width:100%;border-bottom:3px solid #c3c3c3}.travel-details--combined.travel-details--lg .dropdown__toggle{height:inherit}@media (min-width: 1000px){.travel-details--no-border:after{border-bottom:none}}::ng-deep .nas-filter__filters .travel-details--no-border:after{display:none}::ng-deep .nas-filter__filters .travel-details__dropdown .nas-dropdown__toggle{padding:20px!important;width:100%;height:100%}::ng-deep .nas-filter__filters .travel-details__dropdown .nas-dropdown__toggle:hover:after{display:none}::ng-deep .nas-filter__filters .travel-details__dropdown .nas-dropdown__toggle nas-icon{float:right}::ng-deep .nas-filter__filters .travel-details__dropdown .nas-dropdown__toggle:focus{outline:none}::ng-deep .nas-filter__filters .travel-details__dropdown .nas-dropdown{width:100%}::ng-deep .nas-filter__filters .travel-details__dropdown .nas-dropdown:focus{outline:none}@media (min-width: 640px){::ng-deep .nas-filter__filters .travel-details__dropdown:after{border-bottom:none}}::ng-deep .nas-filter__filters .nas-filter__date-combo .nas-datepicker__date-picker-wrapper{border-bottom:none!important}::ng-deep .nas-filter__filters .nas-filter__date-combo--side-by-side .nas-datepicker-combo__separator{display:block;border-bottom:none!important}::ng-deep .nas-filter__filters .nas-airport-select__input-line{border-top:none!important}::ng-deep .nas-filter__filters .nas-airport-select-combo__separator{border-bottom:none!important}::ng-deep .nas-filter__filters .nas-dropdown__toggle{height:64px!important}::ng-deep .nas-filter__filters .nas-datepicker-combo__separator{display:none}::ng-deep .nas-filter__filters--lg .nas-dropdown__toggle{display:flex}::ng-deep .nas-filter__filters--lg .nas-filter__date-combo .nas-datepicker__date-picker-wrapper{border-bottom:3px solid #c3c3c3}::ng-deep .nas-filter__filters--lg .nas-airport-select__input-line{border-top:3px solid #c3c3c3!important}::ng-deep .nas-filter__filters--lg .nas-datepicker-combo__separator{border-bottom:3px solid #c3c3c3!important}::ng-deep .nas-filter__filters--lg .nas-airport-select-combo__separator{border-bottom:3px solid #c3c3c3!important}::ng-deep .nas-filter__rotate{transform:rotate(180deg)}::ng-deep .nas-filter__rotate-enter,::ng-deep .nas-filter__rotate-leave-active{transform-origin:center top;transform-style:preserve-3d;-webkit-backface-visibility:hidden;backface-visibility:hidden}::ng-deep .nas-filter__rotate-enter{animation:flip-in .55s ease both}::ng-deep .nas-filter__rotate-leave-active{animation:flip-out .2s ease-out both}::ng-deep .nas-filter__airport-select--no-border .nas-airport-select__input-line{border-top:none}::ng-deep .nas-filter__airport-select--no-border .nas-airport-select-combo__separator{border-top:none}::ng-deep .nas-filter__airport-select--no-border .nas-airport-select__results-wrapper{margin-top:0}::ng-deep .nas-filter__airport-select--no-border .nas-airport-select__results{top:-3px}::ng-deep .nas-filter__airport-select--no-border .nas-airport-select__icon{bottom:18px}::ng-deep .nas-filter__airport-select--no-border .nas-airport-select:after{display:none}::ng-deep .nas-filter__airport-select .nas-airport-select__input-line{display:none}::ng-deep .nas-filter__airport-origin-select{width:100%;max-width:100%}::ng-deep .nas-filter__airport-origin-select .nas-airport-select:only-child{max-width:100%}@media (min-width: 640px){::ng-deep .nas-filter__airport-origin-select{max-width:360px;flex:auto;margin-right:3px}::ng-deep .nas-filter__airport-origin-select .nas-airport-select:only-child{width:auto;max-width:360px}}::ng-deep .nas-filter__origin-combined{border-bottom:3px solid #c3c3c3;order:3;flex:0 0 100%;display:flex;flex-wrap:wrap}@media (min-width: 1000px){::ng-deep .nas-filter__origin-combined{display:flex;flex:none}::ng-deep .nas-filter__origin-combined .nas-dropdown__toggle nas-icon{float:none!important}}::ng-deep .nas-filter__subsidy-discount{order:3}::ng-deep .nas-filter__subsidy-discount .nas-subsidy-discount{margin-top:16px}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i6.NasClassDirective, selector: "[nasClass]", inputs: ["nasClass", "attr.class"] }, { kind: "component", type: i7.AirportSelectComponent, selector: "nas-airport-select", inputs: ["airports", "airportRelations", "latestSearchesOrigin", "latestSearchesDestination", "closestAirports", "allowedOriginAiports", "allowedDestinationAirports", "displayLatestSearches", "displayClosestAirports", "combo", "useSwitch", "allAirportsLabel", "latestSearchesLabel", "closestAirportsLabel", "geolocationLabel", "geolocationBlockedLabel", "selectOriginFirstLabel", "invalidDestinationText", "labelOrigin", "placeholderOrigin", "labelDestination", "placeholderDestination", "keepSelection", "nasFormControlNameOrigin", "nasFormControlNameDestination", "nasFormGroup", "originAirportCode", "destinationAirportCode", "ariaLabelClear", "ariaLabelBackdrop"], outputs: ["originChange", "originOpenChange", "destinationChange", "destinationOpenChange", "focusOnNext", "positionChange"] }, { kind: "component", type: i8.DropdownComponent, selector: "nas-dropdown", inputs: ["open", "id", "ariaLabelBackdrop", "cssClass", "inline", "label", "stretched", "labelStyle"], outputs: ["openChange"] }, { kind: "component", type: i9.PassengerSelectComponent, selector: "nas-passenger-select", inputs: ["passengers", "maxPaxCount", "minAdultCount", "groupBookingLimit", "title", "adultsLabel", "childrenLabel", "infantsLabel", "groupBookingLabel", "nasFormGroup", "nasFormControlGroupBooking", "ariaLabelSubtract", "ariaLabelAdd"], outputs: ["passengersChange", "focusOnNext", "focusOnPrevious"] }, { kind: "component", type: i10.AccordionComponent, selector: "nas-accordion", inputs: ["expanded", "title", "badge", "icon", "simple", "spaced", "small", "inverted", "containerOnToggle", "nopadding", "transparent", "approve", "primary", "warning", "badgeInfo", "badgeSuccess", "badgeWarning", "badgeError", "cssClass", "cssStyle"], outputs: ["toggleChange"] }, { kind: "component", type: i11.IconComponent, selector: "nas-icon", inputs: ["icon", "type", "isIndicator", "lightCircularBackground", "cssClass"] }, { kind: "component", type: i12.DatepickerComboComponent, selector: "nas-datepicker-combo", inputs: ["ariaLabelBackdrop", "outboundOpen", "inboundOpen", "noAvailableFlightsLabel", "availableFlightsLabel", "disablePastSelection", "outboundDisabled", "inboundDisabled", "outboundOnly", "outboundLabel", "inboundLabel", "availability", "outboundAvailableDates", "inboundAvailableDates", "times", "dateDisplayFormat", "timeDisplayFormat", "locale", "compact", "nasFormGroup", "nasFormControlNameOutbound", "nasFormControlNameInbound", "outboundSelectedDate", "inboundSelectedDate", "disableBackdrop", "outboundSelectedTime", "inboundSelectedTime", "ariaLabelPreviousMonth", "ariaLabelNextMonth", "inboundLowerLimitDateOffset"], outputs: ["outboundSelectedDateChange", "inboundSelectedDateChange", "outboundOpenChange", "inboundOpenChange", "outboundMonthChange", "inboundMonthChange", "focusOnNextChange", "focusOnPreviousChange"] }, { kind: "component", type: i13.SubsidyDiscountComponent, selector: "nas-subsidy-discount", inputs: ["label", "icon", "selectedDiscount", "discounts"], outputs: ["infoButtonClick", "infoButtonKeydown", "discountSelectChange"] }, { kind: "component", type: i14.SuggestionsComponent, selector: "nas-suggestions", inputs: ["suggestions", "orLabel"], outputs: ["airportSelect"] }] }); }
|
|
1031
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: FilterComponent, selector: "nas-filter", inputs: { airportRelations: "airportRelations", ariaLabelClear: "ariaLabelClear", ariaLabelSubtract: "ariaLabelSubtract", ariaLabelBackdrop: "ariaLabelBackdrop", ariaLabelAdd: "ariaLabelAdd", allowedOriginAirports: "allowedOriginAirports", allowedDestinationAirports: "allowedDestinationAirports", displayLatestSearches: "displayLatestSearches", useSwitch: "useSwitch", displayClosestAirports: "displayClosestAirports", originAirportCode: "originAirportCode", destinationAirportCode: "destinationAirportCode", passengerSelectLabel: "passengerSelectLabel", maxPaxCount: "maxPaxCount", passengers: "passengers", minAdultCount: "minAdultCount", tripSwitchRoundTripLabel: "tripSwitchRoundTripLabel", tripSwitchOneWayLabel: "tripSwitchOneWayLabel", directOnlyLabel: "directOnlyLabel", directTransitLabel: "directTransitLabel", minimizeOnMobile: "minimizeOnMobile", expandedAccordionMobile: "expandedAccordionMobile", defaultSummarySeparator: "defaultSummarySeparator", lastSummarySeparator: "lastSummarySeparator", passengerSelectTitle: "passengerSelectTitle", passengerSelectAdultsLabel: "passengerSelectAdultsLabel", passengerSelectChildrenLabel: "passengerSelectChildrenLabel", passengerSelectInfantsLabel: "passengerSelectInfantsLabel", groupBookingLabel: "groupBookingLabel", allAirportsLabel: "allAirportsLabel", latestSearchesLabel: "latestSearchesLabel", closestAirportsLabel: "closestAirportsLabel", selectOriginFirstLabel: "selectOriginFirstLabel", labelOrigin: "labelOrigin", placeholderOrigin: "placeholderOrigin", labelDestination: "labelDestination", geolocationLabel: "geolocationLabel", geolocationBlockedLabel: "geolocationBlockedLabel", placeholderDestination: "placeholderDestination", keepSelection: "keepSelection", editSearchTitle: "editSearchTitle", nasFormGroup: "nasFormGroup", nasFormControlNameOrigin: "nasFormControlNameOrigin", nasFormControlNameDestination: "nasFormControlNameDestination", nasFormControlNameTripType: "nasFormControlNameTripType", nasFormControlNameDirectOnly: "nasFormControlNameDirectOnly", nasFormControlNameOutbound: "nasFormControlNameOutbound", nasFormControlNameInbound: "nasFormControlNameInbound", nasFormControlGroupBooking: "nasFormControlGroupBooking", nasFormControlNameSubsidyDiscount: "nasFormControlNameSubsidyDiscount", overrideOrigin: "overrideOrigin", enableSuggestions: "enableSuggestions", closestAirports: "closestAirports", minimize: "minimize", airports: "airports", tripType: "tripType", directOnly: "directOnly", groupBookingLimit: "groupBookingLimit", subsidyDiscounts: "subsidyDiscounts", selectedSubsidyDiscount: "selectedSubsidyDiscount", subsidyDiscountLabel: "subsidyDiscountLabel", ariaLabelPreviousMonth: "ariaLabelPreviousMonth", ariaLabelNextMonth: "ariaLabelNextMonth", noAvailableFlightsLabel: "noAvailableFlightsLabel", availableFlightsLabel: "availableFlightsLabel", disablePastSelection: "disablePastSelection", outboundLabel: "outboundLabel", inboundLabel: "inboundLabel", availability: "availability", outboundAvailableDates: "outboundAvailableDates", inboundAvailableDates: "inboundAvailableDates", times: "times", dateDisplayFormat: "dateDisplayFormat", timeDisplayFormat: "timeDisplayFormat", locale: "locale", compact: "compact", outboundDisabled: "outboundDisabled", inboundDisabled: "inboundDisabled", enableDatepickers: "enableDatepickers", minimizingLabel: "minimizingLabel", maximizingLabel: "maximizingLabel", directOnlyMobileLabel: "directOnlyMobileLabel", orLabel: "orLabel", invalidDestinationText: "invalidDestinationText", outboundSelectedDate: "outboundSelectedDate", inboundSelectedDate: "inboundSelectedDate", enableDestinationSelect: "enableDestinationSelect", enablePassengersSelect: "enablePassengersSelect", enableTripSwitch: "enableTripSwitch", enableTransitSwitch: "enableTransitSwitch" }, outputs: { originOpenChange: "originOpenChange", destinationOpenChange: "destinationOpenChange", passengerSelectOpenChange: "passengerSelectOpenChange", originChange: "originChange", destinationChange: "destinationChange", passengersChange: "passengersChange", tripTypeChange: "tripTypeChange", directOnlyChange: "directOnlyChange", outboundSelectedDateChange: "outboundSelectedDateChange", inboundSelectedDateChange: "inboundSelectedDateChange", outboundOpenChange: "outboundOpenChange", inboundOpenChange: "inboundOpenChange", outboundMonthChange: "outboundMonthChange", inboundMonthChange: "inboundMonthChange", focusOnNextChange: "focusOnNextChange", positionChange: "positionChange", subsidyDiscountInfoClick: "subsidyDiscountInfoClick" }, viewQueries: [{ propertyName: "passengerSelectDropdown", first: true, predicate: ["passengerSelectDropdown"], descendants: true }, { propertyName: "passengerSelect", first: true, predicate: ["passengerSelect"], descendants: true }, { propertyName: "tripSwitch", first: true, predicate: ["tripSwitch"], descendants: true }, { propertyName: "transitSwitch", first: true, predicate: ["transitSwitch"], descendants: true }, { propertyName: "airportSelect", first: true, predicate: ["airportSelect"], descendants: true }, { propertyName: "datepickerCombo", first: true, predicate: ["datepickerCombo"], descendants: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "tripTypeOneway", first: true, predicate: ["tripTypeOneway"], descendants: true }, { propertyName: "tripTypeRoundTrip", first: true, predicate: ["tripTypeRoundTrip"], descendants: true }, { propertyName: "transitTypeDirectOnly", first: true, predicate: ["transitTypeDirectOnly"], descendants: true }, { propertyName: "transitTypeTransit", first: true, predicate: ["transitTypeTransit"], descendants: true }, { propertyName: "subsidyDiscount", first: true, predicate: ["subsidyDiscount"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<nas-accordion *ngIf=\"deviceHelper?.isMobile() && exists(minimizeOnMobile); else filterTemplate\"\n simple\n containerOnToggle\n transparent\n [expanded]=\"expandedAccordionMobile\"\n [title]=\"editSearchTitle\"\n (toggleChange)=\"onAccordionToggleChange($event)\">\n <ng-container *ngTemplateOutlet=\"filterTemplate\"></ng-container>\n</nas-accordion>\n<div class=\"container\"\n *ngIf=\"deviceHelper?.isMobile() && exists(minimizeOnMobile) && displaySummary\">{{getSummary()}}</div>\n\n<ng-template #filterTemplate>\n <div #container\n [nasClass]=\"getContainerClass()\">\n <div [nasClass]=\"getFilterClass('filters', [exists(minimize) && 'minimized', maximize && 'maximize'])\">\n <ng-container *ngIf=\"airports?.length > 0\">\n <nas-airport-select *ngIf=\"airports && airportRelations && (enableDestinationSelect)\"\n #airportSelect\n combo\n [ariaLabelClear]=\"ariaLabelClear\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n [nasFormGroup]=\"nasFormGroup\"\n [nasFormControlNameOrigin]=\"nasFormControlNameOrigin\"\n [nasFormControlNameDestination]=\"nasFormControlNameDestination\"\n [useSwitch]=\"useSwitch\"\n [nasClass]=\"getAirportSelectClass()\"\n [airports]=\"airports\"\n [allowedOriginAiports]=\"allowedOriginAirports\"\n [allowedDestinationAirports]=\"allowedDestinationAirports\"\n [airportRelations]=\"airportRelations\"\n [latestSearchesOrigin]=\"latestSearchesOrigin\"\n [latestSearchesDestination]=\"latestSearchesDestination\"\n [displayLatestSearches]=\"displayLatestSearches\"\n [displayClosestAirports]=\"displayClosestAirports\"\n [originAirportCode]=\"originAirportCode\"\n [destinationAirportCode]=\"destinationAirportCode\"\n [allAirportsLabel]=\"allAirportsLabel\"\n [latestSearchesLabel]=\"latestSearchesLabel\"\n [closestAirportsLabel]=\"closestAirportsLabel\"\n [closestAirports]=\"closestAirports\"\n [selectOriginFirstLabel]=\"selectOriginFirstLabel\"\n [labelOrigin]=\"labelOrigin\"\n [placeholderOrigin]=\"placeholderOrigin\"\n [labelDestination]=\"labelDestination\"\n [geolocationLabel]=\"geolocationLabel\"\n [geolocationBlockedLabel]=\"geolocationBlockedLabel\"\n [placeholderDestination]=\"placeholderDestination\"\n [keepSelection]=\"keepSelection\"\n [invalidDestinationText]=\"invalidDestinationText\"\n (originChange)=\"setSelectedOriginAirport($event)\"\n (destinationChange)=\"onDestinationChange($event)\"\n (focusOnNext)=\"setFocusOnPassengerSelect($event)\"\n (originOpenChange)=\"onOriginOpen($event)\"\n (destinationOpenChange)=\"onDestinationOpen($event)\"\n (positionChange)=\"getClosestAirports($event)\"></nas-airport-select>\n <nas-airport-select *ngIf=\"airports && (!enableDestinationSelect)\"\n #airportSelect\n [ariaLabelClear]=\"ariaLabelClear\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n [nasFormGroup]=\"nasFormGroup\"\n [nasFormControlNameOrigin]=\"nasFormControlNameOrigin\"\n [useSwitch]=\"useSwitch\"\n [nasClass]=\"getClass('airport-origin-select')\"\n [airports]=\"airports\"\n [allowedOriginAiports]=\"allowedOriginAirports\"\n [airportRelations]=\"airportRelations\"\n [latestSearchesOrigin]=\"latestSearchesOrigin\"\n [displayLatestSearches]=\"displayLatestSearches\"\n [displayClosestAirports]=\"displayClosestAirports\"\n [originAirportCode]=\"originAirportCode\"\n [allAirportsLabel]=\"allAirportsLabel\"\n [latestSearchesLabel]=\"latestSearchesLabel\"\n [closestAirportsLabel]=\"closestAirportsLabel\"\n [closestAirports]=\"closestAirports\"\n [selectOriginFirstLabel]=\"selectOriginFirstLabel\"\n [labelOrigin]=\"labelOrigin\"\n [placeholderOrigin]=\"placeholderOrigin\"\n [geolocationLabel]=\"geolocationLabel\"\n [geolocationBlockedLabel]=\"geolocationBlockedLabel\"\n [keepSelection]=\"keepSelection\"\n (originChange)=\"setSelectedOriginAirport($event)\"\n (focusOnNext)=\"setFocusOnPassengerSelect($event)\"\n (originOpenChange)=\"onOriginOpen($event)\"\n (positionChange)=\"getClosestAirports($event)\"></nas-airport-select>\n <nas-suggestions *ngIf=\"(closestAirports || latestSearchesOrigin) && exists(enableSuggestions)\"\n [nasClass]=\"getFilterClass('suggestions')\"\n [suggestions]=\"getSuggestions()\"\n [orLabel]=\"orLabel\"\n (airportSelect)=\"setSelectedOriginAirport($event)\"></nas-suggestions>\n </ng-container>\n <ng-container *ngIf=\"shouldMaximize()\">\n <div\n [nasClass]=\"!enableDestinationSelect ? getClass('origin-combined') :\n getTravelDetailsClass('', ['combined', exists(enableDatepickers) && 'no-border', exists(minimize) && 'minimized'])\">\n <ng-container *ngIf=\"enablePassengersSelect\">\n <nas-dropdown #passengerSelectDropdown\n *ngIf=\"passengers?.length > 0\"\n [nasClass]=\"getTravelDetailsClass('dropdown', 'passengers')\"\n [cssClass]=\"getTravelDetailsClass('dropdown')\"\n [label]=\"passengerSelectLabel\"\n [labelStyle]=\"{'width': '102px'}\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n (openChange)=\"onPassengerSelectOpen($event)\"\n (keydown)=\"passengerKeyDown($event)\">\n <nas-passenger-select #passengerSelect\n [ariaLabelAdd]=\"ariaLabelAdd\"\n [ariaLabelSubtract]=\"ariaLabelSubtract\"\n [adultsLabel]=\"passengerSelectAdultsLabel\"\n [childrenLabel]=\"passengerSelectChildrenLabel\"\n [infantsLabel]=\"passengerSelectInfantsLabel\"\n [maxPaxCount]=\"maxPaxCount\"\n [minAdultCount]=\"minAdultCount\"\n [title]=\"passengerSelectTitle\"\n [nasFormGroup]=\"nasFormGroup\"\n [nasFormControlGroupBooking]=\"nasFormControlGroupBooking\"\n [groupBookingLabel]=\"groupBookingLabel\"\n [groupBookingLimit]=\"groupBookingLimit\"\n (focusOnNext)=\"onPassengersSelectFocusOnNext()\"\n (focusOnPrevious)=\"onPassengersSelectFocusOnPrevious()\"\n [(passengers)]=\"passengers\"></nas-passenger-select>\n </nas-dropdown>\n </ng-container>\n <ng-container *ngIf=\"enableTripSwitch\">\n <nas-dropdown *ngIf=\"tripSwitchOneWayLabel && tripSwitchRoundTripLabel\"\n #tripSwitch\n [nasClass]=\"getTravelDetailsClass('dropdown', 'trip-type')\"\n [cssClass]=\"getTravelDetailsClass('dropdown')\"\n [label]=\"getTripSwitchLabel()\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n (openChange)=\"onTripSwitchOpen($event)\"\n (keydown)=\"onTripSwitchKeyDown($event)\">\n <div [nasClass]=\"getTravelDetailsClass('actions')\">\n <button type=\"button\"\n #tripTypeRoundTrip\n [nasClass]=\"getTravelDetailsClass('action', tripType === 2 && 'active')\"\n (click)=\"onTripTypeChange(2)\">\n <nas-icon [type]=\"'medium'\"\n [icon]=\"tripType === 2 ? 'flight-return--light' : 'flight-return'\"></nas-icon>\n <span [nasClass]=\"getTravelDetailsClass('title', 'small')\">{{tripSwitchRoundTripLabel}}</span>\n </button>\n <button type=\"button\"\n #tripTypeOneway\n [nasClass]=\"getTravelDetailsClass('action', tripType === 1 && 'active')\"\n (click)=\"onTripTypeChange(1)\">\n <nas-icon [type]=\"'medium'\"\n [icon]=\"tripType === 1 ? 'flight-oneway--light' : 'flight-oneway'\"></nas-icon>\n <span [nasClass]=\"getTravelDetailsClass('title', ['small'])\">{{tripSwitchOneWayLabel}}</span>\n </button>\n </div>\n </nas-dropdown>\n </ng-container>\n <ng-container *ngIf=\"enableTransitSwitch\">\n <nas-dropdown *ngIf=\"directOnlyLabel && directTransitLabel\"\n #transitSwitch\n [nasClass]=\"getTravelDetailsClass('dropdown', 'transit-type')\"\n [cssClass]=\"getTravelDetailsClass('dropdown')\"\n [label]=\"getTransitLabel()\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n (openChange)=\"onTransitSwitchOpen($event)\"\n (keydown)=\"transitKeyDown($event)\">\n <div [nasClass]=\"getTravelDetailsClass('actions')\">\n <button type=\"button\"\n #transitTypeTransit\n [nasClass]=\"getTravelDetailsClass('action', !directOnly && 'active')\"\n (click)=\"onTransitChange(false)\">\n <span [nasClass]=\"getTravelDetailsClass('transit-icon')\">\n <span [nasClass]=\"getTravelDetailsClass('transit-icon-stop')\"></span>\n </span>\n <span [nasClass]=\"getTravelDetailsClass('title', 'small')\">{{directTransitLabel}}</span>\n </button>\n <button [nasClass]=\"getTravelDetailsClass('action', directOnly && 'active')\"\n type=\"button\"\n #transitTypeDirectOnly\n (click)=\"onTransitChange(true)\">\n <span [nasClass]=\"getTravelDetailsClass('transit-icon')\"></span>\n <span [nasClass]=\"getTravelDetailsClass('title', 'small')\">{{directOnlyLabel}}</span>\n </button>\n </div>\n </nas-dropdown>\n </ng-container>\n </div>\n <div *ngIf=\"exists(enableDatepickers)\"\n [nasClass]=\"getDatePickersClass()\">\n <nas-datepicker-combo #datepickerCombo\n compact\n [nasFormGroup]=\"nasFormGroup\"\n [nasFormControlNameOutbound]=\"nasFormControlNameOutbound\"\n [nasFormControlNameInbound]=\"nasFormControlNameInbound\"\n [availability]=\"availability\"\n [availableFlightsLabel]=\"availableFlightsLabel\"\n [dateDisplayFormat]=\"dateDisplayFormat\"\n [disablePastSelection]=\"disablePastSelection\"\n [locale]=\"locale\"\n [noAvailableFlightsLabel]=\"noAvailableFlightsLabel\"\n [inboundAvailableDates]=\"inboundAvailableDates\"\n [inboundLabel]=\"inboundLabel\"\n [noAvailableFlightsLabel]=\"noAvailableFlightsLabel\"\n [outboundAvailableDates]=\"outboundAvailableDates\"\n [outboundLabel]=\"outboundLabel\"\n [timeDisplayFormat]=\"timeDisplayFormat\"\n [times]=\"times\"\n [outboundDisabled]=\"outboundDisabled\"\n [inboundDisabled]=\"inboundDisabled\"\n [outboundOnly]=\"tripType === 1\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n [ariaLabelPreviousMonth]=\"ariaLabelPreviousMonth\"\n [ariaLabelNextMonth]=\"ariaLabelNextMonth\"\n (focusOnNextChange)=\"onFocusOnNextChange($event)\"\n (focusOnPreviousChange)=\"onDatepickerFocusOnPrevious($event)\"\n (inboundMonthChange)=\"onInboundMonthChange($event)\"\n (outboundMonthChange)=\"onOutboundMonthChange($event)\"\n [(outboundOpen)]=\"outboundOpen\"\n [(inboundOpen)]=\"inboundOpen\"\n [(inboundSelectedDate)]=\"inboundSelectedDate\"\n [(outboundSelectedDate)]=\"outboundSelectedDate\">\n </nas-datepicker-combo>\n </div>\n <div *ngIf=\"subsidyDiscounts && subsidyDiscounts.length > 0\"\n [nasClass]=\"getFilterClass('subsidy-discount')\">\n <nas-subsidy-discount #subsidyDiscount\n [discounts]=\"subsidyDiscounts\"\n [selectedDiscount]=\"selectedSubsidyDiscount\"\n [label]=\"subsidyDiscountLabel\"\n (infoButtonClick)=\"onSubsidyDiscountInfoClick()\"\n (discountSelectChange)=\"onSubsidyDiscountSelectChange($event)\"\n (infoButtonKeydown)=\"onSubsidyDiscountInfoButtonKeydown($event)\"></nas-subsidy-discount>\n </div>\n </ng-container>\n </div>\n </div>\n</ng-template>", styles: ["@keyframes fade-in{0%{opacity:0}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-out{to{opacity:0}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}.nas-filter{background-color:#f1f1f1;position:relative;z-index:6}.nas-filter__title{margin-top:24px;font-size:28px;line-height:34px}@media screen and (min-width: 640px){.nas-filter__title{font-size:32px;line-height:38px}}.nas-filter__title--md{margin-top:60px}.nas-filter__filters{margin-top:12px;display:flex;flex-wrap:wrap;order:2}.nas-filter__filters .nas-filter__date-combo{order:2;flex:1;z-index:2}.nas-filter__filters--minimized .nas-filter__airport-select:after{content:\"\";position:absolute;bottom:-3px;left:0px;width:100%;border-bottom:3px solid #c3c3c3}.nas-filter__filters--maximize .nas-filter__airport-select:after{display:none}.nas-filter__filters--md .nas-filter__date-combo{flex:0 0 100%}.nas-filter__filters--lg{display:flex;align-items:stretch}.nas-filter__filters--lg .nas-filter__date-combo{order:3;flex:0 0 100%;z-index:1}.nas-filter__filters--lg .nas-filter__suggestions{order:3}.nas-filter__filters--lg .nas-filter__filters--minimized .nas-filter__airport-select{margin-right:0;flex:0 1 100%}.nas-filter__filters--lg .nas-filter__filters--maximize .nas-filter__airport-select{margin-right:3px;flex:auto}.nas-filter__filters--lg.nas-filter__filters--maximize .nas-filter__date-combo{border-bottom:3px solid #c3c3c3}.nas-filter__suggestions{flex-basis:100%;position:relative;margin-top:3px}.nas-filter__suggestions:before{content:\"\";position:absolute;top:-3px;left:0px;width:100%;border-top:3px solid #c3c3c3}.nas-filter__airport-select{order:0;flex:0 0 100%;position:relative}.nas-filter__airport-select--lg{width:0;margin:0 3px 0 0;flex:1 1 auto}.nas-filter__toggler{font-family:Apercu,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;font-size:18px;line-height:26px;color:#003251;margin-top:6px;z-index:1}.nas-filter__toggler .nas-filter__toggle-action{cursor:pointer;margin-top:2px;float:right}.nas-filter__toggler .nas-filter__direct-only{display:inline-block}.travel-details{position:relative;display:flex;margin:0;flex-wrap:wrap;z-index:1}.travel-details__list{margin-top:12px}.travel-details__list-item{display:flex;align-items:center;justify-content:space-between;padding:6px 0 0}.travel-details__list-item:not(:last-child){padding:6px 0 9px;border-bottom:2px solid #f1f1f1}.travel-details__label{flex-grow:2;margin:0 6px 0 0}.travel-details__title{font-size:18px;line-height:26px;display:block;min-width:124px}.travel-details__title--small{font-size:16px;line-height:26px;margin:0}.travel-details__actions{display:flex}.travel-details__action{padding:12px;width:100%;background-color:#fff}.travel-details__action:hover,.travel-details__action:focus{background-color:#e3e3e3}.travel-details__action--active,.travel-details__action--active:hover,.travel-details__action--active:focus{color:#fff;background-color:#003251}.travel-details__action:focus{outline:none;box-shadow:inset 0 0 2px #c3c3c3,inset 0 0 2px 3px #3b99fc;z-index:1}.travel-details__icon{margin-bottom:9px}.travel-details__dropdown{margin-right:0}.travel-details__dropdown:after{content:\"\";position:absolute;bottom:-3px;left:0px;width:100%;border-bottom:3px solid #c3c3c3}.travel-details__dropdown--trip-type{order:1;flex:1;margin-right:3px;margin-bottom:3px}.travel-details__dropdown--transit-type{order:2;flex:1;margin-bottom:3px}.travel-details__dropdown--passengers{order:3;flex:1 0 100%;margin-bottom:3px}.travel-details__dropdown--md.travel-details__dropdown--trip-type{order:2;flex:1;margin-right:3px}.travel-details__dropdown--md.travel-details__dropdown--transit-type{order:3;flex:1}.travel-details__dropdown--md.travel-details__dropdown--passengers{order:1;flex:1;margin-right:3px}.travel-details__dropdown--lg.travel-details__dropdown--trip-type{order:2;flex:1 1 auto;margin-right:3px}.travel-details__dropdown--lg.travel-details__dropdown--transit-type{order:3;flex:1 1 auto}.travel-details__dropdown--lg.travel-details__dropdown--passengers{order:1;flex:1 1 auto;margin-right:3px}.travel-details__dropdown--lg:focus{outline:none}.travel-details__dropdown--lg:after{display:none}.travel-details__transit-icon{position:relative;display:flex;justify-content:center;width:calc(100% - 48px);margin:12px auto;height:24px;background-color:inherit}.travel-details__transit-icon:before{content:\"\";position:absolute;height:2px;left:0;width:100%;top:calc(50% - 1px);background-color:currentColor}.travel-details__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)}.travel-details__transit-icon-stop{position:relative;top:calc(50% - 5px);width:10px;height:10px;border:2px solid currentColor;border-radius:50%;background-color:inherit}.travel-details--combined{order:3;flex:0 0 100%}.travel-details--combined.travel-details--md:after{content:\"\";position:absolute;bottom:-6px;left:0px;width:100%;border-bottom:3px solid #c3c3c3}.travel-details--combined.travel-details--md .travel-details__dropdown{margin:0 3px 0 0}.travel-details--combined.travel-details--md .travel-details__dropdown:last-child{margin:0}.travel-details--combined.travel-details--md .dropdown__toggle{height:calc(100% - 3px);margin:0;padding-left:16px;padding-right:16px}.travel-details--combined.travel-details--lg{order:2;flex:0 0 auto;margin:0 0 0 -3px;padding-left:3px;z-index:2}.travel-details--combined.travel-details--lg:after{content:\"\";position:absolute;bottom:-3px;left:0px;width:100%;border-bottom:3px solid #c3c3c3}.travel-details--combined.travel-details--lg .dropdown__toggle{height:inherit}@media (min-width: 1000px){.travel-details--no-border:after{border-bottom:none}}::ng-deep .nas-filter__filters .travel-details--no-border:after{display:none}::ng-deep .nas-filter__filters .travel-details__dropdown .nas-dropdown__toggle{padding:20px!important;width:100%;height:100%}::ng-deep .nas-filter__filters .travel-details__dropdown .nas-dropdown__toggle:hover:after{display:none}::ng-deep .nas-filter__filters .travel-details__dropdown .nas-dropdown__toggle nas-icon{float:right}::ng-deep .nas-filter__filters .travel-details__dropdown .nas-dropdown__toggle:focus{outline:none}::ng-deep .nas-filter__filters .travel-details__dropdown .nas-dropdown{width:100%}::ng-deep .nas-filter__filters .travel-details__dropdown .nas-dropdown:focus{outline:none}@media (min-width: 640px){::ng-deep .nas-filter__filters .travel-details__dropdown:after{border-bottom:none}}::ng-deep .nas-filter__filters .nas-filter__date-combo .nas-datepicker__date-picker-wrapper{border-bottom:none!important}::ng-deep .nas-filter__filters .nas-filter__date-combo--side-by-side .nas-datepicker-combo__separator{display:block;border-bottom:none!important}::ng-deep .nas-filter__filters .nas-airport-select__input-line{border-top:none!important}::ng-deep .nas-filter__filters .nas-airport-select-combo__separator{border-bottom:none!important}::ng-deep .nas-filter__filters .nas-dropdown__toggle{height:64px!important}::ng-deep .nas-filter__filters .nas-datepicker-combo__separator{display:none}::ng-deep .nas-filter__filters--lg .nas-dropdown__toggle{display:flex}::ng-deep .nas-filter__filters--lg .nas-filter__date-combo .nas-datepicker__date-picker-wrapper{border-bottom:3px solid #c3c3c3}::ng-deep .nas-filter__filters--lg .nas-airport-select__input-line{border-top:3px solid #c3c3c3!important}::ng-deep .nas-filter__filters--lg .nas-datepicker-combo__separator{border-bottom:3px solid #c3c3c3!important}::ng-deep .nas-filter__filters--lg .nas-airport-select-combo__separator{border-bottom:3px solid #c3c3c3!important}::ng-deep .nas-filter__rotate{transform:rotate(180deg)}::ng-deep .nas-filter__rotate-enter,::ng-deep .nas-filter__rotate-leave-active{transform-origin:center top;transform-style:preserve-3d;-webkit-backface-visibility:hidden;backface-visibility:hidden}::ng-deep .nas-filter__rotate-enter{animation:flip-in .55s ease both}::ng-deep .nas-filter__rotate-leave-active{animation:flip-out .2s ease-out both}::ng-deep .nas-filter__airport-select--no-border .nas-airport-select__input-line{border-top:none}::ng-deep .nas-filter__airport-select--no-border .nas-airport-select-combo__separator{border-top:none}::ng-deep .nas-filter__airport-select--no-border .nas-airport-select__results-wrapper{margin-top:0}::ng-deep .nas-filter__airport-select--no-border .nas-airport-select__results{top:-3px}::ng-deep .nas-filter__airport-select--no-border .nas-airport-select__icon{bottom:18px}::ng-deep .nas-filter__airport-select--no-border .nas-airport-select:after{display:none}::ng-deep .nas-filter__airport-select .nas-airport-select__input-line{display:none}::ng-deep .nas-filter__airport-origin-select{width:100%;max-width:100%}::ng-deep .nas-filter__airport-origin-select .nas-airport-select:only-child{max-width:100%}@media (min-width: 640px){::ng-deep .nas-filter__airport-origin-select{max-width:360px;flex:auto;margin-right:3px}::ng-deep .nas-filter__airport-origin-select .nas-airport-select:only-child{width:auto;max-width:360px}}::ng-deep .nas-filter__origin-combined{border-bottom:3px solid #c3c3c3;order:3;flex:0 0 100%;display:flex;flex-wrap:wrap}@media (min-width: 1000px){::ng-deep .nas-filter__origin-combined{display:flex;flex:none}::ng-deep .nas-filter__origin-combined .nas-dropdown__toggle nas-icon{float:none!important}}::ng-deep .nas-filter__subsidy-discount{order:3}::ng-deep .nas-filter__subsidy-discount .nas-subsidy-discount{margin-top:16px}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i6.NasClassDirective, selector: "[nasClass]", inputs: ["nasClass", "attr.class"] }, { kind: "component", type: i7.AirportSelectComponent, selector: "nas-airport-select", inputs: ["airports", "airportRelations", "latestSearchesOrigin", "latestSearchesDestination", "closestAirports", "allowedOriginAiports", "allowedDestinationAirports", "displayLatestSearches", "displayClosestAirports", "combo", "useSwitch", "allAirportsLabel", "latestSearchesLabel", "closestAirportsLabel", "geolocationLabel", "geolocationBlockedLabel", "selectOriginFirstLabel", "invalidDestinationText", "labelOrigin", "placeholderOrigin", "labelDestination", "placeholderDestination", "keepSelection", "nasFormControlNameOrigin", "nasFormControlNameDestination", "nasFormGroup", "originAirportCode", "destinationAirportCode", "ariaLabelClear", "ariaLabelBackdrop"], outputs: ["originChange", "originOpenChange", "destinationChange", "destinationOpenChange", "focusOnNext", "positionChange"] }, { kind: "component", type: i8.DropdownComponent, selector: "nas-dropdown", inputs: ["open", "id", "ariaLabelBackdrop", "cssClass", "inline", "label", "stretched", "labelStyle"], outputs: ["openChange"] }, { kind: "component", type: i9.PassengerSelectComponent, selector: "nas-passenger-select", inputs: ["passengers", "maxPaxCount", "minAdultCount", "groupBookingLimit", "title", "adultsLabel", "childrenLabel", "infantsLabel", "youthsLabel", "groupBookingLabel", "nasFormGroup", "nasFormControlGroupBooking", "ariaLabelSubtract", "ariaLabelAdd"], outputs: ["passengersChange", "focusOnNext", "focusOnPrevious"] }, { kind: "component", type: i10.AccordionComponent, selector: "nas-accordion", inputs: ["expanded", "title", "badge", "icon", "simple", "spaced", "small", "inverted", "containerOnToggle", "nopadding", "transparent", "approve", "primary", "warning", "badgeInfo", "badgeSuccess", "badgeWarning", "badgeError", "cssClass", "cssStyle"], outputs: ["toggleChange"] }, { kind: "component", type: i11.IconComponent, selector: "nas-icon", inputs: ["icon", "type", "isIndicator", "lightCircularBackground", "cssClass"] }, { kind: "component", type: i12.DatepickerComboComponent, selector: "nas-datepicker-combo", inputs: ["ariaLabelBackdrop", "outboundOpen", "inboundOpen", "noAvailableFlightsLabel", "availableFlightsLabel", "disablePastSelection", "outboundDisabled", "inboundDisabled", "outboundOnly", "outboundLabel", "inboundLabel", "availability", "outboundAvailableDates", "inboundAvailableDates", "times", "dateDisplayFormat", "timeDisplayFormat", "locale", "compact", "nasFormGroup", "nasFormControlNameOutbound", "nasFormControlNameInbound", "outboundSelectedDate", "inboundSelectedDate", "disableBackdrop", "outboundSelectedTime", "inboundSelectedTime", "ariaLabelPreviousMonth", "ariaLabelNextMonth", "inboundLowerLimitDateOffset"], outputs: ["outboundSelectedDateChange", "inboundSelectedDateChange", "outboundOpenChange", "inboundOpenChange", "outboundMonthChange", "inboundMonthChange", "focusOnNextChange", "focusOnPreviousChange"] }, { kind: "component", type: i13.SubsidyDiscountComponent, selector: "nas-subsidy-discount", inputs: ["label", "icon", "selectedDiscount", "discounts"], outputs: ["infoButtonClick", "infoButtonKeydown", "discountSelectChange"] }, { kind: "component", type: i14.SuggestionsComponent, selector: "nas-suggestions", inputs: ["suggestions", "orLabel"], outputs: ["airportSelect"] }] }); }
|
|
1032
1032
|
}
|
|
1033
1033
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: FilterComponent, decorators: [{
|
|
1034
1034
|
type: Component,
|
|
@@ -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
|
|
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 (
|
|
112
|
-
|
|
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
|
-
|
|
115
|
-
|
|
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
|
-
|
|
136
|
-
|
|
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
|
-
|
|
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==
|