1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9834],{22438:(e,n,r)=>{r.d(n,{r:()=>i});var i=function(e){return e.Recommendations="Recommendations",e.DistanceToDestination="DistanceToDestination",e.DistanceToStation="DistanceToStation",e.DistanceToAirport="DistanceToAirport",e.HotelRatingAll="HotelRatingAll",e.HotelRatingPrivate="HotelRatingPrivate",e.HotelRatingBusiness="HotelRatingBusiness",e.PriceAscending="PriceAscending",e.PriceDescending="PriceDescending",e.POI="POI",e}({})},31732:(e,n,r)=>{r.d(n,{U:()=>s,v:()=>i});let i=(e,n)=>{e.isDiscount&&(n||!e.corporateDiscountPossible||e.businessTravellerPrice||(e.businessTravellerPrice=void 0,e.businessTravellerTotalDiscountInPercentage=0,e.businessTravellerTotalPrice=void 0,e.corporateDiscountPossible=!1),e.businessTravellerPrice&&(e.averagePrice&&(e.businessTravellerPrice.amount>e.averagePrice.amount||e.businessTravellerPrice.amount===e.averagePrice.amount&&!n)?(e.businessTravellerPrice=void 0,e.businessTravellerTotalDiscountInPercentage=0,e.businessTravellerTotalPrice=void 0,e.corporateDiscountPossible=!1):n?(e.isDiscount=!1,e.discountType=void 0,e.freeNights=void 0):(e.strikeThroughPrice=void 0,e.strikeThroughTotalPrice=void 0)))},s=(e,n)=>e.length<1?e:e.map(e=>(e.rates=e.rates.map(e=>(e.isDiscount&&(n||!e.isBusinessRateAvailable||e.businessTravellerAveragePrice||(e.isBusinessRateAvailable=!1,e.businessTravellerAveragePrice=void 0,e.businessTravellerTotalPrice=void 0,e.businessTravellerTotalDiscountInPercentage=0),e.businessTravellerAveragePrice&&(e.businessTravellerAveragePrice.amount>e.pricePerNight.amount||e.businessTravellerAveragePrice.amount===e.pricePerNight.amount&&!n?(e.businessTravellerAveragePrice=void 0,e.businessTravellerTotalPrice=void 0,e.businessTravellerTotalDiscountInPercentage=0,e.isBusinessRateAvailable=!1):n?(e.isDiscount=!1,e.discountType=void 0,e.discountPercentage=void 0,e.freeNights=void 0):e.isBusinessRateAvailable&&(e.wasPricePerNight=void 0,e.totalWasPrice=void 0))),e)),e))},31946:(e,n,r)=>{r.d(n,{$9:()=>l,AS:()=>m,F7:()=>h,LP:()=>u,Nx:()=>o,Sf:()=>d,Ug:()=>c,g6:()=>_,qH:()=>g,xe:()=>t});var i=r(69406);let s={INTENT_CLICKED:"reset_password_intent_clicked",EMAIL_MODAL_VIEWED:"reset_password_email_modal_viewed",EMAIL_SUBMITTED:"reset_password_email_submitted",OTP_MODAL_VIEWED:"reset_password_otp_modal_viewed",OTP_SUBMITTED:"reset_password_otp_submitted",NEW_PWD_MODAL_VIEWED:"reset_password_new_pwd_modal_viewed",CONFIRMED:"reset_password_confirmed",AUTO_LOGIN_SUCCESS:"reset_password_auto_login_success",LOGIN_SUBMITTED:"reset_password_login_submitted"};var t=function(e){return e.LOGIN_FORM="login_form",e.LOGIN_MODAL_FORGOT_PW_BUTTON="login_modal_forgot_pw_button",e.USER_EXISTED_LOGIN_FORM="user_existed_login_form",e.USER_EXISTED_FORGOT_PW_BUTTON="user_existed_forgotpw_button",e.AUTH_THUNK="auth_thunk",e}({});let a=(e,n)=>{i.Vy.log({source:i._q.ResetPasswordFlow,event:e,...n})},o=e=>{a(s.INTENT_CLICKED,e)},l=e=>{a(s.EMAIL_SUBMITTED,e)},c=e=>{a(s.LOGIN_SUBMITTED,e)},u=()=>{a(s.EMAIL_MODAL_VIEWED)},d=()=>{a(s.OTP_MODAL_VIEWED)},g=e=>{a(s.OTP_SUBMITTED,e)},m=()=>{a(s.NEW_PWD_MODAL_VIEWED)},_=e=>{a(s.CONFIRMED,e)},h=()=>{a(s.AUTO_LOGIN_SUCCESS)}},33186:(e,n,r)=>{r.d(n,{$X:()=>x,$p:()=>K,It:()=>O,M_:()=>q,UQ:()=>b,WB:()=>H,Wd:()=>y,ec:()=>W,je:()=>k,om:()=>V,p3:()=>D,rn:()=>z,xw:()=>F,zz:()=>M});var i=r(16752),s=r(18401),t=r(58673),a=r(46159),o=r(33083),l=r(42641),c=r(55471),u=r(96224),d=r(94684),g=r(75064),m=r(28707),_=r(59785),h=r(79608),w=r(46656),T=r(97037),v=r(31946),E=r(63964),S=r(7980),f=r(80768),I=r(90541),p=r(69406),A=r(30823),R=r(82978),C=r(18861),L=r(86045),N=r(68883),U=r(32837),P=r(18614);let y=(e,n)=>async(r,t)=>{let{signUpState:a}=t().auth,{isWhiteLabelMode:o}=t().context;if(a.isRunning)return;let l=i.T.featureFlags.confirmationSignUpWithCode&&!o,c={de:"de_DE",en:"en_US",es:"es_ES",fr:"fr_FR",it:"it_IT",nl:"nl_NL",pl:"pl_PL",tr:"tr_TR",sv:"sv_SV",ru:"ru_RU",pt:"pt_PT",ja:"ja_JP",zh_cn:"zh_CN"}[e.language]||"en_US",u={username:e.email,password:e.password,options:{userAttributes:{email:e.email,locale:c,given_name:e.firstName,family_name:e.lastName},...l?{autoSignIn:!0}:{}}};try{r((0,_.ds)({...a,isRunning:!0})),(0,S.pF)();let i=await (0,s.H)(u);l&&Y(r),r((0,_.ds)({username:e.email,userConfirmed:i.isSignUpComplete})),o||(0,h.hR)(),(0,S.F1)(),e.subscribeNewsletter&&await R.a.subscribeToNewsletter({firstName:e.firstName,lastName:e.lastName,emailAddress:e.email,customerLanguage:e.language})&&(0,I.o)({action:"email_sent",funnel:"signup"}),null==n||n.track("registration-successful")}catch(i){var d,g;(null==i?void 0:i.name)==="UsernameExistsException"?r((0,_.ds)({error:"UsernameExists"})):(null==i?void 0:i.name)==="InvalidParameterException"?r((0,_.ds)({error:"InvalidParameter"})):(null==i?void 0:i.name)==="UserLambdaValidationException"&&(null==i||null==(d=i.message)?void 0:d.toLowerCase().includes("presignup"))&&(null==i||null==(g=i.message)?void 0:g.toLowerCase().includes("already exists"))?r((0,_.ds)({error:"UsernameExists"})):(r((0,_.ds)({error:"Unknown"})),(null==i?void 0:i.message)=="Invalid email address format."?p.Vy.error(i,{source:p._q.AuthService,email:e.email,method:"signUpUser"}):p.Vy.error(i,{source:p._q.AuthService,method:"signUpUser"}));let n=(0,f.Md)("signup",t().shoppingCart.registerWhileBooking);(0,E.x)(i.name,i.message,n.location||"",n.funnel,n.feature)}},O=function(e,n){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return async(i,s)=>{let{signUpState:a}=s().auth;if(!a.isRunning)try{i((0,_.ds)({...a,username:e,isRunning:!0,isConfirmationCode:r})),await (0,t.z)({username:e,confirmationCode:n}),i((0,_.ds)({...a,isRunning:!1,userConfirmed:!0,isConfirmationCode:r})),(0,S.kh)(),await R.a.confirmSubscriptionNewsletter(e)&&(0,I.o)({action:"success",funnel:"signup"})}catch(u){let{name:n,message:t}=u;p.Vy.error(u,{source:p._q.AuthService,message:t,code:n,method:"confirmUser"});let a="Unknown",o=!1;"ExpiredCodeException"===n||"CodeMismatchException"===n?a="CodeExpired":"NotAuthorizedException"===n&&t&&t.includes("Current status is CONFIRMED")&&(a="UserAlreadyConfirmed",o=!0);let l=(0,f.IT)(n,t),c=(0,f.zW)(s().shoppingCart.registerWhileBooking);(0,E.x)(l.errorCode,l.errorMessage,c.location||"",c.funnel,c.feature),i((0,_.ds)({error:a,username:e,userConfirmed:o,isConfirmationCode:r}))}}},D=()=>(e,n)=>{try{e((0,_.CY)())}catch(e){p.Vy.error(e,{source:p._q.AuthService,method:"closeSignUp"})}finally{G("closeRegistration",n)}},b=e=>async(n,r)=>{let{signUpState:i}=r().auth;if(!i.isRunning)try{n((0,_.ds)({...i,username:e,userConfirmed:!1,isRunning:!0})),await (0,a.h)({username:e}),n((0,_.ds)({...i,username:e,userConfirmed:!1,confirmationResentSuccessful:!0})),(0,S.F1)("Send again button")}catch(r){p.Vy.error(r,{source:p._q.AuthService,code:r.name,method:"resendSignUp"}),n((null==r?void 0:r.name)==="LimitExceededException"?(0,_.ds)({...i,username:e,confirmationResentSuccessful:!1,error:"LimitExceeded"}):(0,_.ds)({...i,username:e,confirmationResentSuccessful:!1,error:"Unknown"}))}},M=(e,n,r)=>async(i,s)=>{let{isWhiteLabelMode:t}=s().context;i((0,_._3)({isRunning:!0,isLoggedIn:!1}));try{(0,S.kG)();
1let{isSignedIn:t,nextStep:a}=await (0,o.J)({username:e,password:n,options:{authFlowType:"USER_PASSWORD_AUTH"}});if(!t&&"CONFIRM_SIGN_UP"===a.signInStep){let e=Error("User not confirmed.");throw e.name="UserNotConfirmedException",e}(0,v.Ug)({status:"success"});let l=await (0,P.TT)();if(!t||!l)return void i((0,_._3)({isRunning:!1,isLoggedIn:!1}));i((0,_._3)({isRunning:!1,isLoggedIn:!0,firstName:l.given_name,lastName:l.family_name,email:l.email,profileId:l.profile_id})),G("loginSuccessful",s),i((0,N.z)("LoggedIn")),null==r||r.track("login-successful"),i((0,_.CY)()),(0,S.Nf)(l.profile_id,l.svl_profile_id),i(H()),i((0,L.hP)())}catch(r){p.Vy.error(r,{source:p._q.AuthService,code:r.name,message:r.message,method:"logInUser"}),(0,v.Ug)({status:"failed",error:r.name});let e="Unknown";switch(null==r?void 0:r.name){case"UserNotConfirmedException":e="UserNotConfirmed";break;case"PasswordResetRequiredException":e="PasswordResetRequired";break;case"NotAuthorizedException":(null==r?void 0:r.message)==="Password attempts exceeded"?e="AttemptsExceeded":(null==r?void 0:r.message)==="Incorrect username or password."&&(e="IncorrectNameOrPassword");break;default:e="Unknown"}let n=(0,f.Md)();(0,E.x)(r.name,r.message,n.location||"",n.funnel,n.feature),i((0,_._3)({isRunning:!1,isLoggedIn:!1,loginError:e})),t&&(null==r?void 0:r.name)==="UserAlreadyAuthenticatedException"&&(null==r?void 0:r.message)==="There is already a signed in user."&&window.parent&&window.parent.location.reload()}},x=()=>async e=>{let n=await (0,P.TT)();n&&(e((0,_._3)({isRunning:!1,isLoggedIn:!0,firstName:n.given_name,lastName:n.family_name,email:n.email,profileId:n.profile_id})),e((0,L.hP)()))},k=(e,n,r)=>async(i,s)=>{let{loginState:t}=s().auth;i((0,_._3)({...t,isRunning:!0}));try{await (0,l.C)(),i((0,_._3)({isRunning:!1,isLoggedIn:!1})),i(H()),(0,S.JG)(e),i((0,N.z)("LoggedOut")),i((0,C.$V)()),i((0,T.hQ)()),B(r,n)}catch(e){p.Vy.error(e,{source:p._q.AuthService,method:"logOut"})}},H=()=>(e,n)=>{if((0,w.b)()===w.L.HotelList){let r=n().offerList.request;e((0,U.Bl)(r))}},B=(e,n)=>{let r=[w.L.MyAccount,w.L.Favourites,w.L.Bookings,w.L.Confirmation,w.L.ConfirmationPrintView],i=(0,w.b)();i&&window&&r.includes(i)&&e("/".concat(n))},V=e=>async(n,r)=>{let{isWhiteLabelMode:i}=r().context;n((0,_.y)({email:e,resetMailLimitExceeded:!1,isRunning:!0,resetMailSentSuccessful:!1,unknownError:!1}));try{await (0,c.x)({username:e}),(0,v.$9)({status:"success",source:v.xe.AUTH_THUNK,isWhiteLabel:i}),G("sendPasswordResetMailSuccessful",r),n((0,_.y)({email:e,resetMailLimitExceeded:!1,isRunning:!1,resetMailSentSuccessful:!0,unknownError:!1}))}catch(r){n((null==r?void 0:r.name)==="LimitExceededException"?(0,_.y)({email:e,resetMailLimitExceeded:!0,isRunning:!1,resetMailSentSuccessful:!1,unknownError:!1}):(0,_.y)({email:e,resetMailLimitExceeded:!1,isRunning:!1,resetMailSentSuccessful:!1,unknownError:!0})),p.Vy.error(r,{source:p._q.AuthService,code:r.name,method:"sendPasswordResetMail"}),(0,v.$9)({status:"failed",source:v.xe.AUTH_THUNK,error:r.name,isWhiteLabel:i})}},F=(e,n,r)=>async i=>{i((0,_.zr)({isRunning:!0,isPasswordChangedSuccessful:!1,email:e}));try{await (0,u.P)({username:e,confirmationCode:r,newPassword:n}),(0,v.g6)({status:"success",source:v.xe.AUTH_THUNK}),i((0,_.zr)({isRunning:!1,isPasswordChangedSuccessful:!0}))}catch(r){let n="Unknown";((null==r?void 0:r.name)==="CodeMismatchException"||(null==r?void 0:r.name)==="ExpiredCodeException")&&(n="CodeExpired"),i((0,_.zr)({isRunning:!1,isPasswordChangedSuccessful:!1,error:n,email:e})),p.Vy.error(r,{source:p._q.AuthService,code:r.name,method:"resetPassword"}),(0,v.g6)({status:"failed",source:v.xe.AUTH_THUNK,error:r.name})}},W=(e,n)=>async r=>{r((0,_.w6)({isRunning:!0,isPasswordChangedSuccessful:!1}));try{if(!await (0,d.H)()){p.Vy.error("Change password without authenticated user is not possible.",{source:p._q.AuthService,method:"changePassword"}),r((0,_.w6)({isRunning:!1,isPasswordChangedSuccessful:!1,error:"Unknown"}));return}await (0,g.f)({oldPassword:e,newPassword:n}),r((0,_.w6)({isRunning:!1,isPasswordChangedSuccessful:!0}))}catch(i){let e=(null==i?void 0:i.name)?i.name:"Unknown",n={NotAuthorizedException:"InvalidCredentials",InvalidPasswordException:"InvalidCredentials",UserNotFoundException:"InvalidCredentials",LimitExceededException:"AttemptsExceeded",Unknown:"Unknown"}[e]||"Unknown";"Access Token has been revoked"===i.message&&(n="TokenRevoked"),r((0,_.w6)({isRunning:!1,isPasswordChangedSuccessful:!1,error:n})),p.Vy.error(i,{source:p._q.AuthService,code:e,message:n,method:"changePassword"})}},q=()=>(e,n)=>{try{G("closeChangePassword",n),e((0,_.CY)())}catch(e){p.Vy.error(e,{source:p._q.AuthService,method:"closeChangePassword"})}},G=(e,n)=>{try{let{isWhiteLabelMode:r,whiteLabelUrl:i}=n().context;if(!r||!i||!window.parent)return;window.parent.postMessage({action:e},decodeURIComponent(i))}catch(e){p.Vy.error(e,{source:p._q.AuthService,method:"notifyWhiteLabel"})}},z=e=>async(n,r)=>{n((0,_.Tb)({isChangeSuccessful:!1,isChangeTriggered:!0,isRunning:!0}));try{let i=r().auth.loginState.email,s=await (0,P.gf)();if(i&&s){let r=await A.c.startEmailChange(i,s,e);n((0,_.Tb)({isChangeSuccessful:!1,isChangeTriggered:!r,isRunning:!1,error:r}))}else n((0,_.Tb)({isChangeSuccessful:!1,isChangeTriggered:!1,isRunning:!1,error:"Unknown"}))}catch(e){n((0,_.Tb)({isChangeSuccessful:!1,isChangeTriggered:!1,isRunning:!1,error:"Unknown"}))}},K=(e,n)=>async(r,i)=>{let s,{changeEmailState:t}=i().auth;r((0,_.Tb)({...t,email:e,code:n,isChangeTriggered:!0,isRunning:!0}));try{s=await A.c.confirmEmailChange(e,n)}catch(e){p.Vy.error(e,{source:p._q.AuthService,method:"confirmEmailChange",step:"API call"}),r((0,_.Tb)({error:s,isRunning:!1,isChangeTriggered:!0,isChangeSuccessful:!1}));return}if(void 0===s){try{await (0,l.C)()}catch(e){p.Vy.error(e,{source:p._q.AuthService,method:"confirmEmailChange",step:"signOut"})}finally{r((0,_._3)({isRunning:!1,isLoggedIn:!1})),r((0,C.$V)()),(0,S.JG)("Email Change Confirmation")}r((0,_.Tb)({error:void 0,isChangeTriggered:!0,isChangeSuccessful:!0,isRunning:!1})),r((0,_.CY)("Login"))}else r((0,_.Tb)({error:s,isRunning:!1,isChangeTriggered:!0,isChangeSuccessful:!1})),r((0,_.CY)("ChangeEmail"))},Y=async e=>{try{if((await (0,m.eA)()).isSignedIn){let n=await (0,P.TT)();if(!n)return void e((0,_._3)({isRunning:!1,isLoggedIn:!1}));e((0,_._3)({isRunning:!1,isLoggedIn:!0,firstName:n.given_name,lastName:n.family_name,email:n.email,profileId:n.profile_id})),e((0,N.z)("LoggedIn")),e((0,_.CY)()),(0,S.Nf)(n.profile_id,n.svl_profile_id),e(H()),e((0,L.hP)())}}catch(e){p.Vy.error(e,{source:p._q.AuthService,code:e.name,message:e.message,method:"autoSignIn"})}}},51125:(e,n,r)=>{r.d(n,{u:()=>i});async function i(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:29e3,i=new AbortController,s=setTimeout(()=>i.abort(),r),t=await fetch(e,{...n,signal:i.signal}).catch(n=>{if(n instanceof DOMException&&"AbortError"===n.name)throw new DOMException("Endpoint: ".concat(e," - timeout reached after ").concat(r," ms"),"AbortError");throw n});return clearTimeout(s),t}},57281:(e,n,r)=>{r.d(n,{o:()=>i});var i=function(e){return e.UNKNOWN="UNKNOWN",e.EARLY_BIRD="EARLY_BIRD",e.LAST_MINUTE="LAST_MINUTE",e.
1LONGTERM="LONGTERM",e.CORPORATE="CORPORATE",e.FREE_NIGHTS="FREE_NIGHTS",e.NATIVE="NATIVE",e.SENIOR="SENIOR",e.HOTELS_NOW_MOBILE="HOTELS_NOW_MOBILE",e.OPAQUE="OPAQUE",e.MOBILE="MOBILE",e}({})},63964:(e,n,r)=>{r.d(n,{x:()=>s});var i=r(58697);let s=(e,n,r,s,t)=>{window.dataLayer=window.dataLayer||[],window.dataLayer.push({...(0,i.HK)(),event:"error_occured",location:r,error_message:n,error_type:e,funnel:s,feature:t,hit_timestamp:new Date().toISOString()})}},79608:(e,n,r)=>{r.d(n,{QY:()=>c,ZS:()=>l,gy:()=>u,hR:()=>o});var i=r(69406);let s="myHrs.boba.RedirectUrl",t="myHrs.puw.RedirectUrl",a="authUrlManager";function o(){try{window.localStorage.removeItem(t),window.localStorage.removeItem(s)}catch(e){i.Vy.error(e,{source:i._q.AuthService,component:a})}try{let e=document.location.href;window.localStorage.setItem(s,e)}catch(e){i.Vy.error(e,{source:i._q.AuthService,component:a})}}function l(e){try{window.localStorage.removeItem(s),window.localStorage.removeItem(t)}catch(e){i.Vy.error(e,{source:i._q.AuthService,component:a})}try{window.localStorage.setItem(t,e)}catch(e){i.Vy.error(e,{source:i._q.AuthService,component:a})}}function c(){try{let e=window.localStorage.getItem(s);return window.localStorage.removeItem(s),e||void 0}catch(e){i.Vy.error(e,{source:i._q.AuthService,component:a});return}}function u(){try{let e=window.localStorage.getItem(t);return window.localStorage.removeItem(t),e||void 0}catch(e){i.Vy.error(e,{source:i._q.AuthService,component:a});return}}},90541:(e,n,r)=>{r.d(n,{o:()=>s});var i=r(58697);let s=e=>{var n;let{action:r,funnel:s,location:t}=e;window.dataLayer=window.dataLayer||[],window.dataLayer.push({...(0,i.HK)(),event:"newsletter_".concat(r),location:null!=(n=null!=t?t:window.signUpLocation)?n:window.loginLocation||null,funnel:null!=s?s:null,feature:"newsletter",hit_timestamp:new Date().toISOString()})}},90897:(e,n,r)=>{r.d(n,{K4:()=>a,P_:()=>i,SM:()=>t,Ze:()=>o,jY:()=>s});let i=e=>{var n;return!e.dynStartDate&&!e.dynEndDate&&(!e.rooms||(null==(n=e.rooms)?void 0:n.length)===0)&&!e.arrival&&!e.departure&&0===e.hotelTeaserKeys.length&&!e.locationId&&!e.poiId&&!e.geoCoordinates&&!e.perimeter&&!e.orderBy&&!e.currency&&!e.hotelNameUnsafe&&!e.breakfastInclusiveFilterActive&&!e.showMap&&!e.hideLogin&&!e.hideRegistration&&!e.hideRentalHome&&!e.amenities&&!e.customerId&&!e.hotelId&&!e.minPrice&&!e.maxPrice&&!e.stars&&!e.minRating&&!e.showTotalPrices&&!e.showItinerary&&!e.internalCampaign&&!e.externalCampaign&&!e.authModalType&&!e.accessCode&&!e.bookingProcessId&&!e.roomBookingId&&!e.showContact&&!e.showHotelUnavailable&&!e.scrollToOffers&&!e.voucherCode&&!e.chain&&!e.includeVisitorTax&&!e.unsafeUtmSource&&!e.newsletterSubscription&&!e.forceFreesaleAvails&&!e.linkWasShared&&!e.showDealsModal},s=["HRS","ACCOR","HILTON","IHG","SOLMELIA","MARRIOTT","NH","AMADEUS","EAN","DERBYSOFT"],t=["UNKNOWN","BREAKFAST","HALF_BOARD","FULL_BOARD","ALL_INCLUSIVE"],a=["STANDARD","ECONOMY","SUPERIOR","BUSINESS","SUITE","JUNIORSUITE","APPARTMENT","FAMILY","STUDIO","HOLIDAY_FLAT","BUNGALOW","HOLIDAY_HOUSE","MEETING_ROOM"],o=["FLEX","BASIC","ARRANGEMENT","HOT_DEAL","BUSINESS_FLEX","BUSINESS_BASIC","BUSINESS_HOT_DEAL"]}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.