Files
preis-tracker/tests/fixtures/idealo-headphones.html
2026-05-25 14:05:16 +00:00

2611 lines
343 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html><html class="DE no-gec desktop no-js" lang="de-DE"><head>
<meta charset="UTF-8"/>
<script id="tagManagerDataLayer">
var utag_data = [{"country":"DE","page_template":"OffersOfProduct","currency":"EUR","products":[{"id":202740303,"category":18874,"name":"Mobilis Elektrorollstuhl M45 Air rot"}],"sponsored_brand_shop":false,"sponsored_slider":true}];
</script>
<link rel="canonical" href=""/>
<meta name="robots" content="noindex, follow"/>
<meta name="description" content="Bereits ab 6.780,00 € ✓ Große Shopvielfalt ✓ Testberichte &amp; Meinungen ✓ | Jetzt Mobilis Elektrorollstuhl M45 Air rot günstig kaufen bei idealo.de"/>
<meta name="viewPort" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"/>
<link rel="modulepreload" href="https://cdn.idealo.com/storage/cmp/idealo-ucEventHandler.min.js" type="application/javascript"/>
<link rel="preload" as="script" href="https://web.cmp.usercentrics.eu/ui/loader.js" type="application/javascript"/>
<link rel="preconnect" href="//cdn.idealo.com" crossorigin=""/>
<link rel="preconnect" href="//cdn.idealo.com"/>
<link rel="preconnect" href="//www.googletagmanager.com"/>
<link rel="preconnect" href="//web.cmp.usercentrics.eu"/>
<link rel="preconnect" href="//energylabels.idealo.com"/>
<link rel="shortcut icon" href="https://cdn.idealo.com/storage/ids-assets/ico/favicon.ico"/>
<link rel="preload" as="image" href="//cdn.idealo.com/folder/Product/202740/3/202740303/s1_produktbild_gross/mobilis-elektrorollstuhl-m45-air-rot.jpg"/>
<title>Mobilis Elektrorollstuhl M45 Air rot ab 6780 € | Vergleiche 1 Angebote auf idealo.de</title>
<meta name="cdnPrefix" content="//cdn.idealo.com/storage/offerpage/assets/"/>
<meta name="css" content="//cdn.idealo.com/storage/offerpage/assets/offerpage/idealo-553bbb6677c60f8470ae.css"/>
<meta property="og:image" content="https://cdn.idealo.com/folder/Product/202740/3/202740303/s1_produktbild_max/mobilis-elektrorollstuhl-m45-air-rot.jpg"/>
<meta name="format-detection" content="telephone=no"/>
<meta name="theme-color" content="#082036"/>
<meta name="ipc-init" content="ipc-init" data-main="" data-ipc-init="{&#34;siteId&#34;:1,&#34;pageName&#34;:&#34;offersofproduct&#34;,&#34;productId&#34;:202740303,&#34;hasVariants&#34;:false,&#34;translations&#34;:{&#34;appbanner.install&#34;:&#34;Installieren&#34;,&#34;wishlist.page.compare_link_text&#34;:&#34;Zum Vergleich&#34;,&#34;common.scroll-top&#34;:&#34;Nach oben&#34;,&#34;appbanner.goto_app&#34;:&#34;In der idealo App anzeigen&#34;,&#34;errorreport.please_mark&#34;:&#34;bitte ankreuzen&#34;,&#34;appbanner.open_in_app&#34;:&#34;In der App öffnen&#34;,&#34;appbanner.app&#34;:&#34;idealo Preisvergleichs-App&#34;,&#34;wishlist.page.compare_element&#34;:&#34;Vergleichen&#34;},&#34;showLiveChat&#34;:false,&#34;embedLazyLoading&#34;:false,&#34;addMediaBoxScripts&#34;:false}"/>
<meta name="navigation" content="for preselection of category tree" data-mainid="3932" data-subids="[3932, 14476, 18874]"/>
<link rel="stylesheet" href="//cdn.idealo.com/storage/offerpage/assets/offerpage/idealo-553bbb6677c60f8470ae.css"/><script id="idealo-cmp" type="module" src="https://cdn.idealo.com/storage/cmp/idealo-ucEventHandler.min.js"></script>
<script id="usercentrics-cmp" data-settings-id="oggppIDJJe8IF8" src="https://web.cmp.usercentrics.eu/ui/loader.js"></script>
<script>
/* <![CDATA[ */
var idealo = idealo || {};
idealo.config = {
tracking: {
console: {
enabled: true
},
error: {
debug: false,
enabled: true,
filter: {
isBlacklisted: function(message) {
return (
!!message.match(/similardeals|foxydeals/i) ||
!!message.match(/pricemoon|bestpriceninja/) ||
!!message.match(/symcBF/)
);
},
isValidFile: function(file) {
return !!file.match(/^(http[s]?):\/\/([a-z_\d\-]+\.)*idealo(\.[a-z]+)*\/[\s\S]*$/);
},
isValidBrowser: function() {
return (
typeof Object.create === 'function'
);
}
},
ratio: 10,
stackTrace: {
trimString: ' > m.event.dispatch'
}
},
event: {
debug: false,
enabled: true
}
}
};
var idealoApp = idealoApp || {
getContents: function(text) {
return "";
}
};
/* ]]> */
</script>
<script src="//cdn.idealo.com/storage/offerpage/assets/offerpage/head-b9fc9c351c1033e74b81.js"></script><meta name="request-country" content="DE"/>
<meta name="trafficSource" content="DC"/>
<meta data-ctx-product="{&#34;product_id&#34;:&#34;202740303&#34;,&#34;product_type&#34;:&#34;non_varied&#34;,&#34;category_id&#34;:&#34;18874&#34;,&#34;manufacturer_id&#34;:&#34;Mobilis&#34;,&#34;item_type&#34;:&#34;product&#34;}"/>
<meta name="offerpage-view-id" content="4b27f317-587d-4fdf-975d-9257a4130f79"/>
<meta data-ctx-offerpage-view-id="4b27f317-587d-4fdf-975d-9257a4130f79"/>
<meta data-ctx-user-country-code="DE"/>
<meta data-ctx-has-manufacturer-shop-offer="false"/>
<meta data-trx-load="offerpage_view;1-1-3;sooper" data-trx-load-data="$viewport_height;$viewport_width;$language;$user_country;$has_brand_shop_offer" data-trx-exclude-context="product"/>
<meta data-trx-load="local_ip_type_tracking;1-1-0;local-offers" data-trx-load-data="{&#34;ip_type&#34;:&#34;IP4&#34;,&#34;request_country&#34;:&#34;DE&#34;}"/>
<meta data-trx-load="footer_fallback;1-0-0;sooper" data-trx-exclude-context=""/>
<script >bazadebezolkohpepadr="1998830730"</script><script type="text/javascript" src="https://www.idealo.de/akam/13/7723bc98" defer></script></head><body id="offersofproduct" class="" data-app-context=""><span class="ui-component-include"> <link rel="stylesheet" href="https://cdn.idealo.com/storage/offerpage/assets/opr/_astro/index.9baD7n8z.css"/> </span><link rel="stylesheet" href="https://cdn.idealo.com/storage/price-chart-assets/static/css/bundle-main.css"/>
<div id="shop-overlay-wrapper"></div>
<div id="cross-border-offer-confirm-overlay-wrapper"></div>
<nav class="skip-links" tabindex="0">
<ul>
<li><a href="#i-header-navigation">Zur Navigation</a></li>
<li><a href="#i-header-search">Zur Suche</a></li>
<li><a href="#oopStage-title">Zum Hauptinhalt</a></li>
<li><a href="#offerlist-head">Zu den Angeboten</a></li>
</ul>
</nav>
<div class="page-wrapper">
<div class="main-section">
<header id="header-idealo" class="i-header" data-header-build-version="20260430094811">
<div>
<style>/*<![CDATA[*/
body{margin:0}.i-header-row{padding:10px 10px 5px 10px;width:100%}.i-header-row--brand,.i-header-row--simple{position:relative;text-align:center}.i-header{background-color:#0a3761;box-sizing:border-box;color:#f5f5f5;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;line-height:normal;position:relative;width:100%;z-index:300}.i-header *{box-sizing:border-box}.i-header::after{background-color:#fff;content:"";cursor:auto;display:block;height:100vh;inset:0;opacity:0;pointer-events:none;position:fixed;transition:opacity .2s;z-index:-1}@media(min-width: 600px){.i-header::after{display:none}}.i-header.i-header--initialised::before{background-color:#0a3761;content:"";display:block;inset:0;position:absolute;z-index:-1}.i-header .i-header-slot--search{-ms-grid-row:2;-ms-grid-column:1;-ms-grid-column-span:2;line-height:1;max-width:1280px;padding-bottom:16px;grid-area:i-header-search}@media(min-width: 840px){.i-header .i-header-slot--search{padding-top:16px}}.i-header .i-header-slot--services{-ms-grid-row:1;-ms-grid-column:2;grid-area:i-header-services;margin-top:8px !important;margin-bottom:8px}@media(min-width: 600px){.i-header .i-header-slot--services{padding-bottom:16px;margin-bottom:0;margin-top:16px !important}}@media(min-width: 840px){.i-header .i-header-slot--services{margin-left:0 !important;margin-bottom:0}}.i-header-grid{display:grid;margin:0 16px;max-width:1280px;grid-template-areas:"i-header-brand i-header-services" "i-header-search i-header-search";grid-template-columns:auto auto}@media(min-width: 600px){.i-header-grid{margin:0 24px}}@media(min-width: 840px){.i-header-grid{grid-template-areas:"i-header-brand i-header-search i-header-services";grid-template-columns:min-content minmax(200px, 600px) min-content;grid-column-gap:24px;justify-content:space-between;align-items:center}.i-header .i-header-slot--search{-ms-grid-row:1;-ms-grid-column:3;-ms-grid-column-span:1}.i-header .i-header-slot--services{-ms-grid-row:1;-ms-grid-column:5}}@media(min-width: 960px){.i-header-grid{margin:0 32px}}@media(min-width: 1280px){.i-header-grid{margin:0 auto}}.i-header-brand{-ms-grid-row:1;-ms-grid-column:1;display:flex;align-items:center;grid-area:i-header-brand;margin-top:8px !important;margin-bottom:8px;margin-left:-8px}@media (min-width: 840px){.i-header-brand{-ms-grid-row:1;-ms-grid-column:1}}@media(min-width: 600px){.i-header-brand{padding-bottom:16px;margin-bottom:0;margin-top:16px !important;margin-left:-12px}}@media(min-width: 960px){.i-header-brand{margin-left:-16px}}@media(min-width: 1280px){.i-header-brand{margin-left:0}}@media(min-width: 1312px){.i-header-brand{margin-left:-16px}}@keyframes overlay-mask-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes flyout-content-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes flyout-reveal{0%{transform:scaleY(0)}100%{transform:scaleY(1)}}.i-header-bf-badge{display:none;color:#fff;font-size:24px;line-height:26px;margin-left:8px;position:relative;text-decoration:none}.i-header-bf-badge:hover,.i-header-bf-badge:focus{background-color:unset;color:#fff !important}@media(min-width: 600px){.i-header-bf-badge{margin-left:24px}}@media(max-width: 349px){.i-header-bf-badge{display:none}}.i-header-bf-badge span{display:none;left:4px;min-width:2ch;position:absolute;text-align:center;top:50%;transform:translateY(-50%)}@media(min-width: 600px){.i-header-bf-badge span{display:block}}.i-header-bf-badge-phase-1>:first-child,.i-header-bf-badge-phase-1-last-day>:first-child,.i-header-bf-badge-phase-2>:first-child{display:none}.i-header-bf-badge-phase-1>:last-child,.i-header-bf-badge-phase-1-last-day>:last-child,.i-header-bf-badge-phase-2>:last-child{display:block}@media(min-width: 600px){.i-header-bf-badge-phase-1>:first-child,.i-header-bf-badge-phase-1-last-day>:first-child,.i-header-bf-badge-phase-2>:first-child{display:block}.i-header-bf-badge-phase-1>:last-child,.i-header-bf-badge-phase-1-last-day>:last-child,.i-header-bf-badge-phase-2>:last-child{display:none}}#i-header-bf-badge-days-remaining{display:none}@media(min-width: 600px){#i-header-bf-badge-days-remaining{display:inline}}.i-app-banner{display:none;align-items:center;background-color:#fff;box-shadow:0 0 20px 0 rgba(0,0,0,.2);padding:11px 15px 11px 0;position:relative;width:100%;z-index:400}@media(min-width: 600px){.i-app-banner{display:none}}.i-app-banner>button{padding:15px}.i-app-banner>button i{color:#2d2d2d;display:block;height:15px;width:15px}.i-app-banner-close{background:rgba(0,0,0,0);border:none;cursor:pointer}.i-app-banner-close:hover,.i-app-banner-close:focus{opacity:.7}.i-app-banner-close svg{width:15px;height:15px}.i-app-banner-wrapper{align-items:center;display:flex;flex:1 1 0}.i-app-banner-wrapper p{margin:0}.i-app-banner-wrapper>div,.i-app-banner-wrapper>img{margin-right:10px}.i-app-banner-text-wrapper{flex:1 1 0}.i-app-banner-title{color:#2d2d2d;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:700;line-height:1.4;margin:0}.i-app-banner-subtitle{color:#2d2d2d;display:none;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:10px;line-height:1.2;margin:0}@media(min-width: 480px){.i-app-banner-subtitle{display:block;min-width:25%}}.i-app-banner-link-button{border:none;cursor:pointer;align-items:center;background-color:#0665bb;border-radius:4px;color:#fff;display:flex;flex-basis:0;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:500;justify-content:center;padding:0 20px;text-decoration:none;white-space:nowrap;min-width:132px;height:40px}.i-app-banner-link-button:hover,.i-app-banner-link-button:focus{background-color:#0771d0;color:#fff;text-decoration:none}.i-app-banner img{cursor:pointer;border-radius:8px;flex-shrink:0;height:40px;width:40px}.i-header-logo{color:#fff;display:inline-block;grid-area:i-header-logo;overflow:hidden;position:relative;z-index:2}.i-header-logo svg{display:block;height:24px;width:auto}@media(min-width: 600px){.i-header-logo svg{height:30px}}@media(min-width: 960px){.i-header-logo svg{height:40px}}@media(min-width: 480px){.i-header-logo{position:static}}@media(min-width: 1280px){.i-header-logo{align-self:center}}.i-header-celebration{margin-right:8px}.i-header-celebration svg{display:block;height:24px;width:auto}@media(min-width: 600px){.i-header-celebration svg{height:30px}}@media(min-width: 960px){.i-header-celebration svg{height:40px}}.i-header-deal-of-day{display:none;margin-left:8px}@media(min-width: 360px){.i-header-deal-of-day{display:inline-block}.i-header-deal-of-day .i-header-deal-of-day__large{display:none}.i-header-deal-of-day .i-header-deal-of-day__small{display:block}.i-header-deal-of-day .i-header-deal-of-day__small svg{display:block;height:39px;width:46px}}@media(min-width: 840px){.i-header-deal-of-day{margin-left:24px}.i-header-deal-of-day .i-header-deal-of-day__small{display:none}.i-header-deal-of-day .i-header-deal-of-day__large{display:block}.i-header-deal-of-day .i-header-deal-of-day__large svg{display:block;height:39px;width:96px}}.i-header-logo-simple{color:#fff;display:inline-block;height:30px;overflow:hidden;position:relative;width:100px;z-index:2}.i-header-logo-simple svg{display:block;height:auto;width:100%}@media(min-width: 480px){.i-header-logo-simple{position:static}}@media(min-width: 600px){.i-header-logo-simple{height:38px;width:125px}}.i-header-climate{display:none}@media(min-width: 840px){.i-header-climate{align-items:center;color:#fff;display:flex;font-size:14px;position:absolute;right:20px;text-decoration:none;top:16px}.i-header-climate:hover,.i-header-climate:focus{color:#fff;text-decoration:underline}}.i-header-climate-text{padding-right:10px}.i-header-climate-simple{display:none;padding-top:10px}@media(min-width: 840px){.i-header-climate-simple{align-items:center;color:#fff;display:flex;font-size:14px;position:absolute;right:20px;text-decoration:none;top:0}.i-header-climate-simple:hover,.i-header-climate-simple:focus{color:#fff;text-decoration:underline}}.i-header-climate-simple-text{padding-right:10px}.i-header-verticals{display:flex;justify-content:flex-start;line-height:1.6;margin:0;padding:0 16px;position:relative;white-space:nowrap;background:#0a3761}@media(min-width: 600px){.i-header-verticals{padding:0 24px}}@media(min-width: 960px){.i-header-verticals{justify-content:center;padding:0}}.i-header-vertical{display:inline-block;margin-right:16px;vertical-align:top}@media(min-width: 320px){.i-header-vertical:nth-of-type(4){display:none}}@media(min-width: 480px){.i-header-vertical:nth-of-type(4){display:inline-block}}@media(min-width: 960px){.i-header-vertical:nth-of-type(4){margin-right:24px}}.i-header-vertical:last-of-type{margin-right:0}.i-header-vertical-link{color:#fff;display:inline-block;font-size:14px;font-weight:300;line-height:20px;padding-top:16px;position:relative;text-decoration:none;text-transform:uppercase}.i-header-vertical-link[href]:hover,.i-header-vertical-link[href]:focus,.i-header-vertical-link[href]:active{color:#a0bdda}.i-header-vertical-link--active{cursor:default;text-decoration:underline;text-underline-offset:4px;text-decoration-color:#f60;text-decoration-thickness:3px;z-index:1}.i-header-vertical--border{position:relative}.i-header-vertical--border a{margin-right:16px}@media(min-width: 960px){.i-header-vertical--border a{margin-right:24px}}.i-header-vertical--border:after{background-color:#fff;content:"";display:inline-block;height:24px;position:absolute;right:0;bottom:0;width:1px}.i-header .i-header-slot--services{align-items:flex-start;display:flex;justify-content:flex-end;line-height:1;margin-right:-8px;margin-top:10px;column-gap:8px}@media(min-width: 600px){.i-header .i-header-slot--services{align-self:flex-end;margin-right:-12px}}@media(min-width: 840px){.i-header .i-header-slot--services{align-items:center;margin-left:30px;margin-top:0}}@media(min-width: 1280px){.i-header .i-header-slot--services{margin-right:0}}@media(min-width: 1312px){.i-header .i-header-slot--services{margin-right:-16px}}@media(min-width: 600px){.i-header .i-header-slot--services[data-state-login=logged-in] .i-header-slot--wishlist:hover{background-color:rgba(160,189,218,.3);border-radius:4px}}.i-header .i-header-slot--services[data-state-login=logged-in] .i-wishlist-element-heart-loggedOut,.i-header .i-header-slot--services[data-state-login=logged-out] .i-wishlist-element-heart-loggedIn,.i-header .i-header-slot--services[data-state-login=logged-in] .i-wishlist-element-loggedout-heart,.i-header .i-header-slot--services[data-state-login=logged-out] .i-wishlist-element-heart>span:first-child{display:none}.i-header .i-header-slot--services[data-state-login=logged-out] .i-wishlist-element-content{border-radius:4px 4px 0 0}.i-header .i-header-slot--services[data-state-login=logged-out] .i-wishlist-element-content>div:nth-child(2){box-shadow:-2px 4px 4px 0px rgba(45,45,45,.2);left:unset;right:0;top:100%;transform-origin:top;animation:flyout-reveal 150ms ease-out 0s 1 forwards}.i-header .i-header-slot--services[data-state-login=logged-out] .i-wishlist-element-content>div:nth-child(2)>*{animation:flyout-content-fade-in 150ms ease-out 75ms 1 forwards}@supports not (-webkit-touch-callout: none){.i-header .i-header-slot--services[data-state-login=logged-out] .i-wishlist-element-content>div:nth-child(2)>*{opacity:0}}.i-header .i-header-slot--wishlist{display:block;padding-left:0;padding-right:0}.i-header .i-wishlist-element-link{border-radius:4px 4px 0 0;color:#fff;display:block;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;height:100%;line-height:1;margin:0;padding:8px;position:relative;text-align:center;text-decoration:none}@media(min-width: 600px){.i-header .i-wishlist-element-link{padding:4px 12px}}@media(min-width: 1280px){.i-header .i-wishlist-element-link{padding:14px 16px}}.i-header .i-wishlist-element-link:hover{background-color:unset;cursor:pointer;color:#fff !important}.i-header .i-wishlist-element-link:active,.i-header .i-wishlist-element-link:focus{background-color:unset}.i-header .i-wishlist-element-link:has(button.hover){background-color:#fff}.i-header .i-wishlist-element-heart{display:block;height:unset;margin:0;padding:0;position:relative;width:unset}@media(min-width: 960px){.i-header .i-wishlist-element-heart{margin-bottom:0;margin-top:0}}.i-header .i-wishlist-element-heart .SVGInline{display:inline;height:unset;width:unset}.i-header .i-wishlist-element-heart.i-wishlist-element-animated{animation-duration:1s;animation-fill-mode:initial;animation-name:wishlist-element-pulse}.i-header .i-wishlist-element-heart.i-wishlist-element-animated .i-wishlist-element-size{color:#0a3761;visibility:visible}.i-header .i-wishlist-element-size{display:none}.i-header .i-wishlist-element-content{align-items:center;display:flex;height:100%;justify-content:center;margin:0 auto;padding:0}@media(min-width: 480px){.i-header .i-wishlist-element-content{flex-direction:column;justify-content:center}}@media(min-width: 1280px){.i-header .i-wishlist-element-content{flex-direction:row}}.i-header .i-wishlist-element-content:focus{background-color:rgba(0,0,0,0);color:#fff}.i-header .i-wishlist-element-content:focus svg{fill:#fff}@media(min-width: 600px){.i-header .i-wishlist-element-content-wrapper{align-items:center;display:flex;flex-direction:column}}@media(min-width: 840px){.i-header .i-wishlist-element-content-wrapper{padding:0}}@media(min-width: 1280px){.i-header .i-wishlist-element-content-wrapper{flex-direction:row}}.i-header .i-wishlist-element-text{display:none;margin:0;padding:0;white-space:nowrap}@media(min-width: 600px){.i-header .i-wishlist-element-text{display:flex;font-size:12px;line-height:18px}}@media(min-width: 1280px){.i-header .i-wishlist-element-text{display:flex;font-size:14px;line-height:20px}}.i-header header-wishlist svg{fill:#fff;display:block;height:24px !important;overflow:visible;width:24px !important}@media(min-width: 600px){.i-header header-wishlist svg{margin-bottom:2px}}@media(min-width: 1280px){.i-header header-wishlist svg{margin-bottom:0;margin-right:4px}}.i-header header-wishlist [class*=OverlayMask]{animation:150ms ease-out 0s 1 overlay-mask-fade-in;background-color:rgba(0,0,0,.6) !important}@keyframes wishlist-element-pulse{from{transform:scale3d(1, 1, 1)}50%{transform:scale3d(1.2, 1.2, 1.2)}to{box-shadow:0 0 0 0 #fff}}.i-header .i-header-slot--services[data-state-login=logged-in] .i-header-slot-icon-loggedOut,.i-header .i-header-slot--services[data-state-login=logged-out] .i-header-slot-icon-loggedIn{display:none}.i-header .i-header-slot--priceAlert{position:relative}@media(min-width: 600px){.i-header .i-header-slot--priceAlert{margin-right:8px}}.i-header .i-header-slot--priceAlert:after{background-color:#fff;content:"";display:none;height:32px;position:absolute;right:0;width:1px;bottom:2px}@media(min-width: 600px){.i-header .i-header-slot--priceAlert:after{height:48px;display:inline-block;right:-8px}}@media(min-width: 840px){.i-header .i-header-slot--priceAlert:after{height:48px}}@media(min-width: 1280px){.i-header .i-header-slot--priceAlert:after{bottom:10px;height:32px}}.i-header .i-header-slot--priceAlert a{align-items:center;border-radius:4px;display:flex;color:#fff !important;flex-direction:column;padding:8px;text-decoration:none}@media(min-width: 600px){.i-header .i-header-slot--priceAlert a{padding:4px 4px 4px 12px}}@media(min-width: 1280px){.i-header .i-header-slot--priceAlert a{flex-direction:row;padding:14px 8px 14px 16px}}@media(min-width: 600px){.i-header .i-header-slot--priceAlert a:hover{background-color:rgba(160,189,218,.3)}}.i-header .i-header-slot--priceAlert svg{display:block;height:24px !important;width:24px !important}@media(min-width: 600px){.i-header .i-header-slot--priceAlert svg{margin-bottom:2px;margin-right:8px}}@media(min-width: 1280px){.i-header .i-header-slot--priceAlert svg{margin-bottom:0;margin-right:4px}}.i-header .i-priceAlert-link-text{display:none;margin-right:8px;white-space:nowrap}@media(min-width: 600px){.i-header .i-priceAlert-link-text{display:flex;font-size:12px;line-height:18px}}@media(min-width: 1280px){.i-header .i-priceAlert-link-text{display:flex;font-size:14px;line-height:20px}}.i-header .i-header-slot--services[data-state-login=logged-in] .myidealo-button-username{border:unset}.i-header .i-header-slot--account{padding:0}@media(min-width: 600px){.i-header .i-header-slot--account{position:relative}}@media(min-width: 960px){.i-header .myidealo-button-wrapper{flex-direction:column}}@media(min-width: 1280px){.i-header .myidealo-button-wrapper{flex-direction:row}}.i-header .myidealo-button{border-radius:4px;padding:8px}@media(min-width: 600px){.i-header .myidealo-button{padding:4px 12px}}@media(min-width: 840px){.i-header .myidealo-button{padding-bottom:3px}}@media(min-width: 1280px){.i-header .myidealo-button{padding:14px 16px}}.i-header .myidealo-button-icon{height:unset;margin:0 !important;width:unset}.i-header .myidealo-button-icon svg{height:24px !important;width:24px !important}@media(min-width: 600px){.i-header .myidealo-button-icon svg{margin-bottom:2px}}@media(min-width: 1280px){.i-header .myidealo-button-icon svg{margin-bottom:0;margin-right:4px}}.i-header .myidealo-button-greeting-text-wrapper,.i-header .myidealo-button-text{display:none}@media(min-width: 600px){.i-header .myidealo-button-greeting-text-wrapper,.i-header .myidealo-button-text{display:flex;font-size:12px;line-height:18px}}@media(min-width: 1280px){.i-header .myidealo-button-greeting-text-wrapper,.i-header .myidealo-button-text{display:flex;font-size:14px;line-height:20px}}.i-header .myidealo-toggle:not(:checked)+.myidealo-button:hover{background-color:unset !important}@media(min-width: 600px){.i-header .myidealo-toggle:not(:checked)+.myidealo-button:hover{background-color:rgba(160,189,218,.3) !important}}.i-header .myidealo-toggle:checked+.myidealo-button{border-radius:4px 4px 0 0}.myidealo-menu{transform-origin:top;animation:flyout-reveal 150ms ease-out 0s 1 forwards}.myidealo-menu>*{animation:flyout-content-fade-in 150ms ease-out 75ms 1 forwards}@supports not (-webkit-touch-callout: none){.myidealo-menu>*{opacity:0}}@media(min-width: 600px){.myidealo-menu{box-shadow:-2px 4px 4px 0px rgba(45,45,45,.2);left:unset !important;right:-12px !important;top:100%}}@media(min-width: 960px){.myidealo-menu{right:-20px !important}}@media(min-width: 1280px){.myidealo-menu{right:0 !important}}.myidealo-toggle{background-color:rgba(0,0,0,0) !important}.myidealo-toggle:hover{background-color:rgba(0,0,0,0) !important}.myidealo-mask{animation:150ms ease-out 0s 1 overlay-mask-fade-in;background-color:rgba(0,0,0,.6) !important}.i-navigation{height:100%;margin-right:8px}.i-navigation::after{animation:150ms ease-out 0s 1 overlay-mask-fade-in;background-color:rgba(0,0,0,.6);content:"";cursor:auto;display:none;inset:0;position:fixed;z-index:-100}.i-navigation.i-navigation--active .i-navigation-link{background-color:#fff;color:#2d2d2d;border-radius:4px 4px 0 0}.i-navigation.i-navigation--active .i-navigation-link:hover,.i-navigation.i-navigation--active .i-navigation-link:focus,.i-navigation.i-navigation--active .i-navigation-link:active{background-color:#fff}.i-navigation .i-navigation-text{display:none}.i-navigation .i-navigation-link{align-items:center;color:#fff;cursor:pointer;display:flex;height:100%;text-align:center;text-decoration:none;transition:background-color 150ms ease-out;border-radius:4px}@media(min-width: 480px){.i-navigation .i-navigation-link{flex-direction:column;justify-content:center}}@media(min-width: 960px){.i-navigation .i-navigation-link{flex-direction:row}}@media(min-width: 600px){.i-navigation .i-navigation-link:hover,.i-navigation .i-navigation-link:active{background-color:rgba(160,189,218,.3)}}.i-navigation .i-navigation-icon{display:block}@media(min-width: 320px){.i-navigation .i-navigation-icon{padding:8px}}@media(min-width: 600px){.i-navigation .i-navigation-icon{padding:14px 12px}}@media(min-width: 960px){.i-navigation .i-navigation-icon{display:inline-block;margin-bottom:0;padding:14px 16px}}.i-navigation .i-navigation-icon svg{display:block;height:24px;width:24px}.i-navigation .i-navigation-icon--closed{display:block;fill:#fff}.i-navigation .i-navigation-icon--open{display:none}.i-navigation .i-navigation-overlay{background-color:#fff;bottom:0;display:none;height:100%;left:0;max-width:1280px;overflow:hidden;position:fixed;right:0;top:0;width:100%;z-index:100}@media(min-width: 600px){.i-navigation .i-navigation-overlay{background-color:rgba(0,0,0,0);bottom:auto;height:auto;left:auto;margin:0 auto;overflow:visible;position:absolute;top:auto}}@media(min-width: 1280px){.i-navigation .i-navigation-overlay{right:auto}}@media(min-width: 1312px){.i-navigation .i-navigation-overlay{max-width:1312px}}.i-navigation.i-navigation--overlay-open .i-navigation-overlay{display:flex}@media(min-width: 600px){.i-navigation.i-navigation--overlay-open .i-navigation-overlay{display:block}}.i-navigation.i-navigation--overlay-open::after{display:block}.i-navigation.i-navigation--overlay-open .i-navigation-icon--closed{display:none}.i-navigation.i-navigation--overlay-open .i-navigation-icon--open{display:block;fill:#000}.i-search{display:block;height:100%;padding:0;position:relative;width:100%;max-height:48px}.i-search .i-search-form{align-items:stretch;background-color:#fff;border-radius:4px;display:flex;flex-flow:row;flex-wrap:nowrap;height:100%;margin:0;overflow:hidden;position:relative;z-index:3}.i-search .i-search-label{align-self:center;color:#2d2d2d;display:block;flex:1 0 auto}.i-search .i-search-label{clip:rect(1px, 1px, 1px, 1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.i-search .i-search-input{appearance:none;background-color:rgba(0,0,0,0);border:0 none;color:#2d2d2d;display:block;flex:1 1 auto;font-size:18px;height:auto;margin:0;outline:0 none;padding-left:16px;text-overflow:ellipsis;width:50%}.i-search .i-search-input::placeholder,.i-search .i-search-input:focus::-webkit-input-placeholder{color:#767676}.i-search .i-search-input::-webkit-search-cancel-button{display:none}.i-search .i-search-input::-ms-clear{display:none}.i-search .i-search-input:focus{border:0;box-shadow:none}.i-search .i-search-overlay{background-color:#fff;border-radius:0 0 4px 4px;box-shadow:0 0 5px 2px rgba(45,45,45,.5);display:none;left:0;overflow:hidden;position:absolute;right:0;top:100%;transform:translate(0, -2px);z-index:2;transform-origin:top;animation:flyout-reveal 150ms ease-out 0s 1 forwards}.i-search .i-search-overlay>*{animation:flyout-content-fade-in 150ms ease-out 75ms 1 forwards}@supports not (-webkit-touch-callout: none){.i-search .i-search-overlay>*{opacity:0}}.i-search.i-search--overlay-open .i-search-form{border-radius:4px 4px 0 0}.i-search.i-search--overlay-open .i-search-overlay{display:block}.i-search.i-search--overlay-open::after{animation:150ms ease-out 0s 1 overlay-mask-fade-in;background-color:rgba(0,0,0,.6);bottom:0;content:"";cursor:auto;display:block;inset:0;position:fixed;z-index:-100}.i-search-progress-bar::before,.i-search-progress-bar::after{background:linear-gradient(to right, rgba(255, 102, 0, 0.333) 50%, rgb(255, 102, 0) 90%, rgb(221, 68, 0));content:"";height:1px;left:0;opacity:0;position:absolute;right:10px;top:1px;transform:scaleX(0);transform-origin:left}.i-search-progress-bar::before{filter:blur(4px);right:5px}.i-search-progress-bar.i-search-progress-bar--loading::before,.i-search-progress-bar.i-search-progress-bar--loading::after{opacity:1;transform:scaleX(1);transition:opacity .75s ease-in,transform 15s cubic-bezier(0, 0, 0, 1)}.i-search-button{appearance:none;background-color:rgba(0,0,0,0);border:0 none;border-radius:2px;color:#d2d2d2;cursor:pointer;display:block;flex:0 0 48px;height:48px;line-height:1;padding:0 16px;transition:color 150ms ease-out}.i-search-button:hover,.i-search-button:focus,.i-search-button:active{background:none;color:#767676}.i-search-button:focus{outline:1px dotted #d40}.i-search-button svg{display:block;fill:currentColor;height:100%;outline:0 none;width:100%}.i-search-button svg:focus{outline:0 none}.i-search-button--submit{font-size:23px;opacity:1;right:5px}.i-search-button--submit:hover,.i-search-button--submit:focus,.i-search-button--submit:active,.i-search-input:focus~.i-search-button--submit{color:#f60}.i-search-button--submit svg{height:24px;width:24px}.i-search-button--cancel{position:relative;display:none;padding-right:17px}.i-search-input:not(:placeholder-shown)~.i-search-button--cancel{display:block;color:#b4b4b4}.i-search-input:not(:placeholder-shown)~.i-search-button--cancel:hover{color:#2d2d2d}.i-search-button--cancel::after{background-color:#b4b4b4;content:"";display:block;position:absolute;height:32px;right:0px;top:50%;transform:translateY(-50%);width:1px}.i-search-button--cancel svg{height:16px;width:16px}.i-navigation-overlay{cursor:default;display:flex;background-color:rgba(0,0,0,0);flex-direction:column;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;max-height:100%;text-align:left;transform-origin:top;animation:flyout-reveal 150ms ease-out 0s 1 forwards}.i-navigation-overlay>*{animation:flyout-content-fade-in 150ms ease-out 75ms 1 forwards}@supports not (-webkit-touch-callout: none){.i-navigation-overlay>*{opacity:0}}.i-navigation-overlay .i-navigation-overlay-header{display:grid;display:-ms-grid;flex:1 0 auto;grid-template-columns:auto min-content;-ms-grid-columns:auto min-content;padding-bottom:5px;width:100%}@media(min-width: 600px){.i-navigation-overlay .i-navigation-overlay-header{display:none}}.i-navigation-overlay .i-navigation-overlay-wrapper{background:#fff;color:#2d2d2d;display:flex;flex:1 1 200%;flex-direction:row;flex-wrap:nowrap;justify-items:stretch;margin:0 auto;max-width:1280px;min-width:320px;overflow:hidden;padding:0;transform:translate(0, 0);transition:transform ease-in-out 300ms;width:200%}@media(min-width: 600px){.i-navigation-overlay .i-navigation-overlay-wrapper{display:grid;display:-ms-grid;flex-basis:auto;-ms-grid-columns:1fr 3fr;overflow-x:hidden;padding:35px;transform:none;transition:none;width:auto}}@media(min-width: 1312px){.i-navigation-overlay .i-navigation-overlay-wrapper{max-width:1312px}}.i-navigation-overlay.i-navigation-overlay--has-selection .i-navigation-overlay-btn-display--back{display:block}.i-navigation-overlay.i-navigation-overlay--has-selection .i-navigation-overlay-btn-display--close{display:none}.i-navigation-overlay.i-navigation-overlay--has-selection .i-navigation-overlay-wrapper{transform:translate(-50%, 0)}@media(min-width: 600px){.i-navigation-overlay.i-navigation-overlay--has-selection .i-navigation-overlay-wrapper{transform:none}}.i-navigation-overlay .i-navigation-overlay-btn{background-color:rgba(0,0,0,0);border:0 none;color:#2d2d2d;cursor:pointer;font-size:18px;font-weight:bold;line-height:1;margin:0;padding:10px}.i-navigation-overlay .i-navigation-overlay-btn:hover,.i-navigation-overlay .i-navigation-overlay-btn:focus,.i-navigation-overlay .i-navigation-overlay-btn:active{background-color:#fff;color:#f60;outline:0}.i-navigation-overlay .i-navigation-overlay-btn-display{align-items:center;color:inherit;display:grid;display:-ms-grid;grid-template-columns:min-content auto;-ms-grid-columns:min-content auto}.i-navigation-overlay .i-navigation-overlay-btn-display svg{fill:currentColor}.i-navigation-overlay .i-navigation-overlay-btn-display--back{display:none}.i-navigation-list{flex:1 0 50%;margin:0;overflow-y:auto;padding:0 15px}@media(min-width: 480px){.i-navigation-list{display:grid;display:-ms-grid;grid-auto-rows:min-content;grid-template-columns:1fr 1fr;-ms-grid-columns:1fr 1fr}}@media(min-width: 600px){.i-navigation-list{display:block;overflow:hidden}}.i-navigation-list .i-navigation-list-item{align-self:start;color:#2d2d2d;font-size:1rem;justify-self:stretch;line-height:1.2;list-style-type:none;overflow:hidden}@media(min-width: 600px){.i-navigation-list .i-navigation-list-item--active,.i-navigation-list .i-navigation-list-item--preselected{font-weight:bold}}.i-navigation-list .i-navigation-list-item--more{font-weight:bold}.i-navigation-list .i-navigation-list-link{color:inherit;display:block;font-size:16px;font-weight:inherit;overflow:hidden;padding-bottom:15px;padding-top:5px;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}@media(min-width: 600px){.i-navigation-list .i-navigation-list-link{padding-bottom:5px}}.i-navigation-list .i-navigation-list-link:hover,.i-navigation-list .i-navigation-list-link:focus,.i-navigation-list .i-navigation-list-link:active{color:#2d2d2d;font-weight:bold}.i-navigation-list--sub{display:none;grid-column:2;-ms-grid-column:2}@media(min-width: 600px){.i-navigation-list--sub{padding:0 0 0 40px}}.i-navigation-list--sub.i-navigation-list--active{display:block}@media(min-width: 480px){@supports(display: grid){.i-navigation-list--sub.i-navigation-list--active{display:grid;display:-ms-grid;grid-auto-rows:min-content;-ms-grid-columns:1fr 1fr}}}@media(min-width: 960px){@supports(display: grid){.i-navigation-list--sub.i-navigation-list--active{grid-template-columns:1fr 1fr 1fr}}}.i-navigation-list--sub.i-navigation-list--active .i-navigation-list-item{margin-bottom:0}.i-navigation-list--sub .i-navigation-list-item{display:inline-block;width:30%}@supports(display: grid){.i-navigation-list--sub .i-navigation-list-item{display:block;width:auto}}.i-navigation-list--main{grid-column:1;-ms-grid-column:1}@media(min-width: 600px){.i-navigation-list--main{border-right:1px solid #e6e6e6}}.i-suggest-trending{position:relative;padding-bottom:3px}.i-suggest-trending:not(:last-child){border-bottom:1px solid #b4b4b4}.i-suggest-trending .fade-away{background-image:linear-gradient(to right, rgba(255, 255, 255, 0), rgb(255, 255, 255));top:38px;height:30px;position:absolute;right:8px;width:35px}.i-suggest-trending-list{direction:ltr;display:flex;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;margin:0 0 0 12px;overflow-x:auto;padding:10px 0 20px 0;width:calc(100% - 28px)}@media screen and (min-height: 600px)and (orientation: landscape),screen and (min-width: 600px)and (orientation: portrait){.i-suggest-trending-list{display:flex;flex-wrap:wrap;height:89px;overflow:hidden}.fade-away{display:none}}.i-suggest-trending-list-item{align-items:center;background-color:#d7e3ef;border-radius:2px;display:flex;height:30px;justify-content:center;list-style-type:none;margin:4px}.i-suggest-trending-list-item:active{background-color:#a0bdda}.i-suggest-trending-link{color:#587ca6;text-decoration:none;padding:10px}.i-suggest-trending-link:hover{color:#385f8c}.i-suggest-trending-name{vertical-align:middle;white-space:nowrap}.i-suggest{border-top:1px solid #b4b4b4}@media screen and (min-height: 600px)and (orientation: landscape),screen and (min-width: 600px)and (orientation: portrait){.i-suggest.i-suggester-entries .i-suggest-autocomplete-btn{display:none}}.i-suggest-autocomplete-btn{color:#b4b4b4;display:inline-block;flex:0 0 44px;padding:10px}.i-suggest-icon{display:block;fill:currentColor;height:100%;width:auto}.i-suggest-icon.i-suggest-icon--recent{color:#b4b4b4;display:inline-block;margin-right:5px;min-width:24px;max-width:24px;vertical-align:middle}.i-suggest-icon.i-suggest-icon--autocomplete{transform:rotate(45deg)}.i-suggest-button-delete{background-color:rgba(0,0,0,0);border:none;color:#0771d0;cursor:pointer;display:inline-block;font-size:14px;line-height:1;margin-bottom:-5px;margin-right:-10px;margin-top:-5px;padding:5px 16px;text-align:center}.i-suggest-button-delete:hover,.i-suggest-button-delete:focus,.i-suggest-button-delete:active{background-color:rgba(0,0,0,0);color:#f60}.i-suggest-text{align-self:center;color:#b4b4b4;font-size:14px;font-weight:700;text-transform:uppercase}.i-suggest-title{display:flex;justify-content:space-between;padding:10px 10px 0 16px}.i-suggest-list{color:#2d2d2d;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1;margin:0;padding:10px 0 10px 10px}@media screen and (min-height: 600px)and (orientation: landscape),screen and (min-width: 600px)and (orientation: portrait){.i-suggest-list{padding:10px}}.i-suggest-list+.i-suggest-title{border-top:1px solid #b4b4b4;padding-top:15px}.i-suggest-item{align-items:center;display:flex;flex-wrap:nowrap;list-style-type:none;margin:0 0 8px}@media screen and (min-height: 600px)and (orientation: landscape),screen and (min-width: 600px)and (orientation: portrait){.i-suggest-item{margin-bottom:16px}}.i-suggest-item:last-child{margin-bottom:0}.i-suggest-link{color:#2d2d2d;display:flex;flex:1 1 100%;padding:5px 5px;position:relative;text-decoration:none}.i-suggest-item--active .i-suggest-link,.i-suggest-link:hover,.i-suggest-link:focus,.i-suggest-link:active{background-color:rgba(160,189,218,.3);color:#2d2d2d}.i-suggest-details{display:block;flex:1 1 100%;line-height:20px;max-width:100%}.i-suggest-highlight,mark{background-color:rgba(0,0,0,0);color:#2d2d2d;display:inline-block;font-weight:400}.i-suggest-trending-badge{align-items:center;background-color:#d7e3ef;border-radius:2px;color:#587ca6;display:inline-flex;font-size:11px;font-weight:700;height:17px;justify-content:center;margin:0 0 0 5px;padding:2px}.i-suggest-name{display:inline;font-weight:700;vertical-align:middle}.i-suggest-meta{color:#767676;display:inline;font-weight:400;vertical-align:middle}
/*]]>*/</style>
<section id="i-app-banner" class="i-app-banner" data-testid="appBanner">
<button type="button" class="i-app-banner-close" aria-label="Close banner" id="i-app-banner-close">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
<path d="M13.414,12l9.293-9.293a1,1,0,0,0-1.414-1.414L12,10.586,2.707,1.293A1,1,0,0,0,1.293,2.707L10.586,12,1.293,21.293a1,1,0,1,0,1.414,1.414L12,13.414l9.293,9.293a1,1,0,0,0,1.414-1.414Z"></path>
</svg>
</button>
<div class="i-app-banner-wrapper">
<img id="i-app-banner-icon" src="//cdn.idealo.com/storage/design-system-assets/webp/app_icon.webp" alt="idealo app icon" height="40" width="40"/>
<div class="i-app-banner-text-wrapper">
<p class="i-app-banner-title">idealo: Produkt Preisvergleich</p>
<p class="i-app-banner-subtitle" id="i-app-banner-subtitle">Die besten Angebote für Deine Lieblingsprodukte</p>
</div>
<button type="button" class="i-app-banner-link-button" id="i-app-banner-button">
<span id="i-app-banner-button-text">Installieren</span>
</button>
</div>
</section>
<div class="i-header-grid" data-header-variant="A">
<div class="i-header-brand" data-country="DE" data-navigation-url="https://cdn.idealo.com/storage/assets/navigation/navigation_de_DE.json">
<nav class="i-header-navigation">
<div class="i-navigation">
<a id="i-header-navigation" class="i-navigation-link" aria-expanded="false" aria-haspopup="true" aria-label="Kategorien" aria-pressed="false" role="button" href="https://www.idealo.de/preisvergleich/Sitemap.html" title="Kategorien">
<div class="i-navigation-icon i-navigation-icon--closed">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
<path d="M22 13H2a1 1 0 010-2h20a1 1 0 010 2zm1 5a1 1 0 00-1-1H2a1 1 0 000 2h20a1 1 0 001-1zm0-12a1 1 0 00-1-1H2a1 1 0 000 2h20a1 1 0 001-1z"></path>
</svg>
</div>
<div class="i-navigation-icon i-navigation-icon--open">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
<path d="M13.414,12l9.293-9.293a1,1,0,0,0-1.414-1.414L12,10.586,2.707,1.293A1,1,0,0,0,1.293,2.707L10.586,12,1.293,21.293a1,1,0,1,0,1.414,1.414L12,13.414l9.293,9.293a1,1,0,0,0,1.414-1.414Z"></path>
</svg>
</div>
</a>
</div>
</nav>
<a class="i-header-logo" href="https://www.idealo.de" data-tracking-id="i-header-logo">
<svg class="i-header-logo-image" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 657 200" width="200" height="60" x="0" y="0">
<title>idealo - Deutschlands großer Preisvergleich</title>
<path fill="#FFFFFF" d="M0 0h34v27H0zm0 41h34v93H0zm54 34.2c0-6.3-.1-12 1-17.1 1.1-5.1 3.5-10 7.1-13.7C65.7 40.8 71 38 77.9 36s16.2-3 27.9-3h8.4c3.8 0 7.6.3 11.2.9 3.7.6 7 1.6 10.1 3.2 3.1 1.5 5.6 3.6 7.7 6.1 2 2.5 3.2 5.7 3.8 9.5l.1-52.7h33.8v132.9H149V115c-1 3.1-2.8 5.1-4.5 7.4-1.7 2.4-3.9 4.4-6.7 6.2-2.8 1.7-6.4 3-10.4 3.9-4 .9-7.8 1.3-13.3 1.3h-8.2c-11.7 0-21-1-27.9-3-6.9-2-12.2-4.8-15.9-8.5-3.6-3.6-6-7.3-7.1-12.4-1.1-5.1-1-10.8-1-17.1V75.2zm32.8 14.3c0 2.8.2 5.3.6 7.6.4 2.3 1.3 4.1 2.6 5.6s3.3 2.6 5.9 3.4c2.6.8 6.2 1.2 10.9 1.2h18.5c3.7 0 7-.3 9.9-.8 2.9-.5 5.3-1.5 7.2-2.9 1.9-1.4 3.4-3.3 4.3-5.7 1-2.4 1.5-5.5 1.5-9.4v-10c0-3.9-.5-7-1.5-9.4-1-2.4-2.4-4.3-4.3-5.7-1.9-1.4-4.3-2.4-7.2-2.9-2.9-.5-6.2-.8-9.9-.8h-18.5c-4.6 0-8.2.4-10.9 1.2-2.6.8-4.6 1.9-5.9 3.4-1.3 1.5-2.2 3.3-2.6 5.6-.4 2.3-.6 4.8-.6 7.6v12zM288.2 107c-.5 5.1-5.4 6.1-13.3 6.1h-23.4c-8 0-16.8-4-16.8-12.6v-6.7h87V77.3c0-32.6-15-44.3-52.7-44.3h-25c-25.7 0-43 11.4-43 47.1v9.2c0 40.3 23.4 44.7 46.9 44.7h33.8c29.4 0 39.9-5.9 40.2-27h-33.7zm-53.3-37.4c0-10.3 4.1-15.8 17.1-15.8h20.1c12.9 0 17.1 5.4 17.1 15.8V74H235v-4.4zM335 98.9c0-26 37-24.8 40.2-24.8H402c6.9 0 16.3 2.3 19.5 5.7l.6.6V69.8c0-10.3-3.9-16-16.8-16h-20.1c-10.8 0-16.7 1.5-16.7 6.2H338c0-20.2 16.3-27 42.4-27H420c23.6 0 35.9 12.4 35.9 35.2V133h-33.8v-12.6l-2 3.5c-5.7 8.2-10.1 10.1-27.3 10.1H369c-21 0-34-4.4-34-26.9v-8.2zm74.4 15.3c9.3 0 12.9-3.7 12.9-10.6 0-12-3-13.7-21.2-13.9h-16.2c-13.5-.1-16.8 3.3-16.9 10.5-.2 11 3.4 14 16.9 14h24.5zM476 134h34V0h-34v134zm53-62.4c0-32.1 21.1-38.6 39.7-38.6h48.5c18.6 0 39.7 6.5 39.7 38.6v23.8c0 32.1-21.1 38.6-39.7 38.6h-48.5c-18.6 0-39.7-6.5-39.7-38.6V71.6zm32.8 17.7c0 2.8.2 5.4.6 7.6.4 2.3 1.3 4.2 2.6 5.6 1.3 1.5 3.4 2.6 6 3.4 2.7.8 6.4 1.2 11.1 1.2h18.5c3.8 0 7.1-.3 10.1-.8s5.4-1.5 7.4-2.9 3.4-3.3 4.4-5.7c1-2.4 1.5-5.6 1.5-9.5v-9.6c0-3.9-.5-7-1.5-9.5-1-2.4-2.5-4.3-4.4-5.7-2-1.4-4.4-2.4-7.4-2.9s-6.3-.8-10.1-.8h-18.5c-4.7 0-8.4.4-11.1 1.2-2.7.8-4.7 1.9-6 3.4-1.3 1.5-2.2 3.4-2.6 5.6-.4 2.3-.6 4.8-.6 7.6v11.8z"></path>
<path fill="#FF6600" d="M0 200h657v-27H0v27z"></path>
</svg>
</a>
</div>
<div class="i-header-slot--search" id="i-search-wrapper" data-country="DE" data-trending-url="https://cdn.idealo.com/storage/assets/trending-searches/trending_searches_de_DE.json" data-suggest-host="https://www.idealo.de" data-submit-action-url="https://www.idealo.de/preisvergleich/MainSearchProductCategory.html">
<div class="i-search">
<form id="i-header-search" class="i-search-form" role="search" aria-expanded="false" aria-haspopup="true" action="https://www.idealo.de/preisvergleich/MainSearchProductCategory.html" method="get">
<label class="i-search-label" for="i-search-input">Ich suche ...</label>
<input type="search" class="i-search-input" id="i-search-input" name="q" value="" placeholder="Ich suche ..." autocomplete="off" autocapitalize="off" spellcheck="false"/>
<button type="reset" class="i-search-button i-search-button--cancel" title="Abbrechen" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
<path d="M22.414 19.586a2 2 0 11-2.828 2.828L12 14.828l-7.586 7.586a2 2 0 01-2.828-2.828L9.172 12 1.586 4.414a2 2 0 012.828-2.828L12 9.172l7.586-7.586a2 2 0 112.828 2.828L14.828 12z"></path>
</svg>
</button>
<button type="submit" class="i-search-button i-search-button--submit" title="Suchen">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
<path d="M22.658,21.28,17.9,16.522a9.558,9.558,0,1,0-1.424,1.4l4.768,4.768a1,1,0,1,0,1.414-1.414ZM3.049,10.513a7.5,7.5,0,1,1,7.5,7.5A7.509,7.509,0,0,1,3.049,10.513Z"></path>
</svg>
</button>
</form>
</div>
</div>
<div class="i-header-slot--services" data-state-login="logged-out">
<header-wishlist class="i-header-slot--wishlist i-wishlist-element" data-site="de">
<a href="//www.idealo.de/wishlist/de" class="i-wishlist-element-link" aria-label="Merkzettel" title="Merkzettel">
<div class="i-wishlist-element-content">
<div class="i-wishlist-element-content-wrapper">
<span class="i-wishlist-element-heart i-wishlist-element-heart-loggedIn">
<svg aria-hidden="true" height="24" width="24" viewBox="0 0 24 24" data-icon="heart" role="img">
<path d="M21.3 3.8a5.6 5.6 0 00-8.1 0L12 5l-1.2-1.2a5.6 5.6 0 00-8.1 0 6.2 6.2 0 000 8.5l1.2 1.2L12 22l8.1-8.5 1.2-1.2a6.2 6.2 0 000-8.5z"></path>
</svg>
</span>
<span class="i-wishlist-element-heart i-wishlist-element-heart-loggedOut">
<svg aria-hidden="true" height="24" width="24" viewBox="0 0 24 24" data-icon="heart" role="img">
<path d="M17.25 4a3.61 3.61 0 012.62 1.14 4.2 4.2 0 010 5.74l-1.18 1.23-1.3 1.37-5.38 5.62-.01-.01-5.38-5.6-1.31-1.38-1.18-1.23a4.2 4.2 0 010-5.74 3.58 3.58 0 015.25 0l1.18 1.23L12 7.9l1.45-1.51 1.17-1.23A3.62 3.62 0 0117.25 4m0-2a5.62 5.62 0 00-4.07 1.76L12 5l-1.18-1.23a5.58 5.58 0 00-8.14 0 6.21 6.21 0 000 8.5l1.18 1.24L12 22l8.14-8.5 1.17-1.23a6.21 6.21 0 000-8.5A5.62 5.62 0 0017.25 2z"></path>
</svg>
</span>
<span class="i-wishlist-element-text">Merkzettel</span>
</div>
</div>
</a>
</header-wishlist>
<div class="i-header-slot--priceAlert">
<a href="//www.idealo.de/pricealerts" title="Preiswecker">
<span class="i-header-slot-icon-loggedIn"><svg class="i-header-price-alert-logo" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
<path fill="#ffffff" d="M2 7.03a1 1 0 01-1-1 5 5 0 015-5 1 1 0 010 2 3 3 0 00-3 3 1 1 0 01-1 1zM22 7.02a1 1 0 001-1A5 5 0 0018 1.04a1 1 0 00.01 2 3 3 0 013.01 2.98 1 1 0 001 1zM20.7 21.27a1 1 0 11-1.41 1.41l-1.55-1.54a9.94 9.94 0 01-11.5 0L4.7 22.68a1 1 0 11-1.41-1.41l1.44-1.44a10 10 0 1114.53 0zM13.01 8a1 1 0 00-2 0v5h-3a1 1 0 000 2h4a1 1 0 001-1z"></path>
</svg></span>
<span class="i-header-slot-icon-loggedOut"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
<path fill="#ffffff" d="M2 7.03a1 1 0 01-1-1 5 5 0 015-5 1 1 0 010 2 3 3 0 00-3 3 1 1 0 01-1 1zM22 7.02a1 1 0 001-1A5 5 0 0018 1.04a1 1 0 00.01 2 3 3 0 013.01 2.98 1 1 0 001 1zM20.7 21.27a1 1 0 11-1.41 1.41l-1.55-1.54a9.94 9.94 0 01-11.5 0L4.7 22.68a1 1 0 11-1.41-1.41l1.44-1.44a10 10 0 1114.53 0zm-8.7-.3a8 8 0 10-8-8 8 8 0 008 8zM12 15a1 1 0 001-1V8a1 1 0 00-2 0v5H8a1 1 0 000 2z"></path>
</svg></span>
<span class="i-priceAlert-link-text">Preiswecker</span>
</a>
</div>
<div class="i-header-slot--account"><div class="myidealo" data-domain="https://account.idealo.de" data-state-login="unknown" data-user-info="unknown" data-state-menu="initial" id="MyidealoElement" data-myidealo-build-version="20260422024437" data-csrf-token="boJRglnw7tJhp1hR0JaT0rtBtsJ4PjkefMsnK86LpeZcWM0SWuBm4WCSi-BMn2Bhs7un4951m6NBWl0zHqkTHvm7ltJsYat0" data-csrf-header-name="X-CSRF-TOKEN">
<style nonce="4/CvbgpJ/1vuoS3imO6+rhiq8CGaQdQyqP4XjzoVOm0=">
/*<![CDATA[*/
@keyframes fx-fade-and-scale{0%{opacity:1;transform:scale(0)}to{opacity:0;transform:scale(1)}}.myidealo{height:100%;position:relative;width:100%}.myidealo[data-state-login=logged-in] .hide-for-data-state-login-logged-in,.myidealo[data-state-login=logged-out] .hide-for-data-state-login-logged-out,.myidealo[data-state-login=unknown] .hide-for-data-state-login-unknown,.myidealo[data-state-menu=failed] .hide-for-data-state-menu-failed,.myidealo[data-state-menu=loaded] .hide-for-data-state-menu-loaded,.myidealo[data-state-menu=loading] .hide-for-data-state-menu-loading,.myidealo[data-user-info=exist] .hide-for-data-user-info-exist,.myidealo[data-user-info=unknown] .hide-for-data-user-info-unknown{display:none}.myidealo-toggle:checked+.myidealo-button .show-for-data-state-button-deactivated,.myidealo-toggle:checked~.show-for-data-state-button-deactivated,.myidealo-toggle:not(:checked)+.myidealo-button .show-for-data-state-button-activated,.myidealo-toggle:not(:checked)~.show-for-data-state-button-activated{display:none}.myidealo-toggle{-webkit-appearance:none;appearance:none;height:inherit;left:0;position:absolute!important;top:0;width:inherit}.myidealo-button{color:#fff;cursor:pointer;display:block!important;font-size:.875rem;height:100%;line-height:1;margin:0!important;overflow:hidden;position:relative;text-align:center;text-decoration:none;text-overflow:ellipsis;-webkit-user-select:none;user-select:none;white-space:nowrap;width:100%}.myidealo-button:focus,.myidealo-button:hover{background-color:rgba(160,189,218,.3);color:#fff}.myidealo-toggle:checked+.myidealo-button{background-color:#fff;color:#2d2d2d;z-index:100}.myidealo-button-wrapper{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center}@media print,screen and (min-width:60em){.myidealo-button-wrapper{flex-direction:row}}.myidealo-button-icon{display:inline-block;height:24px;width:24px}@media print,screen and (min-width:37.5em){.myidealo-button-icon{margin-bottom:3px;margin-top:-2px}}@media print,screen and (min-width:60em){.myidealo-button-icon{margin-bottom:0;margin-right:3px}}.myidealo-button-icon svg{display:block;fill:currentcolor;overflow:visible}.myidealo-button-icon-cancel svg{padding:2px}.myidealo-button-text{display:none}@media print,screen and (min-width:37.5em){.myidealo-button-text{display:inherit;white-space:nowrap}}.myidealo-button-greeting-text-wrapper{display:flex;flex-direction:row;justify-content:space-between;line-height:normal}.myidealo-button-greeting{display:none}@media print,screen and (min-width:60em){.myidealo-button-greeting{display:inherit;white-space:nowrap}}.myidealo-button-greeting-text{max-width:13ch;overflow-x:hidden;overflow-y:visible;padding-left:3px;text-overflow:ellipsis;white-space:nowrap}@media print,screen and (min-width:60em){.myidealo-button-greeting-text{display:block}}@media print,screen and (min-width:37.5em){.myidealo-button-greeting-text{display:block}}.myidealo-menu::before{background-color:#fff;bottom:0;content:"";display:block;left:0;opacity:0;position:absolute;right:0;top:0;transition:opacity 500ms ease-in-out,z-index 500ms step-end;width:100%;z-index:-1}[data-state-menu=loading] .myidealo-menu::before{opacity:1;transition:opacity 500ms ease-in-out,z-index 500ms step-start;z-index:1}[data-state-menu=loading] .myidealo-menu::after{animation:2s infinite ease-in-out;animation-name:fx-fade-and-scale;background:#f60;border-radius:50%;content:"";display:block;height:4rem;left:50%;margin-left:-2rem;margin-top:-2rem;position:absolute;top:50%;width:4rem;z-index:2}.myidealo-menu{background-color:#fff;color:#2d2d2d;cursor:default;min-width:320px;overflow:hidden;right:0;text-align:left;transition:height 1s;z-index:100}@media print,screen and (max-width:37.49875em){.myidealo-menu{inset:0;height:100%;overflow:auto;position:fixed}}@media print,screen and (min-width:37.5em){.myidealo-menu{position:absolute;width:200%}[data-state-menu=loading] .myidealo-menu{min-height:19rem}[data-state-login=logged-out]:not([data-state-menu=failed]) .myidealo-menu{min-width:480px}}@media print,screen and (min-width:52.5em){.myidealo-menu{max-width:1280px}}.myidealo-menu .h2{font-size:1.5rem;font-weight:400;line-height:1;margin:0}.myidealo-menu a{color:#0771d0;text-decoration:none;white-space:nowrap}.myidealo-menu a:focus,.myidealo-menu a:hover{color:#f60}.myidealo-menu ul{line-height:inherit;list-style:none;margin:0 0 1rem;padding:0}.myidealo-menu ul:last-child,.myidealo-menu-body:last-child{margin-bottom:0}.myidealo-menu-body{padding:1.5rem 1rem}@media print,screen and (min-width:30em){.myidealo-menu-body{padding-left:2rem;padding-right:2rem}}@media print,screen and (min-width:60em){.myidealo-menu-body{padding-left:2.5rem;padding-right:2.5rem}}.myidealo-menu-close{padding:1rem;position:absolute;right:0;top:0}.myidealo-menu-entries a{display:block;font-size:1rem!important;padding:.5rem 0}.myidealo-menu-header{padding:1rem}@media print,screen and (max-width:37.49875em){.myidealo-menu-header{border-bottom:1px solid #d2d2d2}}@media print,screen and (min-width:30em){.myidealo-menu-header{padding-left:2rem;padding-right:2rem}}@media print,screen and (min-width:37.5em){.myidealo-menu-header{display:none}}.myidealo-mask{display:none}@media print,screen and (min-width:37.5em){.myidealo-mask{background-color:rgba(10,55,97,.6);inset:0;display:block;margin:0!important;position:fixed;z-index:-2}}html.no-js .myidealo-mask{z-index:1}
/*]]>*/
</style>
<input aria-controls="MyidealoMenu" aria-haspopup="true" class="myidealo-toggle" id="MyidealoToggle" type="checkbox"/>
<label aria-label="Mein idealo" class="myidealo-button" for="MyidealoToggle">
<span class="myidealo-button-wrapper">
<span class="myidealo-button-icon">
<span class="myidealo-button-icon-user show-for-data-state-button-deactivated hide-for-data-state-login-logged-out"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
<path d="M17 6a5 5 0 11-5-5 5 5 0 015 5zm.3 6.4a.5.5 0 00-.5 0 8 8 0 01-9.6 0 .5.5 0 00-.5 0A6.8 6.8 0 003 18v3.5A1.5 1.5 0 004.5 23h15a1.5 1.5 0 001.5-1.5V18a6.8 6.8 0 00-3.7-5.6z"></path>
</svg>
</span>
<span class="myidealo-button-icon-user show-for-data-state-button-deactivated hide-for-data-state-login-logged-in hide-for-data-state-login-unknown"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
<path d="M16.1 14a4.9 4.9 0 012.9 4v2.5a.5.5 0 01-.5.5h-13a.5.5 0 01-.5-.5V18a4.9 4.9 0 012.9-4 8.9 8.9 0 004.1 1 9 9 0 004.1-1m0-2a2 2 0 00-.9.2 7 7 0 01-6.3 0 2.3 2.3 0 00-1-.2 2 2 0 00-1 .3A6.8 6.8 0 003 18v3a2 2 0 002 2h14a2 2 0 002-1.9v-3a6.9 6.9 0 00-4-5.9 1.8 1.8 0 00-.9-.2zM12 3a3 3 0 11-3 3 3 3 0 013-3m0-2a5 5 0 105 5 5 5 0 00-5-5z"></path>
</svg>
</span>
<span class="myidealo-button-icon-cancel show-for-data-state-button-activated"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
<path d="M13.4 12l9.3-9.3a1 1 0 00-1.4-1.4L12 10.6 2.7 1.3a1 1 0 00-1.4 1.4l9.3 9.3-9.3 9.3a1 1 0 101.4 1.4l9.3-9.3 9.3 9.3a1 1 0 001.4-1.4z"></path>
</svg>
</span>
</span>
<span class="hide-for-data-state-login-logged-out">
<span class="hide-for-data-user-info-exist">
<span class="myidealo-button-text">Mein idealo</span>
</span>
<span class="myidealo-button-greeting-text-wrapper hide-for-data-user-info-unknown">
<span class="myidealo-button-greeting">Hallo</span>
<span class="data-hj-suppress myidealo-button-text myidealo-button-username myidealo-button-greeting-text"></span>
</span>
</span>
<span class="myidealo-button-text hide-for-data-state-login-logged-in hide-for-data-state-login-unknown">Anmelden</span>
</span>
</label>
<div class="myidealo-menu show-for-data-state-button-activated" id="MyidealoMenu" role="menu">
<!-- <div th:replace="~{fragments/myidealo/myidealoMenuFallback :: content}"></div>-->
</div>
<label aria-label="myidealo Menü schließen" class="myidealo-mask show-for-data-state-button-activated" for="MyidealoToggle"></label>
<script nonce="4/CvbgpJ/1vuoS3imO6+rhiq8CGaQdQyqP4XjzoVOm0=">
/*<![CDATA[*/
(()=>{"use strict";var e={267(e,t,n){n.d(t,{R2:()=>a,Ri:()=>i,TV:()=>s,Yj:()=>o});function o(e){if(!i(e.name))return!1
;document.cookie=`${e.name}=;domain=${e.domain};path=${e.path};expires=Thu, 01 Jan 1970 00:00:00 GMT`;return!0}function i(e,t=!1){
const n=new RegExp(`[; ]${e}=([^\\s;]*)`),o=(" "+document.cookie).match(n);return e&&o?t?o[1]:decodeURIComponent(o[1]):null}
function a(e,t=window.location.hostname){if("string"==typeof e){const n=t.split("."),o=n.indexOf(e);if(o>=0)return n.slice(o).join(".")}return t}
function s(e,t=!1){if("object"!=typeof e)return!1;if(void 0===e.name||void 0===e.value)return!1
;const n=t?e.value:encodeURIComponent(e.value),o=Object.entries(e).reduce((e,[t,n])=>"name"===t||"value"===t?"":e+";"+t+(n?"="+n:""),"")
;document.cookie=`${e.name}=${n}${o}`;return!0}},200(e,t,n){n.d(t,{Cg:()=>a,Jt:()=>d,WQ:()=>l});var o=n(764),i=n(592);const a=()=>{let e=(0,
i.E)(window.location.hostname);return"production"!==e&&"staging"!==e||s(window.location.hostname)?window.dataLayer:window.utag_data};function s(e){
return e.match(/account(?:-stg)?\.idealo\.(?:co\.)?\w{2,3}/)}function r(e=a()){if(void 0===e)return!1
;if(!Array.isArray(e))throw new TypeError("Data layer has to be an array!");return!0}function l(e,t=a()){"object"===(0,o.Ax)(e)&&r(t)&&t.push(e)}
function d(e,t=a()){let n;if(!r(t))return null;if(null==e)throw new TypeError("Key is required");for(let i=0;i<t.length;i++)"object"===(0,
o.Ax)(t[i])&&e in t[i]&&(n=t[i][e]);return n}},764(e,t,n){n.d(t,{$N:()=>o,Ax:()=>a,ab:()=>i});function o(e,t){
return Array.isArray(e)&&Array.isArray(t)?e.concat(t):Object.assign({},e,t,Object.keys(e).filter(n=>"object"==typeof e[n]&&Object.prototype.hasOwnProperty.call(t,n)).reduce((n,i)=>{
n[i]=o(e[i],t[i]);return n},{}))}function i(e={},t={}){
return Object.keys(e).length===Object.keys(t).length&&Object.keys(e).every(n=>t.hasOwnProperty(n)&&e[n]===t[n])}function a(e){
return{}.toString.call(e).match(/\s([a-z|A-Z]+)/)[1].toLowerCase()}},592(e,t,n){n.d(t,{E:()=>i,m:()=>a});const o=[{
local:/^(https?:\/\/)?(?:localhost|[\w-.]*(local|dev|usr)[\w-.]+(?:\.idealo\.(co\.)?\w{2,3}|local))(:\d{2,5})?$/},{
testing:/^(https?:\/\/)?[\w-.]+(tst|testing)[\w-.]*\.(svc|idealo\.(co\.)?\w{2,3})(:\d{2,5})?$/},{
staging:/^(https?:\/\/)?[\w-.]+(stg|staging|dev)[\w-.]*\.(svc|idealo\.(co\.)?\w{2,3}|idealo\.cloud)(:\d{2,5})?(\/.*)?$/},{
production:/^(https:\/\/)?[\w-.]*\.idealo\.(co\.)?\w{2,3}$/}];function i(e){let t;for(let n=0;n<o.length;n++){const i=o[n],a=Object.keys(i)[0];if(i[a].test(e)){
t=a;break}}if(!t)throw new Error(`Will not resolve stage for "${e}"`);return t}function a(e){
const t=e.split("/")[0===e.indexOf("http")?2:0].split(":")[0],n=t.indexOf(".")>=0?t.split(".").pop():"";return"uk"===n?"co.uk":n}},32(e,t,n){n.d(t,{iA:()=>O,
ug:()=>y,x3:()=>_});var o=n(267),i=n(200),a=n(764),s=n(592);const r="account",l=(0,o.R2)("idealo"),d=v(),c=31536e3,u="/";window[r]=window[r]||{};function h(e){
let t={};if("loggedIn"===e.loginState){t.ls=1;e.lastRefresh&&(t.lr=Math.floor(e.lastRefresh/1e3))}"loggedOut"===e.loginState&&(t.ls=0);return t}function g(e){
return{name:d,value:"unknown"===e.loginState?"":w(e),domain:l,path:u,"max-age":"unknown"===e.loginState?-1:c,samesite:"strict"}}function m(e){let t={
loginState:"unknown"};if(1===e.ls){t.loginState="loggedIn";e.lr&&(t.lastRefresh=1e3*e.lr)}0===e.ls&&(t.loginState="loggedOut");return t}function f(e){let t={
loginState:"unknown"};if("string"!=typeof e||0===e.length)return t;try{t=m(JSON.parse(decodeURIComponent(escape(window.atob(e)))))}catch(e){}return t}
function p(e){const t=new CustomEvent("userinfo",{detail:e,bubbles:!0,cancelable:!0});document.dispatchEvent(t)}function w(e){
return window.btoa(unescape(encodeURIComponent(JSON.stringify(h(e)))))}function v(e="userInfo"){return`${e}-${(0,
s.E)(window.location.hostname)}`.replace("-production","").replace("-local","-testing")}function b(){const{loginState:e}=y();return e}function y(){let e={
loginState:"unknown"},t=E();const n=S(),i=k();if("unknown"===t.loginState){"unknown"!==n.loginState?e=n:"unknown"!==i.loginState&&(e.loginState=i.loginState)
;if("unknown"!==e.loginState){(0,o.TV)(g(e),!0);t=e}}else{"loggedIn"!==t.loginState&&"loggedOut"!==t.loginState||(e.loginState=t.loginState)
;Number.isInteger(t.lastRefresh)&&(e.lastRefresh=t.lastRefresh)}if(!(0,a.ab)(e,n)){const o=e.loginState!==n.loginState;A(e);o&&p({loginState:t.loginState})}
return e}function S(){const e=window[r].userInfo;return I(e)?e:{loginState:"unknown"}}function E(){const e=f((0,o.Ri)(d,!0));return I(e)?e:{loginState:"unknown"
}}function k(){const e=(0,i.Jt)("user_email_hashed");return{loginState:"string"==typeof e&&/[0-9a-f]{64}/.test(e)?"loggedIn":"unknown"}}function _(){
return"loggedIn"===b()}function I(e){if("object"!=typeof e||0===Object.keys(e).length)return!1;const{loginState:t,lastRefresh:n}=e
;if(["loggedIn","loggedOut","unknown"].indexOf(t)<0)throw new Error("User info login state has invalid value: "+t)
;if("lastRefresh"in e&&!Number.isInteger(n))throw new Error("User info last refresh has invalid value: "+n);return!0}function O(e){if(!I(e))return;const t=y()
;if((0,a.ab)(t,e))return;"loggedOut"===e.loginState&&"loggedIn"!==t.loginState&&(e.loginState="unknown");if("loggedIn"!==e.loginState){const e={name:"userinfo",
domain:l,path:u};(0,o.Yj)(e)}t.lastRefresh-e.lastRefresh<1e3&&(e.lastRefresh=t.lastRefresh);"unknown"!==e.loginState&&(e.lastRefresh=e.lastRefresh||Date.now())
;(0,o.TV)(g(e),!0);const n=S().loginState!==e.loginState;A(e);n&&p({loginState:e.loginState})}function A(e){if(!I(e))return!1;if((0,
a.ab)(window[r].userInfo,e))return!1;window[r].userInfo=e;return!0}function R(){"object"!=typeof window[r]&&(window[r]={})
;"object"!=typeof window[r].userInfo&&(window[r].userInfo={});if(window[r].userInfo.loginState)return!1;A(E())}R()},332(e,t,n){n.d(t,{X:()=>r})
;var o=n(200),i=n(764);const a=/[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}/gi;function s(e,t=a){return e.replace(t,e=>e.replace(/[a-z0-9]/gi,"*"))}
function r(e,t={}){let n=(0,i.$N)(t,e)
;if(!("object"==typeof n&&["event","version","owner"].every(e=>e in n)))throw new Error(`Tracking data incomplete: ${JSON.stringify(n)}`)
;("object"!=typeof n.data||null===n.data||0===Object.keys(n.data).length)&&delete n.data;const r=JSON.stringify(n);a.test(r)&&(n=JSON.parse(s(r)));o.WQ(n)}},
256(e,t,n){n.d(t,{A:()=>d});var o=n(332);const i={headerEvents:{disable:"disable.idealo.header",disabled:"disabled.idealo.header",
enabled:"enabled.idealo.header"},selectors:{button:".myidealo-button",element:"#MyidealoElement",toggle:".myidealo-toggle",wrapper:".myidealo"}},a={
header_myidealo_button_click:{event:"header_myidealo_button_click",version:"1-0-0",owner:"de.idealo.sso"}},s={activated:"activated",deactivated:"deactivated"}
;function r(e){this.elements=e;this.handler={headerComponentEnabled:this.onHeaderComponentEnabled.bind(this),headerDisable:this.onHeaderDisable.bind(this),
keyupEvents:this.onKeyupEvents.bind(this)};this.bindElementEvents();window.addEventListener("beforeunload",this.resetButton.bind(this))}r.prototype={
bindHeaderEvents(){document.addEventListener(i.headerEvents.enabled,this.handler.headerComponentEnabled)
;document.addEventListener(i.headerEvents.disable,this.handler.headerDisable);document.addEventListener("keyup",this.handler.keyupEvents)},unbindHeaderEvents(){
document.removeEventListener(i.headerEvents.enabled,this.handler.headerComponentEnabled)
;document.removeEventListener(i.headerEvents.disable,this.handler.headerDisable);document.removeEventListener("keyup",this.handler.keyupEvents)},
bindElementEvents(){if(this.elements.toggle.checked){this.elements.toggle.dispatchEvent(new Event("change"));this.setState(s.activated)
}else this.setState(s.deactivated);this.elements.wrapper.addEventListener("click",this.preventWrapperEventPropagation)
;this.elements.toggle.addEventListener("change",this.onStateChange.bind(this))},onActivated(){const e=new Event(i.headerEvents.enabled,{bubbles:!0,cancelable:!0
});this.elements.toggle.checked=!0;this.elements.button.dispatchEvent(e);this.bindHeaderEvents()},onDeactivated(){const e=new Event(i.headerEvents.disabled,{
bubbles:!0,cancelable:!0});this.elements.toggle.checked=!1;this.elements.button.blur();this.elements.button.dispatchEvent(e);this.unbindHeaderEvents()},
onHeaderComponentEnabled(e){e.target!==this.elements.button&&this.setState(s.deactivated)},onHeaderDisable(){this.setState(s.deactivated)},onKeyupEvents(e){
if(27===e.which){this.elements.toggle.focus();this.setState(s.deactivated)}},preventWrapperEventPropagation(e){e.stopPropagation()},getState(){
return this.elements.toggle.checked?s.activated:s.deactivated},onStateChange(e){e&&(0,o.X)({},a.header_myidealo_button_click);const t=this.getState()
;t===s.activated?this.onActivated():t===s.deactivated&&this.onDeactivated()},resetButton(){this.elements.toggle.checked&&(this.elements.toggle.checked=!1)},
setState(e){this.elements.toggle.checked=e===s.activated}};function l(){const e=document.querySelector(i.selectors.element);return new r({
button:e.querySelector(i.selectors.button),toggle:e.querySelector(i.selectors.toggle),wrapper:e})}const d=l},218(e,t,n){n.d(t,{A:()=>m});var o=n(267),i=n(32)
;const a={attribute:"data-state-login",elementSelector:".myidealo",states:{loggedIn:"logged-in",loggedOut:"logged-out",unknown:"unknown"}},s={
attribute:"data-user-info",cookieName:"userinfo",elementSelector:".myidealo-button-username",states:{unknown:"unknown",exist:"exist"}};let r,l;function d(){
return r.getAttribute(a.attribute)}function c(e){d()!==e&&r.setAttribute(a.attribute,e)}function u(e){const{attribute:t,cookieName:n,states:i}=s;let a=(0,
o.Ri)(n);a=a?decodeURIComponent(a.replace(/\+/g," ")).replace(/["']/g,""):"";if(d()!==e||l.textContent!==a){l.textContent=a
;r.setAttribute(t,a?i.exist:i.unknown)}}function h(e){c(e);u(e)}function g(){r=document.body.querySelector(a.elementSelector)
;l=document.body.querySelector(s.elementSelector);const{loggedIn:e,loggedOut:t}=a.states;h((0,i.x3)()?e:t);document.addEventListener("userinfo",n=>{
h("loggedIn"===n.detail.loginState?e:t)})}const m=g},994(e,t,n){n.d(t,{A:()=>y});const o=50,i=5e3;function a(){let e
;if("performance"in window&&"function"==typeof window.performance.getEntriesByType){const t=window.performance.getEntriesByType("navigation")
;"object"==typeof t&&t.length>0&&([e]=t)}return e||null}function s(e){if(void 0===e)throw new TypeError("performanceEntry parameter is required")
;return e instanceof Object&&e.transferSize>0&&e.responseEnd>0&&e.connectStart>=0?Math.round(e.transferSize/(e.responseEnd-e.connectStart)):o}function r(e){
if(void 0===e)throw new TypeError("fileSizeInBytes is required");if("number"!=typeof e)throw new TypeError("fileSizeInBytes must be a number")
;const t=Math.round(e/s(a()));return Math.max(t,i)}
const l=/^https?:\/\/((?:[\w-]+\.)*idealo\.(?:at|co.uk|com|de|es|fr|it)|[a-z-.]+.svc|[a-z0-9]{3,})(:\d{2,5})?$/;function d(e){return l.test(e)||"*"===e}
var c=n(32);function u(e,t){return"string"==typeof t&&e!==t}function h(e,t){
return"string"==typeof e&&"object"==typeof t&&(Array.isArray(t)?t.indexOf(e)>=0:Object.keys(t).map(e=>t[e]).some(t=>t===e))}var g=n(332);const m={
attribute:"data-state-menu",baseUrl:"https://account.idealo.de",menuPath:"/fragments/myidealoMenu",selectors:{element:"#MyidealoElement",menu:".myidealo-menu",
menuItems:{account_settings:".myidealo-menu-entries--settings",help_and_contact:".myidealo-menu-entries--contact",logout:".myidealo-menu-footer--logout",
price_alert:".myidealo-menu-entries--pricealerts",wish_list:".myidealo-menu-entries--wishlist"},menuVariants:{logged_in:".myidealo-menu--loggedIn",
logged_out:".myidealo-menu--loggedOut"},wrapper:".myidealo"}},f={header_myidealo_menu_close:{event:"header_myidealo_menu_close",version:"1-0-0",
owner:"de.idealo.sso"},header_myidealo_menu_open:{event:"header_myidealo_menu_open",version:"1-0-0",owner:"de.idealo.sso"}},p={failed:"failed",
initial:"initial",loaded:"loaded",loading:"loading"};let w;function v(e){this.elements=e;this.isInitialized=!1;this.isVisible=!!this.elements.menu.offsetParent
;this.timeout=3*r(81920);this.timeoutHandler=null;this.state=this.getState()}v.prototype={handleKeyboardEvents(){
const e=Array.from(this.elements.wrapper.querySelectorAll(".myidealo-toggle, .myidealo-menu--logged-in [role=menuitem]"));function t(e,t){return(e%t+t)%t}
function n(n){let o=e.findIndex(e=>e===document.activeElement);"ArrowDown"===n.key&&e[t(o+1,e.length)].focus();"ArrowUp"===n.key&&e[t(o-1,e.length)].focus()}
this.elements.wrapper.addEventListener("keyup",n)},handleLogout(){const e=this.elements.menu.querySelector(".myidealo-menu-footer--logout");function t(t){
t.preventDefault();window.location.href=e.getAttribute("href")}e.addEventListener("click",t)},init(){if(this.isInitialized)return;this.isInitialized=!0
;const e=this.elements.wrapper.dataset.domain||m.baseUrl;d(e)||this.setState(p.failed)
;this.elements.menu.addEventListener("click",this.trackMenuItemClick.bind(this));this.loadMenu(e);this.trackVisibilityChanges()},loadMenu(e){
this.setState(p.loading);const t=new XMLHttpRequest,n=e+m.menuPath;t.onerror=this.setState.bind(this,p.failed)
;t.onload=()=>200===t.status?this.onSuccess(t.responseText):this.setState(p.failed);t.ontimeout=this.setState.bind(this,p.failed);t.open("GET",n)
;t.responseType="text";t.timeout=this.timeout;t.withCredentials=!0;t.send()},onFailed(){
const{menu:e}=this.elements,{menuVariants:t}=m.selectors,n=e.querySelector(t.logged_in);n&&e.removeChild(n);const o=e.querySelector(t.logged_out)
;o&&e.removeChild(o);(0,g.X)({data:{menu_variant:"fallback"}},f.header_myidealo_menu_open);window.location.href=this.elements.wrapper.dataset.domain||m.baseUrl
},onLoading(){this.timeoutHandler=setTimeout(()=>{this.getState()===p.loading&&this.setState(p.failed)},this.timeout)},onSuccess(e){
const{menu:t}=this.elements,n=this.elements.wrapper.querySelector("script[nonce]");n&&(e=e.replaceAll(/nonce="\S+"/g,`nonce="${n.nonce}"`))
;const o=document.createRange().createContextualFragment(e),i=this.getVariant(o);if("logged_out"===i){
t.addEventListener("account",this.setStateByAccountEvent.bind(this));t.appendChild(o);(0,c.iA)({loginState:"loggedOut"});(0,g.X)({data:{menu_variant:i}
},f.header_myidealo_menu_open)}else if("logged_in"===i){this.setState(p.loaded);t.appendChild(o);(0,c.iA)({loginState:"loggedIn"});(0,g.X)({data:{menu_variant:i
}},f.header_myidealo_menu_open);this.handleLogout();this.handleKeyboardEvents()}else this.setState(p.failed)},getState(){
const e=this.state||this.elements.wrapper.getAttribute(m.attribute)||p.initial;return h(e,p)?e:p.failed},setState(e){if(u(this.getState(),e)&&h(e,p)){
this.state=e;this.elements.wrapper.setAttribute(m.attribute,e);clearTimeout(this.timeoutHandler);e===p.failed&&this.onFailed();e===p.loading&&this.onLoading()}
},setStateByAccountEvent(e){const{action:t}=e.detail
;t.match(/^(login|register|password)/)?this.setState(p.loaded):"timeout"===t?this.setState(p.failed):"loading"===t&&this.setState(p.loading)},
getVariant(e=this.elements.menu){const t=["logged_in","logged_out"];for(let n of t)if(e.querySelector(m.selectors.menuVariants[n]))return n;return"fallback"},
trackMenuItemClick(e){for(const t in m.selectors.menuItems)if(e.target.closest(m.selectors.menuItems[t])){const e={event:"header_myidealo_menu_item_click",
data:{menu_item:t,menu_variant:this.getVariant()},owner:"de.idealo.sso",version:"1-0-0"};(0,g.X)(e)}},trackVisibilityChanges(){let e;function t(e){
const t=e[0].isIntersecting,n=this.getVariant(),o=this.getState();if(this.isVisible!==t&&(o===p.loaded||o===p.failed)){this.isVisible=t
;const e=this.isVisible?f.header_myidealo_menu_open:f.header_myidealo_menu_close;(0,g.X)({data:{menu_variant:n}},e)}}e=new IntersectionObserver(t.bind(this),{
root:this.elements.menu.parent,threshold:[0,1]});e.observe(this.elements.menu)}};function b(){const e=document.querySelector(m.selectors.element),t={
menu:e.querySelector(m.selectors.menu),wrapper:e};w=w||new v(t);return w}const y=b},783(e,t,n){var o=n(592);const i=s(window.location.hostname);function a(e,t){
let n="https://";n+="production"===e&&t?`auth.idealo.${t}`:"staging"===e&&t?"com"===t?"auth-dev.idealo.com":`auth-stg.idealo.${t}`:"auth-test.idealo.com"
;n+="/refresh/idtoken";return n}function s(e){return a((0,o.E)(e),(0,o.m)(e))}function r(e){const t=new XMLHttpRequest;function n(){
if(200===t.status&&"function"==typeof e){const{refreshed:n}=JSON.parse(t.response);e(!!n)}}t.onload=n;t.open("POST",i,!0);t.timeout=1e4;t.withCredentials=!0
;t.send()}var l=n(32);const d=3e5;let c;function u(e){return"loggedIn"===e.loginState&&Date.now()-(null==e?void 0:e.lastRefresh)>.9*d}function h(){
"visible"===document.visibilityState&&m()}function g(e){const{action:t}=e.detail;"login.success"!==t&&"register.success"!==t||(0,l.iA)({loginState:"loggedIn",
lastRefresh:Date.now()})}function m(){var e;if("visible"!==(null===(e=document)||void 0===e?void 0:e.visibilityState))return;const t=(0,l.ug)()
;if("loggedIn"===t.loginState){u(t)&&r(e=>{e&&(0,l.iA)({loginState:"loggedIn",lastRefresh:Date.now()})});c=setTimeout(m,d)}else clearTimeout(c)}
const f=window["account"]||{};if(!f.isRefreshTokenHandled){m();document.addEventListener("visibilitychange",h);document.addEventListener("account",g)
;f.isRefreshTokenHandled=!0}}},t={};function n(o){var i=t[o];if(void 0!==i)return i.exports;var a=t[o]={exports:{}};e[o](a,a.exports,n);return a.exports}
n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})};n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);n(783)
;var o=n(256),i=n(994),a=n(218);function s(){(0,i.A)().init()}function r(){(0,a.A)();(0,o.A)().elements.toggle.addEventListener("change",s,{once:!0})}r()})();
//# sourceMappingURL=https://account.idealo.de/js/fragments/myidealo/myidealoElement.js.map
/*]]>*/
</script>
<script nonce="4/CvbgpJ/1vuoS3imO6+rhiq8CGaQdQyqP4XjzoVOm0=">
/*<![CDATA[*/
/*! For license information please see googleOneTap.js.LICENSE.txt */
(()=>{"use strict";var e={};e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){
if("object"==typeof window)return window}}();const t=[{
local:/^(https?:\/\/)?(?:localhost|[\w-.]*(local|dev|usr)[\w-.]+(?:\.idealo\.(co\.)?\w{2,3}|local))(:\d{2,5})?$/},{
testing:/^(https?:\/\/)?[\w-.]+(tst|testing)[\w-.]*\.(svc|idealo\.(co\.)?\w{2,3})(:\d{2,5})?$/},{
staging:/^(https?:\/\/)?[\w-.]+(stg|staging|dev)[\w-.]*\.(svc|idealo\.(co\.)?\w{2,3}|idealo\.cloud)(:\d{2,5})?(\/.*)?$/},{
production:/^(https:\/\/)?[\w-.]*\.idealo\.(co\.)?\w{2,3}$/}];function n(e){let n;for(let r=0;r<t.length;r++){const i=t[r],s=Object.keys(i)[0];if(i[s].test(e)){
n=s;break}}if(!n)throw new Error(`Will not resolve stage for "${e}"`);return n}const r=()=>{},i=function(e){const t=[];let n=0;for(let r=0;r<e.length;r++){
let i=e.charCodeAt(r);if(i<128)t[n++]=i;else if(i<2048){t[n++]=i>>6|192;t[n++]=63&i|128
}else if(55296==(64512&i)&&r+1<e.length&&56320==(64512&e.charCodeAt(r+1))){i=65536+((1023&i)<<10)+(1023&e.charCodeAt(++r));t[n++]=i>>18|240;t[n++]=i>>12&63|128
;t[n++]=i>>6&63|128;t[n++]=63&i|128}else{t[n++]=i>>12|224;t[n++]=i>>6&63|128;t[n++]=63&i|128}}return t},s=function(e){const t=[];let n=0,r=0;for(;n<e.length;){
const i=e[n++];if(i<128)t[r++]=String.fromCharCode(i);else if(i>191&&i<224){const s=e[n++];t[r++]=String.fromCharCode((31&i)<<6|63&s)}else if(i>239&&i<365){
const s=((7&i)<<18|(63&e[n++])<<12|(63&e[n++])<<6|63&e[n++])-65536;t[r++]=String.fromCharCode(55296+(s>>10));t[r++]=String.fromCharCode(56320+(1023&s))}else{
const s=e[n++],o=e[n++];t[r++]=String.fromCharCode((15&i)<<12|(63&s)<<6|63&o)}}return t.join("")},o={byteToCharMap_:null,charToByteMap_:null,
byteToCharMapWebSafe_:null,charToByteMapWebSafe_:null,ENCODED_VALS_BASE:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",get ENCODED_VALS(){
return this.ENCODED_VALS_BASE+"+/="},get ENCODED_VALS_WEBSAFE(){return this.ENCODED_VALS_BASE+"-_."},HAS_NATIVE_SUPPORT:"function"==typeof atob,
encodeByteArray(e,t){if(!Array.isArray(e))throw Error("encodeByteArray takes an array as a parameter");this.init_()
;const n=t?this.byteToCharMapWebSafe_:this.byteToCharMap_,r=[];for(let t=0;t<e.length;t+=3){
const i=e[t],s=t+1<e.length,o=s?e[t+1]:0,a=t+2<e.length,c=a?e[t+2]:0,u=i>>2,h=(3&i)<<4|o>>4;let l=(15&o)<<2|c>>6,d=63&c;if(!a){d=64;s||(l=64)}
r.push(n[u],n[h],n[l],n[d])}return r.join("")},encodeString(e,t){return this.HAS_NATIVE_SUPPORT&&!t?btoa(e):this.encodeByteArray(i(e),t)},decodeString(e,t){
return this.HAS_NATIVE_SUPPORT&&!t?atob(e):s(this.decodeStringToByteArray(e,t))},decodeStringToByteArray(e,t){this.init_()
;const n=t?this.charToByteMapWebSafe_:this.charToByteMap_,r=[];for(let t=0;t<e.length;){const i=n[e.charAt(t++)],s=t<e.length?n[e.charAt(t)]:0;++t
;const o=t<e.length?n[e.charAt(t)]:64;++t;const c=t<e.length?n[e.charAt(t)]:64;++t;if(null==i||null==s||null==o||null==c)throw new a;const u=i<<2|s>>4;r.push(u)
;if(64!==o){const e=s<<4&240|o>>2;r.push(e);if(64!==c){const e=o<<6&192|c;r.push(e)}}}return r},init_(){if(!this.byteToCharMap_){this.byteToCharMap_={}
;this.charToByteMap_={};this.byteToCharMapWebSafe_={};this.charToByteMapWebSafe_={};for(let e=0;e<this.ENCODED_VALS.length;e++){
this.byteToCharMap_[e]=this.ENCODED_VALS.charAt(e);this.charToByteMap_[this.byteToCharMap_[e]]=e
;this.byteToCharMapWebSafe_[e]=this.ENCODED_VALS_WEBSAFE.charAt(e);this.charToByteMapWebSafe_[this.byteToCharMapWebSafe_[e]]=e
;if(e>=this.ENCODED_VALS_BASE.length){this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(e)]=e;this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(e)]=e}}}}}
;class a extends Error{constructor(){super(...arguments);this.name="DecodeBase64StringError"}}const c=function(e){const t=i(e);return o.encodeByteArray(t,!0)
},u=function(e){return c(e).replace(/\./g,"")},h=function(e){try{return o.decodeString(e,!0)}catch(e){}return null};function l(){
if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==e.g)return e.g
;throw new Error("Unable to locate global object.")}const d=()=>l().__FIREBASE_DEFAULTS__,p=()=>{if("undefined"==typeof process||void 0===process.env)return
;const e=process.env.__FIREBASE_DEFAULTS__;return e?JSON.parse(e):void 0},f=()=>{if("undefined"==typeof document)return;let e;try{
e=document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/)}catch(e){return}const t=e&&h(e[1]);return t&&JSON.parse(t)},m=()=>{try{return r()||d()||p()||f()
}catch(e){return}},g=e=>m()?.emulatorHosts?.[e],_=()=>m()?.config,w=e=>m()?.[`_${e}`];class I{constructor(){this.reject=()=>{};this.resolve=()=>{}
;this.promise=new Promise((e,t)=>{this.resolve=e;this.reject=t})}wrapCallback(e){return(t,n)=>{t?this.reject(t):this.resolve(n);if("function"==typeof e){
this.promise.catch(()=>{});1===e.length?e(t):e(t,n)}}}}function v(){
return"undefined"!=typeof navigator&&"string"==typeof navigator.userAgent?navigator.userAgent:""}function y(){
return"undefined"!=typeof window&&!!(window.cordova||window.phonegap||window.PhoneGap)&&/ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(v())}
function E(){return"undefined"!=typeof navigator&&"Cloudflare-Workers"===navigator.userAgent}function b(){
const e="object"==typeof chrome?chrome.runtime:"object"==typeof browser?browser.runtime:void 0;return"object"==typeof e&&void 0!==e.id}function T(){
return"object"==typeof navigator&&"ReactNative"===navigator.product}function S(){const e=v();return e.indexOf("MSIE ")>=0||e.indexOf("Trident/")>=0}
function k(){try{return"object"==typeof indexedDB}catch(e){return!1}}function C(){return new Promise((e,t)=>{try{let n=!0
;const r="validate-browser-context-for-indexeddb-analytics-module",i=self.indexedDB.open(r);i.onsuccess=()=>{i.result.close()
;n||self.indexedDB.deleteDatabase(r);e(!0)};i.onupgradeneeded=()=>{n=!1};i.onerror=()=>{t(i.error?.message||"")}}catch(e){t(e)}})}const R="FirebaseError"
;class P extends Error{constructor(e,t,n){super(t);this.code=e;this.customData=n;this.name=R;Object.setPrototypeOf(this,P.prototype)
;Error.captureStackTrace&&Error.captureStackTrace(this,O.prototype.create)}}class O{constructor(e,t,n){this.service=e;this.serviceName=t;this.errors=n}
create(e,...t){const n=t[0]||{},r=`${this.service}/${e}`,i=this.errors[e],s=i?A(i,n):"Error",o=`${this.serviceName}: ${s} (${r}).`;return new P(r,o,n)}}
function A(e,t){return e.replace(N,(e,n)=>{const r=t[n];return null!=r?String(r):`<${n}?>`})}const N=/\{\$([^}]+)}/g;function D(e){
for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}function L(e,t){if(e===t)return!0;const n=Object.keys(e),r=Object.keys(t)
;for(const i of n){if(!r.includes(i))return!1;const n=e[i],s=t[i];if(M(n)&&M(s)){if(!L(n,s))return!1}else if(n!==s)return!1}
for(const e of r)if(!n.includes(e))return!1;return!0}function M(e){return null!==e&&"object"==typeof e}function U(e){const t=[]
;for(const[n,r]of Object.entries(e))Array.isArray(r)?r.forEach(e=>{t.push(encodeURIComponent(n)+"="+encodeURIComponent(e))
}):t.push(encodeURIComponent(n)+"="+encodeURIComponent(r));return t.length?"&"+t.join("&"):""}function x(e){const t={}
;e.replace(/^\?/,"").split("&").forEach(e=>{if(e){const[n,r]=e.split("=");t[decodeURIComponent(n)]=decodeURIComponent(r)}});return t}function V(e){
const t=e.indexOf("?");if(!t)return"";const n=e.indexOf("#",t);return e.substring(t,n>0?n:void 0)}function F(e,t){const n=new j(e,t);return n.subscribe.bind(n)}
class j{constructor(e,t){this.observers=[];this.unsubscribes=[];this.observerCount=0;this.task=Promise.resolve();this.finalized=!1;this.onNoObservers=t
;this.task.then(()=>{e(this)}).catch(e=>{this.error(e)})}next(e){this.forEachObserver(t=>{t.next(e)})}error(e){this.forEachObserver(t=>{t.error(e)})
;this.close(e)}complete(){this.forEachObserver(e=>{e.complete()});this.close()}subscribe(e,t,n){let r
;if(void 0===e&&void 0===t&&void 0===n)throw new Error("Missing Observer.");r=H(e,["next","error","complete"])?e:{next:e,error:t,complete:n}
;void 0===r.next&&(r.next=$);void 0===r.error&&(r.error=$);void 0===r.complete&&(r.complete=$);const i=this.unsubscribeOne.bind(this,this.observers.length)
;this.finalized&&this.task.then(()=>{try{this.finalError?r.error(this.finalError):r.complete()}catch(e){}});this.observers.push(r);return i}unsubscribeOne(e){
if(void 0!==this.observers&&void 0!==this.observers[e]){delete this.observers[e];this.observerCount-=1
;0===this.observerCount&&void 0!==this.onNoObservers&&this.onNoObservers(this)}}forEachObserver(e){
if(!this.finalized)for(let t=0;t<this.observers.length;t++)this.sendOne(t,e)}sendOne(e,t){this.task.then(()=>{
if(void 0!==this.observers&&void 0!==this.observers[e])try{t(this.observers[e])}catch(e){"undefined"!=typeof console&&console.error}})}close(e){
if(!this.finalized){this.finalized=!0;void 0!==e&&(this.finalError=e);this.task.then(()=>{this.observers=void 0;this.onNoObservers=void 0})}}}function H(e,t){
if("object"!=typeof e||null===e)return!1;for(const n of t)if(n in e&&"function"==typeof e[n])return!0;return!1}function $(){}function W(e){
return e&&e._delegate?e._delegate:e}function B(e){try{
return(e.startsWith("http://")||e.startsWith("https://")?new URL(e).hostname:e).endsWith(".cloudworkstations.dev")}catch{return!1}}async function z(e){
return(await fetch(e,{credentials:"include"})).ok}class K{constructor(e,t,n){this.name=e;this.instanceFactory=t;this.type=n;this.multipleInstances=!1
;this.serviceProps={};this.instantiationMode="LAZY";this.onInstanceCreated=null}setInstantiationMode(e){this.instantiationMode=e;return this}
setMultipleInstances(e){this.multipleInstances=e;return this}setServiceProps(e){this.serviceProps=e;return this}setInstanceCreatedCallback(e){
this.onInstanceCreated=e;return this}}const q="[DEFAULT]";class G{constructor(e,t){this.name=e;this.container=t;this.component=null;this.instances=new Map
;this.instancesDeferred=new Map;this.instancesOptions=new Map;this.onInitCallbacks=new Map}get(e){const t=this.normalizeInstanceIdentifier(e)
;if(!this.instancesDeferred.has(t)){const e=new I;this.instancesDeferred.set(t,e);if(this.isInitialized(t)||this.shouldAutoInitialize())try{
const n=this.getOrInitializeService({instanceIdentifier:t});n&&e.resolve(n)}catch(e){}}return this.instancesDeferred.get(t).promise}getImmediate(e){
const t=this.normalizeInstanceIdentifier(e?.identifier),n=e?.optional??!1;if(!this.isInitialized(t)&&!this.shouldAutoInitialize()){if(n)return null
;throw Error(`Service ${this.name} is not available`)}try{return this.getOrInitializeService({instanceIdentifier:t})}catch(e){if(n)return null;throw e}}
getComponent(){return this.component}setComponent(e){if(e.name!==this.name)throw Error(`Mismatching Component ${e.name} for Provider ${this.name}.`)
;if(this.component)throw Error(`Component for ${this.name} has already been provided`);this.component=e;if(this.shouldAutoInitialize()){if(Y(e))try{
this.getOrInitializeService({instanceIdentifier:q})}catch(e){}for(const[e,t]of this.instancesDeferred.entries()){const n=this.normalizeInstanceIdentifier(e)
;try{const e=this.getOrInitializeService({instanceIdentifier:n});t.resolve(e)}catch(e){}}}}clearInstance(e=q){this.instancesDeferred.delete(e)
;this.instancesOptions.delete(e);this.instances.delete(e)}async delete(){const e=Array.from(this.instances.values())
;await Promise.all([...e.filter(e=>"INTERNAL"in e).map(e=>e.INTERNAL.delete()),...e.filter(e=>"_delete"in e).map(e=>e._delete())])}isComponentSet(){
return null!=this.component}isInitialized(e=q){return this.instances.has(e)}getOptions(e=q){return this.instancesOptions.get(e)||{}}initialize(e={}){
const{options:t={}}=e,n=this.normalizeInstanceIdentifier(e.instanceIdentifier)
;if(this.isInitialized(n))throw Error(`${this.name}(${n}) has already been initialized`)
;if(!this.isComponentSet())throw Error(`Component ${this.name} has not been registered yet`);const r=this.getOrInitializeService({instanceIdentifier:n,options:t
});for(const[e,t]of this.instancesDeferred.entries()){n===this.normalizeInstanceIdentifier(e)&&t.resolve(r)}return r}onInit(e,t){
const n=this.normalizeInstanceIdentifier(t),r=this.onInitCallbacks.get(n)??new Set;r.add(e);this.onInitCallbacks.set(n,r);const i=this.instances.get(n)
;i&&e(i,n);return()=>{r.delete(e)}}invokeOnInitCallbacks(e,t){const n=this.onInitCallbacks.get(t);if(n)for(const r of n)try{r(e,t)}catch{}}
getOrInitializeService({instanceIdentifier:e,options:t={}}){let n=this.instances.get(e);if(!n&&this.component){n=this.component.instanceFactory(this.container,{
instanceIdentifier:J(e),options:t});this.instances.set(e,n);this.instancesOptions.set(e,t);this.invokeOnInitCallbacks(n,e)
;if(this.component.onInstanceCreated)try{this.component.onInstanceCreated(this.container,e,n)}catch{}}return n||null}normalizeInstanceIdentifier(e=q){
return this.component?this.component.multipleInstances?e:q:e}shouldAutoInitialize(){return!!this.component&&"EXPLICIT"!==this.component.instantiationMode}}
function J(e){return e===q?void 0:e}function Y(e){return"EAGER"===e.instantiationMode}class X{constructor(e){this.name=e;this.providers=new Map}addComponent(e){
const t=this.getProvider(e.name);if(t.isComponentSet())throw new Error(`Component ${e.name} has already been registered with ${this.name}`);t.setComponent(e)}
addOrOverwriteComponent(e){this.getProvider(e.name).isComponentSet()&&this.providers.delete(e.name);this.addComponent(e)}getProvider(e){
if(this.providers.has(e))return this.providers.get(e);const t=new G(e,this);this.providers.set(e,t);return t}getProviders(){
return Array.from(this.providers.values())}}const Q=[];var Z;!function(e){e[e.DEBUG=0]="DEBUG";e[e.VERBOSE=1]="VERBOSE";e[e.INFO=2]="INFO";e[e.WARN=3]="WARN"
;e[e.ERROR=4]="ERROR";e[e.SILENT=5]="SILENT"}(Z||(Z={}));const ee={debug:Z.DEBUG,verbose:Z.VERBOSE,info:Z.INFO,warn:Z.WARN,error:Z.ERROR,silent:Z.SILENT
},te=Z.INFO,ne={[Z.DEBUG]:"log",[Z.VERBOSE]:"log",[Z.INFO]:"info",[Z.WARN]:"warn",[Z.ERROR]:"error"},re=(e,t,...n)=>{if(t<e.logLevel)return
;(new Date).toISOString();const r=ne[t];if(!r)throw new Error(`Attempted to log a message with an invalid logType (value: ${t})`)};class ie{constructor(e){
this.name=e;this._logLevel=te;this._logHandler=re;this._userLogHandler=null;Q.push(this)}get logLevel(){return this._logLevel}set logLevel(e){
if(!(e in Z))throw new TypeError(`Invalid value "${e}" assigned to \`logLevel\``);this._logLevel=e}setLogLevel(e){this._logLevel="string"==typeof e?ee[e]:e}
get logHandler(){return this._logHandler}set logHandler(e){if("function"!=typeof e)throw new TypeError("Value assigned to `logHandler` must be a function")
;this._logHandler=e}get userLogHandler(){return this._userLogHandler}set userLogHandler(e){this._userLogHandler=e}debug(...e){
this._userLogHandler&&this._userLogHandler(this,Z.DEBUG,...e);this._logHandler(this,Z.DEBUG,...e)}log(...e){
this._userLogHandler&&this._userLogHandler(this,Z.VERBOSE,...e);this._logHandler(this,Z.VERBOSE,...e)}info(...e){
this._userLogHandler&&this._userLogHandler(this,Z.INFO,...e);this._logHandler(this,Z.INFO,...e)}warn(...e){
this._userLogHandler&&this._userLogHandler(this,Z.WARN,...e);this._logHandler(this,Z.WARN,...e)}error(...e){
this._userLogHandler&&this._userLogHandler(this,Z.ERROR,...e);this._logHandler(this,Z.ERROR,...e)}}const se=(e,t)=>t.some(t=>e instanceof t);let oe,ae
;function ce(){return oe||(oe=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function ue(){
return ae||(ae=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}
const he=new WeakMap,le=new WeakMap,de=new WeakMap,pe=new WeakMap,fe=new WeakMap;function me(e){const t=new Promise((t,n)=>{const r=()=>{
e.removeEventListener("success",i);e.removeEventListener("error",s)},i=()=>{t(ye(e.result));r()},s=()=>{n(e.error);r()};e.addEventListener("success",i)
;e.addEventListener("error",s)});t.then(t=>{t instanceof IDBCursor&&he.set(t,e)}).catch(()=>{});fe.set(t,e);return t}function ge(e){if(le.has(e))return
;const t=new Promise((t,n)=>{const r=()=>{e.removeEventListener("complete",i);e.removeEventListener("error",s);e.removeEventListener("abort",s)},i=()=>{t();r()
},s=()=>{n(e.error||new DOMException("AbortError","AbortError"));r()};e.addEventListener("complete",i);e.addEventListener("error",s)
;e.addEventListener("abort",s)});le.set(e,t)}let _e={get(e,t,n){if(e instanceof IDBTransaction){if("done"===t)return le.get(e)
;if("objectStoreNames"===t)return e.objectStoreNames||de.get(e);if("store"===t)return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}
return ye(e[t])},set(e,t,n){e[t]=n;return!0},has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function we(e){_e=e(_e)}function Ie(e){
return e!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?ue().includes(e)?function(...t){e.apply(Ee(this),t)
;return ye(he.get(this))}:function(...t){return ye(e.apply(Ee(this),t))}:function(t,...n){const r=e.call(Ee(this),t,...n);de.set(r,t.sort?t.sort():[t])
;return ye(r)}}function ve(e){if("function"==typeof e)return Ie(e);e instanceof IDBTransaction&&ge(e);return se(e,ce())?new Proxy(e,_e):e}function ye(e){
if(e instanceof IDBRequest)return me(e);if(pe.has(e))return pe.get(e);const t=ve(e);if(t!==e){pe.set(e,t);fe.set(t,e)}return t}const Ee=e=>fe.get(e)
;function be(e,t,{blocked:n,upgrade:r,blocking:i,terminated:s}={}){const o=indexedDB.open(e,t),a=ye(o);r&&o.addEventListener("upgradeneeded",e=>{
r(ye(o.result),e.oldVersion,e.newVersion,ye(o.transaction),e)});n&&o.addEventListener("blocked",e=>n(e.oldVersion,e.newVersion,e));a.then(e=>{
s&&e.addEventListener("close",()=>s());i&&e.addEventListener("versionchange",e=>i(e.oldVersion,e.newVersion,e))}).catch(()=>{});return a}
const Te=["get","getKey","getAll","getAllKeys","count"],Se=["put","add","delete","clear"],ke=new Map;function Ce(e,t){
if(!(e instanceof IDBDatabase)||t in e||"string"!=typeof t)return;if(ke.get(t))return ke.get(t);const n=t.replace(/FromIndex$/,""),r=t!==n,i=Se.includes(n)
;if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!i&&!Te.includes(n))return;const s=async function(e,...t){const s=this.transaction(e,i?"readwrite":"readonly")
;let o=s.store;r&&(o=o.index(t.shift()));return(await Promise.all([o[n](...t),i&&s.done]))[0]};ke.set(t,s);return s}we(e=>({...e,
get:(t,n,r)=>Ce(t,n)||e.get(t,n,r),has:(t,n)=>!!Ce(t,n)||e.has(t,n)}));class Re{constructor(e){this.container=e}getPlatformInfoString(){
return this.container.getProviders().map(e=>{if(Pe(e)){const t=e.getImmediate();return`${t.library}/${t.version}`}return null}).filter(e=>e).join(" ")}}
function Pe(e){const t=e.getComponent();return"VERSION"===t?.type}
const Oe="@firebase/app",Ae="0.14.11",Ne=new ie("@firebase/app"),De="@firebase/app-compat",Le="@firebase/analytics-compat",Me="@firebase/analytics",Ue="@firebase/app-check-compat",xe="@firebase/app-check",Ve="@firebase/auth",Fe="@firebase/auth-compat",je="@firebase/database",He="@firebase/data-connect",$e="@firebase/database-compat",We="@firebase/functions",Be="@firebase/functions-compat",ze="@firebase/installations",Ke="@firebase/installations-compat",qe="@firebase/messaging",Ge="@firebase/messaging-compat",Je="@firebase/performance",Ye="@firebase/performance-compat",Xe="@firebase/remote-config",Qe="@firebase/remote-config-compat",Ze="@firebase/storage",et="@firebase/storage-compat",tt="@firebase/firestore",nt="@firebase/ai",rt="@firebase/firestore-compat",it="firebase",st="12.12.0",ot="[DEFAULT]",at={
[Oe]:"fire-core",[De]:"fire-core-compat",[Me]:"fire-analytics",[Le]:"fire-analytics-compat",[xe]:"fire-app-check",[Ue]:"fire-app-check-compat",[Ve]:"fire-auth",
[Fe]:"fire-auth-compat",[je]:"fire-rtdb",[He]:"fire-data-connect",[$e]:"fire-rtdb-compat",[We]:"fire-fn",[Be]:"fire-fn-compat",[ze]:"fire-iid",
[Ke]:"fire-iid-compat",[qe]:"fire-fcm",[Ge]:"fire-fcm-compat",[Je]:"fire-perf",[Ye]:"fire-perf-compat",[Xe]:"fire-rc",[Qe]:"fire-rc-compat",[Ze]:"fire-gcs",
[et]:"fire-gcs-compat",[tt]:"fire-fst",[rt]:"fire-fst-compat",[nt]:"fire-vertex","fire-js":"fire-js",[it]:"fire-js-all"},ct=new Map,ut=new Map,ht=new Map
;function lt(e,t){try{e.container.addComponent(t)}catch(n){Ne.debug(`Component ${t.name} failed to register with FirebaseApp ${e.name}`,n)}}function dt(e){
const t=e.name;if(ht.has(t)){Ne.debug(`There were multiple attempts to register component ${t}.`);return!1}ht.set(t,e);for(const t of ct.values())lt(t,e)
;for(const t of ut.values())lt(t,e);return!0}function pt(e,t){const n=e.container.getProvider("heartbeat").getImmediate({optional:!0});n&&n.triggerHeartbeat()
;return e.container.getProvider(t)}function ft(e){return null!=e&&void 0!==e.settings}const mt=new O("app","Firebase",{
"no-app":"No Firebase App '{$appName}' has been created - call initializeApp() first","bad-app-name":"Illegal App name: '{$appName}'",
"duplicate-app":"Firebase App named '{$appName}' already exists with different options or config",
"app-deleted":"Firebase App named '{$appName}' already deleted","server-app-deleted":"Firebase Server App has been deleted",
"no-options":"Need to provide options, when not being deployed to hosting via source.",
"invalid-app-argument":"firebase.{$appName}() takes either no argument or a Firebase App instance.",
"invalid-log-argument":"First argument to `onLog` must be null or a function.",
"idb-open":"Error thrown when opening IndexedDB. Original error: {$originalErrorMessage}.",
"idb-get":"Error thrown when reading from IndexedDB. Original error: {$originalErrorMessage}.",
"idb-set":"Error thrown when writing to IndexedDB. Original error: {$originalErrorMessage}.",
"idb-delete":"Error thrown when deleting from IndexedDB. Original error: {$originalErrorMessage}.",
"finalization-registry-not-supported":"FirebaseServerApp deleteOnDeref field defined but the JS runtime does not support FinalizationRegistry.",
"invalid-server-app-environment":"FirebaseServerApp is not for use in browser environments."});class gt{constructor(e,t,n){this._isDeleted=!1;this._options={
...e};this._config={...t};this._name=t.name;this._automaticDataCollectionEnabled=t.automaticDataCollectionEnabled;this._container=n
;this.container.addComponent(new K("app",()=>this,"PUBLIC"))}get automaticDataCollectionEnabled(){this.checkDestroyed()
;return this._automaticDataCollectionEnabled}set automaticDataCollectionEnabled(e){this.checkDestroyed();this._automaticDataCollectionEnabled=e}get name(){
this.checkDestroyed();return this._name}get options(){this.checkDestroyed();return this._options}get config(){this.checkDestroyed();return this._config}
get container(){return this._container}get isDeleted(){return this._isDeleted}set isDeleted(e){this._isDeleted=e}checkDestroyed(){
if(this.isDeleted)throw mt.create("app-deleted",{appName:this._name})}}const _t=st;function wt(e,t={}){let n=e;if("object"!=typeof t){t={name:t}}const r={
name:ot,automaticDataCollectionEnabled:!0,...t},i=r.name;if("string"!=typeof i||!i)throw mt.create("bad-app-name",{appName:String(i)});n||(n=_())
;if(!n)throw mt.create("no-options");const s=ct.get(i);if(s){if(L(n,s.options)&&L(r,s.config))return s;throw mt.create("duplicate-app",{appName:i})}
const o=new X(i);for(const e of ht.values())o.addComponent(e);const a=new gt(n,r,o);ct.set(i,a);return a}function It(e=ot){const t=ct.get(e)
;if(!t&&e===ot&&_())return wt();if(!t)throw mt.create("no-app",{appName:e});return t}function vt(e,t,n){let r=at[e]??e;n&&(r+=`-${n}`)
;const i=r.match(/\s|\//),s=t.match(/\s|\//);if(i||s){const e=[`Unable to register library "${r}" with version "${t}":`]
;i&&e.push(`library name "${r}" contains illegal characters (whitespace or "/")`);i&&s&&e.push("and")
;s&&e.push(`version name "${t}" contains illegal characters (whitespace or "/")`);Ne.warn(e.join(" "));return}dt(new K(`${r}-version`,()=>({library:r,version:t
}),"VERSION"))}const yt="firebase-heartbeat-database",Et=1,bt="firebase-heartbeat-store";let Tt=null;function St(){Tt||(Tt=be(yt,Et,{upgrade:(e,t)=>{
if(0===t)try{e.createObjectStore(bt)}catch(e){}}}).catch(e=>{throw mt.create("idb-open",{originalErrorMessage:e.message})}));return Tt}async function kt(e){try{
const t=(await St()).transaction(bt),n=await t.objectStore(bt).get(Rt(e));await t.done;return n}catch(e){if(e instanceof P)Ne.warn(e.message);else{
const t=mt.create("idb-get",{originalErrorMessage:e?.message});Ne.warn(t.message)}}}async function Ct(e,t){try{
const n=(await St()).transaction(bt,"readwrite"),r=n.objectStore(bt);await r.put(t,Rt(e));await n.done}catch(e){if(e instanceof P)Ne.warn(e.message);else{
const t=mt.create("idb-set",{originalErrorMessage:e?.message});Ne.warn(t.message)}}}function Rt(e){return`${e.name}!${e.options.appId}`}const Pt=1024,Ot=30
;class At{constructor(e){this.container=e;this._heartbeatsCache=null;const t=this.container.getProvider("app").getImmediate();this._storage=new Lt(t)
;this._heartbeatsCachePromise=this._storage.read().then(e=>{this._heartbeatsCache=e;return e})}async triggerHeartbeat(){try{
const e=this.container.getProvider("platform-logger").getImmediate().getPlatformInfoString(),t=Nt();if(null==this._heartbeatsCache?.heartbeats){
this._heartbeatsCache=await this._heartbeatsCachePromise;if(null==this._heartbeatsCache?.heartbeats)return}
if(this._heartbeatsCache.lastSentHeartbeatDate===t||this._heartbeatsCache.heartbeats.some(e=>e.date===t))return;this._heartbeatsCache.heartbeats.push({date:t,
agent:e});if(this._heartbeatsCache.heartbeats.length>Ot){const e=Ut(this._heartbeatsCache.heartbeats);this._heartbeatsCache.heartbeats.splice(e,1)}
return this._storage.overwrite(this._heartbeatsCache)}catch(e){Ne.warn(e)}}async getHeartbeatsHeader(){try{
null===this._heartbeatsCache&&await this._heartbeatsCachePromise
;if(null==this._heartbeatsCache?.heartbeats||0===this._heartbeatsCache.heartbeats.length)return""
;const e=Nt(),{heartbeatsToSend:t,unsentEntries:n}=Dt(this._heartbeatsCache.heartbeats),r=u(JSON.stringify({version:2,heartbeats:t}))
;this._heartbeatsCache.lastSentHeartbeatDate=e;if(n.length>0){this._heartbeatsCache.heartbeats=n;await this._storage.overwrite(this._heartbeatsCache)}else{
this._heartbeatsCache.heartbeats=[];this._storage.overwrite(this._heartbeatsCache)}return r}catch(e){Ne.warn(e);return""}}}function Nt(){
return(new Date).toISOString().substring(0,10)}function Dt(e,t=Pt){const n=[];let r=e.slice();for(const i of e){const e=n.find(e=>e.agent===i.agent);if(e){
e.dates.push(i.date);if(Mt(n)>t){e.dates.pop();break}}else{n.push({agent:i.agent,dates:[i.date]});if(Mt(n)>t){n.pop();break}}r=r.slice(1)}return{
heartbeatsToSend:n,unsentEntries:r}}class Lt{constructor(e){this.app=e;this._canUseIndexedDBPromise=this.runIndexedDBEnvironmentCheck()}
async runIndexedDBEnvironmentCheck(){return!!k()&&C().then(()=>!0).catch(()=>!1)}async read(){if(await this._canUseIndexedDBPromise){const e=await kt(this.app)
;return e?.heartbeats?e:{heartbeats:[]}}return{heartbeats:[]}}async overwrite(e){if(await this._canUseIndexedDBPromise){const t=await this.read()
;return Ct(this.app,{lastSentHeartbeatDate:e.lastSentHeartbeatDate??t.lastSentHeartbeatDate,heartbeats:e.heartbeats})}}async add(e){
if(await this._canUseIndexedDBPromise){const t=await this.read();return Ct(this.app,{lastSentHeartbeatDate:e.lastSentHeartbeatDate??t.lastSentHeartbeatDate,
heartbeats:[...t.heartbeats,...e.heartbeats]})}}}function Mt(e){return u(JSON.stringify({version:2,heartbeats:e})).length}function Ut(e){
if(0===e.length)return-1;let t=0,n=e[0].date;for(let r=1;r<e.length;r++)if(e[r].date<n){n=e[r].date;t=r}return t}function xt(e){
dt(new K("platform-logger",e=>new Re(e),"PRIVATE"));dt(new K("heartbeat",e=>new At(e),"PRIVATE"));vt(Oe,Ae,e);vt(Oe,Ae,"esm2020");vt("fire-js","")}xt("")
;vt("firebase","12.12.0","app");function Vt(){return{
"dependent-sdk-initialized-before-auth":"Another Firebase SDK was initialized and is trying to use Auth before Auth is initialized. Please be sure to call `initializeAuth` or `getAuth` before starting any other Firebase SDK."
}}const Ft=Vt,jt=new O("auth","Firebase",Vt()),Ht=new ie("@firebase/auth");function $t(e,...t){Ht.logLevel<=Z.WARN&&Ht.warn(`Auth (${_t}): ${e}`,...t)}
function Wt(e,...t){Ht.logLevel<=Z.ERROR&&Ht.error(`Auth (${_t}): ${e}`,...t)}function Bt(e,...t){throw Gt(e,...t)}function zt(e,...t){return Gt(e,...t)}
function Kt(e,t,n){const r={...Ft(),[t]:n};return new O("auth","Firebase",r).create(t,{appName:e.name})}function qt(e){
return Kt(e,"operation-not-supported-in-this-environment","Operations that alter the current user are not supported in conjunction with FirebaseServerApp")}
function Gt(e,...t){if("string"!=typeof e){const n=t[0],r=[...t.slice(1)];r[0]&&(r[0].appName=e.name);return e._errorFactory.create(n,...r)}
return jt.create(e,...t)}function Jt(e,t,...n){if(!e)throw Gt(t,...n)}function Yt(e){const t="INTERNAL ASSERTION FAILED: "+e;Wt(t);throw new Error(t)}
function Xt(e,t){e||Yt(t)}function Qt(){return"undefined"!=typeof self&&self.location?.href||""}function Zt(){return"http:"===en()||"https:"===en()}
function en(){return"undefined"!=typeof self&&self.location?.protocol||null}function tn(){
return!("undefined"!=typeof navigator&&navigator&&"onLine"in navigator&&"boolean"==typeof navigator.onLine&&(Zt()||b()||"connection"in navigator))||navigator.onLine
}function nn(){if("undefined"==typeof navigator)return null;const e=navigator;return e.languages&&e.languages[0]||e.language||null}class rn{constructor(e,t){
this.shortDelay=e;this.longDelay=t;Xt(t>e,"Short delay should be less than long delay!");this.isMobile=y()||T()}get(){
return tn()?this.isMobile?this.longDelay:this.shortDelay:Math.min(5e3,this.shortDelay)}}function sn(e,t){Xt(e.emulator,"Emulator should always be set here")
;const{url:n}=e.emulator;return t?`${n}${t.startsWith("/")?t.slice(1):t}`:n}class on{static initialize(e,t,n){this.fetchImpl=e;t&&(this.headersImpl=t)
;n&&(this.responseImpl=n)}static fetch(){if(this.fetchImpl)return this.fetchImpl;if("undefined"!=typeof self&&"fetch"in self)return self.fetch
;if("undefined"!=typeof globalThis&&globalThis.fetch)return globalThis.fetch;if("undefined"!=typeof fetch)return fetch
;Yt("Could not find fetch implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}static headers(){
if(this.headersImpl)return this.headersImpl;if("undefined"!=typeof self&&"Headers"in self)return self.Headers
;if("undefined"!=typeof globalThis&&globalThis.Headers)return globalThis.Headers;if("undefined"!=typeof Headers)return Headers
;Yt("Could not find Headers implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}static response(){
if(this.responseImpl)return this.responseImpl;if("undefined"!=typeof self&&"Response"in self)return self.Response
;if("undefined"!=typeof globalThis&&globalThis.Response)return globalThis.Response;if("undefined"!=typeof Response)return Response
;Yt("Could not find Response implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}}const an={
CREDENTIAL_MISMATCH:"custom-token-mismatch",MISSING_CUSTOM_TOKEN:"internal-error",INVALID_IDENTIFIER:"invalid-email",MISSING_CONTINUE_URI:"internal-error",
INVALID_PASSWORD:"wrong-password",MISSING_PASSWORD:"missing-password",INVALID_LOGIN_CREDENTIALS:"invalid-credential",EMAIL_EXISTS:"email-already-in-use",
PASSWORD_LOGIN_DISABLED:"operation-not-allowed",INVALID_IDP_RESPONSE:"invalid-credential",INVALID_PENDING_TOKEN:"invalid-credential",
FEDERATED_USER_ID_ALREADY_LINKED:"credential-already-in-use",MISSING_REQ_TYPE:"internal-error",EMAIL_NOT_FOUND:"user-not-found",
RESET_PASSWORD_EXCEED_LIMIT:"too-many-requests",EXPIRED_OOB_CODE:"expired-action-code",INVALID_OOB_CODE:"invalid-action-code",MISSING_OOB_CODE:"internal-error",
CREDENTIAL_TOO_OLD_LOGIN_AGAIN:"requires-recent-login",INVALID_ID_TOKEN:"invalid-user-token",TOKEN_EXPIRED:"user-token-expired",
USER_NOT_FOUND:"user-token-expired",TOO_MANY_ATTEMPTS_TRY_LATER:"too-many-requests",PASSWORD_DOES_NOT_MEET_REQUIREMENTS:"password-does-not-meet-requirements",
INVALID_CODE:"invalid-verification-code",INVALID_SESSION_INFO:"invalid-verification-id",INVALID_TEMPORARY_PROOF:"invalid-credential",
MISSING_SESSION_INFO:"missing-verification-id",SESSION_EXPIRED:"code-expired",MISSING_ANDROID_PACKAGE_NAME:"missing-android-pkg-name",
UNAUTHORIZED_DOMAIN:"unauthorized-continue-uri",INVALID_OAUTH_CLIENT_ID:"invalid-oauth-client-id",ADMIN_ONLY_OPERATION:"admin-restricted-operation",
INVALID_MFA_PENDING_CREDENTIAL:"invalid-multi-factor-session",MFA_ENROLLMENT_NOT_FOUND:"multi-factor-info-not-found",
MISSING_MFA_ENROLLMENT_ID:"missing-multi-factor-info",MISSING_MFA_PENDING_CREDENTIAL:"missing-multi-factor-session",
SECOND_FACTOR_EXISTS:"second-factor-already-in-use",SECOND_FACTOR_LIMIT_EXCEEDED:"maximum-second-factor-count-exceeded",
BLOCKING_FUNCTION_ERROR_RESPONSE:"internal-error",RECAPTCHA_NOT_ENABLED:"recaptcha-not-enabled",MISSING_RECAPTCHA_TOKEN:"missing-recaptcha-token",
INVALID_RECAPTCHA_TOKEN:"invalid-recaptcha-token",INVALID_RECAPTCHA_ACTION:"invalid-recaptcha-action",MISSING_CLIENT_TYPE:"missing-client-type",
MISSING_RECAPTCHA_VERSION:"missing-recaptcha-version",INVALID_RECAPTCHA_VERSION:"invalid-recaptcha-version",INVALID_REQ_TYPE:"invalid-req-type"
},cn=["/v1/accounts:signInWithCustomToken","/v1/accounts:signInWithEmailLink","/v1/accounts:signInWithIdp","/v1/accounts:signInWithPassword","/v1/accounts:signInWithPhoneNumber","/v1/token"],un=new rn(3e4,6e4)
;function hn(e,t){return e.tenantId&&!t.tenantId?{...t,tenantId:e.tenantId}:t}async function ln(e,t,n,r,i={}){return dn(e,i,async()=>{let i={},s={}
;r&&("GET"===t?s=r:i={body:JSON.stringify(r)});const o=U({key:e.config.apiKey,...s}).slice(1),a=await e._getAdditionalHeaders()
;a["Content-Type"]="application/json";e.languageCode&&(a["X-Firebase-Locale"]=e.languageCode);const c={method:t,headers:a,...i}
;E()||(c.referrerPolicy="no-referrer");e.emulatorConfig&&B(e.emulatorConfig.host)&&(c.credentials="include")
;return on.fetch()(await fn(e,e.config.apiHost,n,o),c)})}async function dn(e,t,n){e._canInitEmulator=!1;const r={...an,...t};try{
const t=new gn(e),i=await Promise.race([n(),t.promise]);t.clearNetworkTimeout();const s=await i.json()
;if("needConfirmation"in s)throw _n(e,"account-exists-with-different-credential",s);if(i.ok&&!("errorMessage"in s))return s;{
const t=i.ok?s.errorMessage:s.error.message,[n,o]=t.split(" : ");if("FEDERATED_USER_ID_ALREADY_LINKED"===n)throw _n(e,"credential-already-in-use",s)
;if("EMAIL_EXISTS"===n)throw _n(e,"email-already-in-use",s);if("USER_DISABLED"===n)throw _n(e,"user-disabled",s)
;const a=r[n]||n.toLowerCase().replace(/[_\s]+/g,"-");if(o)throw Kt(e,a,o);Bt(e,a)}}catch(t){if(t instanceof P)throw t;Bt(e,"network-request-failed",{
message:String(t)})}}async function pn(e,t,n,r,i={}){const s=await ln(e,t,n,r,i);"mfaPendingCredential"in s&&Bt(e,"multi-factor-auth-required",{
_serverResponse:s});return s}async function fn(e,t,n,r){const i=`${t}${n}?${r}`,s=e,o=s.config.emulator?sn(e.config,i):`${e.config.apiScheme}://${i}`
;if(cn.includes(n)){await s._persistenceManagerAvailable;if("COOKIE"===s._getPersistenceType()){return s._getPersistence()._getFinalTarget(o).toString()}}
return o}function mn(e){switch(e){case"ENFORCE":return"ENFORCE";case"AUDIT":return"AUDIT";case"OFF":return"OFF";default:return"ENFORCEMENT_STATE_UNSPECIFIED"}}
class gn{clearNetworkTimeout(){clearTimeout(this.timer)}constructor(e){this.auth=e;this.timer=null;this.promise=new Promise((e,t)=>{
this.timer=setTimeout(()=>t(zt(this.auth,"network-request-failed")),un.get())})}}function _n(e,t,n){const r={appName:e.name};n.email&&(r.email=n.email)
;n.phoneNumber&&(r.phoneNumber=n.phoneNumber);const i=zt(e,t,r);i.customData._tokenResponse=n;return i}function wn(e){return void 0!==e&&void 0!==e.enterprise}
class In{constructor(e){this.siteKey="";this.recaptchaEnforcementState=[];if(void 0===e.recaptchaKey)throw new Error("recaptchaKey undefined")
;this.siteKey=e.recaptchaKey.split("/")[3];this.recaptchaEnforcementState=e.recaptchaEnforcementState}getProviderEnforcementState(e){
if(!this.recaptchaEnforcementState||0===this.recaptchaEnforcementState.length)return null
;for(const t of this.recaptchaEnforcementState)if(t.provider&&t.provider===e)return mn(t.enforcementState);return null}isProviderEnabled(e){
return"ENFORCE"===this.getProviderEnforcementState(e)||"AUDIT"===this.getProviderEnforcementState(e)}isAnyProviderEnabled(){
return this.isProviderEnabled("EMAIL_PASSWORD_PROVIDER")||this.isProviderEnabled("PHONE_PROVIDER")}}async function vn(e,t){
return ln(e,"GET","/v2/recaptchaConfig",hn(e,t))}async function yn(e,t){return ln(e,"POST","/v1/accounts:delete",t)}async function En(e,t){
return ln(e,"POST","/v1/accounts:lookup",t)}function bn(e){if(e)try{const t=new Date(Number(e));if(!isNaN(t.getTime()))return t.toUTCString()}catch(e){}}
function Tn(e,t=!1){return W(e).getIdToken(t)}async function Sn(e,t=!1){const n=W(e),r=await n.getIdToken(t),i=Cn(r)
;Jt(i&&i.exp&&i.auth_time&&i.iat,n.auth,"internal-error");const s="object"==typeof i.firebase?i.firebase:void 0,o=s?.sign_in_provider;return{claims:i,token:r,
authTime:bn(kn(i.auth_time)),issuedAtTime:bn(kn(i.iat)),expirationTime:bn(kn(i.exp)),signInProvider:o||null,signInSecondFactor:s?.sign_in_second_factor||null}}
function kn(e){return 1e3*Number(e)}function Cn(e){const[t,n,r]=e.split(".");if(void 0===t||void 0===n||void 0===r){
Wt("JWT malformed, contained fewer than 3 sections");return null}try{const e=h(n);if(!e){Wt("Failed to decode base64 JWT payload");return null}
return JSON.parse(e)}catch(e){Wt("Caught error parsing JWT payload as JSON",e?.toString());return null}}function Rn(e){const t=Cn(e);Jt(t,"internal-error")
;Jt(void 0!==t.exp,"internal-error");Jt(void 0!==t.iat,"internal-error");return Number(t.exp)-Number(t.iat)}async function Pn(e,t,n=!1){if(n)return t;try{
return await t}catch(t){t instanceof P&&On(t)&&e.auth.currentUser===e&&await e.auth.signOut();throw t}}function On({code:e}){
return"auth/user-disabled"===e||"auth/user-token-expired"===e}class An{constructor(e){this.user=e;this.isRunning=!1;this.timerId=null;this.errorBackoff=3e4}
_start(){if(!this.isRunning){this.isRunning=!0;this.schedule()}}_stop(){if(this.isRunning){this.isRunning=!1;null!==this.timerId&&clearTimeout(this.timerId)}}
getInterval(e){if(e){const e=this.errorBackoff;this.errorBackoff=Math.min(2*this.errorBackoff,96e4);return e}{this.errorBackoff=3e4
;const e=(this.user.stsTokenManager.expirationTime??0)-Date.now()-3e5;return Math.max(0,e)}}schedule(e=!1){if(!this.isRunning)return;const t=this.getInterval(e)
;this.timerId=setTimeout(async()=>{await this.iteration()},t)}async iteration(){try{await this.user.getIdToken(!0)}catch(e){
"auth/network-request-failed"===e?.code&&this.schedule(!0);return}this.schedule()}}class Nn{constructor(e,t){this.createdAt=e;this.lastLoginAt=t
;this._initializeTime()}_initializeTime(){this.lastSignInTime=bn(this.lastLoginAt);this.creationTime=bn(this.createdAt)}_copy(e){this.createdAt=e.createdAt
;this.lastLoginAt=e.lastLoginAt;this._initializeTime()}toJSON(){return{createdAt:this.createdAt,lastLoginAt:this.lastLoginAt}}}async function Dn(e){
const t=e.auth,n=await e.getIdToken(),r=await Pn(e,En(t,{idToken:n}));Jt(r?.users.length,t,"internal-error");const i=r.users[0];e._notifyReloadListener(i)
;const s=i.providerUserInfo?.length?Un(i.providerUserInfo):[],o=Mn(e.providerData,s),a=e.isAnonymous,c=!(e.email&&i.passwordHash||o?.length),u=!!a&&c,h={
uid:i.localId,displayName:i.displayName||null,photoURL:i.photoUrl||null,email:i.email||null,emailVerified:i.emailVerified||!1,phoneNumber:i.phoneNumber||null,
tenantId:i.tenantId||null,providerData:o,metadata:new Nn(i.createdAt,i.lastLoginAt),isAnonymous:u};Object.assign(e,h)}async function Ln(e){const t=W(e)
;await Dn(t);await t.auth._persistUserIfCurrent(t);t.auth._notifyListenersIfCurrent(t)}function Mn(e,t){
return[...e.filter(e=>!t.some(t=>t.providerId===e.providerId)),...t]}function Un(e){return e.map(({providerId:e,...t})=>({providerId:e,uid:t.rawId||"",
displayName:t.displayName||null,email:t.email||null,phoneNumber:t.phoneNumber||null,photoURL:t.photoUrl||null}))}async function xn(e,t){
const n=await dn(e,{},async()=>{const n=U({grant_type:"refresh_token",refresh_token:t
}).slice(1),{tokenApiHost:r,apiKey:i}=e.config,s=await fn(e,r,"/v1/token",`key=${i}`),o=await e._getAdditionalHeaders()
;o["Content-Type"]="application/x-www-form-urlencoded";const a={method:"POST",headers:o,body:n}
;e.emulatorConfig&&B(e.emulatorConfig.host)&&(a.credentials="include");return on.fetch()(s,a)});return{accessToken:n.access_token,expiresIn:n.expires_in,
refreshToken:n.refresh_token}}async function Vn(e,t){return ln(e,"POST","/v2/accounts:revokeToken",hn(e,t))}class Fn{constructor(){this.refreshToken=null
;this.accessToken=null;this.expirationTime=null}get isExpired(){return!this.expirationTime||Date.now()>this.expirationTime-3e4}updateFromServerResponse(e){
Jt(e.idToken,"internal-error");Jt(void 0!==e.idToken,"internal-error");Jt(void 0!==e.refreshToken,"internal-error")
;const t="expiresIn"in e&&void 0!==e.expiresIn?Number(e.expiresIn):Rn(e.idToken);this.updateTokensAndExpiration(e.idToken,e.refreshToken,t)}
updateFromIdToken(e){Jt(0!==e.length,"internal-error");const t=Rn(e);this.updateTokensAndExpiration(e,null,t)}async getToken(e,t=!1){
if(!t&&this.accessToken&&!this.isExpired)return this.accessToken;Jt(this.refreshToken,e,"user-token-expired");if(this.refreshToken){
await this.refresh(e,this.refreshToken);return this.accessToken}return null}clearRefreshToken(){this.refreshToken=null}async refresh(e,t){
const{accessToken:n,refreshToken:r,expiresIn:i}=await xn(e,t);this.updateTokensAndExpiration(n,r,Number(i))}updateTokensAndExpiration(e,t,n){
this.refreshToken=t||null;this.accessToken=e||null;this.expirationTime=Date.now()+1e3*n}static fromJSON(e,t){
const{refreshToken:n,accessToken:r,expirationTime:i}=t,s=new Fn;if(n){Jt("string"==typeof n,"internal-error",{appName:e});s.refreshToken=n}if(r){
Jt("string"==typeof r,"internal-error",{appName:e});s.accessToken=r}if(i){Jt("number"==typeof i,"internal-error",{appName:e});s.expirationTime=i}return s}
toJSON(){return{refreshToken:this.refreshToken,accessToken:this.accessToken,expirationTime:this.expirationTime}}_assign(e){this.accessToken=e.accessToken
;this.refreshToken=e.refreshToken;this.expirationTime=e.expirationTime}_clone(){return Object.assign(new Fn,this.toJSON())}_performRefresh(){
return Yt("not implemented")}}function jn(e,t){Jt("string"==typeof e||void 0===e,"internal-error",{appName:t})}class Hn{
constructor({uid:e,auth:t,stsTokenManager:n,...r}){this.providerId="firebase";this.proactiveRefresh=new An(this);this.reloadUserInfo=null
;this.reloadListener=null;this.uid=e;this.auth=t;this.stsTokenManager=n;this.accessToken=n.accessToken;this.displayName=r.displayName||null
;this.email=r.email||null;this.emailVerified=r.emailVerified||!1;this.phoneNumber=r.phoneNumber||null;this.photoURL=r.photoURL||null
;this.isAnonymous=r.isAnonymous||!1;this.tenantId=r.tenantId||null;this.providerData=r.providerData?[...r.providerData]:[]
;this.metadata=new Nn(r.createdAt||void 0,r.lastLoginAt||void 0)}async getIdToken(e){const t=await Pn(this,this.stsTokenManager.getToken(this.auth,e))
;Jt(t,this.auth,"internal-error");if(this.accessToken!==t){this.accessToken=t;await this.auth._persistUserIfCurrent(this)
;this.auth._notifyListenersIfCurrent(this)}return t}getIdTokenResult(e){return Sn(this,e)}reload(){return Ln(this)}_assign(e){if(this!==e){
Jt(this.uid===e.uid,this.auth,"internal-error");this.displayName=e.displayName;this.photoURL=e.photoURL;this.email=e.email;this.emailVerified=e.emailVerified
;this.phoneNumber=e.phoneNumber;this.isAnonymous=e.isAnonymous;this.tenantId=e.tenantId;this.providerData=e.providerData.map(e=>({...e}))
;this.metadata._copy(e.metadata);this.stsTokenManager._assign(e.stsTokenManager)}}_clone(e){const t=new Hn({...this,auth:e,
stsTokenManager:this.stsTokenManager._clone()});t.metadata._copy(this.metadata);return t}_onReload(e){Jt(!this.reloadListener,this.auth,"internal-error")
;this.reloadListener=e;if(this.reloadUserInfo){this._notifyReloadListener(this.reloadUserInfo);this.reloadUserInfo=null}}_notifyReloadListener(e){
this.reloadListener?this.reloadListener(e):this.reloadUserInfo=e}_startProactiveRefresh(){this.proactiveRefresh._start()}_stopProactiveRefresh(){
this.proactiveRefresh._stop()}async _updateTokensIfNecessary(e,t=!1){let n=!1;if(e.idToken&&e.idToken!==this.stsTokenManager.accessToken){
this.stsTokenManager.updateFromServerResponse(e);n=!0}t&&await Dn(this);await this.auth._persistUserIfCurrent(this);n&&this.auth._notifyListenersIfCurrent(this)
}async delete(){if(ft(this.auth.app))return Promise.reject(qt(this.auth));const e=await this.getIdToken();await Pn(this,yn(this.auth,{idToken:e}))
;this.stsTokenManager.clearRefreshToken();return this.auth.signOut()}toJSON(){return{uid:this.uid,email:this.email||void 0,emailVerified:this.emailVerified,
displayName:this.displayName||void 0,isAnonymous:this.isAnonymous,photoURL:this.photoURL||void 0,phoneNumber:this.phoneNumber||void 0,
tenantId:this.tenantId||void 0,providerData:this.providerData.map(e=>({...e})),stsTokenManager:this.stsTokenManager.toJSON(),
_redirectEventId:this._redirectEventId,...this.metadata.toJSON(),apiKey:this.auth.config.apiKey,appName:this.auth.name}}get refreshToken(){
return this.stsTokenManager.refreshToken||""}static _fromJSON(e,t){
const n=t.displayName??void 0,r=t.email??void 0,i=t.phoneNumber??void 0,s=t.photoURL??void 0,o=t.tenantId??void 0,a=t._redirectEventId??void 0,c=t.createdAt??void 0,u=t.lastLoginAt??void 0,{uid:h,emailVerified:l,isAnonymous:d,providerData:p,stsTokenManager:f}=t
;Jt(h&&f,e,"internal-error");const m=Fn.fromJSON(this.name,f);Jt("string"==typeof h,e,"internal-error");jn(n,e.name);jn(r,e.name)
;Jt("boolean"==typeof l,e,"internal-error");Jt("boolean"==typeof d,e,"internal-error");jn(i,e.name);jn(s,e.name);jn(o,e.name);jn(a,e.name);jn(c,e.name)
;jn(u,e.name);const g=new Hn({uid:h,auth:e,email:r,emailVerified:l,displayName:n,isAnonymous:d,photoURL:s,phoneNumber:i,tenantId:o,stsTokenManager:m,
createdAt:c,lastLoginAt:u});p&&Array.isArray(p)&&(g.providerData=p.map(e=>({...e})));a&&(g._redirectEventId=a);return g}
static async _fromIdTokenResponse(e,t,n=!1){const r=new Fn;r.updateFromServerResponse(t);const i=new Hn({uid:t.localId,auth:e,stsTokenManager:r,isAnonymous:n})
;await Dn(i);return i}static async _fromGetAccountInfoResponse(e,t,n){const r=t.users[0];Jt(void 0!==r.localId,"internal-error")
;const i=void 0!==r.providerUserInfo?Un(r.providerUserInfo):[],s=!(r.email&&r.passwordHash||i?.length),o=new Fn;o.updateFromIdToken(n);const a=new Hn({
uid:r.localId,auth:e,stsTokenManager:o,isAnonymous:s}),c={uid:r.localId,displayName:r.displayName||null,photoURL:r.photoUrl||null,email:r.email||null,
emailVerified:r.emailVerified||!1,phoneNumber:r.phoneNumber||null,tenantId:r.tenantId||null,providerData:i,metadata:new Nn(r.createdAt,r.lastLoginAt),
isAnonymous:!(r.email&&r.passwordHash||i?.length)};Object.assign(a,c);return a}}const $n=new Map;function Wn(e){
Xt(e instanceof Function,"Expected a class definition");let t=$n.get(e);if(t){Xt(t instanceof e,"Instance stored in cache mismatched with class");return t}
t=new e;$n.set(e,t);return t}class Bn{constructor(){this.type="NONE";this.storage={}}async _isAvailable(){return!0}async _set(e,t){this.storage[e]=t}
async _get(e){const t=this.storage[e];return void 0===t?null:t}async _remove(e){delete this.storage[e]}_addListener(e,t){}_removeListener(e,t){}}Bn.type="NONE"
;const zn=Bn;function Kn(e,t,n){return`firebase:${e}:${t}:${n}`}class qn{constructor(e,t,n){this.persistence=e;this.auth=t;this.userKey=n
;const{config:r,name:i}=this.auth;this.fullUserKey=Kn(this.userKey,r.apiKey,i);this.fullPersistenceKey=Kn("persistence",r.apiKey,i)
;this.boundEventHandler=t._onStorageEvent.bind(t);this.persistence._addListener(this.fullUserKey,this.boundEventHandler)}setCurrentUser(e){
return this.persistence._set(this.fullUserKey,e.toJSON())}async getCurrentUser(){const e=await this.persistence._get(this.fullUserKey);if(!e)return null
;if("string"==typeof e){const t=await En(this.auth,{idToken:e}).catch(()=>{});return t?Hn._fromGetAccountInfoResponse(this.auth,t,e):null}
return Hn._fromJSON(this.auth,e)}removeCurrentUser(){return this.persistence._remove(this.fullUserKey)}savePersistenceForRedirect(){
return this.persistence._set(this.fullPersistenceKey,this.persistence.type)}async setPersistence(e){if(this.persistence===e)return
;const t=await this.getCurrentUser();await this.removeCurrentUser();this.persistence=e;return t?this.setCurrentUser(t):void 0}delete(){
this.persistence._removeListener(this.fullUserKey,this.boundEventHandler)}static async create(e,t,n="authUser"){if(!t.length)return new qn(Wn(zn),e,n)
;const r=(await Promise.all(t.map(async e=>{if(await e._isAvailable())return e}))).filter(e=>e);let i=r[0]||Wn(zn);const s=Kn(n,e.config.apiKey,e.name)
;let o=null;for(const n of t)try{const t=await n._get(s);if(t){let r;if("string"==typeof t){const n=await En(e,{idToken:t}).catch(()=>{});if(!n)break
;r=await Hn._fromGetAccountInfoResponse(e,n,t)}else r=Hn._fromJSON(e,t);n!==i&&(o=r);i=n;break}}catch{}const a=r.filter(e=>e._shouldAllowMigration)
;if(!i._shouldAllowMigration||!a.length)return new qn(i,e,n);i=a[0];o&&await i._set(s,o.toJSON());await Promise.all(t.map(async e=>{if(e!==i)try{
await e._remove(s)}catch{}}));return new qn(i,e,n)}}function Gn(e){const t=e.toLowerCase()
;if(t.includes("opera/")||t.includes("opr/")||t.includes("opios/"))return"Opera";if(Qn(t))return"IEMobile"
;if(t.includes("msie")||t.includes("trident/"))return"IE";if(t.includes("edge/"))return"Edge";if(Jn(t))return"Firefox";if(t.includes("silk/"))return"Silk"
;if(er(t))return"Blackberry";if(tr(t))return"Webos";if(Yn(t))return"Safari";if((t.includes("chrome/")||Xn(t))&&!t.includes("edge/"))return"Chrome"
;if(Zn(t))return"Android";{const t=/([a-zA-Z\d\.]+)\/[a-zA-Z\d\.]*$/,n=e.match(t);if(2===n?.length)return n[1]}return"Other"}function Jn(e=v()){
return/firefox\//i.test(e)}function Yn(e=v()){const t=e.toLowerCase()
;return t.includes("safari/")&&!t.includes("chrome/")&&!t.includes("crios/")&&!t.includes("android")}function Xn(e=v()){return/crios\//i.test(e)}
function Qn(e=v()){return/iemobile/i.test(e)}function Zn(e=v()){return/android/i.test(e)}function er(e=v()){return/blackberry/i.test(e)}function tr(e=v()){
return/webos/i.test(e)}function nr(e=v()){return/iphone|ipad|ipod/i.test(e)||/macintosh/i.test(e)&&/mobile/i.test(e)}function rr(e=v()){
return nr(e)&&!!window.navigator?.standalone}function ir(){return S()&&10===document.documentMode}function sr(e=v()){
return nr(e)||Zn(e)||tr(e)||er(e)||/windows phone/i.test(e)||Qn(e)}function or(e,t=[]){let n;switch(e){case"Browser":n=Gn(v());break;case"Worker":
n=`${Gn(v())}-${e}`;break;default:n=e}const r=t.length?t.join(","):"FirebaseCore-web";return`${n}/JsCore/${_t}/${r}`}class ar{constructor(e){this.auth=e
;this.queue=[]}pushCallback(e,t){const n=t=>new Promise((n,r)=>{try{n(e(t))}catch(e){r(e)}});n.onAbort=t;this.queue.push(n);const r=this.queue.length-1
;return()=>{this.queue[r]=()=>Promise.resolve()}}async runMiddleware(e){if(this.auth.currentUser===e)return;const t=[];try{for(const n of this.queue){await n(e)
;n.onAbort&&t.push(n.onAbort)}}catch(e){t.reverse();for(const e of t)try{e()}catch(e){}throw this.auth._errorFactory.create("login-blocked",{
originalMessage:e?.message})}}}async function cr(e,t={}){return ln(e,"GET","/v2/passwordPolicy",hn(e,t))}const ur=6;class hr{constructor(e){
const t=e.customStrengthOptions;this.customStrengthOptions={};this.customStrengthOptions.minPasswordLength=t.minPasswordLength??ur
;t.maxPasswordLength&&(this.customStrengthOptions.maxPasswordLength=t.maxPasswordLength)
;void 0!==t.containsLowercaseCharacter&&(this.customStrengthOptions.containsLowercaseLetter=t.containsLowercaseCharacter)
;void 0!==t.containsUppercaseCharacter&&(this.customStrengthOptions.containsUppercaseLetter=t.containsUppercaseCharacter)
;void 0!==t.containsNumericCharacter&&(this.customStrengthOptions.containsNumericCharacter=t.containsNumericCharacter)
;void 0!==t.containsNonAlphanumericCharacter&&(this.customStrengthOptions.containsNonAlphanumericCharacter=t.containsNonAlphanumericCharacter)
;this.enforcementState=e.enforcementState;"ENFORCEMENT_STATE_UNSPECIFIED"===this.enforcementState&&(this.enforcementState="OFF")
;this.allowedNonAlphanumericCharacters=e.allowedNonAlphanumericCharacters?.join("")??"";this.forceUpgradeOnSignin=e.forceUpgradeOnSignin??!1
;this.schemaVersion=e.schemaVersion}validatePassword(e){const t={isValid:!0,passwordPolicy:this};this.validatePasswordLengthOptions(e,t)
;this.validatePasswordCharacterOptions(e,t);t.isValid&&(t.isValid=t.meetsMinPasswordLength??!0);t.isValid&&(t.isValid=t.meetsMaxPasswordLength??!0)
;t.isValid&&(t.isValid=t.containsLowercaseLetter??!0);t.isValid&&(t.isValid=t.containsUppercaseLetter??!0);t.isValid&&(t.isValid=t.containsNumericCharacter??!0)
;t.isValid&&(t.isValid=t.containsNonAlphanumericCharacter??!0);return t}validatePasswordLengthOptions(e,t){
const n=this.customStrengthOptions.minPasswordLength,r=this.customStrengthOptions.maxPasswordLength;n&&(t.meetsMinPasswordLength=e.length>=n)
;r&&(t.meetsMaxPasswordLength=e.length<=r)}validatePasswordCharacterOptions(e,t){this.updatePasswordCharacterOptionsStatuses(t,!1,!1,!1,!1);let n
;for(let r=0;r<e.length;r++){n=e.charAt(r)
;this.updatePasswordCharacterOptionsStatuses(t,n>="a"&&n<="z",n>="A"&&n<="Z",n>="0"&&n<="9",this.allowedNonAlphanumericCharacters.includes(n))}}
updatePasswordCharacterOptionsStatuses(e,t,n,r,i){this.customStrengthOptions.containsLowercaseLetter&&(e.containsLowercaseLetter||(e.containsLowercaseLetter=t))
;this.customStrengthOptions.containsUppercaseLetter&&(e.containsUppercaseLetter||(e.containsUppercaseLetter=n))
;this.customStrengthOptions.containsNumericCharacter&&(e.containsNumericCharacter||(e.containsNumericCharacter=r))
;this.customStrengthOptions.containsNonAlphanumericCharacter&&(e.containsNonAlphanumericCharacter||(e.containsNonAlphanumericCharacter=i))}}class lr{
constructor(e,t,n,r){this.app=e;this.heartbeatServiceProvider=t;this.appCheckServiceProvider=n;this.config=r;this.currentUser=null;this.emulatorConfig=null
;this.operations=Promise.resolve();this.authStateSubscription=new pr(this);this.idTokenSubscription=new pr(this);this.beforeStateQueue=new ar(this)
;this.redirectUser=null;this.isProactiveRefreshEnabled=!1;this.EXPECTED_PASSWORD_POLICY_SCHEMA_VERSION=1;this._canInitEmulator=!0;this._isInitialized=!1
;this._deleted=!1;this._initializationPromise=null;this._popupRedirectResolver=null;this._errorFactory=jt;this._agentRecaptchaConfig=null
;this._tenantRecaptchaConfigs={};this._projectPasswordPolicy=null;this._tenantPasswordPolicies={};this._resolvePersistenceManagerAvailable=void 0
;this.lastNotifiedUid=void 0;this.languageCode=null;this.tenantId=null;this.settings={appVerificationDisabledForTesting:!1};this.frameworks=[];this.name=e.name
;this.clientVersion=r.sdkClientVersion;this._persistenceManagerAvailable=new Promise(e=>this._resolvePersistenceManagerAvailable=e)}
_initializeWithPersistence(e,t){t&&(this._popupRedirectResolver=Wn(t));this._initializationPromise=this.queue(async()=>{if(!this._deleted){
this.persistenceManager=await qn.create(this,e);this._resolvePersistenceManagerAvailable?.();if(!this._deleted){
if(this._popupRedirectResolver?._shouldInitProactively)try{await this._popupRedirectResolver._initialize(this)}catch(e){}await this.initializeCurrentUser(t)
;this.lastNotifiedUid=this.currentUser?.uid||null;this._deleted||(this._isInitialized=!0)}}});return this._initializationPromise}async _onStorageEvent(){
if(this._deleted)return;const e=await this.assertedPersistence.getCurrentUser();if(this.currentUser||e)if(this.currentUser&&e&&this.currentUser.uid===e.uid){
this._currentUser._assign(e);await this.currentUser.getIdToken()}else await this._updateCurrentUser(e,!0)}async initializeCurrentUserFromIdToken(e){try{
const t=await En(this,{idToken:e}),n=await Hn._fromGetAccountInfoResponse(this,t,e);await this.directlySetCurrentUser(n)}catch(e){
await this.directlySetCurrentUser(null)}}async initializeCurrentUser(e){if(ft(this.app)){const e=this.app.settings.authIdToken;return e?new Promise(t=>{
setTimeout(()=>this.initializeCurrentUserFromIdToken(e).then(t,t))}):this.directlySetCurrentUser(null)}const t=await this.assertedPersistence.getCurrentUser()
;let n=t,r=!1;if(e&&this.config.authDomain){await this.getOrInitRedirectPersistenceManager()
;const t=this.redirectUser?._redirectEventId,i=n?._redirectEventId,s=await this.tryRedirectSignIn(e);if((!t||t===i)&&s?.user){n=s.user;r=!0}}
if(!n)return this.directlySetCurrentUser(null);if(!n._redirectEventId){if(r)try{await this.beforeStateQueue.runMiddleware(n)}catch(e){n=t
;this._popupRedirectResolver._overrideRedirectResult(this,()=>Promise.reject(e))}
return n?this.reloadAndSetCurrentUserOrClear(n):this.directlySetCurrentUser(null)}Jt(this._popupRedirectResolver,this,"argument-error")
;await this.getOrInitRedirectPersistenceManager()
;return this.redirectUser&&this.redirectUser._redirectEventId===n._redirectEventId?this.directlySetCurrentUser(n):this.reloadAndSetCurrentUserOrClear(n)}
async tryRedirectSignIn(e){let t=null;try{t=await this._popupRedirectResolver._completeRedirectFn(this,e,!0)}catch(e){await this._setRedirectUser(null)}return t
}async reloadAndSetCurrentUserOrClear(e){try{await Dn(e)}catch(e){if("auth/network-request-failed"!==e?.code)return this.directlySetCurrentUser(null)}
return this.directlySetCurrentUser(e)}useDeviceLanguage(){this.languageCode=nn()}async _delete(){this._deleted=!0}async updateCurrentUser(e){
if(ft(this.app))return Promise.reject(qt(this));const t=e?W(e):null;t&&Jt(t.auth.config.apiKey===this.config.apiKey,this,"invalid-user-token")
;return this._updateCurrentUser(t&&t._clone(this))}async _updateCurrentUser(e,t=!1){if(!this._deleted){
e&&Jt(this.tenantId===e.tenantId,this,"tenant-id-mismatch");t||await this.beforeStateQueue.runMiddleware(e);return this.queue(async()=>{
await this.directlySetCurrentUser(e);this.notifyAuthListeners()})}}async signOut(){if(ft(this.app))return Promise.reject(qt(this))
;await this.beforeStateQueue.runMiddleware(null);(this.redirectPersistenceManager||this._popupRedirectResolver)&&await this._setRedirectUser(null)
;return this._updateCurrentUser(null,!0)}setPersistence(e){return ft(this.app)?Promise.reject(qt(this)):this.queue(async()=>{
await this.assertedPersistence.setPersistence(Wn(e))})}_getRecaptchaConfig(){
return null==this.tenantId?this._agentRecaptchaConfig:this._tenantRecaptchaConfigs[this.tenantId]}async validatePassword(e){
this._getPasswordPolicyInternal()||await this._updatePasswordPolicy();const t=this._getPasswordPolicyInternal()
;return t.schemaVersion!==this.EXPECTED_PASSWORD_POLICY_SCHEMA_VERSION?Promise.reject(this._errorFactory.create("unsupported-password-policy-schema-version",{})):t.validatePassword(e)
}_getPasswordPolicyInternal(){return null===this.tenantId?this._projectPasswordPolicy:this._tenantPasswordPolicies[this.tenantId]}async _updatePasswordPolicy(){
const e=await cr(this),t=new hr(e);null===this.tenantId?this._projectPasswordPolicy=t:this._tenantPasswordPolicies[this.tenantId]=t}_getPersistenceType(){
return this.assertedPersistence.persistence.type}_getPersistence(){return this.assertedPersistence.persistence}_updateErrorMap(e){
this._errorFactory=new O("auth","Firebase",e())}onAuthStateChanged(e,t,n){return this.registerStateListener(this.authStateSubscription,e,t,n)}
beforeAuthStateChanged(e,t){return this.beforeStateQueue.pushCallback(e,t)}onIdTokenChanged(e,t,n){
return this.registerStateListener(this.idTokenSubscription,e,t,n)}authStateReady(){return new Promise((e,t)=>{if(this.currentUser)e();else{
const n=this.onAuthStateChanged(()=>{n();e()},t)}})}async revokeAccessToken(e){if(this.currentUser){const t={providerId:"apple.com",tokenType:"ACCESS_TOKEN",
token:e,idToken:await this.currentUser.getIdToken()};null!=this.tenantId&&(t.tenantId=this.tenantId);await Vn(this,t)}}toJSON(){return{
apiKey:this.config.apiKey,authDomain:this.config.authDomain,appName:this.name,currentUser:this._currentUser?.toJSON()}}async _setRedirectUser(e,t){
const n=await this.getOrInitRedirectPersistenceManager(t);return null===e?n.removeCurrentUser():n.setCurrentUser(e)}
async getOrInitRedirectPersistenceManager(e){if(!this.redirectPersistenceManager){const t=e&&Wn(e)||this._popupRedirectResolver;Jt(t,this,"argument-error")
;this.redirectPersistenceManager=await qn.create(this,[Wn(t._redirectPersistence)],"redirectUser")
;this.redirectUser=await this.redirectPersistenceManager.getCurrentUser()}return this.redirectPersistenceManager}async _redirectUserForId(e){
this._isInitialized&&await this.queue(async()=>{})
;return this._currentUser?._redirectEventId===e?this._currentUser:this.redirectUser?._redirectEventId===e?this.redirectUser:null}async _persistUserIfCurrent(e){
if(e===this.currentUser)return this.queue(async()=>this.directlySetCurrentUser(e))}_notifyListenersIfCurrent(e){e===this.currentUser&&this.notifyAuthListeners()
}_key(){return`${this.config.authDomain}:${this.config.apiKey}:${this.name}`}_startProactiveRefresh(){this.isProactiveRefreshEnabled=!0
;this.currentUser&&this._currentUser._startProactiveRefresh()}_stopProactiveRefresh(){this.isProactiveRefreshEnabled=!1
;this.currentUser&&this._currentUser._stopProactiveRefresh()}get _currentUser(){return this.currentUser}notifyAuthListeners(){if(!this._isInitialized)return
;this.idTokenSubscription.next(this.currentUser);const e=this.currentUser?.uid??null;if(this.lastNotifiedUid!==e){this.lastNotifiedUid=e
;this.authStateSubscription.next(this.currentUser)}}registerStateListener(e,t,n,r){if(this._deleted)return()=>{};const i="function"==typeof t?t:t.next.bind(t)
;let s=!1;const o=this._isInitialized?Promise.resolve():this._initializationPromise;Jt(o,this,"internal-error");o.then(()=>{s||i(this.currentUser)})
;if("function"==typeof t){const i=e.addObserver(t,n,r);return()=>{s=!0;i()}}{const n=e.addObserver(t);return()=>{s=!0;n()}}}async directlySetCurrentUser(e){
this.currentUser&&this.currentUser!==e&&this._currentUser._stopProactiveRefresh();e&&this.isProactiveRefreshEnabled&&e._startProactiveRefresh()
;this.currentUser=e;e?await this.assertedPersistence.setCurrentUser(e):await this.assertedPersistence.removeCurrentUser()}queue(e){
this.operations=this.operations.then(e,e);return this.operations}get assertedPersistence(){Jt(this.persistenceManager,this,"internal-error")
;return this.persistenceManager}_logFramework(e){if(e&&!this.frameworks.includes(e)){this.frameworks.push(e);this.frameworks.sort()
;this.clientVersion=or(this.config.clientPlatform,this._getFrameworks())}}_getFrameworks(){return this.frameworks}async _getAdditionalHeaders(){const e={
"X-Client-Version":this.clientVersion};this.app.options.appId&&(e["X-Firebase-gmpid"]=this.app.options.appId)
;const t=await(this.heartbeatServiceProvider.getImmediate({optional:!0})?.getHeartbeatsHeader());t&&(e["X-Firebase-Client"]=t)
;const n=await this._getAppCheckToken();n&&(e["X-Firebase-AppCheck"]=n);return e}async _getAppCheckToken(){
if(ft(this.app)&&this.app.settings.appCheckToken)return this.app.settings.appCheckToken;const e=await(this.appCheckServiceProvider.getImmediate({optional:!0
})?.getToken());e?.error&&$t(`Error while retrieving App Check token: ${e.error}`);return e?.token}}function dr(e){return W(e)}class pr{constructor(e){
this.auth=e;this.observer=null;this.addObserver=F(e=>this.observer=e)}get next(){Jt(this.observer,this.auth,"internal-error")
;return this.observer.next.bind(this.observer)}}let fr={async loadJS(){throw new Error("Unable to load external scripts")},recaptchaV2Script:"",
recaptchaEnterpriseScript:"",gapiScript:""};function mr(e){fr=e}function gr(e){return fr.loadJS(e)}function _r(){return fr.recaptchaEnterpriseScript}
function wr(){return fr.gapiScript}function Ir(e){return`__${e}${Math.floor(1e6*Math.random())}`}class vr{constructor(){this.enterprise=new yr}ready(e){e()}
execute(e,t){return Promise.resolve("token")}render(e,t){return""}}class yr{ready(e){e()}execute(e,t){return Promise.resolve("token")}render(e,t){return""}}
const Er="recaptcha-enterprise",br="NO_RECAPTCHA";class Tr{constructor(e){this.type=Er;this.auth=dr(e)}async verify(e="verify",t=!1){async function n(e){if(!t){
if(null==e.tenantId&&null!=e._agentRecaptchaConfig)return e._agentRecaptchaConfig.siteKey
;if(null!=e.tenantId&&void 0!==e._tenantRecaptchaConfigs[e.tenantId])return e._tenantRecaptchaConfigs[e.tenantId].siteKey}return new Promise(async(t,n)=>{vn(e,{
clientType:"CLIENT_TYPE_WEB",version:"RECAPTCHA_ENTERPRISE"}).then(r=>{if(void 0!==r.recaptchaKey){const n=new In(r)
;null==e.tenantId?e._agentRecaptchaConfig=n:e._tenantRecaptchaConfigs[e.tenantId]=n;return t(n.siteKey)}n(new Error("recaptcha Enterprise site key undefined"))
}).catch(e=>{n(e)})})}function r(t,n,r){const i=window.grecaptcha;wn(i)?i.enterprise.ready(()=>{i.enterprise.execute(t,{action:e}).then(e=>{n(e)}).catch(()=>{
n(br)})}):r(Error("No reCAPTCHA enterprise script loaded."))}if(this.auth.settings.appVerificationDisabledForTesting){return(new vr).execute("siteKey",{
action:"verify"})}return new Promise((e,i)=>{n(this.auth).then(n=>{if(!t&&wn(window.grecaptcha))r(n,e,i);else{if("undefined"==typeof window){
i(new Error("RecaptchaVerifier is only supported in browser"));return}let t=_r();0!==t.length&&(t+=n);gr(t).then(()=>{r(n,e,i)}).catch(e=>{i(e)})}}).catch(e=>{
i(e)})})}}async function Sr(e,t,n,r=!1,i=!1){const s=new Tr(e);let o;if(i)o=br;else try{o=await s.verify(n)}catch(e){o=await s.verify(n,!0)}const a={...t}
;if("mfaSmsEnrollment"===n||"mfaSmsSignIn"===n){if("phoneEnrollmentInfo"in a){const e=a.phoneEnrollmentInfo.phoneNumber,t=a.phoneEnrollmentInfo.recaptchaToken
;Object.assign(a,{phoneEnrollmentInfo:{phoneNumber:e,recaptchaToken:t,captchaResponse:o,clientType:"CLIENT_TYPE_WEB",recaptchaVersion:"RECAPTCHA_ENTERPRISE"}})
}else if("phoneSignInInfo"in a){const e=a.phoneSignInInfo.recaptchaToken;Object.assign(a,{phoneSignInInfo:{recaptchaToken:e,captchaResponse:o,
clientType:"CLIENT_TYPE_WEB",recaptchaVersion:"RECAPTCHA_ENTERPRISE"}})}return a}r?Object.assign(a,{captchaResp:o}):Object.assign(a,{captchaResponse:o})
;Object.assign(a,{clientType:"CLIENT_TYPE_WEB"});Object.assign(a,{recaptchaVersion:"RECAPTCHA_ENTERPRISE"});return a}async function kr(e,t,n,r,i){
if("EMAIL_PASSWORD_PROVIDER"===i){if(e._getRecaptchaConfig()?.isProviderEnabled("EMAIL_PASSWORD_PROVIDER")){const i=await Sr(e,t,n,"getOobCode"===n)
;return r(e,i)}return r(e,t).catch(async i=>{if("auth/missing-recaptcha-token"===i.code){const i=await Sr(e,t,n,"getOobCode"===n);return r(e,i)}
return Promise.reject(i)})}if("PHONE_PROVIDER"===i){if(e._getRecaptchaConfig()?.isProviderEnabled("PHONE_PROVIDER")){const i=await Sr(e,t,n)
;return r(e,i).catch(async i=>{
if("AUDIT"===e._getRecaptchaConfig()?.getProviderEnforcementState("PHONE_PROVIDER")&&("auth/missing-recaptcha-token"===i.code||"auth/invalid-app-credential"===i.code)){
const i=await Sr(e,t,n,!1,!0);return r(e,i)}return Promise.reject(i)})}{const i=await Sr(e,t,n,!1,!0);return r(e,i)}}
return Promise.reject(i+" provider is not supported.")}async function Cr(e){const t=dr(e),n=await vn(t,{clientType:"CLIENT_TYPE_WEB",
version:"RECAPTCHA_ENTERPRISE"}),r=new In(n);null==t.tenantId?t._agentRecaptchaConfig=r:t._tenantRecaptchaConfigs[t.tenantId]=r;if(r.isAnyProviderEnabled()){
new Tr(t).verify()}}function Rr(e,t){const n=pt(e,"auth");if(n.isInitialized()){const e=n.getImmediate();if(L(n.getOptions(),t??{}))return e
;Bt(e,"already-initialized")}return n.initialize({options:t})}function Pr(e,t){const n=t?.persistence||[],r=(Array.isArray(n)?n:[n]).map(Wn)
;t?.errorMap&&e._updateErrorMap(t.errorMap);e._initializeWithPersistence(r,t?.popupRedirectResolver)}function Or(e,t,n){const r=dr(e)
;Jt(/^https?:\/\//.test(t),r,"invalid-emulator-scheme");const i=!!n?.disableWarnings,s=Ar(t),{host:o,port:a}=Nr(t),c=null===a?"":`:${a}`,u={
url:`${s}//${o}${c}/`},h=Object.freeze({host:o,port:a,protocol:s.replace(":",""),options:Object.freeze({disableWarnings:i})});if(r._canInitEmulator){
r.config.emulator=u;r.emulatorConfig=h;r.settings.appVerificationDisabledForTesting=!0;B(o)?z(`${s}//${o}${c}`):i||Lr()}else{
Jt(r.config.emulator&&r.emulatorConfig,r,"emulator-config-failed");Jt(L(u,r.config.emulator)&&L(h,r.emulatorConfig),r,"emulator-config-failed")}}function Ar(e){
const t=e.indexOf(":");return t<0?"":e.substr(0,t+1)}function Nr(e){const t=Ar(e),n=/(\/\/)?([^?#/]+)/.exec(e.substr(t.length));if(!n)return{host:"",port:null}
;const r=n[2].split("@").pop()||"",i=/^(\[ [^\]]+\])(:|$)/.exec(r);if(i){const e=i[1];return{host:e,port:Dr(r.substr(e.length+1))}}{const[e,t]=r.split(":")
;return{host:e,port:Dr(t)}}}function Dr(e){if(!e)return null;const t=Number(e);return isNaN(t)?null:t}function Lr(){function e(){
const e=document.createElement("p"),t=e.style;e.innerText="Running in emulator mode. Do not use with production credentials.";t.position="fixed";t.width="100%"
;t.backgroundColor="#ffffff";t.border=".1em solid #000000";t.color="#b50000";t.bottom="0px";t.left="0px";t.margin="0px";t.zIndex="10000";t.textAlign="center"
;e.classList.add("firebase-emulator-warning");document.body.appendChild(e)}"undefined"!=typeof console&&console.info
;"undefined"!=typeof window&&"undefined"!=typeof document&&("loading"===document.readyState?window.addEventListener("DOMContentLoaded",e):e())}class Mr{
constructor(e,t){this.providerId=e;this.signInMethod=t}toJSON(){return Yt("not implemented")}_getIdTokenResponse(e){return Yt("not implemented")}
_linkToIdToken(e,t){return Yt("not implemented")}_getReauthenticationResolver(e){return Yt("not implemented")}}async function Ur(e,t){
return ln(e,"POST","/v1/accounts:signUp",t)}async function xr(e,t){return pn(e,"POST","/v1/accounts:signInWithPassword",hn(e,t))}async function Vr(e,t){
return pn(e,"POST","/v1/accounts:signInWithEmailLink",hn(e,t))}async function Fr(e,t){return pn(e,"POST","/v1/accounts:signInWithEmailLink",hn(e,t))}
class jr extends Mr{constructor(e,t,n,r=null){super("password",n);this._email=e;this._password=t;this._tenantId=r}static _fromEmailAndPassword(e,t){
return new jr(e,t,"password")}static _fromEmailAndCode(e,t,n=null){return new jr(e,t,"emailLink",n)}toJSON(){return{email:this._email,password:this._password,
signInMethod:this.signInMethod,tenantId:this._tenantId}}static fromJSON(e){const t="string"==typeof e?JSON.parse(e):e;if(t?.email&&t?.password){
if("password"===t.signInMethod)return this._fromEmailAndPassword(t.email,t.password)
;if("emailLink"===t.signInMethod)return this._fromEmailAndCode(t.email,t.password,t.tenantId)}return null}async _getIdTokenResponse(e){
switch(this.signInMethod){case"password":return kr(e,{returnSecureToken:!0,email:this._email,password:this._password,clientType:"CLIENT_TYPE_WEB"
},"signInWithPassword",xr,"EMAIL_PASSWORD_PROVIDER");case"emailLink":return Vr(e,{email:this._email,oobCode:this._password});default:Bt(e,"internal-error")}}
async _linkToIdToken(e,t){switch(this.signInMethod){case"password":return kr(e,{idToken:t,returnSecureToken:!0,email:this._email,password:this._password,
clientType:"CLIENT_TYPE_WEB"},"signUpPassword",Ur,"EMAIL_PASSWORD_PROVIDER");case"emailLink":return Fr(e,{idToken:t,email:this._email,oobCode:this._password})
;default:Bt(e,"internal-error")}}_getReauthenticationResolver(e){return this._getIdTokenResponse(e)}}async function Hr(e,t){
return pn(e,"POST","/v1/accounts:signInWithIdp",hn(e,t))}const $r="http://localhost";class Wr extends Mr{constructor(){super(...arguments)
;this.pendingToken=null}static _fromParams(e){const t=new Wr(e.providerId,e.signInMethod);if(e.idToken||e.accessToken){e.idToken&&(t.idToken=e.idToken)
;e.accessToken&&(t.accessToken=e.accessToken);e.nonce&&!e.pendingToken&&(t.nonce=e.nonce);e.pendingToken&&(t.pendingToken=e.pendingToken)
}else if(e.oauthToken&&e.oauthTokenSecret){t.accessToken=e.oauthToken;t.secret=e.oauthTokenSecret}else Bt("argument-error");return t}toJSON(){return{
idToken:this.idToken,accessToken:this.accessToken,secret:this.secret,nonce:this.nonce,pendingToken:this.pendingToken,providerId:this.providerId,
signInMethod:this.signInMethod}}static fromJSON(e){const t="string"==typeof e?JSON.parse(e):e,{providerId:n,signInMethod:r,...i}=t;if(!n||!r)return null
;const s=new Wr(n,r);s.idToken=i.idToken||void 0;s.accessToken=i.accessToken||void 0;s.secret=i.secret;s.nonce=i.nonce;s.pendingToken=i.pendingToken||null
;return s}_getIdTokenResponse(e){return Hr(e,this.buildRequest())}_linkToIdToken(e,t){const n=this.buildRequest();n.idToken=t;return Hr(e,n)}
_getReauthenticationResolver(e){const t=this.buildRequest();t.autoCreate=!1;return Hr(e,t)}buildRequest(){const e={requestUri:$r,returnSecureToken:!0}
;if(this.pendingToken)e.pendingToken=this.pendingToken;else{const t={};this.idToken&&(t.id_token=this.idToken)
;this.accessToken&&(t.access_token=this.accessToken);this.secret&&(t.oauth_token_secret=this.secret);t.providerId=this.providerId
;this.nonce&&!this.pendingToken&&(t.nonce=this.nonce);e.postBody=U(t)}return e}}async function Br(e,t){
return ln(e,"POST","/v1/accounts:sendVerificationCode",hn(e,t))}async function zr(e,t){return pn(e,"POST","/v1/accounts:signInWithPhoneNumber",hn(e,t))}
async function Kr(e,t){const n=await pn(e,"POST","/v1/accounts:signInWithPhoneNumber",hn(e,t))
;if(n.temporaryProof)throw _n(e,"account-exists-with-different-credential",n);return n}const qr={USER_NOT_FOUND:"user-not-found"};async function Gr(e,t){
return pn(e,"POST","/v1/accounts:signInWithPhoneNumber",hn(e,{...t,operation:"REAUTH"}),qr)}class Jr extends Mr{constructor(e){super("phone","phone")
;this.params=e}static _fromVerification(e,t){return new Jr({verificationId:e,verificationCode:t})}static _fromTokenResponse(e,t){return new Jr({phoneNumber:e,
temporaryProof:t})}_getIdTokenResponse(e){return zr(e,this._makeVerificationRequest())}_linkToIdToken(e,t){return Kr(e,{idToken:t,
...this._makeVerificationRequest()})}_getReauthenticationResolver(e){return Gr(e,this._makeVerificationRequest())}_makeVerificationRequest(){
const{temporaryProof:e,phoneNumber:t,verificationId:n,verificationCode:r}=this.params;return e&&t?{temporaryProof:e,phoneNumber:t}:{sessionInfo:n,code:r}}
toJSON(){const e={providerId:this.providerId};this.params.phoneNumber&&(e.phoneNumber=this.params.phoneNumber)
;this.params.temporaryProof&&(e.temporaryProof=this.params.temporaryProof);this.params.verificationCode&&(e.verificationCode=this.params.verificationCode)
;this.params.verificationId&&(e.verificationId=this.params.verificationId);return e}static fromJSON(e){"string"==typeof e&&(e=JSON.parse(e))
;const{verificationId:t,verificationCode:n,phoneNumber:r,temporaryProof:i}=e;return n||t||r||i?new Jr({verificationId:t,verificationCode:n,phoneNumber:r,
temporaryProof:i}):null}}function Yr(e){switch(e){case"recoverEmail":return"RECOVER_EMAIL";case"resetPassword":return"PASSWORD_RESET";case"signIn":
return"EMAIL_SIGNIN";case"verifyEmail":return"VERIFY_EMAIL";case"verifyAndChangeEmail":return"VERIFY_AND_CHANGE_EMAIL";case"revertSecondFactorAddition":
return"REVERT_SECOND_FACTOR_ADDITION";default:return null}}function Xr(e){const t=x(V(e)).link,n=t?x(V(t)).deep_link_id:null,r=x(V(e)).deep_link_id
;return(r?x(V(r)).link:null)||r||n||t||e}class Qr{constructor(e){const t=x(V(e)),n=t.apiKey??null,r=t.oobCode??null,i=Yr(t.mode??null)
;Jt(n&&r&&i,"argument-error");this.apiKey=n;this.operation=i;this.code=r;this.continueUrl=t.continueUrl??null;this.languageCode=t.lang??null
;this.tenantId=t.tenantId??null}static parseLink(e){const t=Xr(e);try{return new Qr(t)}catch{return null}}}class Zr{constructor(){this.providerId=Zr.PROVIDER_ID
}static credential(e,t){return jr._fromEmailAndPassword(e,t)}static credentialWithLink(e,t){const n=Qr.parseLink(t);Jt(n,"argument-error")
;return jr._fromEmailAndCode(e,n.code,n.tenantId)}}Zr.PROVIDER_ID="password";Zr.EMAIL_PASSWORD_SIGN_IN_METHOD="password"
;Zr.EMAIL_LINK_SIGN_IN_METHOD="emailLink";class ei{constructor(e){this.providerId=e;this.defaultLanguageCode=null;this.customParameters={}}
setDefaultLanguage(e){this.defaultLanguageCode=e}setCustomParameters(e){this.customParameters=e;return this}getCustomParameters(){return this.customParameters}}
class ti extends ei{constructor(){super(...arguments);this.scopes=[]}addScope(e){this.scopes.includes(e)||this.scopes.push(e);return this}getScopes(){
return[...this.scopes]}}class ni extends ti{constructor(){super("facebook.com")}static credential(e){return Wr._fromParams({providerId:ni.PROVIDER_ID,
signInMethod:ni.FACEBOOK_SIGN_IN_METHOD,accessToken:e})}static credentialFromResult(e){return ni.credentialFromTaggedObject(e)}static credentialFromError(e){
return ni.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e||!("oauthAccessToken"in e))return null
;if(!e.oauthAccessToken)return null;try{return ni.credential(e.oauthAccessToken)}catch{return null}}}ni.FACEBOOK_SIGN_IN_METHOD="facebook.com"
;ni.PROVIDER_ID="facebook.com";class ri extends ti{constructor(){super("google.com");this.addScope("profile")}static credential(e,t){return Wr._fromParams({
providerId:ri.PROVIDER_ID,signInMethod:ri.GOOGLE_SIGN_IN_METHOD,idToken:e,accessToken:t})}static credentialFromResult(e){return ri.credentialFromTaggedObject(e)
}static credentialFromError(e){return ri.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null
;const{oauthIdToken:t,oauthAccessToken:n}=e;if(!t&&!n)return null;try{return ri.credential(t,n)}catch{return null}}}ri.GOOGLE_SIGN_IN_METHOD="google.com"
;ri.PROVIDER_ID="google.com";class ii extends ti{constructor(){super("github.com")}static credential(e){return Wr._fromParams({providerId:ii.PROVIDER_ID,
signInMethod:ii.GITHUB_SIGN_IN_METHOD,accessToken:e})}static credentialFromResult(e){return ii.credentialFromTaggedObject(e)}static credentialFromError(e){
return ii.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e||!("oauthAccessToken"in e))return null
;if(!e.oauthAccessToken)return null;try{return ii.credential(e.oauthAccessToken)}catch{return null}}}ii.GITHUB_SIGN_IN_METHOD="github.com"
;ii.PROVIDER_ID="github.com";class si extends ti{constructor(){super("twitter.com")}static credential(e,t){return Wr._fromParams({providerId:si.PROVIDER_ID,
signInMethod:si.TWITTER_SIGN_IN_METHOD,oauthToken:e,oauthTokenSecret:t})}static credentialFromResult(e){return si.credentialFromTaggedObject(e)}
static credentialFromError(e){return si.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null
;const{oauthAccessToken:t,oauthTokenSecret:n}=e;if(!t||!n)return null;try{return si.credential(t,n)}catch{return null}}}si.TWITTER_SIGN_IN_METHOD="twitter.com"
;si.PROVIDER_ID="twitter.com";class oi{constructor(e){this.user=e.user;this.providerId=e.providerId;this._tokenResponse=e._tokenResponse
;this.operationType=e.operationType}static async _fromIdTokenResponse(e,t,n,r=!1){const i=await Hn._fromIdTokenResponse(e,n,r),s=ai(n);return new oi({user:i,
providerId:s,_tokenResponse:n,operationType:t})}static async _forOperation(e,t,n){await e._updateTokensIfNecessary(n,!0);const r=ai(n);return new oi({user:e,
providerId:r,_tokenResponse:n,operationType:t})}}function ai(e){return e.providerId?e.providerId:"phoneNumber"in e?"phone":null}class ci extends P{
constructor(e,t,n,r){super(t.code,t.message);this.operationType=n;this.user=r;Object.setPrototypeOf(this,ci.prototype);this.customData={appName:e.name,
tenantId:e.tenantId??void 0,_serverResponse:t.customData._serverResponse,operationType:n}}static _fromErrorAndOperation(e,t,n,r){return new ci(e,t,n,r)}}
function ui(e,t,n,r){return("reauthenticate"===t?n._getReauthenticationResolver(e):n._getIdTokenResponse(e)).catch(n=>{
if("auth/multi-factor-auth-required"===n.code)throw ci._fromErrorAndOperation(e,n,t,r);throw n})}async function hi(e,t,n=!1){
const r=await Pn(e,t._linkToIdToken(e.auth,await e.getIdToken()),n);return oi._forOperation(e,"link",r)}async function li(e,t,n=!1){const{auth:r}=e
;if(ft(r.app))return Promise.reject(qt(r));const i="reauthenticate";try{const s=await Pn(e,ui(r,i,t,e),n);Jt(s.idToken,r,"internal-error");const o=Cn(s.idToken)
;Jt(o,r,"internal-error");const{sub:a}=o;Jt(e.uid===a,r,"user-mismatch");return oi._forOperation(e,i,s)}catch(e){
"auth/user-not-found"===e?.code&&Bt(r,"user-mismatch");throw e}}async function di(e,t,n=!1){if(ft(e.app))return Promise.reject(qt(e))
;const r="signIn",i=await ui(e,r,t),s=await oi._fromIdTokenResponse(e,r,i);n||await e._updateCurrentUser(s.user);return s}async function pi(e,t){
return di(dr(e),t)}function fi(e,t,n,r){return W(e).onIdTokenChanged(t,n,r)}function mi(e,t,n){return W(e).beforeAuthStateChanged(t,n)}function gi(e,t){
return ln(e,"POST","/v2/accounts/mfaEnrollment:start",hn(e,t))}function _i(e,t){return ln(e,"POST","/v2/accounts/mfaEnrollment:finalize",hn(e,t))}
function wi(e,t){return ln(e,"POST","/v2/accounts/mfaEnrollment:start",hn(e,t))}function Ii(e,t){
return ln(e,"POST","/v2/accounts/mfaEnrollment:finalize",hn(e,t))}new WeakMap;const vi="__sak";class yi{constructor(e,t){this.storageRetriever=e;this.type=t}
_isAvailable(){try{if(!this.storage)return Promise.resolve(!1);this.storage.setItem(vi,"1");this.storage.removeItem(vi);return Promise.resolve(!0)}catch{
return Promise.resolve(!1)}}_set(e,t){this.storage.setItem(e,JSON.stringify(t));return Promise.resolve()}_get(e){const t=this.storage.getItem(e)
;return Promise.resolve(t?JSON.parse(t):null)}_remove(e){this.storage.removeItem(e);return Promise.resolve()}get storage(){return this.storageRetriever()}}
const Ei=1e3,bi=10;class Ti extends yi{constructor(){super(()=>window.localStorage,"LOCAL");this.boundEventHandler=(e,t)=>this.onStorageEvent(e,t)
;this.listeners={};this.localCache={};this.pollTimer=null;this.fallbackToPolling=sr();this._shouldAllowMigration=!0}forAllChangedKeys(e){
for(const t of Object.keys(this.listeners)){const n=this.storage.getItem(t),r=this.localCache[t];n!==r&&e(t,r,n)}}onStorageEvent(e,t=!1){if(!e.key){
this.forAllChangedKeys((e,t,n)=>{this.notifyListeners(e,n)});return}const n=e.key;t?this.detachListener():this.stopPolling();const r=()=>{
const e=this.storage.getItem(n);(t||this.localCache[n]!==e)&&this.notifyListeners(n,e)},i=this.storage.getItem(n)
;ir()&&i!==e.newValue&&e.newValue!==e.oldValue?setTimeout(r,bi):r()}notifyListeners(e,t){this.localCache[e]=t;const n=this.listeners[e]
;if(n)for(const e of Array.from(n))e(t?JSON.parse(t):t)}startPolling(){this.stopPolling();this.pollTimer=setInterval(()=>{this.forAllChangedKeys((e,t,n)=>{
this.onStorageEvent(new StorageEvent("storage",{key:e,oldValue:t,newValue:n}),!0)})},Ei)}stopPolling(){if(this.pollTimer){clearInterval(this.pollTimer)
;this.pollTimer=null}}attachListener(){window.addEventListener("storage",this.boundEventHandler)}detachListener(){
window.removeEventListener("storage",this.boundEventHandler)}_addListener(e,t){
0===Object.keys(this.listeners).length&&(this.fallbackToPolling?this.startPolling():this.attachListener());if(!this.listeners[e]){this.listeners[e]=new Set
;this.localCache[e]=this.storage.getItem(e)}this.listeners[e].add(t)}_removeListener(e,t){if(this.listeners[e]){this.listeners[e].delete(t)
;0===this.listeners[e].size&&delete this.listeners[e]}if(0===Object.keys(this.listeners).length){this.detachListener();this.stopPolling()}}async _set(e,t){
await super._set(e,t);this.localCache[e]=JSON.stringify(t)}async _get(e){const t=await super._get(e);this.localCache[e]=JSON.stringify(t);return t}
async _remove(e){await super._remove(e);delete this.localCache[e]}}Ti.type="LOCAL";const Si=Ti,ki=1e3;function Ci(e){
const t=e.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),n=RegExp(`${t}=([^;]+)`);return document.cookie.match(n)?.[1]??null}function Ri(e){
return`${"http:"===window.location.protocol?"__dev_":"__HOST-"}FIREBASE_${e.split(":")[3]}`}class Pi{constructor(){this.type="COOKIE"
;this.listenerUnsubscribes=new Map}_getFinalTarget(e){if(void 0===typeof window)return e;const t=new URL(`${window.location.origin}/__cookies__`)
;t.searchParams.set("finalTarget",e);return t}async _isAvailable(){
return!("boolean"==typeof isSecureContext&&!isSecureContext)&&("undefined"!=typeof navigator&&"undefined"!=typeof document&&(navigator.cookieEnabled??!0))}
async _set(e,t){}async _get(e){if(!this._isAvailable())return null;const t=Ri(e);if(window.cookieStore){const e=await window.cookieStore.get(t);return e?.value}
return Ci(t)}async _remove(e){if(!this._isAvailable())return;if(!await this._get(e))return;const t=Ri(e)
;document.cookie=`${t}=;Max-Age=34560000;Partitioned;Secure;SameSite=Strict;Path=/;Priority=High`;await fetch("/__cookies__",{method:"DELETE"}).catch(()=>{})}
_addListener(e,t){if(!this._isAvailable())return;const n=Ri(e);if(window.cookieStore){const e=e=>{const r=e.changed.find(e=>e.name===n);r&&t(r.value)
;e.deleted.find(e=>e.name===n)&&t(null)},r=()=>window.cookieStore.removeEventListener("change",e);this.listenerUnsubscribes.set(t,r)
;return window.cookieStore.addEventListener("change",e)}let r=Ci(n);const i=setInterval(()=>{const e=Ci(n);if(e!==r){t(e);r=e}},ki),s=()=>clearInterval(i)
;this.listenerUnsubscribes.set(t,s)}_removeListener(e,t){const n=this.listenerUnsubscribes.get(t);if(n){n();this.listenerUnsubscribes.delete(t)}}}
Pi.type="COOKIE";class Oi extends yi{constructor(){super(()=>window.sessionStorage,"SESSION")}_addListener(e,t){}_removeListener(e,t){}}Oi.type="SESSION"
;const Ai=Oi;function Ni(e){return Promise.all(e.map(async e=>{try{return{fulfilled:!0,value:await e}}catch(e){return{fulfilled:!1,reason:e}}}))}class Di{
constructor(e){this.eventTarget=e;this.handlersMap={};this.boundEventHandler=this.handleEvent.bind(this)}static _getInstance(e){
const t=this.receivers.find(t=>t.isListeningto(e));if(t)return t;const n=new Di(e);this.receivers.push(n);return n}isListeningto(e){return this.eventTarget===e}
async handleEvent(e){const t=e,{eventId:n,eventType:r,data:i}=t.data,s=this.handlersMap[r];if(!s?.size)return;t.ports[0].postMessage({status:"ack",eventId:n,
eventType:r});const o=Array.from(s).map(async e=>e(t.origin,i)),a=await Ni(o);t.ports[0].postMessage({status:"done",eventId:n,eventType:r,response:a})}
_subscribe(e,t){0===Object.keys(this.handlersMap).length&&this.eventTarget.addEventListener("message",this.boundEventHandler)
;this.handlersMap[e]||(this.handlersMap[e]=new Set);this.handlersMap[e].add(t)}_unsubscribe(e,t){this.handlersMap[e]&&t&&this.handlersMap[e].delete(t)
;t&&0!==this.handlersMap[e].size||delete this.handlersMap[e]
;0===Object.keys(this.handlersMap).length&&this.eventTarget.removeEventListener("message",this.boundEventHandler)}}Di.receivers=[];function Li(e="",t=10){
let n="";for(let e=0;e<t;e++)n+=Math.floor(10*Math.random());return e+n}class Mi{constructor(e){this.target=e;this.handlers=new Set}removeMessageHandler(e){
if(e.messageChannel){e.messageChannel.port1.removeEventListener("message",e.onMessage);e.messageChannel.port1.close()}this.handlers.delete(e)}
async _send(e,t,n=50){const r="undefined"!=typeof MessageChannel?new MessageChannel:null;if(!r)throw new Error("connection_unavailable");let i,s
;return new Promise((o,a)=>{const c=Li("",20);r.port1.start();const u=setTimeout(()=>{a(new Error("unsupported_event"))},n);s={messageChannel:r,onMessage(e){
const t=e;if(t.data.eventId===c)switch(t.data.status){case"ack":clearTimeout(u);i=setTimeout(()=>{a(new Error("timeout"))},3e3);break;case"done":clearTimeout(i)
;o(t.data.response);break;default:clearTimeout(u);clearTimeout(i);a(new Error("invalid_response"))}}};this.handlers.add(s)
;r.port1.addEventListener("message",s.onMessage);this.target.postMessage({eventType:e,eventId:c,data:t},[r.port2])}).finally(()=>{
s&&this.removeMessageHandler(s)})}}function Ui(){return window}function xi(e){Ui().location.href=e}function Vi(){
return void 0!==Ui().WorkerGlobalScope&&"function"==typeof Ui().importScripts}async function Fi(){if(!navigator?.serviceWorker)return null;try{
return(await navigator.serviceWorker.ready).active}catch{return null}}function ji(){return navigator?.serviceWorker?.controller||null}function Hi(){
return Vi()?self:null}const $i="firebaseLocalStorageDb",Wi=1,Bi="firebaseLocalStorage",zi="fbase_key";class Ki{constructor(e){this.request=e}toPromise(){
return new Promise((e,t)=>{this.request.addEventListener("success",()=>{e(this.request.result)});this.request.addEventListener("error",()=>{
t(this.request.error)})})}}function qi(e,t){return e.transaction([Bi],t?"readwrite":"readonly").objectStore(Bi)}function Gi(){
const e=indexedDB.deleteDatabase($i);return new Ki(e).toPromise()}function Ji(){const e=indexedDB.open($i,Wi);return new Promise((t,n)=>{
e.addEventListener("error",()=>{n(e.error)});e.addEventListener("upgradeneeded",()=>{const t=e.result;try{t.createObjectStore(Bi,{keyPath:zi})}catch(e){n(e)}})
;e.addEventListener("success",async()=>{const n=e.result;if(n.objectStoreNames.contains(Bi))t(n);else{n.close();await Gi();t(await Ji())}})})}
async function Yi(e,t,n){const r=qi(e,!0).put({[zi]:t,value:n});return new Ki(r).toPromise()}async function Xi(e,t){
const n=qi(e,!1).get(t),r=await new Ki(n).toPromise();return void 0===r?null:r.value}function Qi(e,t){const n=qi(e,!0).delete(t);return new Ki(n).toPromise()}
const Zi=800,es=3;class ts{constructor(){this.type="LOCAL";this._shouldAllowMigration=!0;this.listeners={};this.localCache={};this.pollTimer=null
;this.pendingWrites=0;this.receiver=null;this.sender=null;this.serviceWorkerReceiverAvailable=!1;this.activeServiceWorker=null
;this._workerInitializationPromise=this.initializeServiceWorkerMessaging().then(()=>{},()=>{})}async _openDb(){if(this.db)return this.db;this.db=await Ji()
;return this.db}async _withRetries(e){let t=0;for(;;)try{const t=await this._openDb();return await e(t)}catch(e){if(t++>es)throw e;if(this.db){this.db.close()
;this.db=void 0}}}async initializeServiceWorkerMessaging(){return Vi()?this.initializeReceiver():this.initializeSender()}async initializeReceiver(){
this.receiver=Di._getInstance(Hi());this.receiver._subscribe("keyChanged",async(e,t)=>({keyProcessed:(await this._poll()).includes(t.key)}))
;this.receiver._subscribe("ping",async(e,t)=>["keyChanged"])}async initializeSender(){this.activeServiceWorker=await Fi();if(!this.activeServiceWorker)return
;this.sender=new Mi(this.activeServiceWorker);const e=await this.sender._send("ping",{},800)
;e&&e[0]?.fulfilled&&e[0]?.value.includes("keyChanged")&&(this.serviceWorkerReceiverAvailable=!0)}async notifyServiceWorker(e){
if(this.sender&&this.activeServiceWorker&&ji()===this.activeServiceWorker)try{await this.sender._send("keyChanged",{key:e
},this.serviceWorkerReceiverAvailable?800:50)}catch{}}async _isAvailable(){try{if(!indexedDB)return!1;const e=await Ji();await Yi(e,vi,"1");await Qi(e,vi)
;return!0}catch{}return!1}async _withPendingWrite(e){this.pendingWrites++;try{await e()}finally{this.pendingWrites--}}async _set(e,t){
return this._withPendingWrite(async()=>{await this._withRetries(n=>Yi(n,e,t));this.localCache[e]=t;return this.notifyServiceWorker(e)})}async _get(e){
const t=await this._withRetries(t=>Xi(t,e));this.localCache[e]=t;return t}async _remove(e){return this._withPendingWrite(async()=>{
await this._withRetries(t=>Qi(t,e));delete this.localCache[e];return this.notifyServiceWorker(e)})}async _poll(){const e=await this._withRetries(e=>{
const t=qi(e,!1).getAll();return new Ki(t).toPromise()});if(!e)return[];if(0!==this.pendingWrites)return[];const t=[],n=new Set
;if(0!==e.length)for(const{fbase_key:r,value:i}of e){n.add(r);if(JSON.stringify(this.localCache[r])!==JSON.stringify(i)){this.notifyListeners(r,i);t.push(r)}}
for(const e of Object.keys(this.localCache))if(this.localCache[e]&&!n.has(e)){this.notifyListeners(e,null);t.push(e)}return t}notifyListeners(e,t){
this.localCache[e]=t;const n=this.listeners[e];if(n)for(const e of Array.from(n))e(t)}startPolling(){this.stopPolling()
;this.pollTimer=setInterval(async()=>this._poll(),Zi)}stopPolling(){if(this.pollTimer){clearInterval(this.pollTimer);this.pollTimer=null}}_addListener(e,t){
0===Object.keys(this.listeners).length&&this.startPolling();if(!this.listeners[e]){this.listeners[e]=new Set;this._get(e)}this.listeners[e].add(t)}
_removeListener(e,t){if(this.listeners[e]){this.listeners[e].delete(t);0===this.listeners[e].size&&delete this.listeners[e]}
0===Object.keys(this.listeners).length&&this.stopPolling()}}ts.type="LOCAL";const ns=ts;function rs(e,t){
return ln(e,"POST","/v2/accounts/mfaSignIn:start",hn(e,t))}function is(e,t){return ln(e,"POST","/v2/accounts/mfaSignIn:finalize",hn(e,t))}function ss(e,t){
return ln(e,"POST","/v2/accounts/mfaSignIn:finalize",hn(e,t))}Ir("rcb"),new rn(3e4,6e4);const os="recaptcha";async function as(e,t,n){
if(!e._getRecaptchaConfig())try{await Cr(e)}catch(e){}try{let r;r="string"==typeof t?{phoneNumber:t}:t;if("session"in r){const t=r.session
;if("phoneNumber"in r){Jt("enroll"===t.type,e,"internal-error");const i={idToken:t.credential,phoneEnrollmentInfo:{phoneNumber:r.phoneNumber,
clientType:"CLIENT_TYPE_WEB"}},s=kr(e,i,"mfaSmsEnrollment",async(e,t)=>{if(t.phoneEnrollmentInfo.captchaResponse===br){Jt(n?.type===os,e,"argument-error")
;return gi(e,await cs(e,t,n))}return gi(e,t)},"PHONE_PROVIDER");return(await s.catch(e=>Promise.reject(e))).phoneSessionInfo.sessionInfo}{
Jt("signin"===t.type,e,"internal-error");const i=r.multiFactorHint?.uid||r.multiFactorUid;Jt(i,e,"missing-multi-factor-info");const s={
mfaPendingCredential:t.credential,mfaEnrollmentId:i,phoneSignInInfo:{clientType:"CLIENT_TYPE_WEB"}},o=kr(e,s,"mfaSmsSignIn",async(e,t)=>{
if(t.phoneSignInInfo.captchaResponse===br){Jt(n?.type===os,e,"argument-error");return rs(e,await cs(e,t,n))}return rs(e,t)},"PHONE_PROVIDER")
;return(await o.catch(e=>Promise.reject(e))).phoneResponseInfo.sessionInfo}}{const t={phoneNumber:r.phoneNumber,clientType:"CLIENT_TYPE_WEB"
},i=kr(e,t,"sendVerificationCode",async(e,t)=>{if(t.captchaResponse===br){Jt(n?.type===os,e,"argument-error");return Br(e,await cs(e,t,n))}return Br(e,t)
},"PHONE_PROVIDER");return(await i.catch(e=>Promise.reject(e))).sessionInfo}}finally{n?._reset()}}async function cs(e,t,n){Jt(n.type===os,e,"argument-error")
;const r=await n.verify();Jt("string"==typeof r,e,"argument-error");const i={...t};if("phoneEnrollmentInfo"in i){
const e=i.phoneEnrollmentInfo.phoneNumber,t=i.phoneEnrollmentInfo.captchaResponse,n=i.phoneEnrollmentInfo.clientType,s=i.phoneEnrollmentInfo.recaptchaVersion
;Object.assign(i,{phoneEnrollmentInfo:{phoneNumber:e,recaptchaToken:r,captchaResponse:t,clientType:n,recaptchaVersion:s}});return i}if("phoneSignInInfo"in i){
const e=i.phoneSignInInfo.captchaResponse,t=i.phoneSignInInfo.clientType,n=i.phoneSignInInfo.recaptchaVersion;Object.assign(i,{phoneSignInInfo:{
recaptchaToken:r,captchaResponse:e,clientType:t,recaptchaVersion:n}});return i}Object.assign(i,{recaptchaToken:r});return i}class us{constructor(e){
this.providerId=us.PROVIDER_ID;this.auth=dr(e)}verifyPhoneNumber(e,t){return as(this.auth,e,W(t))}static credential(e,t){return Jr._fromVerification(e,t)}
static credentialFromResult(e){const t=e;return us.credentialFromTaggedObject(t)}static credentialFromError(e){
return us.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null
;const{phoneNumber:t,temporaryProof:n}=e;return t&&n?Jr._fromTokenResponse(t,n):null}}us.PROVIDER_ID="phone";us.PHONE_SIGN_IN_METHOD="phone";function hs(e,t){
if(t)return Wn(t);Jt(e._popupRedirectResolver,e,"argument-error");return e._popupRedirectResolver}class ls extends Mr{constructor(e){super("custom","custom")
;this.params=e}_getIdTokenResponse(e){return Hr(e,this._buildIdpRequest())}_linkToIdToken(e,t){return Hr(e,this._buildIdpRequest(t))}
_getReauthenticationResolver(e){return Hr(e,this._buildIdpRequest())}_buildIdpRequest(e){const t={requestUri:this.params.requestUri,
sessionId:this.params.sessionId,postBody:this.params.postBody,tenantId:this.params.tenantId,pendingToken:this.params.pendingToken,returnSecureToken:!0,
returnIdpCredential:!0};e&&(t.idToken=e);return t}}function ds(e){return di(e.auth,new ls(e),e.bypassAuthState)}function ps(e){const{auth:t,user:n}=e
;Jt(n,t,"internal-error");return li(n,new ls(e),e.bypassAuthState)}async function fs(e){const{auth:t,user:n}=e;Jt(n,t,"internal-error")
;return hi(n,new ls(e),e.bypassAuthState)}class ms{constructor(e,t,n,r,i=!1){this.auth=e;this.resolver=n;this.user=r;this.bypassAuthState=i
;this.pendingPromise=null;this.eventManager=null;this.filter=Array.isArray(t)?t:[t]}execute(){return new Promise(async(e,t)=>{this.pendingPromise={resolve:e,
reject:t};try{this.eventManager=await this.resolver._initialize(this.auth);await this.onExecution();this.eventManager.registerConsumer(this)}catch(e){
this.reject(e)}})}async onAuthEvent(e){const{urlResponse:t,sessionId:n,postBody:r,tenantId:i,error:s,type:o}=e;if(s){this.reject(s);return}const a={
auth:this.auth,requestUri:t,sessionId:n,tenantId:i||void 0,postBody:r||void 0,user:this.user,bypassAuthState:this.bypassAuthState};try{
this.resolve(await this.getIdpTask(o)(a))}catch(e){this.reject(e)}}onError(e){this.reject(e)}getIdpTask(e){switch(e){case"signInViaPopup":
case"signInViaRedirect":return ds;case"linkViaPopup":case"linkViaRedirect":return fs;case"reauthViaPopup":case"reauthViaRedirect":return ps;default:
Bt(this.auth,"internal-error")}}resolve(e){Xt(this.pendingPromise,"Pending promise was never set");this.pendingPromise.resolve(e);this.unregisterAndCleanUp()}
reject(e){Xt(this.pendingPromise,"Pending promise was never set");this.pendingPromise.reject(e);this.unregisterAndCleanUp()}unregisterAndCleanUp(){
this.eventManager&&this.eventManager.unregisterConsumer(this);this.pendingPromise=null;this.cleanUp()}}const gs=new rn(2e3,1e4);class _s extends ms{
constructor(e,t,n,r,i){super(e,t,r,i);this.provider=n;this.authWindow=null;this.pollId=null;_s.currentPopupAction&&_s.currentPopupAction.cancel()
;_s.currentPopupAction=this}async executeNotNull(){const e=await this.execute();Jt(e,this.auth,"internal-error");return e}async onExecution(){
Xt(1===this.filter.length,"Popup operations only handle one event");const e=Li()
;this.authWindow=await this.resolver._openPopup(this.auth,this.provider,this.filter[0],e);this.authWindow.associatedEvent=e
;this.resolver._originValidation(this.auth).catch(e=>{this.reject(e)});this.resolver._isIframeWebStorageSupported(this.auth,e=>{
e||this.reject(zt(this.auth,"web-storage-unsupported"))});this.pollUserCancellation()}get eventId(){return this.authWindow?.associatedEvent||null}cancel(){
this.reject(zt(this.auth,"cancelled-popup-request"))}cleanUp(){this.authWindow&&this.authWindow.close();this.pollId&&window.clearTimeout(this.pollId)
;this.authWindow=null;this.pollId=null;_s.currentPopupAction=null}pollUserCancellation(){const e=()=>{
this.authWindow?.window?.closed?this.pollId=window.setTimeout(()=>{this.pollId=null;this.reject(zt(this.auth,"popup-closed-by-user"))
},8e3):this.pollId=window.setTimeout(e,gs.get())};e()}}_s.currentPopupAction=null;const ws="pendingRedirect",Is=new Map;class vs extends ms{
constructor(e,t,n=!1){super(e,["signInViaRedirect","linkViaRedirect","reauthViaRedirect","unknown"],t,void 0,n);this.eventId=null}async execute(){
let e=Is.get(this.auth._key());if(!e){try{const t=await ys(this.resolver,this.auth)?await super.execute():null;e=()=>Promise.resolve(t)}catch(t){
e=()=>Promise.reject(t)}Is.set(this.auth._key(),e)}this.bypassAuthState||Is.set(this.auth._key(),()=>Promise.resolve(null));return e()}async onAuthEvent(e){
if("signInViaRedirect"===e.type)return super.onAuthEvent(e);if("unknown"!==e.type){if(e.eventId){const t=await this.auth._redirectUserForId(e.eventId);if(t){
this.user=t;return super.onAuthEvent(e)}this.resolve(null)}}else this.resolve(null)}async onExecution(){}cleanUp(){}}async function ys(e,t){
const n=Ts(t),r=bs(e);if(!await r._isAvailable())return!1;const i="true"===await r._get(n);await r._remove(n);return i}function Es(e,t){Is.set(e._key(),t)}
function bs(e){return Wn(e._redirectPersistence)}function Ts(e){return Kn(ws,e.config.apiKey,e.name)}async function Ss(e,t,n=!1){
if(ft(e.app))return Promise.reject(qt(e));const r=dr(e),i=hs(r,t),s=new vs(r,i,n),o=await s.execute();if(o&&!n){delete o.user._redirectEventId
;await r._persistUserIfCurrent(o.user);await r._setRedirectUser(null,t)}return o}const ks=6e5;class Cs{constructor(e){this.auth=e;this.cachedEventUids=new Set
;this.consumers=new Set;this.queuedRedirectEvent=null;this.hasHandledPotentialRedirect=!1;this.lastProcessedEventTime=Date.now()}registerConsumer(e){
this.consumers.add(e);if(this.queuedRedirectEvent&&this.isEventForConsumer(this.queuedRedirectEvent,e)){this.sendToConsumer(this.queuedRedirectEvent,e)
;this.saveEventToCache(this.queuedRedirectEvent);this.queuedRedirectEvent=null}}unregisterConsumer(e){this.consumers.delete(e)}onEvent(e){
if(this.hasEventBeenHandled(e))return!1;let t=!1;this.consumers.forEach(n=>{if(this.isEventForConsumer(e,n)){t=!0;this.sendToConsumer(e,n)
;this.saveEventToCache(e)}});if(this.hasHandledPotentialRedirect||!Os(e))return t;this.hasHandledPotentialRedirect=!0;if(!t){this.queuedRedirectEvent=e;t=!0}
return t}sendToConsumer(e,t){if(e.error&&!Ps(e)){const n=e.error.code?.split("auth/")[1]||"internal-error";t.onError(zt(this.auth,n))}else t.onAuthEvent(e)}
isEventForConsumer(e,t){const n=null===t.eventId||!!e.eventId&&e.eventId===t.eventId;return t.filter.includes(e.type)&&n}hasEventBeenHandled(e){
Date.now()-this.lastProcessedEventTime>=ks&&this.cachedEventUids.clear();return this.cachedEventUids.has(Rs(e))}saveEventToCache(e){
this.cachedEventUids.add(Rs(e));this.lastProcessedEventTime=Date.now()}}function Rs(e){return[e.type,e.eventId,e.sessionId,e.tenantId].filter(e=>e).join("-")}
function Ps({type:e,error:t}){return"unknown"===e&&"auth/no-auth-event"===t?.code}function Os(e){switch(e.type){case"signInViaRedirect":case"linkViaRedirect":
case"reauthViaRedirect":return!0;case"unknown":return Ps(e);default:return!1}}async function As(e,t={}){return ln(e,"GET","/v1/projects",t)}
const Ns=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,Ds=/^https?/;async function Ls(e){if(e.config.emulator)return;const{authorizedDomains:t}=await As(e)
;for(const e of t)try{if(Ms(e))return}catch{}Bt(e,"unauthorized-domain")}function Ms(e){const t=Qt(),{protocol:n,hostname:r}=new URL(t)
;if(e.startsWith("chrome-extension://")){const i=new URL(e)
;return""===i.hostname&&""===r?"chrome-extension:"===n&&e.replace("chrome-extension://","")===t.replace("chrome-extension://",""):"chrome-extension:"===n&&i.hostname===r
}if(!Ds.test(n))return!1;if(Ns.test(e))return r===e;const i=e.replace(/\./g,"\\.");return new RegExp("^(.+\\."+i+"|"+i+")$","i").test(r)}
const Us=new rn(3e4,6e4);function xs(){const e=Ui().___jsl;if(e?.H)for(const t of Object.keys(e.H)){e.H[t].r=e.H[t].r||[];e.H[t].L=e.H[t].L||[]
;e.H[t].r=[...e.H[t].L];if(e.CP)for(let t=0;t<e.CP.length;t++)e.CP[t]=null}}function Vs(e){return new Promise((t,n)=>{function r(){xs()
;gapi.load("gapi.iframes",{callback:()=>{t(gapi.iframes.getContext())},ontimeout:()=>{xs();n(zt(e,"network-request-failed"))},timeout:Us.get()})}
if(Ui().gapi?.iframes?.Iframe)t(gapi.iframes.getContext());else{if(!Ui().gapi?.load){const t=Ir("iframefcb");Ui()[t]=()=>{
gapi.load?r():n(zt(e,"network-request-failed"))};return gr(`${wr()}?onload=${t}`).catch(e=>n(e))}r()}}).catch(e=>{Fs=null;throw e})}let Fs=null;function js(e){
Fs=Fs||Vs(e);return Fs}const Hs=new rn(5e3,15e3),$s="__/auth/iframe",Ws="emulator/auth/iframe",Bs={style:{position:"absolute",top:"-100px",width:"1px",
height:"1px"},"aria-hidden":"true",tabindex:"-1"
},zs=new Map([ ["identitytoolkit.googleapis.com","p"],["staging-identitytoolkit.sandbox.googleapis.com","s"],["test-identitytoolkit.sandbox.googleapis.com","t"]])
;function Ks(e){const t=e.config;Jt(t.authDomain,e,"auth-domain-config-required");const n=t.emulator?sn(t,Ws):`https://${e.config.authDomain}/${$s}`,r={
apiKey:t.apiKey,appName:e.name,v:_t},i=zs.get(e.config.apiHost);i&&(r.eid=i);const s=e._getFrameworks();s.length&&(r.fw=s.join(","))
;return`${n}?${U(r).slice(1)}`}async function qs(e){const t=await js(e),n=Ui().gapi;Jt(n,e,"internal-error");return t.open({where:document.body,url:Ks(e),
messageHandlersFilter:n.iframes.CROSS_ORIGIN_IFRAMES_FILTER,attributes:Bs,dontclear:!0},t=>new Promise(async(n,r)=>{await t.restyle({setHideOnLeave:!1})
;const i=zt(e,"network-request-failed"),s=Ui().setTimeout(()=>{r(i)},Hs.get());function o(){Ui().clearTimeout(s);n(t)}t.ping(o).then(o,()=>{r(i)})}))}const Gs={
location:"yes",resizable:"yes",statusbar:"yes",toolbar:"no"},Js=500,Ys=600,Xs="_blank",Qs="http://localhost";class Zs{constructor(e){this.window=e
;this.associatedEvent=null}close(){if(this.window)try{this.window.close()}catch(e){}}}function eo(e,t,n,r=Js,i=Ys){
const s=Math.max((window.screen.availHeight-i)/2,0).toString(),o=Math.max((window.screen.availWidth-r)/2,0).toString();let a="";const c={...Gs,
width:r.toString(),height:i.toString(),top:s,left:o},u=v().toLowerCase();n&&(a=Xn(u)?Xs:n);if(Jn(u)){t=t||Qs;c.scrollbars="yes"}
const h=Object.entries(c).reduce((e,[t,n])=>`${e}${t}=${n},`,"");if(rr(u)&&"_self"!==a){to(t||"",a);return new Zs(null)}const l=window.open(t||"",a,h)
;Jt(l,e,"popup-blocked");try{l.focus()}catch(e){}return new Zs(l)}function to(e,t){const n=document.createElement("a");n.href=e;n.target=t
;const r=document.createEvent("MouseEvent");r.initMouseEvent("click",!0,!0,window,1,0,0,0,0,!1,!1,!1,!1,1,null);n.dispatchEvent(r)}
const no="__/auth/handler",ro="emulator/auth/handler",io=encodeURIComponent("fac");async function so(e,t,n,r,i,s){
Jt(e.config.authDomain,e,"auth-domain-config-required");Jt(e.config.apiKey,e,"invalid-api-key");const o={apiKey:e.config.apiKey,appName:e.name,authType:n,
redirectUrl:r,v:_t,eventId:i};if(t instanceof ei){t.setDefaultLanguage(e.languageCode);o.providerId=t.providerId||""
;D(t.getCustomParameters())||(o.customParameters=JSON.stringify(t.getCustomParameters()));for(const[e,t]of Object.entries(s||{}))o[e]=t}if(t instanceof ti){
const e=t.getScopes().filter(e=>""!==e);e.length>0&&(o.scopes=e.join(","))}e.tenantId&&(o.tid=e.tenantId);const a=o
;for(const e of Object.keys(a))void 0===a[e]&&delete a[e];const c=await e._getAppCheckToken(),u=c?`#${io}=${encodeURIComponent(c)}`:""
;return`${oo(e)}?${U(a).slice(1)}${u}`}function oo({config:e}){return e.emulator?sn(e,ro):`https://${e.authDomain}/${no}`}const ao="webStorageSupport";class co{
constructor(){this.eventManagers={};this.iframes={};this.originValidationPromises={};this._redirectPersistence=Ai;this._completeRedirectFn=Ss
;this._overrideRedirectResult=Es}async _openPopup(e,t,n,r){Xt(this.eventManagers[e._key()]?.manager,"_initialize() not called before _openPopup()")
;return eo(e,await so(e,t,n,Qt(),r),Li())}async _openRedirect(e,t,n,r){await this._originValidation(e);xi(await so(e,t,n,Qt(),r));return new Promise(()=>{})}
_initialize(e){const t=e._key();if(this.eventManagers[t]){const{manager:e,promise:n}=this.eventManagers[t];if(e)return Promise.resolve(e)
;Xt(n,"If manager is not set, promise should be");return n}const n=this.initAndGetManager(e);this.eventManagers[t]={promise:n};n.catch(()=>{
delete this.eventManagers[t]});return n}async initAndGetManager(e){const t=await qs(e),n=new Cs(e);t.register("authEvent",t=>{
Jt(t?.authEvent,e,"invalid-auth-event");return{status:n.onEvent(t.authEvent)?"ACK":"ERROR"}},gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER)
;this.eventManagers[e._key()]={manager:n};this.iframes[e._key()]=t;return n}_isIframeWebStorageSupported(e,t){this.iframes[e._key()].send(ao,{type:ao},n=>{
const r=n?.[0]?.[ao];void 0!==r&&t(!!r);Bt(e,"internal-error")},gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER)}_originValidation(e){const t=e._key()
;this.originValidationPromises[t]||(this.originValidationPromises[t]=Ls(e));return this.originValidationPromises[t]}get _shouldInitProactively(){
return sr()||Yn()||nr()}}const uo=co;class ho{constructor(e){this.factorId=e}_process(e,t,n){switch(t.type){case"enroll":
return this._finalizeEnroll(e,t.credential,n);case"signin":return this._finalizeSignIn(e,t.credential);default:return Yt("unexpected MultiFactorSessionType")}}}
class lo extends ho{constructor(e){super("phone");this.credential=e}static _fromCredential(e){return new lo(e)}_finalizeEnroll(e,t,n){return _i(e,{idToken:t,
displayName:n,phoneVerificationInfo:this.credential._makeVerificationRequest()})}_finalizeSignIn(e,t){return is(e,{mfaPendingCredential:t,
phoneVerificationInfo:this.credential._makeVerificationRequest()})}}class po{constructor(){}static assertion(e){return lo._fromCredential(e)}}
po.FACTOR_ID="phone";class fo{static assertionForEnrollment(e,t){return mo._fromSecret(e,t)}static assertionForSignIn(e,t){return mo._fromEnrollmentId(e,t)}
static async generateSecret(e){const t=e;Jt(void 0!==t.user?.auth,"internal-error");const n=await wi(t.user.auth,{idToken:t.credential,totpEnrollmentInfo:{}})
;return go._fromStartTotpMfaEnrollmentResponse(n,t.user.auth)}}fo.FACTOR_ID="totp";class mo extends ho{constructor(e,t,n){super("totp");this.otp=e
;this.enrollmentId=t;this.secret=n}static _fromSecret(e,t){return new mo(t,void 0,e)}static _fromEnrollmentId(e,t){return new mo(t,e)}
async _finalizeEnroll(e,t,n){Jt(void 0!==this.secret,e,"argument-error");return Ii(e,{idToken:t,displayName:n,
totpVerificationInfo:this.secret._makeTotpVerificationInfo(this.otp)})}async _finalizeSignIn(e,t){
Jt(void 0!==this.enrollmentId&&void 0!==this.otp,e,"argument-error");const n={verificationCode:this.otp};return ss(e,{mfaPendingCredential:t,
mfaEnrollmentId:this.enrollmentId,totpVerificationInfo:n})}}class go{constructor(e,t,n,r,i,s,o){this.sessionInfo=s;this.auth=o;this.secretKey=e
;this.hashingAlgorithm=t;this.codeLength=n;this.codeIntervalSeconds=r;this.enrollmentCompletionDeadline=i}static _fromStartTotpMfaEnrollmentResponse(e,t){
return new go(e.totpSessionInfo.sharedSecretKey,e.totpSessionInfo.hashingAlgorithm,e.totpSessionInfo.verificationCodeLength,e.totpSessionInfo.periodSec,new Date(e.totpSessionInfo.finalizeEnrollmentTime).toUTCString(),e.totpSessionInfo.sessionInfo,t)
}_makeTotpVerificationInfo(e){return{sessionInfo:this.sessionInfo,verificationCode:e}}generateQrCodeUrl(e,t){let n=!1;(_o(e)||_o(t))&&(n=!0);if(n){
_o(e)&&(e=this.auth.currentUser?.email||"unknownuser");_o(t)&&(t=this.auth.name)}
return`otpauth://totp/${t}:${e}?secret=${this.secretKey}&issuer=${t}&algorithm=${this.hashingAlgorithm}&digits=${this.codeLength}`}}function _o(e){
return void 0===e||0===e?.length}var wo="@firebase/auth",Io="1.13.0";class vo{constructor(e){this.auth=e;this.internalListeners=new Map}getUid(){
this.assertAuthConfigured();return this.auth.currentUser?.uid||null}async getToken(e){this.assertAuthConfigured();await this.auth._initializationPromise
;if(!this.auth.currentUser)return null;return{accessToken:await this.auth.currentUser.getIdToken(e)}}addAuthTokenListener(e){this.assertAuthConfigured()
;if(this.internalListeners.has(e))return;const t=this.auth.onIdTokenChanged(t=>{e(t?.stsTokenManager.accessToken||null)});this.internalListeners.set(e,t)
;this.updateProactiveRefresh()}removeAuthTokenListener(e){this.assertAuthConfigured();const t=this.internalListeners.get(e);if(t){
this.internalListeners.delete(e);t();this.updateProactiveRefresh()}}assertAuthConfigured(){
Jt(this.auth._initializationPromise,"dependent-sdk-initialized-before-auth")}updateProactiveRefresh(){
this.internalListeners.size>0?this.auth._startProactiveRefresh():this.auth._stopProactiveRefresh()}}function yo(e){switch(e){case"Node":return"node"
;case"ReactNative":return"rn";case"Worker":return"webworker";case"Cordova":return"cordova";case"WebExtension":return"web-extension";default:return}}
function Eo(e){dt(new K("auth",(t,{options:n})=>{
const r=t.getProvider("app").getImmediate(),i=t.getProvider("heartbeat"),s=t.getProvider("app-check-internal"),{apiKey:o,authDomain:a}=r.options
;Jt(o&&!o.includes(":"),"invalid-api-key",{appName:r.name});const c={apiKey:o,authDomain:a,clientPlatform:e,apiHost:"identitytoolkit.googleapis.com",
tokenApiHost:"securetoken.googleapis.com",apiScheme:"https",sdkClientVersion:or(e)},u=new lr(r,i,s,c);Pr(u,n);return u
},"PUBLIC").setInstantiationMode("EXPLICIT").setInstanceCreatedCallback((e,t,n)=>{e.getProvider("auth-internal").initialize()}))
;dt(new K("auth-internal",e=>(e=>new vo(e))(dr(e.getProvider("auth").getImmediate())),"PRIVATE").setInstantiationMode("EXPLICIT"));vt(wo,Io,yo(e))
;vt(wo,Io,"esm2020")}const bo=300,To=w("authIdTokenMaxAge")||bo;let So=null;const ko=e=>async t=>{
const n=t&&await t.getIdTokenResult(),r=n&&((new Date).getTime()-Date.parse(n.issuedAtTime))/1e3;if(r&&r>To)return;const i=n?.token;if(So!==i){So=i
;await fetch(e,{method:i?"POST":"DELETE",headers:i?{Authorization:`Bearer ${i}`}:{}})}};function Co(e=It()){const t=pt(e,"auth")
;if(t.isInitialized())return t.getImmediate();const n=Rr(e,{popupRedirectResolver:uo,persistence:[ns,Si,Ai]}),r=w("authTokenSyncURL")
;if(r&&"boolean"==typeof isSecureContext&&isSecureContext){const e=new URL(r,location.origin);if(location.origin===e.origin){const t=ko(e.toString())
;mi(n,t,()=>t(n.currentUser));fi(n,e=>t(e))}}const i=g("auth");i&&Or(n,`http://${i}`);return n}function Ro(){
return document.getElementsByTagName("head")?.[0]??document}mr({loadJS:e=>new Promise((t,n)=>{const r=document.createElement("script");r.setAttribute("src",e)
;r.onload=t;r.onerror=e=>{const t=zt("internal-error");t.customData=e;n(t)};r.type="text/javascript";r.charset="UTF-8";Ro().appendChild(r)}),
gapiScript:"https://apis.google.com/js/api.js",recaptchaV2Script:"https://www.google.com/recaptcha/api.js",
recaptchaEnterpriseScript:"https://www.google.com/recaptcha/enterprise.js?render="});Eo("Browser");const Po={
clientConfig:{ apiKey: "AIzaSyADWUZLk6DoihoWOZlOfrSEKmF0la-s1oY", authDomain: "api-project-966339893929.firebaseapp.com", databaseURL: "https://api-project-966339893929.firebaseio.com", projectId: "api-project-966339893929", storageBucket: "api-project-966339893929.appspot.com", messagingSenderId: "966339893929", appId: "1:966339893929:web:2dce32b546a44f2c9be7b8", measurementId: "G-XXFFQQR5DJ" },version:"x.x.x"};let Oo;function Ao(e,t){const n=Co(e);n.languageCode=t;return n}
function No(e,t){return new Promise(function(n,r){pi(e,t).then(e=>{Tn(e.user,!0).then(t=>{n({idToken:t,email:e.user.email,userCredential:e})})}).catch(e=>{r(e)
})})}function Do(e){if(!Po.clientConfig)throw new TypeError("Firebase config missing.");Oo||(Oo=wt(Po.clientConfig,e));return Oo}const Lo="de-DE";function Mo(){
return document.documentElement.getAttribute("lang")||Lo}function Uo(){return Mo().split("-")[0]}function xo(e,t=!1){
const n=new RegExp(`[; ]${e}=([^\\s;]*)`),r=(" "+document.cookie).match(n);return e&&r?t?r[1]:decodeURIComponent(r[1]):null}
function Vo(e,t=window.location.hostname){if("string"==typeof e){const n=t.split("."),r=n.indexOf(e);if(r>=0)return n.slice(r).join(".")}return t}
function Fo(e,t=!1){if("object"!=typeof e)return!1;if(void 0===e.name||void 0===e.value)return!1
;const n=t?e.value:encodeURIComponent(e.value),r=Object.entries(e).reduce((e,[t,n])=>"name"===t||"value"===t?"":e+";"+t+(n?"="+n:""),"")
;document.cookie=`${e.name}=${n}${r}`;return!0}function jo(e,t){
return Array.isArray(e)&&Array.isArray(t)?e.concat(t):Object.assign({},e,t,Object.keys(e).filter(n=>"object"==typeof e[n]&&Object.prototype.hasOwnProperty.call(t,n)).reduce((n,r)=>{
n[r]=jo(e[r],t[r]);return n},{}))}function Ho(e={},t={}){
return Object.keys(e).length===Object.keys(t).length&&Object.keys(e).every(n=>t.hasOwnProperty(n)&&e[n]===t[n])}function $o(e){
return{}.toString.call(e).match(/\s([a-z|A-Z]+)/)[1].toLowerCase()}const Wo=()=>{let e=n(window.location.hostname)
;return"production"!==e&&"staging"!==e||Bo(window.location.hostname)?window.dataLayer:window.utag_data};function Bo(e){
return e.match(/account(?:-stg)?\.idealo\.(?:co\.)?\w{2,3}/)}function zo(e=Wo()){if(void 0===e)return!1
;if(!Array.isArray(e))throw new TypeError("Data layer has to be an array!");return!0}function Ko(e,t=Wo()){"object"===$o(e)&&zo(t)&&t.push(e)}
function qo(e,t=Wo()){let n;if(!zo(t))return null;if(null==e)throw new TypeError("Key is required")
;for(let r=0;r<t.length;r++)"object"===$o(t[r])&&e in t[r]&&(n=t[r][e]);return n}const Go="account",Jo=Vo("idealo"),Yo=sa(),Xo=31536e3,Qo="/"
;window[Go]=window[Go]||{};function Zo(e){let t={};if("loggedIn"===e.loginState){t.ls=1;e.lastRefresh&&(t.lr=Math.floor(e.lastRefresh/1e3))}
"loggedOut"===e.loginState&&(t.ls=0);return t}function ea(e){return{name:Yo,value:"unknown"===e.loginState?"":ia(e),domain:Jo,path:Qo,
"max-age":"unknown"===e.loginState?-1:Xo,samesite:"strict"}}function ta(e){let t={loginState:"unknown"};if(1===e.ls){t.loginState="loggedIn"
;e.lr&&(t.lastRefresh=1e3*e.lr)}0===e.ls&&(t.loginState="loggedOut");return t}function na(e){let t={loginState:"unknown"}
;if("string"!=typeof e||0===e.length)return t;try{t=ta(JSON.parse(decodeURIComponent(escape(window.atob(e)))))}catch(e){}return t}function ra(e){
const t=new CustomEvent("userinfo",{detail:e,bubbles:!0,cancelable:!0});document.dispatchEvent(t)}function ia(e){
return window.btoa(unescape(encodeURIComponent(JSON.stringify(Zo(e)))))}function sa(e="userInfo"){
return`${e}-${n(window.location.hostname)}`.replace("-production","").replace("-local","-testing")}function oa(){const{loginState:e}=aa();return e}
function aa(){let e={loginState:"unknown"},t=ua();const n=ca(),r=ha();if("unknown"===t.loginState){
"unknown"!==n.loginState?e=n:"unknown"!==r.loginState&&(e.loginState=r.loginState);if("unknown"!==e.loginState){Fo(ea(e),!0);t=e}}else{
"loggedIn"!==t.loginState&&"loggedOut"!==t.loginState||(e.loginState=t.loginState);Number.isInteger(t.lastRefresh)&&(e.lastRefresh=t.lastRefresh)}if(!Ho(e,n)){
const r=e.loginState!==n.loginState;pa(e);r&&ra({loginState:t.loginState})}return e}function ca(){const e=window[Go].userInfo;return da(e)?e:{
loginState:"unknown"}}function ua(){const e=na(xo(Yo,!0));return da(e)?e:{loginState:"unknown"}}function ha(){const e=qo("user_email_hashed");return{
loginState:"string"==typeof e&&/[0-9a-f]{64}/.test(e)?"loggedIn":"unknown"}}function la(){return"loggedIn"===oa()}function da(e){
if("object"!=typeof e||0===Object.keys(e).length)return!1;const{loginState:t,lastRefresh:n}=e
;if(["loggedIn","loggedOut","unknown"].indexOf(t)<0)throw new Error("User info login state has invalid value: "+t)
;if("lastRefresh"in e&&!Number.isInteger(n))throw new Error("User info last refresh has invalid value: "+n);return!0}function pa(e){if(!da(e))return!1
;if(Ho(window[Go].userInfo,e))return!1;window[Go].userInfo=e;return!0}function fa(){"object"!=typeof window[Go]&&(window[Go]={})
;"object"!=typeof window[Go].userInfo&&(window[Go].userInfo={});if(window[Go].userInfo.loginState)return!1;pa(ua())}fa()
;const ma=/[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}/gi;function ga(e,t=ma){return e.replace(t,e=>e.replace(/[a-z0-9]/gi,"*"))}function _a(e,t={}){let n=jo(t,e)
;if(!("object"==typeof n&&["event","version","owner"].every(e=>e in n)))throw new Error(`Tracking data incomplete: ${JSON.stringify(n)}`)
;("object"!=typeof n.data||null===n.data||0===Object.keys(n.data).length)&&delete n.data;const r=JSON.stringify(n);ma.test(r)&&(n=JSON.parse(ga(r)));Ko(n)}
const wa={close_click:{event:"google_one_tap_close_click",version:"1-0-0",owner:"de.idealo.sso"},cta_click:{event:"google_one_tap_cta_click",version:"1-0-0",
owner:"de.idealo.sso"},one_tap_shown:{event:"google_one_tap_shown",version:"1-0-0",owner:"de.idealo.sso"}},Ia={context:{provider:"idealo",source:"account"}}
;function va(e){return new Promise((t,n)=>{if(window.google&&window.google.accounts&&window.google.accounts.id){t();return}
const r=document.createElement("script");r.src="https://accounts.google.com/gsi/client";r.async=!0;r.defer=!0;e&&r.setAttribute("nonce",e);r.onload=()=>{t()}
;r.onerror=e=>{n(e)};document.head.appendChild(r)})}function ya(e,t){const n=ri.credential(e);if(n){No(Ao(t,Uo()),n).then(e=>{const{idToken:t,email:n}=e;ba(t,n)
}).catch(e=>{if("auth/account-exists-with-different-credential"===e.code)Ca();else if(!e.code)throw e})}}function Ea(e){_a({data:Ia},wa.cta_click)
;const{credential:t}=e;if(t){ya(t,Do("IdealoSocialLogin"))}}function ba(e,t){Ta(e,t);Sa()}function Ta(e,t){const n=new MessageEvent("message",{data:{
event:"sendForm",data:{firebaseIdToken:e,email:t,authProviderName:"google"}},origin:"*",source:window}),r=e=>{
if(e.data&&"readystatechange"===e.data.event&&"complete"===e.data.readyState){window.dispatchEvent(n);window.removeEventListener("message",r)}}
;null!==document.querySelector('iframe[src*="mode=iframe"]')?window.dispatchEvent(n):window.addEventListener("message",r)}function Sa(){let e
;e=document.getElementById("MyidealoToggle");if(e&&!e.checked){e.checked=!0;e.dispatchEvent(new Event("change",{bubbles:!0}))}}function ka(){
if(!window.google||!window.google.accounts||!window.google.accounts.id)return;const{id:e}=window.google.accounts;if(e){
const t=window.location.hostname,r=n(t),i={auto_select:!1,
client_id:"production"===r?"966339893929-8cl14kvvnbub66p3fp0rnr0s8k6ssqhg.apps.googleusercontent.com":"591291879914-run0d08ep8r976qk7scfgfuludshj2dj.apps.googleusercontent.com",
callback:Ea,context:"sign-in",state_cookie_domain:"production"===r?t.substr(t.indexOf("idealo")):t,use_fedcm_for_prompt:!0};try{e.initialize(i);e.prompt(e=>{
e.isSkippedMoment&&e.isSkippedMoment()&&_a({data:Ia},wa.close_click)});_a({data:Ia},wa.one_tap_shown)}catch(e){}}}function Ca(){}function Ra(){
const e=document.getElementById("MyidealoElement");if(e){const t=e.getAttribute("data-nonce");if(t)return t}
const t=document.querySelector('meta[name="csp-nonce"]');return t?t.getAttribute("content"):null}function Pa(){
const e=document.getElementById("MyidealoElement");if(!e)return null;const t=e.getAttribute("data-parent-component");return null!=t?t:null}
const Oa=()=>/iPad|iPhone|iPod/.test(navigator.userAgent)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1,Aa=()=>"homepage"===Pa(),Na=()=>{var e
;return(null===(e=navigator)||void 0===e||null===(e=e.userAgentData)||void 0===e?void 0:e.mobile)||window.matchMedia("(pointer:coarse)").matches
},Da=()=>Aa()&&Na()&&!la()&&!Oa();function La(){try{if(!Da())return;va(Ra()).then(()=>{ka()}).catch(e=>{})}catch(e){}}window.onload=function(){La()}})();
//# sourceMappingURL=https://account.idealo.de/js/fragments/login/googleOneTap.js.map
/*]]>*/
</script>
</div></div>
<script>//<![CDATA[
(()=>{"use strict";const e=()=>{const e=(e=>{const t=new RegExp(`[; ]${e}=([^\\s;]*)`),o=` ${document.cookie}`.match(t);return e&&o?o[1]:null})("userInfo"),t=e?(o=e,JSON.parse(decodeURIComponent(escape(window.atob(o))))):null;var o;return 1===t?.ls};(()=>{if(e()){const e=document.querySelector(".i-header-slot--services");e&&e.setAttribute("data-state-login","logged-in")}})()})();
//]]></script>
</div>
</div>
<script>//<![CDATA[
(()=>{var e={976(e,t){var n,i,o;i=[],void 0===(o="function"==typeof(n=function(){var e=function(){},t={},n={},i={};function o(e,t){e=e.push?e:[e];var o,r,a,l=[],s=e.length,c=s;for(o=function(e,n){n.length&&l.push(e),--c||t(l)};s--;)r=e[s],(a=n[r])?o(r,a):(i[r]=i[r]||[]).push(o)}function r(e,t){if(e){var o=i[e];if(n[e]=t,o)for(;o.length;)o[0](e,t),o.splice(0,1)}}function a(t,n){t.call&&(t={success:t}),n.length?(t.error||e)(n):(t.success||e)(t)}function l(t,n,i,o){var r,a,s,c=document,u=i.async,_=(i.numRetries||0)+1,d=i.before||e,h=t.replace(/[\?|#].*$/,""),p=t.replace(/^(css|img|module|nomodule)!/,"");if(o=o||0,/(^css!|\.css$)/.test(h))(s=c.createElement("link")).rel="stylesheet",s.href=p,(r="hideFocus"in s)&&s.relList&&(r=0,s.rel="preload",s.as="style");else if(/(^img!|\.(png|gif|jpg|svg|webp)$)/.test(h))(s=c.createElement("img")).src=p;else if((s=c.createElement("script")).src=p,s.async=void 0===u||u,a="noModule"in s,/^module!/.test(h)){if(!a)return n(t,"l");s.type="module"}else if(/^nomodule!/.test(h)&&a)return n(t,"l");s.onload=s.onerror=s.onbeforeload=function(e){var a=e.type[0];if(r)try{s.sheet.cssText.length||(a="e")}catch(e){18!=e.code&&(a="e")}if("e"==a){if((o+=1)<_)return l(t,n,i,o)}else if("preload"==s.rel&&"style"==s.as)return s.rel="stylesheet";n(t,a,e.defaultPrevented)},!1!==d(t,s)&&c.head.appendChild(s)}function s(e,t,n){var i,o,r=(e=e.push?e:[e]).length,a=r,s=[];for(i=function(e,n,i){if("e"==n&&s.push(e),"b"==n){if(!i)return;s.push(e)}--r||t(s)},o=0;o<a;o++)l(e[o],i,n)}function c(e,n,i){var o,l;if(n&&n.trim&&(o=n),l=(o?i:n)||{},o){if(o in t)throw"LoadJS";t[o]=!0}function c(t,n){s(e,(function(e){a(l,e),t&&a({success:t,error:n},e),r(o,e)}),l)}if(l.returnPromise)return new Promise(c);c()}return c.ready=function(e,t){return o(e,(function(e){a(t,e)})),c},c.done=function(e){r(e,[])},c.reset=function(){t={},n={},i={}},c.isDefined=function(e){return e in t},c})?n.apply(t,i):n)||(e.exports=o)}},t={};function n(i){var o=t[i];if(void 0!==o)return o.exports;var r=t[i]={exports:{}};return e[i].call(r.exports,r,r.exports,n),r.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";const e="enabled.idealo.header",t="disable.idealo.header";function i(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const o="i-header",r={INITIALISED:`${o}--initialised`},a={HEADER_COMPONENT:`.${o}`};class l{static initIdealoObject(){window.idealo||(window.idealo={header:{}}),window.idealo.header||(window.idealo.header={})}constructor(){i(this,"root",void 0),i(this,"isInitialised",void 0),this.root=null,this.isInitialised=!1,this.init()}init(){l.initIdealoObject(),this.root=window.document.querySelector(a.HEADER_COMPONENT),null!==this.root&&(this.bindEvents(),this.isInitialised=!0),this.render()}bindEvents(){null!==this.root&&this.root.addEventListener("click",(()=>{let e;"function"==typeof Event?e=new Event(t):(e=document.createEvent("Event"),e.initEvent(t,!0,!0)),window.document.dispatchEvent(e)}))}render(){this.isInitialised&&null!==this.root&&this.root.classList.add(r.INITIALISED)}}var s=n(976),c=n.n(s);const u=(e,t,n)=>new Promise(((i,o)=>{c()([e],t),c().ready(t,{success:()=>{i(window[n])},error:()=>{o(void 0)}})})),_=()=>u("https://cdn.idealo.com/storage/wish-list-header/header-wish-list-plugin.js","header-wishlist-plugin","idealoHeaderWishlistPlugin").then((e=>e.default)).catch((e=>{}));const d=()=>{const e=(e=>{const t=new RegExp(`[; ]${e}=([^\\s;]*)`),n=` ${document.cookie}`.match(t);return e&&n?n[1]:null})("userInfo"),t=e?(n=e,JSON.parse(decodeURIComponent(escape(window.atob(n))))):null;var n;return 1===t?.ls},h="i-wishlist",p={INITIALISED:`${h}--initialised`,WISHLIST_BUTTON:"i-wishlist-element",SEARCH_INPUT:"i-search-input",WISHLIST_LINK:"i-wishlist-element-link"},m={HEADER_COMPONENT:`.${h}`,HEADER_BUTTON:`.${p.WISHLIST_BUTTON}`,HEADER_LINK:`.${p.WISHLIST_LINK}`,SEARCH_INPUT:`.${p.SEARCH_INPUT}`},g="ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch,f=()=>{window.idealo.header.wishlistPlugin||(window.idealo.header=window.idealo.header||{},_().then((e=>{e(".i-wishlist-element-content")})).catch((e=>{})),window.idealo.header.wishlistPlugin=!0)},v=()=>{window.document.addEventListener("idealo.wishlist.update.count",y)},y=()=>{const e=window.document.querySelector(`.${p.WISHLIST_BUTTON}-heart`);e&&(e.classList.add(`${p.WISHLIST_BUTTON}-animated`),setTimeout((()=>{e.classList.remove(`${p.WISHLIST_BUTTON}-animated`)}),1e3))},w=()=>{const e=window.document.querySelector(m.HEADER_BUTTON),t=window.document.querySelector(m.SEARCH_INPUT);if(!e||!t)return;e.classList.add(p.INITIALISED);let n=!1;document.body&&(n=document.body.contains(window.document.querySelector(m.HEADER_LINK)));window.document.querySelector(".i-header")&&n&&!d()&&(g?window.addEventListener("load",f):(e.addEventListener("mouseover",f,!1),t.addEventListener("focus",f,!1))),v()},b={event:"header_flights_click",owner:"de.idealo.tyrell",version:"1-0-0"},k={event:"header_magazin_click",owner:"de.idealo.tyrell",version:"1-0-0"},S={event:"header_idealo_logo_click",owner:"de.idealo.tyrell",version:"1-0-0"},I={event:"header_all_categories_click",owner:"de.idealo.tyrell",version:"1-0-0"},E={event:"header_wishlist_click",owner:"de.idealo.tyrell",version:"1-0-0"},C={event:"header_price_alerts_click",owner:"de.idealo.tyrell",version:"1-0-0"},N={event:"header_banner_click",owner:"de.idealo.tyrell",version:"1-0-0",data:{banner_name:"black_friday"}},L={event:"download_app_click",owner:"de.idealo.tyrell"},T={...L,version:"1-0-0",data:{event_action:!0,store_name:"google_play",location:"smart_banner"}},P={event:"searchbar_last_seen_delete_click",owner:"de.idealo.tyrell",version:"1-0-0"},x={event:"searchbar_suggester_view",owner:"de.idealo.tyrell",version:"1-0-0"},A=e=>{window?.utag_data?.push(e)},B=e=>{requestAnimationFrame((()=>{setTimeout((()=>{window?.utag_data?.push(e)}),0)}))},O=()=>A(b),D=()=>A(k),q=()=>A(S),H=()=>B(I),R=()=>A(E),U=()=>A(C),M=()=>A(N),$=e=>A((e=>({event:"searchbar_click",owner:"de.idealo.tyrell",version:"1-1-0",data:{click_type:"enter",search_query:{search_query:e}}}))(e)),F=(e,t)=>{const n=document.querySelector(e);n&&(n.addEventListener("click",t),n.addEventListener("auxclick",t))};var W,j,V,K,z,G,Z,J,X,Q,Y,ee={},te=[],ne=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,ie=Array.isArray;function oe(e,t){for(var n in t)e[n]=t[n];return e}function re(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function ae(e,t,n){var i,o,r,a={};for(r in t)"key"==r?i=t[r]:"ref"==r?o=t[r]:a[r]=t[r];if(arguments.length>2&&(a.children=arguments.length>3?W.call(arguments,2):n),"function"==typeof e&&null!=e.defaultProps)for(r in e.defaultProps)void 0===a[r]&&(a[r]=e.defaultProps[r]);return le(e,a,i,o,null)}function le(e,t,n,i,o){var r={type:e,props:t,key:n,ref:i,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:null==o?++V:o,__i:-1,__u:0};return null==o&&null!=j.vnode&&j.vnode(r),r}function se(e){return e.children}function ce(e,t){this.props=e,this.context=t}function ue(e,t){if(null==t)return e.__?ue(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e)return n.__e;return"function"==typeof e.type?ue(e):null}function _e(e){var t,n;if(null!=(e=e.__)&&null!=e.__c){for(e.__e=e.__c.base=null,t=0;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e){e.__e=e.__c.base=n.__e;break}return _e(e)}}function de(e){(!e.__d&&(e.__d=!0)&&K.push(e)&&!he.__r++||z!==j.debounceRendering)&&((z=j.debounceRendering)||G)(he)}function he(){for(var e,t,n,i,o,r,a,l=1;K.length;)K.length>l&&K.sort(Z),e=K.shift(),l=K.length,e.__d&&(n=void 0,o=(i=(t=e).__v).__e,r=[],a=[],t.__P&&((n=oe({},i)).__v=i.__v+1,j.vnode&&j.vnode(n),be(t.__P,n,i,t.__n,t.__P.namespaceURI,32&i.__u?[o]:null,r,null==o?ue(i):o,!!(32&i.__u),a),n.__v=i.__v,n.__.__k[n.__i]=n,ke(r,n,a),n.__e!=o&&_e(n)));he.__r=0}function pe(e,t,n,i,o,r,a,l,s,c,u){var _,d,h,p,m,g,f=i&&i.__k||te,v=t.length;for(s=me(n,t,f,s,v),_=0;_<v;_++)null!=(h=n.__k[_])&&(d=-1===h.__i?ee:f[h.__i]||ee,h.__i=_,g=be(e,h,d,o,r,a,l,s,c,u),p=h.__e,h.ref&&d.ref!=h.ref&&(d.ref&&Ee(d.ref,null,h),u.push(h.ref,h.__c||p,h)),null==m&&null!=p&&(m=p),4&h.__u||d.__k===h.__k?s=ge(h,s,e):"function"==typeof h.type&&void 0!==g?s=g:p&&(s=p.nextSibling),h.__u&=-7);return n.__e=m,s}function me(e,t,n,i,o){var r,a,l,s,c,u=n.length,_=u,d=0;for(e.__k=new Array(o),r=0;r<o;r++)null!=(a=t[r])&&"boolean"!=typeof a&&"function"!=typeof a?(s=r+d,(a=e.__k[r]="string"==typeof a||"number"==typeof a||"bigint"==typeof a||a.constructor==String?le(null,a,null,null,null):ie(a)?le(se,{children:a},null,null,null):void 0===a.constructor&&a.__b>0?le(a.type,a.props,a.key,a.ref?a.ref:null,a.__v):a).__=e,a.__b=e.__b+1,l=null,-1!==(c=a.__i=fe(a,n,s,_))&&(_--,(l=n[c])&&(l.__u|=2)),null==l||null===l.__v?(-1==c&&(o>u?d--:o<u&&d++),"function"!=typeof a.type&&(a.__u|=4)):c!=s&&(c==s-1?d--:c==s+1?d++:(c>s?d--:d++,a.__u|=4))):e.__k[r]=null;if(_)for(r=0;r<u;r++)null!=(l=n[r])&&!(2&l.__u)&&(l.__e==i&&(i=ue(l)),Ce(l,l));return i}function ge(e,t,n){var i,o;if("function"==typeof e.type){for(i=e.__k,o=0;i&&o<i.length;o++)i[o]&&(i[o].__=e,t=ge(i[o],t,n));return t}e.__e!=t&&(t&&e.type&&!n.contains(t)&&(t=ue(e)),n.insertBefore(e.__e,t||null),t=e.__e);do{t=t&&t.nextSibling}while(null!=t&&8==t.nodeType);return t}function fe(e,t,n,i){var o,r,a=e.key,l=e.type,s=t[n];if(null===s&&null==e.key||s&&a==s.key&&l===s.type&&!(2&s.__u))return n;if(i>(null==s||2&s.__u?0:1))for(o=n-1,r=n+1;o>=0||r<t.length;){if(o>=0){if((s=t[o])&&!(2&s.__u)&&a==s.key&&l===s.type)return o;o--}if(r<t.length){if((s=t[r])&&!(2&s.__u)&&a==s.key&&l===s.type)return r;r++}}return-1}function ve(e,t,n){"-"==t[0]?e.setProperty(t,null==n?"":n):e[t]=null==n?"":"number"!=typeof n||ne.test(t)?n:n+"px"}function ye(e,t,n,i,o){var r;e:if("style"==t)if("string"==typeof n)e.style.cssText=n;else{if("string"==typeof i&&(e.style.cssText=i=""),i)for(t in i)n&&t in n||ve(e.style,t,"");if(n)for(t in n)i&&n[t]===i[t]||ve(e.style,t,n[t])}else if("o"==t[0]&&"n"==t[1])r=t!=(t=t.replace(J,"$1")),t=t.toLowerCase()in e||"onFocusOut"==t||"onFocusIn"==t?t.toLowerCase().slice(2):t.slice(2),e.l||(e.l={}),e.l[t+r]=n,n?i?n.t=i.t:(n.t=X,e.addEventListener(t,r?Y:Q,r)):e.removeEventListener(t,r?Y:Q,r);else{if("http://www.w3.org/2000/svg"==o)t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("width"!=t&&"height"!=t&&"href"!=t&&"list"!=t&&"form"!=t&&"tabIndex"!=t&&"download"!=t&&"rowSpan"!=t&&"colSpan"!=t&&"role"!=t&&"popover"!=t&&t in e)try{e[t]=null==n?"":n;break e}catch(e){}"function"==typeof n||(null==n||!1===n&&"-"!=t[4]?e.removeAttribute(t):e.setAttribute(t,"popover"==t&&1==n?"":n))}}function we(e){return function(t){if(this.l){var n=this.l[t.type+e];if(null==t.u)t.u=X++;else if(t.u<n.t)return;return n(j.event?j.event(t):t)}}}function be(e,t,n,i,o,r,a,l,s,c){var u,_,d,h,p,m,g,f,v,y,w,b,k,S,I,E,C,N=t.type;if(void 0!==t.constructor)return null;128&n.__u&&(s=!!(32&n.__u),r=[l=t.__e=n.__e]),(u=j.__b)&&u(t);e:if("function"==typeof N)try{if(f=t.props,v="prototype"in N&&N.prototype.render,y=(u=N.contextType)&&i[u.__c],w=u?y?y.props.value:u.__:i,n.__c?g=(_=t.__c=n.__c).__=_.__E:(v?t.__c=_=new N(f,w):(t.__c=_=new ce(f,w),_.constructor=N,_.render=Ne),y&&y.sub(_),_.props=f,_.state||(_.state={}),_.context=w,_.__n=i,d=_.__d=!0,_.__h=[],_._sb=[]),v&&null==_.__s&&(_.__s=_.state),v&&null!=N.getDerivedStateFromProps&&(_.__s==_.state&&(_.__s=oe({},_.__s)),oe(_.__s,N.getDerivedStateFromProps(f,_.__s))),h=_.props,p=_.state,_.__v=t,d)v&&null==N.getDerivedStateFromProps&&null!=_.componentWillMount&&_.componentWillMount(),v&&null!=_.componentDidMount&&_.__h.push(_.componentDidMount);else{if(v&&null==N.getDerivedStateFromProps&&f!==h&&null!=_.componentWillReceiveProps&&_.componentWillReceiveProps(f,w),!_.__e&&(null!=_.shouldComponentUpdate&&!1===_.shouldComponentUpdate(f,_.__s,w)||t.__v==n.__v)){for(t.__v!=n.__v&&(_.props=f,_.state=_.__s,_.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some((function(e){e&&(e.__=t)})),b=0;b<_._sb.length;b++)_.__h.push(_._sb[b]);_._sb=[],_.__h.length&&a.push(_);break e}null!=_.componentWillUpdate&&_.componentWillUpdate(f,_.__s,w),v&&null!=_.componentDidUpdate&&_.__h.push((function(){_.componentDidUpdate(h,p,m)}))}if(_.context=w,_.props=f,_.__P=e,_.__e=!1,k=j.__r,S=0,v){for(_.state=_.__s,_.__d=!1,k&&k(t),u=_.render(_.props,_.state,_.context),I=0;I<_._sb.length;I++)_.__h.push(_._sb[I]);_._sb=[]}else do{_.__d=!1,k&&k(t),u=_.render(_.props,_.state,_.context),_.state=_.__s}while(_.__d&&++S<25);_.state=_.__s,null!=_.getChildContext&&(i=oe(oe({},i),_.getChildContext())),v&&!d&&null!=_.getSnapshotBeforeUpdate&&(m=_.getSnapshotBeforeUpdate(h,p)),E=u,null!=u&&u.type===se&&null==u.key&&(E=Se(u.props.children)),l=pe(e,ie(E)?E:[E],t,n,i,o,r,a,l,s,c),_.base=t.__e,t.__u&=-161,_.__h.length&&a.push(_),g&&(_.__E=_.__=null)}catch(e){if(t.__v=null,s||null!=r)if(e.then){for(t.__u|=s?160:128;l&&8==l.nodeType&&l.nextSibling;)l=l.nextSibling;r[r.indexOf(l)]=null,t.__e=l}else for(C=r.length;C--;)re(r[C]);else t.__e=n.__e,t.__k=n.__k;j.__e(e,t,n)}else null==r&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):l=t.__e=Ie(n.__e,t,n,i,o,r,a,s,c);return(u=j.diffed)&&u(t),128&t.__u?void 0:l}function ke(e,t,n){for(var i=0;i<n.length;i++)Ee(n[i],n[++i],n[++i]);j.__c&&j.__c(t,e),e.some((function(t){try{e=t.__h,t.__h=[],e.some((function(e){e.call(t)}))}catch(e){j.__e(e,t.__v)}}))}function Se(e){return"object"!=typeof e||null==e?e:ie(e)?e.map(Se):oe({},e)}function Ie(e,t,n,i,o,r,a,l,s){var c,u,_,d,h,p,m,g=n.props,f=t.props,v=t.type;if("svg"==v?o="http://www.w3.org/2000/svg":"math"==v?o="http://www.w3.org/1998/Math/MathML":o||(o="http://www.w3.org/1999/xhtml"),null!=r)for(c=0;c<r.length;c++)if((h=r[c])&&"setAttribute"in h==!!v&&(v?h.localName==v:3==h.nodeType)){e=h,r[c]=null;break}if(null==e){if(null==v)return document.createTextNode(f);e=document.createElementNS(o,v,f.is&&f),l&&(j.__m&&j.__m(t,r),l=!1),r=null}if(null===v)g===f||l&&e.data===f||(e.data=f);else{if(r=r&&W.call(e.childNodes),g=n.props||ee,!l&&null!=r)for(g={},c=0;c<e.attributes.length;c++)g[(h=e.attributes[c]).name]=h.value;for(c in g)if(h=g[c],"children"==c);else if("dangerouslySetInnerHTML"==c)_=h;else if(!(c in f)){if("value"==c&&"defaultValue"in f||"checked"==c&&"defaultChecked"in f)continue;ye(e,c,null,h,o)}for(c in f)h=f[c],"children"==c?d=h:"dangerouslySetInnerHTML"==c?u=h:"value"==c?p=h:"checked"==c?m=h:l&&"function"!=typeof h||g[c]===h||ye(e,c,h,g[c],o);if(u)l||_&&(u.__html===_.__html||u.__html===e.innerHTML)||(e.innerHTML=u.__html),t.__k=[];else if(_&&(e.innerHTML=""),pe("template"===t.type?e.content:e,ie(d)?d:[d],t,n,i,"foreignObject"==v?"http://www.w3.org/1999/xhtml":o,r,a,r?r[0]:n.__k&&ue(n,0),l,s),null!=r)for(c=r.length;c--;)re(r[c]);l||(c="value","progress"==v&&null==p?e.removeAttribute("value"):void 0!==p&&(p!==e[c]||"progress"==v&&!p||"option"==v&&p!==g[c])&&ye(e,c,p,g[c],o),c="checked",void 0!==m&&m!==e[c]&&ye(e,c,m,g[c],o))}return e}function Ee(e,t,n){try{if("function"==typeof e){var i="function"==typeof e.__u;i&&e.__u(),i&&null==t||(e.__u=e(t))}else e.current=t}catch(e){j.__e(e,n)}}function Ce(e,t,n){var i,o;if(j.unmount&&j.unmount(e),(i=e.ref)&&(i.current&&i.current!==e.__e||Ee(i,null,t)),null!=(i=e.__c)){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(e){j.__e(e,t)}i.base=i.__P=null}if(i=e.__k)for(o=0;o<i.length;o++)i[o]&&Ce(i[o],t,n||"function"!=typeof e.type);n||re(e.__e),e.__c=e.__=e.__e=void 0}function Ne(e,t,n){return this.constructor(e,n)}function Le(e,t,n){var i,o,r,a;t==document&&(t=document.documentElement),j.__&&j.__(e,t),o=(i="function"==typeof n)?null:n&&n.__k||t.__k,r=[],a=[],be(t,e=(!i&&n||t).__k=ae(se,null,[e]),o||ee,ee,t.namespaceURI,!i&&n?[n]:o?null:t.firstChild?W.call(t.childNodes):null,r,!i&&n?n:o?o.__e:t.firstChild,i,a),ke(r,e,a)}W=te.slice,j={__e:function(e,t,n,i){for(var o,r,a;t=t.__;)if((o=t.__c)&&!o.__)try{if((r=o.constructor)&&null!=r.getDerivedStateFromError&&(o.setState(r.getDerivedStateFromError(e)),a=o.__d),null!=o.componentDidCatch&&(o.componentDidCatch(e,i||{}),a=o.__d),a)return o.__E=o}catch(t){e=t}throw e}},V=0,ce.prototype.setState=function(e,t){var n;n=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=oe({},this.state),"function"==typeof e&&(e=e(oe({},n),this.props)),e&&oe(n,e),null!=e&&this.__v&&(t&&this._sb.push(t),de(this))},ce.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),de(this))},ce.prototype.render=se,K=[],G="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Z=function(e,t){return e.__v.__b-t.__v.__b},he.__r=0,J=/(PointerCapture)$|Capture$/i,X=0,Q=we(!1),Y=we(!0);var Te,Pe,xe,Ae,Be=0,Oe=[],De=j,qe=De.__b,He=De.__r,Re=De.diffed,Ue=De.__c,Me=De.unmount,$e=De.__;function Fe(e,t){De.__h&&De.__h(Pe,e,Be||t),Be=0;var n=Pe.__H||(Pe.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function We(e){return Be=1,function(e,t,n){var i=Fe(Te++,2);if(i.t=e,!i.__c&&(i.__=[n?n(t):Qe(void 0,t),function(e){var t=i.__N?i.__N[0]:i.__[0],n=i.t(t,e);t!==n&&(i.__N=[n,i.__[1]],i.__c.setState({}))}],i.__c=Pe,!Pe.__f)){var o=function(e,t,n){if(!i.__c.__H)return!0;var o=i.__c.__H.__.filter((function(e){return!!e.__c}));if(o.every((function(e){return!e.__N})))return!r||r.call(this,e,t,n);var a=i.__c.props!==e;return o.forEach((function(e){if(e.__N){var t=e.__[0];e.__=e.__N,e.__N=void 0,t!==e.__[0]&&(a=!0)}})),r&&r.call(this,e,t,n)||a};Pe.__f=!0;var r=Pe.shouldComponentUpdate,a=Pe.componentWillUpdate;Pe.componentWillUpdate=function(e,t,n){if(this.__e){var i=r;r=void 0,o(e,t,n),r=i}a&&a.call(this,e,t,n)},Pe.shouldComponentUpdate=o}return i.__N||i.__}(Qe,e)}function je(e,t){var n=Fe(Te++,3);!De.__s&&Xe(n.__H,t)&&(n.__=e,n.u=t,Pe.__H.__h.push(n))}function Ve(e,t){var n=Fe(Te++,7);return Xe(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function Ke(){for(var e;e=Oe.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(Ze),e.__H.__h.forEach(Je),e.__H.__h=[]}catch(t){e.__H.__h=[],De.__e(t,e.__v)}}De.__b=function(e){Pe=null,qe&&qe(e)},De.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),$e&&$e(e,t)},De.__r=function(e){He&&He(e),Te=0;var t=(Pe=e.__c).__H;t&&(xe===Pe?(t.__h=[],Pe.__h=[],t.__.forEach((function(e){e.__N&&(e.__=e.__N),e.u=e.__N=void 0}))):(t.__h.forEach(Ze),t.__h.forEach(Je),t.__h=[],Te=0)),xe=Pe},De.diffed=function(e){Re&&Re(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(1!==Oe.push(t)&&Ae===De.requestAnimationFrame||((Ae=De.requestAnimationFrame)||Ge)(Ke)),t.__H.__.forEach((function(e){e.u&&(e.__H=e.u),e.u=void 0}))),xe=Pe=null},De.__c=function(e,t){t.some((function(e){try{e.__h.forEach(Ze),e.__h=e.__h.filter((function(e){return!e.__||Je(e)}))}catch(n){t.some((function(e){e.__h&&(e.__h=[])})),t=[],De.__e(n,e.__v)}})),Ue&&Ue(e,t)},De.unmount=function(e){Me&&Me(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach((function(e){try{Ze(e)}catch(e){t=e}})),n.__H=void 0,t&&De.__e(t,n.__v))};var ze="function"==typeof requestAnimationFrame;function Ge(e){var t,n=function(){clearTimeout(i),ze&&cancelAnimationFrame(t),setTimeout(e)},i=setTimeout(n,100);ze&&(t=requestAnimationFrame(n))}function Ze(e){var t=Pe,n=e.__c;"function"==typeof n&&(e.__c=void 0,n()),Pe=t}function Je(e){var t=Pe;e.__c=e.__(),Pe=t}function Xe(e,t){return!e||e.length!==t.length||t.some((function(t,n){return t!==e[n]}))}function Qe(e,t){return"function"==typeof t?t(e):t}const Ye=({isOpen:e})=>e?ae("div",{className:"i-navigation-icon i-navigation-icon--open"},ae("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},ae("path",{d:"M13.414,12l9.293-9.293a1,1,0,0,0-1.414-1.414L12,10.586,2.707,1.293A1,1,0,0,0,1.293,2.707L10.586,12,1.293,21.293a1,1,0,1,0,1.414,1.414L12,13.414l9.293,9.293a1,1,0,0,0,1.414-1.414Z"}))):ae("div",{className:"i-navigation-icon i-navigation-icon--closed"},ae("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},ae("path",{d:"M22 13H2a1 1 0 010-2h20a1 1 0 010 2zm1 5a1 1 0 00-1-1H2a1 1 0 000 2h20a1 1 0 001-1zm0-12a1 1 0 00-1-1H2a1 1 0 000 2h20a1 1 0 001-1z"}))),et=(()=>{const e=document.querySelector("[data-country]")?.getAttribute("data-country");return"AT"===e?{title:"Kategorien",hyperLinkDomain:"https://www.idealo.at",hyperLinkPath:"/preisvergleich/Sitemap.html",moreLinkText:"mehr",mobileCloseButton:"Alle Kategorien",mobileBackButton:"Kategorien",mobileSearchButton:"Suche",locale:"de-AT"}:"GB"===e?{title:"Categories",hyperLinkDomain:"https://www.idealo.co.uk",hyperLinkPath:"/sitemap.html",moreLinkText:"more",mobileCloseButton:"All categories",mobileBackButton:"Categories",mobileSearchButton:"Search",locale:"en-UK"}:"FR"===e?{title:"Catégories",hyperLinkDomain:"https://www.idealo.fr",hyperLinkPath:"/plandusite.html",moreLinkText:"plus",mobileCloseButton:"Toutes les catégories",mobileBackButton:"Catégories",mobileSearchButton:"Chercher",locale:"fr-FR"}:"ES"===e?{title:"Categorías",hyperLinkDomain:"https://www.idealo.es",hyperLinkPath:"/mapaweb.html",moreLinkText:"más",mobileCloseButton:"Todas las categorías",mobileBackButton:"Categorías",mobileSearchButton:"Buscar",locale:"es-ES"}:"IT"===e?{title:"Categorie",hyperLinkDomain:"https://www.idealo.it",hyperLinkPath:"/mappa-del-sito.html",moreLinkText:"di più",mobileCloseButton:"Tutte le categorie",mobileBackButton:"Categorie",mobileSearchButton:"Cerca",locale:"it-IT"}:{title:"Kategorien",hyperLinkDomain:"https://www.idealo.de",hyperLinkPath:"/preisvergleich/Sitemap.html",moreLinkText:"mehr",mobileCloseButton:"Alle Kategorien",mobileBackButton:"Kategorien",mobileSearchButton:"Suche",locale:"de-DE"}})(),tt=({topLevelNavItem:e})=>ae("li",{className:"i-navigation-list-item i-navigation-list-item--more"},ae("a",{className:"i-navigation-list-link",href:e.url,rel:e.rel,role:"menuitem"},et.moreLinkText)),nt=({topLevelNavItem:e,selectedSubCategoriesIds:t})=>ae("ul",{className:"i-navigation-list i-navigation-list--sub i-navigation-list--active","data-main-id":"{{navItem.id}}",role:"menu"},e.navItems.map(((e,n)=>{return ae("li",{key:n,className:"i-navigation-list-item "+(t.includes(e.id)?"i-navigation-list-item--active":""),role:"none"},ae("a",{className:"i-navigation-list-link",href:e.url,role:"menuitem",onClick:(i=e.id,()=>A((e=>({event:"header_subcategory_click",owner:"de.idealo.tyrell",version:"1-0-0",data:{sub_category_id:e||"NULL"}}))(i)))},e.name));var i})),ae(tt,{topLevelNavItem:e})),it=({navItems:e,setSelectedTopLevelCategory:t,selectedTopLevelCategoryId:n})=>{const i=e=>n=>{var i;n.stopPropagation(),(e=>e.navItems.length>0)(e)&&(n.preventDefault(),t(e.id)),(i=e.id,()=>A((e=>({event:"header_category_click",owner:"de.idealo.tyrell",version:"1-0-0",data:{category_id:e}}))(i)))()};return ae("ul",{className:"i-navigation-list i-navigation-list--main",role:"menu"},e.map((e=>ae("li",{className:"i-navigation-list-item "+(e.id===n?"i-navigation-list-item--active":""),role:"none","data-main-id":"{{navItem.id}}","data-tracking-id":"i-header-topcategory"},ae("a",{className:"i-navigation-list-link",href:e.url,onClick:i(e),role:"menuitem"},e.name)))))},ot=({isSubCategoryView:e,setIsSubCategoryView:t,setIsOpen:n})=>ae("div",{className:"i-navigation-overlay-header"},ae("button",{className:"i-navigation-overlay-btn i-navigation-overlay-btn--close",type:"button",onClick:i=>{i.stopPropagation(),e?t(!1):n(!1)}},ae("span",{className:"i-navigation-overlay-btn-display i-navigation-overlay-btn-display--close"},ae("svg",{version:"1.1",xmlns:"http://www.w3.org/2000/svg",x:"0",y:"0",width:"16",height:"16",viewBox:"0 0 16 16"},ae("path",{d:"M14.7,14L14,14.7c-0.2,0.2-0.5,0.2-0.7,0l-12-12C1.1,2.5,1.1,2.2,1.3,2L2,1.3c0.2-0.2,0.5-0.2,0.7,0l12,12C14.9,13.5,14.9,13.8,14.7,14z"}),ae("path",{d:"M2,14.7L1.3,14c-0.2-0.2-0.2-0.5,0-0.7l12-12c0.2-0.2,0.5-0.2,0.7,0L14.7,2c0.2,0.2,0.2,0.5,0,0.7l-12,12C2.5,14.9,2.2,14.9,2,14.7z"})),ae("span",null,et.mobileCloseButton)),ae("span",{className:"i-navigation-overlay-btn-display i-navigation-overlay-btn-display--back"},ae("svg",{version:"1.1",xmlns:"http://www.w3.org/2000/svg",x:"0",y:"0",width:"16",height:"16",viewBox:"0 0 16 16"},ae("polygon",{points:"11,13 9.889,13 5.345,8.052 9.847,3 10.942,3 6.448,8.043"})),ae("span",null,et.mobileBackButton))));const rt=({isOpen:e,setIsOpen:t})=>{const[n,i]=We([]),[o,r]=We(null),[a,l]=We([]),[s,c]=We(!1);je((()=>{(async function(){const e=document.querySelector("[data-navigation-url]")?.getAttribute("data-navigation-url");return e?(await window.fetch(e)).json():{navItems:[]}})().then((e=>{i(e.navItems);const t=document.querySelector("meta[name='navigation']"),n=t?.getAttribute("data-mainid"),o=t?.getAttribute("data-subids");n&&o?(r(n),l(JSON.parse(o))):r(e.navItems[0].id)}))}),[]);const u=n.find((e=>e.id===o));return!e||n.length<1?null:ae("div",{className:"i-navigation-overlay "+(s?"i-navigation-overlay--has-selection":""),role:"menu","aria-hidden":"false"},ae(ot,{isSubCategoryView:s,setIsSubCategoryView:c,setIsOpen:t}),ae("nav",{className:"i-navigation-overlay-wrapper"},ae(it,{navItems:n,setSelectedTopLevelCategory:e=>{r(e),c(!0)},selectedTopLevelCategoryId:o}),ae(nt,{topLevelNavItem:u,selectedSubCategoriesIds:a})))},at="i-navigation";const lt=()=>{const[n,i]=We(!1);je((()=>{!function(n,i){window.document.addEventListener("keydown",(e=>{const t="Escape"===e.key||"Esc"===e.key||27===e.keyCode||27===e.which;n&&t&&i(!1)})),window.document.addEventListener(t,(()=>{i(!1)})),window.document.addEventListener(e,(e=>{e.detail.iSender!==at&&i(!1)}))}(n,i)}),[]);return ae("div",{className:`i-navigation ${n&&"i-navigation--overlay-open i-navigation--active"}`},ae("a",{id:"i-header-navigation",className:"i-navigation-link","aria-expanded":n,"aria-haspopup":"true","aria-label":et.title,"aria-pressed":n,role:"button",href:et.hyperLinkDomain+et.hyperLinkPath,title:et.title,onClick:t=>{t.stopPropagation(),t.preventDefault(),n||function(){const t=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:{iSender:at}});window.document.dispatchEvent(t)}(),i(!n),H()}},ae(Ye,{isOpen:n}),ae("span",{className:"i-navigation-text"},et.title)),ae(rt,{isOpen:n,setIsOpen:i}))},st=(()=>{const e=document.querySelector("[data-country]")?.getAttribute("data-country");return"AT"===e?{search_placeholder:"Ich suche ...",suggestions:"Suchvorschläge",recent:"zuletzt gesucht",trending:"Beliebte Suchen",trending_badge:"BELIEBT",submit:"Suchen",cancel:"Abbrechen",delete_all:"Alle löschen",locale:"de-AT"}:"GB"===e?{search_placeholder:"Search idealo ...",suggestions:"Suggested Searches",recent:"recent searches",trending:"Popular Searches",trending_badge:"POPULAR",submit:"Search",cancel:"Cancel",delete_all:"Delete all",locale:"en-UK"}:"FR"===e?{search_placeholder:"Rechercher ...",suggestions:"Suggestions de recherche",recent:"dernières recherches",trending:"Recherches populaires",trending_badge:"POPULAIRE",submit:"Chercher",cancel:"Abandonner",delete_all:"Tout supprimer",locale:"fr-FR"}:"ES"===e?{search_placeholder:"Buscar ...",suggestions:"Sugerencias de búsqueda",recent:"búsquedas recientes",trending:"Búsquedas populares",trending_badge:"POPULAR",submit:"Buscar",cancel:"Abortar",delete_all:"Eliminar todo",locale:"es-ES"}:"IT"===e?{search_placeholder:"Cerca ...",suggestions:"Suggerimenti di ricerca",recent:"ultime ricerche",trending:"Più cercati",trending_badge:"DI TENDENZA",submit:"Cerca",cancel:"Abortire",delete_all:"Cancella tutto",locale:"it-IT"}:{search_placeholder:"Ich suche ...",suggestions:"Suchvorschläge",recent:"zuletzt gesucht",trending:"Beliebte Suchen",trending_badge:"BELIEBT",submit:"Suchen",cancel:"Abbrechen",delete_all:"Alle löschen",locale:"de-DE"}})(),ct=e=>{e.stopPropagation()},ut=({searchValue:e,isOverlayOpen:t,submitActionUrl:n,onInputClick:i,onSearchValueChange:o,onSubmit:r,onKeyDown:a,searchInputRef:l,putFocusOnInput:s})=>ae("form",{id:"i-header-search",className:"i-search-form",role:"search","aria-expanded":t,"aria-haspopup":"true",action:n,method:"get",onClick:ct,onSubmit:r},ae("label",{className:"i-search-label",htmlFor:"i-search-input"}),ae("input",{type:"search",className:"i-search-input",id:"i-search-input",name:"q",value:e,placeholder:st.search_placeholder,autoComplete:"off",autoCapitalize:"off",spellcheck:!1,onClick:i,onInput:e=>o(e.currentTarget.value),onKeyDown:a,ref:l}),ae("button",{type:"reset",className:"i-search-button i-search-button--cancel",title:st.cancel,onClick:()=>{B((e=>({event:"searchbar_delete_click",owner:"de.idealo.tyrell",version:"1-0-0",data:{search_query:{search_query:e}}}))(e)),o(""),s()}},ae("span",null,ae("svg",{version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},ae("path",{d:"M22.414 19.586a2 2 0 11-2.828 2.828L12 14.828l-7.586 7.586a2 2 0 01-2.828-2.828L9.172 12 1.586 4.414a2 2 0 012.828-2.828L12 9.172l7.586-7.586a2 2 0 112.828 2.828L14.828 12z"})))),ae("button",{type:"submit",className:"i-search-button i-search-button--submit",title:st.submit,onMouseUp:()=>A((e=>({event:"searchbar_click",owner:"de.idealo.tyrell",version:"1-1-0",data:{click_type:"magnifier",search_query:{search_query:e}}}))(e))},ae("span",null,ae("svg",{version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},ae("path",{d:"M22.658,21.28,17.9,16.522a9.558,9.558,0,1,0-1.424,1.4l4.768,4.768a1,1,0,1,0,1.414-1.414ZM3.049,10.513a7.5,7.5,0,1,1,7.5,7.5A7.509,7.509,0,0,1,3.049,10.513Z"}))))),_t=({title:e,children:t})=>ae("div",{className:"i-suggest-title"},ae("span",{className:"i-suggest-text",id:"i-suggest-list-title"},e),t),dt=({items:e,showIcon:t,type:n,onItemClickFactory:i,onAutoCompleteClick:o,activeSuggestionIndex:r})=>ae("ol",{className:"i-suggest-list",role:"menu","aria-describedby":`i-suggest-list-title--${n}`},e.map(((e,a)=>ae("li",{className:`i-suggest-item ${a===r&&"i-suggest-item--active"}`,role:"none"},ae("a",{className:"i-suggest-link",href:e.url,role:"menuitem","data-tracking-id":`i-header-suggest-link--${n}`,title:e.titleFull,onClick:i(e.titlePlain,e.url,e.location)},t&&ae("svg",{className:"i-suggest-icon i-suggest-icon--recent",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},ae("path",{d:"M13,7.96v5h2a1,1,0,0,1,0,2H12a1,1,0,0,1-1-1v-6a1,1,0,1,1,2,0Zm-1-7A10.963,10.963,0,0,0,4.05,4.373V2.96a1,1,0,1,0-2,0V6.92a1,1,0,0,0,1,1l3.954.04a1,1,0,0,0,0-2l-1.68-.023A8.957,8.957,0,1,1,3.01,12.958h0a1,1,0,1,0-2,0A11.022,11.022,0,1,0,12,.96Z"})),ae("div",{className:"i-suggest-details"},ae("span",{className:"i-suggest-name"},e.tokens?.map((e=>e.isMatch?ae("mark",null,e.substring):e.substring))),!!e.location&&ae("span",{className:"i-suggest-meta"}," - ",e.location),!!e.trending&&ae("span",{className:"i-suggest-trending-badge"},st.trending_badge))),ae("div",{className:"i-suggest-autocomplete-btn","aria-label":"autocompletion button",role:"button",onClick:t=>{t.stopPropagation(),o(e.titlePlain)}},ae("svg",{className:"i-suggest-icon i-suggest-icon--autocomplete",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},ae("path",{d:"m10.293,18.707l-6-6c-.195-.195-.293-.451-.293-.707s.098-.512.293-.707l6-6c.391-.391,1.023-.391,1.414,0s.391,1.023,0,1.414l-4.293,4.293h11.586c.553,0,1,.447,1,1s-.447,1-1,1H7.414l4.293,4.293c.391.391.391,1.023,0,1.414s-1.023.391-1.414,0Z"}))))))),ht=()=>{let e=!1;try{const t=JSON.parse(window.localStorage.getItem("ucData"));e=Object.values(t.consent.services).find((e=>"Idealo"===e.name))?.consent??!1}catch(e){}return e},pt="idealo_search_history",mt=()=>JSON.parse(localStorage.getItem(pt))||[],gt=e=>{localStorage.setItem(pt,JSON.stringify(e))},ft=e=>Date.now()-e.date<2592e6,vt=e=>{if(!ht())return[];const t=mt().filter(ft);return gt(t),t.map((t=>((e,t)=>({titlePlain:e.title,titleFull:e.location?`${e.title} - ${e.location}`:e.title,date:e.date,url:e.url||`${t}?q=${encodeURIComponent(e.title)}`,location:e.location}))(t,e)))},yt=(e,t,n)=>{if(!e||!ht())return;const i={title:e,date:Date.now(),url:t,location:n},o=mt().filter((e=>e.title!==i.title)),r=[i,...o].slice(0,10);gt(r)},wt=({suggestionItems:e,trendingItems:t,recentItems:n,onSearchValueChange:i,onDeleteRecentItems:o,activeSuggesterEntryIndex:r})=>{const a=(e,t)=>()=>{yt(e,t),A((e=>({event:"searchbar_popular_searches_click",owner:"de.idealo.tyrell",version:"1-0-0",data:{search_query:{search_query:e}}}))(e))},l=n?.length||0;return ae("nav",{className:"i-suggest i-suggester-entries"},!e?.length&&ae("div",{className:"i-suggest-trending"},ae("div",{className:"fade-away"}),ae(_t,{title:st.trending}),ae("ol",{className:"i-suggest-trending-list",role:"menu"},t?.map((e=>ae("li",{className:"i-suggest-trending-list-item",role:"none"},ae("a",{className:"i-suggest-trending-link",href:e.url,role:"menuitem",title:e.query,onClick:a(e.query,e.url)},ae("span",{className:"i-suggest-trending-name"},e.query))))))),!!n?.length&&ae(se,null,ae(_t,{title:st.recent},ae("button",{className:"i-suggest-button-delete",onClick:()=>{o(),localStorage.removeItem(pt),A(P)}},st.delete_all)),ae(dt,{items:n,showIcon:!0,type:"RECENT",onItemClickFactory:(e,t,n)=>()=>{yt(e,t,n),A((e=>({event:"searchbar_last_seen_click",owner:"de.idealo.tyrell",version:"1-0-0",data:{search_query:{search_query:e}}}))(e))},onAutoCompleteClick:i,activeSuggestionIndex:r})),!!e?.length&&ae(se,null,ae(_t,{title:st.suggestions}),ae(dt,{items:e,showIcon:!1,type:"SUGGESTION",onItemClickFactory:(e,t,n)=>()=>{yt(e,t,n),A((e=>({event:"searchbar_suggester_click",owner:"de.idealo.tyrell",version:"1-0-0",data:{search_query:{search_query:e}}}))(e))},onAutoCompleteClick:i,activeSuggestionIndex:r-l})))};function bt(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const kt=3e3;class St{constructor(){bt(this,"abortController",void 0),this.abortController=null}async fetchWithTimeout(e,t={}){const{timeout:n=kt}=t,i=new AbortController;this.abortController=i;const o=setTimeout((()=>{i.abort()}),n),r=await window.fetch(e,{...t,signal:this.abortController.signal});clearTimeout(o);return await r.json()}cancelRequest(){this.abortController?.abort()}isRequestCancelled(){return this.abortController?.signal?.aborted??!1}}const It=e=>e.toLowerCase().split(" ").filter((e=>e.length>0)),Et=(e,t)=>{if(!t)return!0;return It(t).reduce(((t,n)=>e.toLowerCase().includes(n)&&t),!0)},Ct=(e,t)=>{if(!t||!Et(e,t))return[{substring:e,isMatch:!1}];const n=((e,t)=>{let n=0;return t.map((t=>{const i=e.substring(n).toLowerCase().indexOf(t);if(i<0)return null;const o={start:n+i,length:t.length,end:n+i+t.length};return n=o.end,o})).filter((e=>null!==e))})(e,It(t));return((e,t)=>{const n=[];return t.forEach(((i,o)=>{const r=t[o-1]?.end||0,a={substring:e.substr(r,i.start-r),isMatch:!1},l={substring:e.substr(i.start,i.length),isMatch:!0};n.push(a),n.push(l)})),n.push({substring:e.substr(t[t.length-1]?.end),isMatch:!1}),n.filter((e=>!!e.substring))})(e,n)},Nt=({isOverlayOpen:e,isLoading:t,recentItems:n,suggestionItems:i,searchValue:o,onSearchValueChange:r,onDeleteRecentItems:a,activeSuggesterEntryIndex:l})=>{const[s,c]=We([]);return je((()=>{(async function(){const e=window.document.querySelector("#i-search-wrapper"),t=e.getAttribute("data-country"),n=e.getAttribute("data-trending-url"),i=new St;let o;try{o=await i.fetchWithTimeout(n)}catch(e){return[]}const r=function(e){return"https://www.idealo."+{DE:"de/preisvergleich/MainSearchProductCategory",AT:"at/preisvergleich/MainSearchProductCategory",FR:"fr/prechcat",ES:"es/resultados",GB:"co.uk/mscat",IT:"it/risultati"}[e]+".html?q="}(t),a=function(e,t){return e.map((e=>({...e,url:t+e.query})))}(o.queries,r);return function(e){const t=10;return e.sort(((e,t)=>t.popularity-e.popularity)).slice(0,t)}(a)})().then((e=>c(e)))}),[]),ae("div",{className:"i-search-overlay","aria-atomic":"true","aria-live":"polite","aria-hidden":!e,role:"status"},ae("div",{className:"i-search-progress-bar "+(t?"i-search-progress-bar--loading":"")}),ae(wt,{suggestionItems:i.map((e=>({...e,tokens:Ct(e.titlePlain,o)}))),trendingItems:s,recentItems:n.map((e=>({...e,tokens:Ct(e.titlePlain,o)}))),onSearchValueChange:r,onDeleteRecentItems:a,activeSuggesterEntryIndex:l}))},Lt=window.document.querySelector("[data-suggest-host]"),Tt=Lt?.getAttribute("data-suggest-host"),Pt=new St,xt=window.matchMedia("\n screen and (min-height: 600px)\n and (orientation: landscape),\n screen and (min-width: 600px)\n and (orientation: portrait)\n ").matches||!1;async function At(e){Pt.cancelRequest();const t=e.trim();if(!t?.length)return[];const n=function(e){return`${Tt}/suggest?q=${encodeURIComponent(e)}&max=${xt?10:6}`}(e),i=await Pt.fetchWithTimeout(n);return i.groups[0]?.items||[]}const Bt="i-search",Ot=()=>{const[n,i]=We(!1),[o,r]=We([]),[a,l]=We([]),[s,c]=We(""),[u,_]=We(null),[d,h]=We(0),[p,m]=We(!1),g=function(e){return Be=5,Ve((function(){return{current:e}}),[])}(null),f=window.document.querySelector("#i-search-wrapper").getAttribute("data-submit-action-url"),v=o.filter((({titlePlain:e})=>Et(e,s)));function y(){(()=>{const t=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:{iSender:Bt}});window.document.dispatchEvent(t)})(),i(!0),B(x)}je((()=>{(n=>{window.document.addEventListener(e,(e=>{e.detail.iSender!==Bt&&n(!1)})),window.document.addEventListener(t,(()=>{n(!1)})),window.document.addEventListener("click",(e=>{2===e?.button||n(!1)}))})(i);const n=vt(f);r(n);const{hasFocus:o,searchTerm:a}=(()=>{const e=window.document.querySelector('meta[name="search"]')||null;return{searchTerm:e?.getAttribute("data-searchterm")?.trim()||"",hasFocus:"true"===e?.getAttribute("data-focused")}})();c(a),a&&b(a),o&&E()}),[]);const w=async e=>{n||y(),c(e),_(null),e.trim()&&setTimeout((()=>{m(!0)})),await b(e),m(!1)},b=async e=>{try{const t=await At(e);l(t),h(0)}catch(e){e instanceof DOMException&&(e.code,e.ABORT_ERR)}},k=e=>((e,t)=>(e%t+t)%t)(e,(a?.length||0)+(v?.length||0)+1)-1,S=e=>{const t=I(e);return t?t.titlePlain:null},I=e=>{const t=k(e);return t>=0?[...v,...a][t]:null},E=()=>{g.current?.focus()};return ae("div",{className:"i-search "+(n?"i-search--overlay-open":"")},ae(ut,{searchValue:u||s,isOverlayOpen:n,submitActionUrl:f,onInputClick:y,onSearchValueChange:w,onSubmit:()=>{const e=s.trim();c(e),yt(e)},onKeyDown:e=>{if(13===e.keyCode){const t=I(d);if(t)e.preventDefault(),yt(t.titlePlain,t.url,t.location),$(t.titlePlain),window.location.href=t.url;else{const e=S(d);e&&c(e),$(s)}}if(40===e.keyCode){const e=d+1,t=S(e);_(t),h(e)}if(38===e.keyCode){e.preventDefault();const t=d-1,n=S(t);_(n),h(t)}},searchInputRef:g,putFocusOnInput:E}),ae(Nt,{isOverlayOpen:n,isLoading:p,recentItems:v,suggestionItems:a,searchValue:s,onSearchValueChange:e=>{w(e),E()},onDeleteRecentItems:()=>{r([])},activeSuggesterEntryIndex:k(d)}))};function Dt(){return"undefined"==typeof navigator?"":navigator.userAgent||""}var qt=function(e){return e.HOME_PAGE="mainproductcategory",e.OFFER_PAGE="offersofproduct",e}(qt||{});const Ht=async()=>{if(null!==document.querySelector('meta[name="sev"][content="true"]')||!(()=>{if(window.innerWidth>=600)return!1;const e=Dt();return!/(tablet|ipad|playbook|silk)|(android(?!.*mobile))/i.test(e)})()||!(()=>{const e=Dt();return/android/i.test(e)})())return;const e=function(e){const t=`${e}=`,n=document.cookie.split(";");for(let e=0;e<n.length;e++){const i=n[e].trim();if(0===i.indexOf(t))return decodeURIComponent(i.substring(t.length))}return null}("appBannerShown");if("true"===e)return;const t=document.getElementById("i-app-banner"),n=document.getElementById("i-app-banner-close"),i=document.getElementById("i-app-banner-button"),o=document.getElementById("i-app-banner-icon");if(!t||!n)return;t.style.display="flex";const r=document.querySelector("body")?.id,a=()=>{var e,n,i;e="appBannerShown",n="true",i=1209600,document.cookie=`${e}=${n}; max-age=${i}; path=/; SameSite=Lax`,t.style.display="none"},l=()=>{a(),A(T),window.location.href=(()=>{let e="https://idealo.go.link/2Ghi0";return r===qt.HOME_PAGE?e="https://idealo.go.link/26XfK":r===qt.OFFER_PAGE&&(e="https://idealo.go.link/jgm0e"),e})()};i&&i.addEventListener("click",(e=>{e.preventDefault(),l()})),o&&o.addEventListener("click",(e=>{e.preventDefault(),l()})),n.addEventListener("click",(()=>{a()}))};new l,(()=>{const e=document.querySelector(".i-header-navigation"),t=document.querySelector(".i-navigation");Le(ae(lt,null),e,t)})(),(()=>{const e=document.querySelector("#i-search-wrapper"),t=document.querySelector(".i-search");Le(ae(Ot,null),e,t)})(),w(),F('[data-tracking-id="i-header-flights"]',O),F('[data-tracking-id="i-header-magazin"]',D),F('[data-tracking-id="i-header-logo"]',q),F('[data-tracking-id="i-navigation"]',H),F(".i-header-slot--wishlist",R),F(".i-header-slot--priceAlert",U),F("#i-header-bf-badge",M),Ht()})()})();
//]]></script>
</div>
</header><div class="breadcrumb-wrapper row">
<div class="small-12 columns">
<div class="breadcrumb" data-breadcrumb="" itemscope="" itemtype="http://schema.org/BreadcrumbList">
<a class="breadcrumb-link breadcrumb-link--home" data-type="home" href="/">
<span class="svg-icon svg-baseline">
<svg width="16" height="19" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<use href="/cdn/storage/offerpage/assets/offerpage/images/idealo-icons.7b411624cc016b71add610e57db8b8a1.svg#house_filled"></use>
</svg>
</span>
</a>
<span class="breadcrumb-leaf" itemprop="itemListElement" itemscope="" itemtype="http://schema.org/ListItem">
<span class="breadcrumb-leafSeparator svg-icon">
<svg width="8" height="8" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<use href="/cdn/storage/offerpage/assets/offerpage/images/idealo-icons.7b411624cc016b71add610e57db8b8a1.svg#chevron_right"></use>
</svg>
</span>
<a class="breadcrumb-link breadcrumb-link--leaf" itemscope="" itemtype="http://schema.org/Thing" itemprop="item" id="/preisvergleich/SubProductCategory/3932.html" href="/preisvergleich/SubProductCategory/3932.html">
<span class="breadcrumb-linkText" itemprop="name">Drogerie &amp; Gesundheit</span>
</a>
<meta itemprop="position" content="1"/>
</span>
<span class="breadcrumb-leaf" itemprop="itemListElement" itemscope="" itemtype="http://schema.org/ListItem">
<span class="breadcrumb-leafSeparator svg-icon">
<svg width="8" height="8" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<use href="/cdn/storage/offerpage/assets/offerpage/images/idealo-icons.7b411624cc016b71add610e57db8b8a1.svg#chevron_right"></use>
</svg>
</span>
<a class="breadcrumb-link breadcrumb-link--leaf" itemscope="" itemtype="http://schema.org/Thing" itemprop="item" id="/preisvergleich/SubProductCategory/14476.html" href="/preisvergleich/SubProductCategory/14476.html">
<span class="breadcrumb-linkText" itemprop="name">Sanitätshaus &amp; Klinikbedarf</span>
</a>
<meta itemprop="position" content="2"/>
</span>
<span class="breadcrumb-leaf" itemprop="itemListElement" itemscope="" itemtype="http://schema.org/ListItem">
<span class="breadcrumb-leafSeparator svg-icon">
<svg width="8" height="8" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<use href="/cdn/storage/offerpage/assets/offerpage/images/idealo-icons.7b411624cc016b71add610e57db8b8a1.svg#chevron_right"></use>
</svg>
</span>
<a class="breadcrumb-link breadcrumb-link--leaf" itemscope="" itemtype="http://schema.org/Thing" itemprop="item" id="/preisvergleich/ProductCategory/18874.html" href="/preisvergleich/ProductCategory/18874.html">
<span class="breadcrumb-linkText" itemprop="name">Rollstühle &amp; Gehhilfen</span>
</a>
<meta itemprop="position" content="3"/>
</span>
</div>
</div>
</div>
<main class="pageContent-wrapper">
<script data-testid="Product" type="application/ld+json">
{"@context":"http://schema.org","@type":"Product","name":"Mobilis Elektrorollstuhl M45 Air rot","offers":{"@type":"AggregateOffer","lowPrice":6780.0,"highPrice":6780.0,"priceCurrency":"EUR","offerCount":1,"availability":"https://schema.org/InStock","itemCondition":"https://schema.org/NewCondition"},"brand":{"@type":"Brand","name":"Mobilis"},"image":["https://cdn.idealo.com/folder/Product/202740/3/202740303/s1_produktbild_gross/mobilis-elektrorollstuhl-m45-air-rot.jpg","https://cdn.idealo.com/folder/Product/202740/3/202740303/s1_produktbild_gross_1/mobilis-elektrorollstuhl-m45-air-rot.jpg","https://cdn.idealo.com/folder/Product/202740/3/202740303/s1_produktbild_gross_2/mobilis-elektrorollstuhl-m45-air-rot.jpg"],"description":"Bereits ab 6.780,00 € ✓ Große Shopvielfalt ✓ Testberichte & Meinungen ✓ | Jetzt Mobilis Elektrorollstuhl M45 Air rot günstig kaufen bei idealo.de","url":"https://www.idealo.de/preisvergleich/OffersOfProduct/202740303_-elektrorollstuhl-m45-air-rot-mobilis.html","sku":"4026411584423","gtin":"4026411584423"}</script>
<script data-testid="ProductGroup" type="application/ld+json">
{"@context":"https://schema.org","@type":"ProductGroup","@id":"https://www.idealo.de/preisvergleich/OffersOfProduct/202740303_-elektrorollstuhl-m45-air-rot-mobilis.html","url":"https://www.idealo.de/preisvergleich/OffersOfProduct/202740303_-elektrorollstuhl-m45-air-rot-mobilis.html","name":"Mobilis Elektrorollstuhl M45 Air rot","brand":{"@type":"Brand","name":"Mobilis"},"image":["https://cdn.idealo.com/folder/Product/202740/3/202740303/s1_produktbild_max/mobilis-elektrorollstuhl-m45-air-rot.jpg"],"productGroupID":"202740303","hasVariant":[{"@type":"Product","@id":"https://www.idealo.de/preisvergleich/OffersOfProduct/202740303_-elektrorollstuhl-m45-air-rot-mobilis.html","url":"https://www.idealo.de/preisvergleich/OffersOfProduct/202740303_-elektrorollstuhl-m45-air-rot-mobilis.html","name":"Mobilis Elektrorollstuhl M45 Air rot","sku":"4026411584423","offers":{"@type":"AggregateOffer","highPrice":6780.0,"itemCondition":"https://schema.org/NewCondition","lowPrice":6780.0,"offerCount":1,"priceCurrency":"EUR"}}]}</script>
<div hidden="" data-recentproducts="{&#34;emptyText&#34;:&#34;Du hast noch keine Produkte angeschaut&#34;,&#34;id&#34;:&#34;202740303&#34;,&#34;idType&#34;:&#34;PRODUCT&#34;,&#34;productName&#34;:&#34;Mobilis Elektrorollstuhl M45 Air rot&#34;,&#34;productUrl&#34;:&#34;/preisvergleich/OffersOfProduct/202740303_-elektrorollstuhl-m45-air-rot-mobilis.html&#34;,&#34;productImage&#34;:&#34;https://cdn.idealo.com/folder/Product/202740/3/202740303/s1_produktbild_mittelgross/mobilis-elektrorollstuhl-m45-air-rot.jpg&#34;,&#34;siteId&#34;:1,&#34;price&#34;:678000}"> </div>
<div class="oopStage
">
<div class="oopStage-wrapper columns
">
<div class="oopStage-wrapper-gallery row">
<div class="small-3 columns hide-for-xlarge text-center">
</div>
<div class="oopStage-gallery small-6 xlarge-12 columns">
<div class="sales-badge-container">
</div>
<div class="simple-carousel">
<div class="simple-carousel-thumbnails">
<div class="simple-carousel-thumbnail-wrapper" data-trx-click="gallery_interaction;2-0-0;koopa" data-trx-click-data="{&#34;event_type&#34;:&#34;click&#34;,&#34;target_element&#34;:&#34;carousel&#34;,&#34;location&#34;:&#34;gallery_small&#34;,&#34;media_type&#34;:&#34;image&#34;}">
<img class="selected" loading="lazy" width="50" height="42" src="//cdn.idealo.com/folder/Product/202740/3/202740303/s1_produktbild_klein/mobilis-elektrorollstuhl-m45-air-rot.jpg" alt="Mobilis Elektrorollstuhl M45 Air rot"/>
</div>
<div class="simple-carousel-thumbnail-wrapper" data-trx-click="gallery_interaction;2-0-0;koopa" data-trx-click-data="{&#34;event_type&#34;:&#34;click&#34;,&#34;target_element&#34;:&#34;carousel&#34;,&#34;location&#34;:&#34;gallery_small&#34;,&#34;media_type&#34;:&#34;image&#34;}">
<img loading="lazy" width="50" height="42" src="//cdn.idealo.com/folder/Product/202740/3/202740303/s1_produktbild_klein_1/mobilis-elektrorollstuhl-m45-air-rot.jpg" alt=""/>
</div>
<div class="simple-carousel-thumbnail-wrapper" data-trx-click="gallery_interaction;2-0-0;koopa" data-trx-click-data="{&#34;event_type&#34;:&#34;click&#34;,&#34;target_element&#34;:&#34;carousel&#34;,&#34;location&#34;:&#34;gallery_small&#34;,&#34;media_type&#34;:&#34;image&#34;}">
<img loading="lazy" width="50" height="42" src="//cdn.idealo.com/folder/Product/202740/3/202740303/s1_produktbild_klein_2/mobilis-elektrorollstuhl-m45-air-rot.jpg" alt=""/>
</div>
</div>
<div class="simple-carousel-slides">
<div class="simple-carousel-item" id="slide-0" data-trx-click="gallery_interaction;2-0-0;koopa" data-trx-click-data="{&#34;event_type&#34;:&#34;click&#34;,&#34;target_element&#34;:&#34;image&#34;,&#34;location&#34;:&#34;gallery_small&#34;}">
<img src="//cdn.idealo.com/folder/Product/202740/3/202740303/s1_produktbild_gross/mobilis-elektrorollstuhl-m45-air-rot.jpg" alt="Mobilis Elektrorollstuhl M45 Air rot" width="240" height="200"/>
</div>
<div class="simple-carousel-item" id="slide-1" data-trx-click="gallery_interaction;2-0-0;koopa" data-trx-click-data="{&#34;event_type&#34;:&#34;click&#34;,&#34;target_element&#34;:&#34;image&#34;,&#34;location&#34;:&#34;gallery_small&#34;}">
<img loading="lazy" src="//cdn.idealo.com/folder/Product/202740/3/202740303/s1_produktbild_gross_1/mobilis-elektrorollstuhl-m45-air-rot.jpg" alt="" width="240" height="200"/>
</div>
<div class="simple-carousel-item" id="slide-2" data-trx-click="gallery_interaction;2-0-0;koopa" data-trx-click-data="{&#34;event_type&#34;:&#34;click&#34;,&#34;target_element&#34;:&#34;image&#34;,&#34;location&#34;:&#34;gallery_small&#34;}">
<img loading="lazy" src="//cdn.idealo.com/folder/Product/202740/3/202740303/s1_produktbild_gross_2/mobilis-elektrorollstuhl-m45-air-rot.jpg" alt="" width="240" height="200"/>
</div>
</div>
<div class="simple-carousel-nav next" data-trx-click="gallery_interaction;2-0-0;koopa" data-trx-click-data="{&#34;event_type&#34;:&#34;click&#34;,&#34;target_element&#34;:&#34;nav&#34;,&#34;location&#34;:&#34;gallery_small&#34;}">
<div class="svg-icon">
<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<use href="/cdn/storage/offerpage/assets/offerpage/images/idealo-icons.7b411624cc016b71add610e57db8b8a1.svg#chevron_right"></use>
</svg>
</div>
</div>
<div class="simple-carousel-nav prev disabled" data-trx-click="gallery_interaction;2-0-0;koopa" data-trx-click-data="{&#34;event_type&#34;:&#34;click&#34;,&#34;target_element&#34;:&#34;nav&#34;,&#34;location&#34;:&#34;gallery_small&#34;}">
<div class="svg-icon">
<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<use href="/cdn/storage/offerpage/assets/offerpage/images/idealo-icons.7b411624cc016b71add610e57db8b8a1.svg#chevron_right"></use>
</svg>
</div>
</div>
<div class="simple-carousel-radio-button-wrapper hide-for-xxlarge">
<div class="simple-carousel-radio-button-inner-wrapper">
<label class="input-wrapper">
<input class="simple-carousel-input" type="radio" name="nav" checked=""/>
<span class="radio-fill"></span>
</label>
<label class="input-wrapper">
<input class="simple-carousel-input" type="radio" name="nav"/>
<span class="radio-fill"></span>
</label>
<label class="input-wrapper">
<input class="simple-carousel-input" type="radio" name="nav"/>
<span class="radio-fill"></span>
</label>
</div>
</div>
</div>
<div id="splide-gallery" class="splide hide-for-all slider sliderContainer withLeadoutBox" role="group" aria-label="Splide Gallery">
<div class="overflow">
<div class="splide__track container">
<ul class="splide__list">
<li class="splide__slide rsSlide">
<img src="//cdn.idealo.com/folder/Product/202740/3/202740303/s1_produktbild_max/mobilis-elektrorollstuhl-m45-air-rot.jpg" alt="Mobilis Elektrorollstuhl M45 Air rot" loading="lazy"/>
</li>
<li class="splide__slide rsSlide">
<img src="//cdn.idealo.com/folder/Product/202740/3/202740303/s1_produktbild_max_1/mobilis-elektrorollstuhl-m45-air-rot.jpg" alt="" loading="lazy"/>
</li>
<li class="splide__slide rsSlide">
<img src="//cdn.idealo.com/folder/Product/202740/3/202740303/s1_produktbild_max_2/mobilis-elektrorollstuhl-m45-air-rot.jpg" alt="" loading="lazy"/>
</li>
</ul>
</div>
<!-- Override navigation elements to add trx based click events -->
<div class="splide__arrows">
<button class="splide__arrow splide__arrow--prev" type="button" aria-label="Previous slide" aria-controls="splide-gallery-track" data-trx-click="gallery_interaction;2-0-0;koopa" data-trx-click-data="{&#34;event_type&#34;:&#34;click&#34;,&#34;target_element&#34;:&#34;nav&#34;,&#34;location&#34;:&#34;gallery_large&#34;}">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" width="40" height="40" focusable="false">
<use href="/cdn/storage/offerpage/assets/offerpage/images/idealo-icons.7b411624cc016b71add610e57db8b8a1.svg#chevron_right_sharp"></use>
</svg>
</button>
<button class="splide__arrow splide__arrow--next" type="button" aria-label="Next slide" aria-controls="splide-gallery-track" data-trx-click="gallery_interaction;2-0-0;koopa" data-trx-click-data="{&#34;event_type&#34;:&#34;click&#34;,&#34;target_element&#34;:&#34;nav&#34;,&#34;location&#34;:&#34;gallery_large&#34;}">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" width="40" height="40" focusable="false">
<use href="/cdn/storage/offerpage/assets/offerpage/images/idealo-icons.7b411624cc016b71add610e57db8b8a1.svg#chevron_right_sharp"></use>
</svg>
</button>
</div>
</div>
<div class="navigation thumbs thumbsVertical">
<div id="splide-thumbnails" class="splide">
<div class="splide__track">
<ul class="splide__list">
<li class="splide__slide">
<img data-trx-click="gallery_interaction;2-0-0;koopa" data-trx-click-data="{&#34;event_type&#34;:&#34;click&#34;,&#34;target_element&#34;:&#34;carousel&#34;,&#34;location&#34;:&#34;gallery_large&#34;,&#34;media_type&#34;:&#34;image&#34;}" src="//cdn.idealo.com/folder/Product/202740/3/202740303/s1_produktbild_klein/mobilis-elektrorollstuhl-m45-air-rot.jpg" alt="Mobilis Elektrorollstuhl M45 Air rot" loading="lazy"/>
</li>
<li class="splide__slide">
<img data-trx-click="gallery_interaction;2-0-0;koopa" data-trx-click-data="{&#34;event_type&#34;:&#34;click&#34;,&#34;target_element&#34;:&#34;carousel&#34;,&#34;location&#34;:&#34;gallery_large&#34;,&#34;media_type&#34;:&#34;image&#34;}" src="//cdn.idealo.com/folder/Product/202740/3/202740303/s1_produktbild_klein_1/mobilis-elektrorollstuhl-m45-air-rot.jpg" alt="" loading="lazy"/>
</li>
<li class="splide__slide">
<img data-trx-click="gallery_interaction;2-0-0;koopa" data-trx-click-data="{&#34;event_type&#34;:&#34;click&#34;,&#34;target_element&#34;:&#34;carousel&#34;,&#34;location&#34;:&#34;gallery_large&#34;,&#34;media_type&#34;:&#34;image&#34;}" src="//cdn.idealo.com/folder/Product/202740/3/202740303/s1_produktbild_klein_2/mobilis-elektrorollstuhl-m45-air-rot.jpg" alt="" loading="lazy"/>
</li>
</ul>
</div>
<!-- Override navigation elements to add trx based click events -->
<div class="splide__arrows">
<button class="splide__arrow splide__arrow--prev" type="button" aria-label="Previous slide" aria-controls="splide-gallery-track" data-trx-click="gallery_interaction;2-0-0;koopa" data-trx-click-data="{&#34;event_type&#34;:&#34;click&#34;,&#34;target_element&#34;:&#34;thumbnail_nav&#34;,&#34;location&#34;:&#34;gallery_large&#34;}">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" width="40" height="40" focusable="false">
<use href="/cdn/storage/offerpage/assets/offerpage/images/idealo-icons.7b411624cc016b71add610e57db8b8a1.svg#chevron_right_sharp"></use>
</svg>
</button>
<button class="splide__arrow splide__arrow--next" type="button" aria-label="Next slide" aria-controls="splide-gallery-track" data-trx-click="gallery_interaction;2-0-0;koopa" data-trx-click-data="{&#34;event_type&#34;:&#34;click&#34;,&#34;target_element&#34;:&#34;thumbnail_nav&#34;,&#34;location&#34;:&#34;gallery_large&#34;}">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" width="40" height="40" focusable="false">
<use href="/cdn/storage/offerpage/assets/offerpage/images/idealo-icons.7b411624cc016b71add610e57db8b8a1.svg#chevron_right_sharp"></use>
</svg>
</button>
</div>
</div>
</div>
</div>
<span class="backButton-overlay-close backButton close-icon" data-trx-click="gallery_interaction;2-0-0;koopa" data-trx-click-data="{&#34;event_type&#34;:&#34;click&#34;,&#34;target_element&#34;:&#34;close&#34;,&#34;location&#34;:&#34;gallery_large&#34;}">
<svg width="22" height="22" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<use href="/cdn/storage/offerpage/assets/offerpage/images/idealo-icons.7b411624cc016b71add610e57db8b8a1.svg#closing_cross"></use>
</svg>
</span>
<div class="gallery-overlay-background" hidden=""></div>
<div class="leadoutbox" hidden="">
<div class="favouritesWrapper">
<div class="oopStage-actionFavourites">
<input type="hidden" id="wishlistHeartPin" value="Produkt auf Merkzettel speichern"/>
<input type="hidden" id="wishlistHeartUnpin" value="Produkt vom Merkzettel entfernen"/>
<button class="wishlist-heart" data-wishlist-heart="{&#34;id&#34;: &#34;202740303&#34;, &#34;type&#34;: &#34;PRODUCT&#34;}"></button>
</div>
</div>
<div class="leadoutbox-title">
Mobilis Elektrorollstuhl M45 Air rot</div>
<div class="leadoutbox-price">
<div class="leadoutbox-priceLabel">Günstigster Preis</div>
<a target="_blank" href="/relocator/relocate?categoryId=18874&amp;offerKey=5d61970ba4cab8f8d6495b06efadffd8&amp;price=6780.00&amp;productid=202740303&amp;sid=3040&amp;type=offer&amp;pos=-2" class="leadoutbox-priceAmount" rel="noopener nofollow">6.780,00 </a>
<span>zzgl. Versand</span>
<div class="leadoutbox-priceBase"></div>
</div>
<a target="_blank" href="/relocator/relocate?categoryId=18874&amp;offerKey=5d61970ba4cab8f8d6495b06efadffd8&amp;price=6780.00&amp;productid=202740303&amp;sid=3040&amp;type=offer&amp;pos=-2" class="button button--leadout expanded" rel="noopener nofollow">
Zum Shop</a>
<div class="leadoutbox-shop">Shop:
<a target="_blank" href="/relocator/relocate?categoryId=18874&amp;offerKey=5d61970ba4cab8f8d6495b06efadffd8&amp;price=6780.00&amp;productid=202740303&amp;sid=3040&amp;type=offer&amp;pos=-2" rel="noopener nofollow">otto.de</a>
</div>
<div class="button button--transparent expanded leadoutbox-moreOffersLink">
Weitere Angebote anzeigen</div>
</div>
</div>
<div class="small-3 columns hide-for-xlarge text-center oopStage-mobileColumnRight">
<div class="oopStage-actionFavourites">
<input type="hidden" id="wishlistHeartPin" value="Produkt auf Merkzettel speichern"/>
<input type="hidden" id="wishlistHeartUnpin" value="Produkt vom Merkzettel entfernen"/>
<button class="wishlist-heart" data-wishlist-heart="{&#34;id&#34;: &#34;202740303&#34;, &#34;type&#34;: &#34;PRODUCT&#34;}"></button>
</div>
</div>
</div>
<div class="oopStage-priceRangeCta row table">
<a data-scrolling-anchor="" href="#offerList" class="table-row hide-for-xlarge">
<p class="oopStage-priceRangeCtaRange">
6.780,00 </p>
<span class="oopStage-priceRangeCtaButton">
1 Angebot</span>
</a>
</div>
</div>
<div class="oopStage-details-header columns">
<div class="favouritesWrapper show-for-xlarge">
<div class="oopStage-actionFavourites">
<input type="hidden" id="wishlistHeartPin" value="Produkt auf Merkzettel speichern"/>
<input type="hidden" id="wishlistHeartUnpin" value="Produkt vom Merkzettel entfernen"/>
<button class="wishlist-heart" data-wishlist-heart="{&#34;id&#34;: &#34;202740303&#34;, &#34;type&#34;: &#34;PRODUCT&#34;}"></button>
</div>
</div>
<h1 id="oopStage-title" class="oopStage-title" translate="no" tabindex="0">
<span>Mobilis Elektrorollstuhl M45 Air rot</span>
</h1>
</div>
<div class="oopStage-details columns">
<div class="oopStage-metaInfo table" data-oop-stage="">
<a data-scrolling-anchor="" href="#offerList" class="oopStage-priceRange hide">
<span class="oopStage-priceRangeOffers">1 Angebot:</span>
<span class="oopStage-priceRangePrice">6.780,00 </span>
</a>
</div>
<div class="oopStage-sidebar hide-for-xlarge ">
<div class="oopStage-action">
<a href="#datasheet" class="oopStage-action-item oopStage-action-datasheet" data-sp-tracking="click" data-sp-tracking-meta="{&#34;event&#34;:&#34;product_details_click&#34;, &#34;version&#34;:&#34;1-1-0&#34;, &#34;owner&#34;:&#34;de.idealo.koopa&#34;}" data-scrolling-anchor="">
<div>
<div class="svg-icon svg-baseline svg-block ">
<svg class="oopStage-actionPricechartIcon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<use href="/cdn/storage/offerpage/assets/offerpage/images/idealo-icons.7b411624cc016b71add610e57db8b8a1.svg#datasheet_outline"></use>
</svg>
</div>
<span class="oopStage-actionIcon--text">
Produktdetails</span>
</div>
</a>
<div class="oopStage-action-item show-for-large-down">
<div class="oopStage-actionPricechart" onclick="document.dispatchEvent(new CustomEvent(&#39;triggerPriceChartModal&#39;, {detail: {productId: 202740303 }}))">
<div class="svg-icon svg-baseline svg-block">
<svg class="oopStage-actionIcon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<use href="/cdn/storage/offerpage/assets/offerpage/images/idealo-icons.7b411624cc016b71add610e57db8b8a1.svg#pricechart"></use>
</svg>
</div>
<span class="oopStage-actionIcon--text">Preisverlauf</span>
</div>
</div>
<div class="oopStage-action-item oopStage-actionPricewatcher-action button--pricewatcher priceAlertButton--unset" data-overlay="{
&#34;closeCaption&#34; : &#34;zurück&#34;,
&#34;contentLoad&#34; : &#34;/price-alert-overlay/site/1/product/202740303&#34;,
&#34;contentLoadBy&#34; : &#34;ajax&#34;,
&#34;titleCaption&#34; : &#34;Preiswecker stellen&#34;,
&#34;triggerOnClose&#34; : &#34;pricewatcher-close&#34;,
&#34;triggerOnOpen&#34; : &#34;pricewatcher-open&#34;,
&#34;triggerOpenEvent&#34; : &#34;externalOpener&#34;,
&#34;triggerCloseEvent&#34; : &#34;closeOverlay&#34;,
&#34;contentPaddingTop&#34; : &#34;63px&#34;,
&#34;forceOpen&#34; : &#34;true&#34;,
&#34;wrapperClass&#34; : &#34;pricewatcher&#34;
}">
<div class="svg-icon svg-baseline svg-block">
<svg class="oopStage-actionIcon priceAlertButton-icon--unset" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<use href="/cdn/storage/offerpage/assets/offerpage/images/idealo-icons.7b411624cc016b71add610e57db8b8a1.svg#alarmclock_outline"></use>
</svg>
<svg class="oopStage-actionIcon priceAlertButton-icon--set" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<use href="/cdn/storage/offerpage/assets/offerpage/images/idealo-icons.7b411624cc016b71add610e57db8b8a1.svg#alarmclock_filled"></use>
</svg>
</div>
<span class="oopStage-actionIcon--text priceAlertButton-text">Preiswecker</span>
</div>
</div>
</div>
<div class="oopStage-productInfo" data-oop-stage="">
<div class="small-12 collapse-both columns">
<div class="oopStage-productInfoTopItemWrapper">
<div class="oopStage-productInfoTopItems small-12 collapse-both columns">
<b>Produktübersicht:</b>
<span class="oopStage-productInfoTopItemWrapperDatasheetLink"><a id="productDetailsAnchor" href="#datasheet" data-scrolling-anchor="" data-sp-tracking="click" data-sp-tracking-meta="{&#34;event&#34;:&#34;product_details_click&#34;, &#34;version&#34;:&#34;1-1-0&#34;, &#34;owner&#34;:&#34;de.idealo.koopa&#34;}">
Produktdetails</a>
</span>
</div>
</div>
<div class="energyLabel-overlayContent">
</div>
</div>
<div class="oopStage-crossLinksTopItemWrapper small-12 collapse-both columns">
<span>
<b>Ähnliche Produkte:</b>
<span class="oopStage-crossLinksTopItem">
<a href="https://www.idealo.de/preisvergleich/ProductCategory/18874F2001437.html" rel="">
Elektrorollstuhl</a>
</span>
</span>
</div>
</div>
<div id="delta-filters">
</div>
<div id="filter-expand-button-show-more-1" style="display: none;">anzeigen</div>
<div id="filter-expand-button-show-more-2" style="display: none;"></div>
<div id="filter-expand-button-show-less" style="display: none;">weniger anzeigen</div>
<div id="local-offers-refresh-trigger" style="visibility: hidden" data-async-data="X9UvThqXYvnSo1j9qXDL_zaDyg9_A-MuZ6YtWKGR-yBnhrxkgI_pyTqb82X0K2L4T2wPUxp2QVljQmZegg_QNFJ6Qu0At4idkJoyGQQoc9vTKL8UssjyCi29NS7rxqtRc2JhWmxljy7X6aAN2jqeQHZSI-BY9DIuHrPoUvhxy8ywuNVY9_LsNSfIHHBJzysAPrB6pDgTVj1V4iVTO0KHggp5Q-Nw4LaCyoFVjYsT3GfwerhR-F6FLNGzVntEEYyiusjdBKNCG3eg7Z9LORWVaqiLXtsFHK0RQgnx-HaIpbZ5WjFglcH1kgAowsPTOimm5P0cKdH_kowOXeLsuieLHA" data-refresh-link="/offerpage/context/local/refresh/location/">
</div>
<div id="context-buttons" class="oopStage-productConditionContainer oopStage-productConditionContainer--visible-mobile">
</div>
</div>
<div class="oopStage-price-chart columns">
<div id="price-chart-wrapper" data-price-chart="{&#34;siteId&#34;: 1, &#34;productId&#34;: 202740303, &#34;abTests&#34;: []}">
<section id="loading-price-chart-skeleton" class="price-chart-skeleton show-for-xlarge">
<div class="newPriceChart--small price-chart-passive">
<div class="newPriceChart--smallHead">
<span class="newPriceChart--smallHeadTitle">Preisentwicklung</span>
<ul class="newPriceChart--smallHeadLinks">
<li>
3M</li>
<li>
<a class="price-chart-passive">6M</a>
</li>
<li>
<a class="price-chart-passive">1J</a>
</li>
</ul>
</div>
<div class="skeleton skeleton-chart">
</div>
<div>
<button class="i-button i-button--ghost button--pricewatcher priceAlertButton priceAlertButton--unset price-chart-passive-button">
<svg class="priceAlertButton-icon--unset price-chart-passive-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<use href="/cdn/storage/offerpage/assets/offerpage/images/idealo-icons.7b411624cc016b71add610e57db8b8a1.svg#alarmclock_outline"></use>
</svg>
<span class="priceAlertButton-text--unset">Preiswecker stellen</span>
</button>
</div>
</div>
</section>
</div>
</div>
</div>
<div class="oop-mainWrapper row">
<aside id="sidebar" class=" small-12 xxlarge-3 columns">
<section id="localOffersSidebar" class="localOffersSidebar" style="display: none"></section>
<section id="lastSeenProducts" class="hide">
<h2>
Zuletzt angesehen</h2>
<div>
</div>
</section>
<section id="top-ten-products">
<h2>
Top 10 Produkte<span>
Elektrorollstühle</span>
</h2>
<ol class="topTenProducts">
<li class="topTenProducts-product">
<div class="topTenProducts-product-order">
1</div>
<div class="topTenProducts-product-image">
<img src="https://cdn.idealo.com/folder/Product/206717/0/206717027/s1_produktbild_klein/moving-star-elektrorollator-all-in-one.jpg" alt="Moving Star Elektrorollator All in One"/>
</div>
<div class="topTenProducts-product-description">
<a href="/preisvergleich/OffersOfProduct/206717027_-elektrorollator-all-in-one-moving-star.html" class="topTenProducts-product-description-link">
<div class="topTenProducts-product-description-link-title">
Moving Star Elektrorollator All in One</div>
</a>
<div class="topTenProducts-product-description-price">
ab 1.790,00 </div>
</div>
</li>
<li class="topTenProducts-product">
<div class="topTenProducts-product-order">
2</div>
<div class="topTenProducts-product-image">
<img src="https://cdn.idealo.com/folder/Product/203120/6/203120632/s1_produktbild_klein/veleco-cosmo-elektrorollstuhl-faltbar.jpg" alt="Veleco Cosmo Elektrorollstuhl faltbar"/>
</div>
<div class="topTenProducts-product-description">
<a href="/preisvergleich/OffersOfProduct/203120632_-cosmo-elektrorollstuhl-faltbar-veleco.html" class="topTenProducts-product-description-link">
<div class="topTenProducts-product-description-link-title">
Veleco Cosmo Elektrorollstuhl faltbar</div>
</a>
<div class="topTenProducts-product-description-price">
ab 775,00 </div>
</div>
</li>
<li class="topTenProducts-product">
<div class="topTenProducts-product-order">
3</div>
<div class="topTenProducts-product-image">
<img src="https://cdn.idealo.com/folder/Product/206047/8/206047840/s1_produktbild_klein/antar-at52326-carbon-rollstuhl.jpg" alt="Antar AT52326 Carbon Rollstuhl"/>
</div>
<div class="topTenProducts-product-description">
<a href="/preisvergleich/OffersOfProduct/206047840_-at52326-carbon-rollstuhl-antar.html" class="topTenProducts-product-description-link">
<div class="topTenProducts-product-description-link-title">
Antar AT52326 Carbon Rollstuhl</div>
</a>
<div class="topTenProducts-product-description-price">
ab 1.299,00 </div>
</div>
</li>
<li class="topTenProducts-product">
<div class="topTenProducts-product-order">
4</div>
<div class="topTenProducts-product-image">
<img src="https://cdn.idealo.com/folder/Product/209891/8/209891847/s1_produktbild_klein/antar-elektrischer-rollstuhl-faltbar-lithium-akku-24v-bis-120-kg.jpg" alt="Antar Elektrischer Rollstuhl faltbar Lithium Akku 24V bis 120 kg"/>
</div>
<div class="topTenProducts-product-description">
<a href="/preisvergleich/OffersOfProduct/209891847_-elektrischer-rollstuhl-faltbar-lithium-akku-24v-bis-120-kg-antar.html" class="topTenProducts-product-description-link">
<div class="topTenProducts-product-description-link-title">
Antar Elektrischer Rollstuhl faltbar Lithium Akku 24V bis 120 kg</div>
</a>
<div class="topTenProducts-product-description-price">
ab 749,89 </div>
</div>
</li>
<li class="topTenProducts-product">
<div class="topTenProducts-product-order">
5</div>
<div class="topTenProducts-product-image">
<img src="https://cdn.idealo.com/folder/Product/208848/3/208848381/s1_produktbild_klein/antar-elektrischer-rollstuhl-aus-carbonstahl-stabil-faltbar-komfortabel-44-cm.jpg" alt="Antar Elektrischer Rollstuhl aus Carbonstahl stabil faltbar &amp; komfortabel 44 cm"/>
</div>
<div class="topTenProducts-product-description">
<a href="/preisvergleich/OffersOfProduct/208848381_-elektrischer-rollstuhl-aus-carbonstahl-stabil-faltbar-komfortabel-44-cm-antar.html" class="topTenProducts-product-description-link">
<div class="topTenProducts-product-description-link-title">
Antar Elektrischer Rollstuhl aus Carbonstahl stabil faltbar &amp; komfortabel 44 cm</div>
</a>
<div class="topTenProducts-product-description-price">
ab 899,00 </div>
</div>
</li>
<li class="topTenProducts-product">
<div class="topTenProducts-product-order">
6</div>
<div class="topTenProducts-product-image">
<img src="https://cdn.idealo.com/folder/Product/203554/4/203554430/s1_produktbild_klein/sunrise-medical-q200r-elektrorollstuhl-mit-heckantrieb.jpg" alt="Sunrise Medical Q200R Elektrorollstuhl mit Heckantrieb"/>
</div>
<div class="topTenProducts-product-description">
<a href="/preisvergleich/OffersOfProduct/203554430_-q200r-elektrorollstuhl-mit-heckantrieb-sunrise-medical.html" class="topTenProducts-product-description-link">
<div class="topTenProducts-product-description-link-title">
Sunrise Medical Q200R Elektrorollstuhl mit Heckantrieb</div>
</a>
<div class="topTenProducts-product-description-price">
ab 2.190,00 </div>
</div>
</li>
<li class="topTenProducts-product">
<div class="topTenProducts-product-order">
7</div>
<div class="topTenProducts-product-image">
<img src="https://cdn.idealo.com/images/product/208480999/de_DE/0/klein.jpg" alt="Elektrischer Rollator/Rollstuhl moderne 2-in-1-Lösung AT52334"/>
</div>
<div class="topTenProducts-product-description">
<a href="/preisvergleich/OffersOfProduct/208480999_-elektrischer-rollator-rollstuhl-moderne-2-in-1-loesung-at52334.html" class="topTenProducts-product-description-link">
<div class="topTenProducts-product-description-link-title">
Elektrischer Rollator/Rollstuhl moderne 2-in-1-Lösung AT52334</div>
</a>
<div class="topTenProducts-product-description-price">
ab 1.399,00 </div>
</div>
</li>
<li class="topTenProducts-product">
<div class="topTenProducts-product-order">
8</div>
<div class="topTenProducts-product-image">
<img src="https://cdn.idealo.com/folder/Product/202068/1/202068139/s1_produktbild_klein/bischoff-bischoff-eltego-elektrorollstuhl.jpg" alt="Bischoff &amp; Bischoff Eltego Elektrorollstuhl"/>
</div>
<div class="topTenProducts-product-description">
<a href="/preisvergleich/OffersOfProduct/202068139_-eltego-elektrorollstuhl-bischoff-bischoff.html" class="topTenProducts-product-description-link">
<div class="topTenProducts-product-description-link-title">
Bischoff &amp; Bischoff Eltego Elektrorollstuhl</div>
</a>
<div class="topTenProducts-product-description-price">
ab 1.999,00 </div>
</div>
</li>
<li class="topTenProducts-product">
<div class="topTenProducts-product-order">
9</div>
<div class="topTenProducts-product-image">
<img src="https://cdn.idealo.com/folder/Product/201889/4/201889446/s1_produktbild_klein/antar-elektrischer-rollstuhl-6-km-h.jpg" alt="Antar elektrischer Rollstuhl (6 km/h)"/>
</div>
<div class="topTenProducts-product-description">
<a href="/preisvergleich/OffersOfProduct/201889446_-elektrischer-rollstuhl-6-km-h-antar.html" class="topTenProducts-product-description-link">
<div class="topTenProducts-product-description-link-title">
Antar elektrischer Rollstuhl (6 km/h)</div>
</a>
<div class="topTenProducts-product-description-price">
ab 749,99 </div>
</div>
</li>
<li class="topTenProducts-product">
<div class="topTenProducts-product-order">
10</div>
<div class="topTenProducts-product-image">
<img src="https://cdn.idealo.com/folder/Product/207872/9/207872956/s1_produktbild_klein/antar-elektrischer-rollstuhl-at52333-optional-mit-begleitsteuerung.jpg" alt="Antar Elektrischer Rollstuhl AT52333 optional mit Begleitsteuerung"/>
</div>
<div class="topTenProducts-product-description">
<a href="/preisvergleich/OffersOfProduct/207872956_-elektrischer-rollstuhl-at52333-optional-mit-begleitsteuerung-antar.html" class="topTenProducts-product-description-link">
<div class="topTenProducts-product-description-link-title">
Antar Elektrischer Rollstuhl AT52333 optional mit Begleitsteuerung</div>
</a>
<div class="topTenProducts-product-description-price">
ab 1.549,00 </div>
</div>
</li>
</ol>
</section>
<section id="recommendedProducts">
<h2>
Zurzeit beliebt auf idealo</h2>
<ul class="sideBarProduct">
<li class="sideBar-product" onclick="this.querySelector(&#39;a&#39;).click()">
<div class="sideBar-product-image">
<img src="https://cdn.idealo.com/folder/Product/201266/0/201266088/s1_produktbild_klein/antar-elektrorollstuhl-at52313.jpg" alt="Antar Elektrorollstuhl AT52313"/>
</div>
<div class="sideBar-product-description">
<div class="sideBar-product-description-title">
<a href="/preisvergleich/OffersOfProduct/201266088_-elektrorollstuhl-at52313-antar.html">
Antar Elektrorollstuhl AT52313</a>
</div>
<div class="sideBar-product-description-price">
ab 1.323,43 </div>
</div>
</li>
<li class="sideBar-product" onclick="this.querySelector(&#39;a&#39;).click()">
<div class="sideBar-product-image">
<img src="https://cdn.idealo.com/folder/Product/201890/7/201890738/s1_produktbild_klein/antar-elektrorollstuhl-at52305.jpg" alt="Antar Elektrorollstuhl AT52305"/>
</div>
<div class="sideBar-product-description">
<div class="sideBar-product-description-title">
<a href="/preisvergleich/OffersOfProduct/201890738_-elektrorollstuhl-at52305-antar.html">
Antar Elektrorollstuhl AT52305</a>
</div>
<div class="sideBar-product-description-price">
ab 879,00 </div>
</div>
</li>
<li class="sideBar-product" onclick="this.querySelector(&#39;a&#39;).click()">
<div class="sideBar-product-image">
<img src="https://cdn.idealo.com/images/product/203686563/de_DE/0/klein.jpg" alt="Bueuwe Elektrorollstuhl faltbar"/>
</div>
<div class="sideBar-product-description">
<div class="sideBar-product-description-title">
<a href="/preisvergleich/OffersOfProduct/203686563_-elektrorollstuhl-faltbar-bueuwe.html">
Bueuwe Elektrorollstuhl faltbar</a>
</div>
<div class="sideBar-product-description-price">
ab 1.219,99 </div>
</div>
</li>
<li class="sideBar-product" onclick="this.querySelector(&#39;a&#39;).click()">
<div class="sideBar-product-image">
<img src="https://cdn.idealo.com/folder/Product/209721/4/209721492/s1_produktbild_klein/meyra-ichair-mc1-light-1-610-elektrorollstuhl.jpg" alt="Meyra iCHAIR MC1 LIGHT 1.610 Elektrorollstuhl"/>
</div>
<div class="sideBar-product-description">
<div class="sideBar-product-description-title">
<a href="/preisvergleich/OffersOfProduct/209721492_-ichair-mc1-light-1-610-elektrorollstuhl-meyra.html">
Meyra iCHAIR MC1 LIGHT 1.610 Elektrorollstuhl</a>
</div>
<div class="sideBar-product-description-price">
ab 2.587,10 </div>
</div>
</li>
<li class="sideBar-product" onclick="this.querySelector(&#39;a&#39;).click()">
<div class="sideBar-product-image">
<img src="https://cdn.idealo.com/images/product/208480994/de_DE/0/klein.jpg" alt="zhyunvd Kompakter Strom RollstuhlFaltbarer Elektrorollstuhl Aus AluminiumlegierungLeicht Rollstuhl Elektrisch Faltbar Elektrorollstuhl Airline Genehmigt für Senioren Und Behinderung 10a"/>
</div>
<div class="sideBar-product-description">
<div class="sideBar-product-description-title">
<a href="/preisvergleich/OffersOfProduct/208480994_-zhyunvd-kompakter-strom-rollstuhlfaltbarer-elektrorollstuhl-aus-aluminiumlegierungleicht-rollstuhl-elektrisch-faltbar-elektrorollstuhl-airline-genehmigt-fuer-senioren-und-behinderung-10a.html">
zhyunvd Kompakter Strom RollstuhlFaltbarer Elektrorollstuhl Aus AluminiumlegierungLeicht Rollstuhl Elektrisch Faltbar Elektrorollstuhl Airline Genehmigt für Senioren Und Behinderung 10a</a>
</div>
<div class="sideBar-product-description-price">
ab 610,00 </div>
</div>
</li>
</ul>
</section>
<section id="i18nPrices" data-ajax-html="{&#34;url&#34;:&#34;aHR0cHM6Ly93d3cuaWRlYWxvLmRlL29mZmVycGFnZS9mcmFnbWVudC9pbnRlcm5hdGlvbmFscHJpY2VzL3Byb2R1Y3RzLzIwMjc0MDMwMw==&#34;}"></section>
</aside>
<div class="datasheet-container">
<div id="datasheet" class="datasheet columns small-12 xxlarge-12" data-sp-tracking="view" data-sp-tracking-meta="{&#34;event&#34;:&#34;datasheet_view&#34;, &#34;version&#34;:&#34;1-1-0&#34;, &#34;owner&#34;:&#34;de.idealo.koopa&#34;}">
<h2 class="datasheet-title small-12 columns">
Produktdetails</h2>
<div class="datasheet-wrapper">
<img class="datasheet-cover-image" src="https://cdn.idealo.com/folder/Product/202740/3/202740303/s1_produktbild_gross/mobilis-elektrorollstuhl-m45-air-rot.jpg" alt="Mobilis Elektrorollstuhl M45 Air rot" width="290" height="241"/>
<table class="datasheet-list">
<tbody>
<tr class="datasheet-listItem datasheet-listItem--properties ">
<td class="datasheet-listItemKey small-6 larger-4 columns">
Produkttyp</td>
<td class="datasheet-listItemValue small-6 larger-8 columns">
Elektrorollstuhl</td>
</tr>
</tbody>
<tbody>
<tr class="datasheet-listItem datasheet-listItem--group ">
<th>
Allgemeine Informationen</th>
</tr>
<tr class="datasheet-listItem datasheet-listItem--properties ">
<td class="datasheet-listItemKey small-6 larger-4 columns">
Farbe</td>
<td class="datasheet-listItemValue small-6 larger-8 columns">
rot</td>
</tr>
</tbody>
<tbody>
<tr class="datasheet-listItem datasheet-listItem--group ">
<th>
Besonderheiten</th>
</tr>
<tr class="datasheet-listItem datasheet-listItem--properties ">
<td class="datasheet-listItemKey small-6 larger-4 columns">
Ausstattung</td>
<td class="datasheet-listItemValue small-6 larger-8 columns">
Sitz</td>
</tr>
<tr class="datasheet-listItem datasheet-listItem--properties ">
<td class="datasheet-listItemKey small-6 larger-4 columns">
Eigenschaften</td>
<td class="datasheet-listItemValue small-6 larger-8 columns">
faltbar, höhenverstellbar</td>
</tr>
</tbody>
<tbody>
<tr class="datasheet-listItem datasheet-listItem--group ">
<th>
Weitere Eigenschaften</th>
</tr>
<tr class="datasheet-listItem datasheet-listItem--properties ">
<td class="datasheet-listItemKey small-6 larger-4 columns">
Einsatzbereich</td>
<td class="datasheet-listItemValue small-6 larger-8 columns">
Innenbereich</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div id="offerList" class="productOffers columns small-12 xxlarge-9">
<div id="offerlist-head">
<div class="productOffers-header row row-24" data-translations="{&#34;price_comparison&#34;:&#34;Preisvergleich&#34;,&#34;load_offers&#34;:&#34;Weitere Angebote anzeigen&#34;,&#34;load_offers_state&#34;:&#34;lädt ...&#34;,&#34;sort_total_price&#34;:&#34;Inkl. Versandkosten&#34;,&#34;filter_available&#34;:&#34;Sofort lieferbar&#34;,&#34;filter_free_return&#34;:&#34;Ohne Rücksendekosten&#34;,&#34;offers&#34;:&#34;Angebote&#34;,&#34;no_offers_technical_issue&#34;:&#34;Die Angebote konnten nicht geladen werden. Bitte versuche es später noch mal.&#34;,&#34;no_offers_with_filters&#34;:&#34;Wir konnten leider keine Angebote finden, die deinen Filterkriterien entsprechen.&#34;,&#34;filter_reset&#34;:&#34;Alle Filter löschen&#34;,&#34;used_offers&#34;:&#34;B-Ware &amp; Gebraucht&#34;,&#34;no_offers&#34;:&#34;Es wurden leider keine Angebote gefunden.&#34;,&#34;sort_label&#34;:&#34;Sortieren nach:&#34;}" data-loggedin="false" data-used-offers-requested="false" data-offerlist="">
<div class="columns small-24 medium-24 large-24 larger-12 xlarge-5 productOffers-headerContainer">
<div class="productOffers-headerContainer-wrapper">
<h2 class="productOffers-headerTitle">
Preisvergleich</h2>
</div>
</div>
<div class="columns productOffers-headerContainer productOffers-headerContainer-right">
<form class="productOffers-header-sort" action="/" method="post">
<div class="productOffers-header-sortContainer">
<div class="productOffers-header-sort-wrapper collapse-both show-for-small hide-for-xlarge">
<fieldset class="productOffers-header-fieldset">
<input id="product-offers-header-sort" class="i-input-checkbox" type="checkbox" data-rel="totalPrice" data-trx-click="offerlist_sort_click;1-1-1;sooper" data-trx-click-data="click_target=&gt;total_price"/>
<label for="product-offers-header-sort" class="idealo-checkbox" aria-label="Inkl. Versandkosten"></label>
</fieldset>
<label class="productOffers-header-sortText productOffers-header-sortTextMobile hide-for-large" for="product-offers-header-sort">
inkl. Versand</label>
<label class="productOffers-header-sortText productOffers-header-sortTextDesktop" for="product-offers-header-sort">Inkl. Versandkosten</label>
</div>
<div class="productOffers-header-sort-wrapper collapse-both show-for-small">
<fieldset class="productOffers-header-fieldset">
<input id="product-offers-filter-available" class="i-input-checkbox" type="checkbox" data-rel="available" data-trx-click="offerlist_filter_click;1-1-3;sooper" data-trx-click-data="click_target=&gt;available"/>
<label for="product-offers-filter-available" class="idealo-checkbox" aria-label="Sofort lieferbar"></label>
</fieldset>
<label class="productOffers-header-sortText productOffers-header-sortTextMobile" for="product-offers-filter-available">Sofort lieferbar</label>
<label class="productOffers-header-sortText productOffers-header-sortTextDesktop" for="product-offers-filter-available">Sofort lieferbar</label>
</div>
<div class="productOffers-header-sort-wrapper collapse-both show-for-large">
<fieldset class="productOffers-header-fieldset">
<input id="product-offers-filter-freereturn" class="i-input-checkbox" type="checkbox" data-rel="freereturn" data-trx-click="offerlist_filter_click;1-1-3;sooper" data-trx-click-data="click_target=&gt;free_return"/>
<label for="product-offers-filter-freereturn" class="idealo-checkbox" aria-label="Ohne Rücksendekosten"></label>
</fieldset>
<label class="productOffers-header-sortText productOffers-header-sortTextDesktop" for="product-offers-filter-freereturn">Ohne Rücksendekosten</label>
</div>
</div>
<div class="productOffers-header-totalPrice-buttons hide-for-small show-for-xlarge">
<span>Sortieren nach:</span>
<input class="visually-hidden" id="product-offers-sort-price" type="radio" name="price-sort" value="include-delivery" autocomplete="off" checked="" data-trx-click="offerlist_sort_click;1-1-1;sooper" data-trx-click-data="click_target=&gt;price"/>
<label class="button" for="product-offers-sort-price">
Preis</label>
<input class="visually-hidden" id="product-offers-sort-total-price" type="radio" name="price-sort" value="include-delivery" autocomplete="off" data-trx-click="offerlist_sort_click;1-1-1;sooper" data-trx-click-data="click_target=&gt;total_price"/>
<label class="button" for="product-offers-sort-total-price">
Gesamtpreis</label>
</div>
</form>
</div>
</div>
</div>
<div id="product-alert-wrapper"></div>
<div id="offer-list-with-pagination">
<ul class="productOffers-list" data-import-time="Daten vom 25.05.2026 15:04">
<li class="productOffers-listHeadline row row-24">
<div class="xlarge-4 columns">
Angebotsbezeichnung</div>
<div class="productOffers-listHeadline-priceAndPayment-price xlarge-4 columns">
Preis &amp; Versand</div>
<div class="productOffers-listHeadline-priceAndPayment-payment xlarge-4 columns">
Zahlungsarten*
</div>
<div class="productOffers-listHeadline-delivery xlarge-4 columns">
Lieferung</div>
<div class="xlarge-6">
Shop &amp; Shopbewertung</div>
</li>
<span data-offerlist-view-id="cf31624a-613d-47ce-85f0-c0081fc56f6c"></span>
<span data-ctx-offerlist-view-id="cf31624a-613d-47ce-85f0-c0081fc56f6c"></span>
<span data-offerlist-segment="new"></span>
<li class="productOffers-listItemOfferErrorBanner row row-24">
<div class="banner bannerOfferError">
<span class="banner-content bannerOfferError-icon">
<!--?xml version="1.0" encoding="UTF-8"?-->
<svg width="22px" height="22px" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 63.1 (92452) - https://sketch.com -->
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="04_Above_Offerlist_mobile" transform="translate(-222.000000, -308.000000)" fill="#0771D0" fill-rule="nonzero">
<g id="ico_info_circle_filled" transform="translate(222.000000, 308.000000)">
<path d="M32,0 C14.326888,0 0,14.326888 0,32 C0,49.673112 14.326888,64 32,64 C49.673112,64 64,49.673112 64,32 C63.9791607,14.3355271 49.6644729,0.0208392747 32,0 Z M34.9090909,46.5454545 C34.9090909,48.1521011 33.6066465,49.4545455 32,49.4545455 C30.3933535,49.4545455 29.0909091,48.1521011 29.0909091,46.5454545 L29.0909091,32 C29.0909091,30.3933535 30.3933535,29.0909091 32,29.0909091 C33.6066465,29.0909091 34.9090909,30.3933535 34.9090909,32 L34.9090909,46.5454545 Z M32,22.1090909 C29.9113595,22.1090909 28.2181818,20.4159132 28.2181818,18.3272727 C28.2181818,16.2386322 29.9113595,14.5454545 32,14.5454545 C34.0886405,14.5454545 35.7818182,16.2386322 35.7818182,18.3272727 C35.7818182,20.4159132 34.0886405,22.1090909 32,22.1090909 Z" id="Shape"></path>
</g>
</g>
</g>
</svg>
</span>
<strong class="banner-content" data-label="Angebots-Fehler gefunden?">
</strong>
<span class="banner-content bannerOfferError-linkContainer">
<a class="banner-link" data-label="Gib uns bitte Bescheid.">
</a>
</span>
</div>
</li>
<li class="productOffers-listItem row row-24
" data-hyperlinks="[{&#34;rel&#34;:&#34;totalPrice&#34;,&#34;href&#34;:&#34;https://www.idealo.de/offerpage/offerlist/product/202740303/start/0/sort/btpb?includeFilters=0&amp;excludeFilters=0&amp;offerpageViewId=4b27f317-587d-4fdf-975d-9257a4130f79&#34;},{&#34;rel&#34;:&#34;available&#34;,&#34;href&#34;:&#34;https://www.idealo.de/offerpage/offerlist/product/202740303/start/0/sort/default?includeFilters=64&amp;excludeFilters=0&amp;offerpageViewId=4b27f317-587d-4fdf-975d-9257a4130f79&#34;},{&#34;rel&#34;:&#34;freereturn&#34;,&#34;href&#34;:&#34;https://www.idealo.de/offerpage/offerlist/product/202740303/start/0/sort/default?includeFilters=262144&amp;excludeFilters=0&amp;offerpageViewId=4b27f317-587d-4fdf-975d-9257a4130f79&#34;},{&#34;rel&#34;:&#34;base&#34;,&#34;href&#34;:&#34;https://www.idealo.de/offerpage/offerlist/product/202740303/start/0/sort/default?includeFilters=0&amp;excludeFilters=0&amp;offerpageViewId=4b27f317-587d-4fdf-975d-9257a4130f79&#34;},{&#34;rel&#34;:&#34;homeDelivery&#34;,&#34;href&#34;:&#34;https://www.idealo.de/offerpage/offerlist/product/202740303/start/0/sort/default?includeFilters=0&amp;excludeFilters=0&amp;offerFilters=HOME_DELIVERY&amp;offerpageViewId=4b27f317-587d-4fdf-975d-9257a4130f79&#34;},{&#34;rel&#34;:&#34;disposalOnly&#34;,&#34;href&#34;:&#34;https://www.idealo.de/offerpage/offerlist/product/202740303/start/0/sort/default?includeFilters=0&amp;excludeFilters=0&amp;offerFilters=DISPOSAL_ONLY&amp;offerpageViewId=4b27f317-587d-4fdf-975d-9257a4130f79&#34;}]" data-total-offer-count="1" data-shop="{&#34;type&#34;:&#34;SHPSA&#34;}" data-trx-click="offer_click;2-4-6;sooper" data-trx-click-data="click_target=&gt;offer-row;offer_click_type=&gt;clickout;{&#34;offer_key&#34;:&#34;5d61970ba4cab8f8d6495b06efadffd8&#34;,&#34;shop_id&#34;:&#34;3040&#34;,&#34;offer_position&#34;:&#34;0&#34;,&#34;leadout_type&#34;:&#34;offer&#34;}" data-mtrx-click="{&#34;shop_name&#34;:&#34;otto.de&#34;,&#34;products&#34;:[{&#34;id&#34;:202740303,&#34;category&#34;:18874,&#34;name&#34;:&#34;Mobilis Elektrorollstuhl M45 Air rot&#34;,&#34;price&#34;:6780.0}],&#34;event&#34;:&#34;leadout&#34;}" data-error-data-url="L29mZmVycGFnZS9vZmZlci9lcnJvci9hcGkvcHJvZHVjdC8yMDI3NDAzMDMvb2ZmZXJrZXkvNWQ2MTk3MGJhNGNhYjhmOGQ2NDk1YjA2ZWZhZGZmZDg/b2ZmZXJJbmRleD0w">
<div class="small-24 medium-24 large-24 larger-5 xlarge-4 productOffers-listItemTitleWrapper" data-offerlist-column="title">
<a class="productOffers-listItemTitle" href="/relocator/relocate?categoryId=18874&amp;offerKey=5d61970ba4cab8f8d6495b06efadffd8&amp;pos=1&amp;price=6780.00&amp;productid=202740303&amp;sid=3040&amp;type=offer" target="_blank" rel="noopener nofollow" data-trx-click="offer_click;2-4-6;sooper" data-trx-click-data="click_target=&gt;title;offer_click_type=&gt;clickout;{&#34;offer_key&#34;:&#34;5d61970ba4cab8f8d6495b06efadffd8&#34;,&#34;shop_id&#34;:&#34;3040&#34;,&#34;offer_position&#34;:&#34;0&#34;,&#34;leadout_type&#34;:&#34;offer&#34;}">
<span class="productOffers-listItemTitleInner " title="mobilis Elek­troroll­stuhl M45 Air, Auf Augenhöhe in Sekunden, Rollstuhl mit elektr. Hub­funk­ti­on und Licht, Fußbrett hoch­klapp­bar, rot">
mobilis Elek­troroll­stuhl M45 Air, Auf Augenhöhe in Sekunden, Rollstuhl mit elektr. Hub­funk­ti­on und Licht, Fußbrett hoch­klapp­bar, rot</span>
</a>
</div>
<div class="productOffers-listItemOffer small-8 medium-8 large-9 larger-8 xlarge-8 columns" data-offerlist-column="price">
<div class="row">
<div class="column small-24 large-12 larger-12 xlarge-12 price-column">
<div class="amazon-prime__wrapper">
<a class="productOffers-listItemOfferPrice" data-trx-click="offer_click;2-4-6;sooper" data-trx-click-data="click_target=&gt;price;offer_click_type=&gt;clickout;{&#34;offer_key&#34;:&#34;5d61970ba4cab8f8d6495b06efadffd8&#34;,&#34;shop_id&#34;:&#34;3040&#34;,&#34;offer_position&#34;:&#34;0&#34;,&#34;leadout_type&#34;:&#34;offer&#34;}" href="/relocator/relocate?categoryId=18874&amp;offerKey=5d61970ba4cab8f8d6495b06efadffd8&amp;pos=1&amp;price=6780.00&amp;productid=202740303&amp;sid=3040&amp;type=offer" target="_blank" rel="noopener nofollow">
6.780,00 </a>
<div class="best-total-price-box">
<div class="best-total-price">
<span>
<a href="/relocator/relocate?categoryId=18874&amp;offerKey=5d61970ba4cab8f8d6495b06efadffd8&amp;pos=1&amp;price=6780.00&amp;productid=202740303&amp;sid=3040&amp;type=offer" data-trx-click="offer_click;2-4-6;sooper" data-trx-click-data="click_target=&gt;best-price;offer_click_type=&gt;clickout;{&#34;offer_key&#34;:&#34;5d61970ba4cab8f8d6495b06efadffd8&#34;,&#34;shop_id&#34;:&#34;3040&#34;,&#34;offer_position&#34;:&#34;0&#34;,&#34;leadout_type&#34;:&#34;offer&#34;}" target="_blank" rel="noopener nofollow">
<span class="productOffers-listItemOfferBestTotalPrice">
Günstigster Gesamtpreis</span><br/>
</a></span>
</div>
<div class="line-offer-view productOffers-listItemOfferShippingDetails withBestTotalPrice">
<a href="/relocator/relocate?categoryId=18874&amp;offerKey=5d61970ba4cab8f8d6495b06efadffd8&amp;pos=1&amp;price=6780.00&amp;productid=202740303&amp;sid=3040&amp;type=offer" data-trx-click="offer_click;2-4-6;sooper" data-trx-click-data="click_target=&gt;best-price;offer_click_type=&gt;clickout;{&#34;offer_key&#34;:&#34;5d61970ba4cab8f8d6495b06efadffd8&#34;,&#34;shop_id&#34;:&#34;3040&#34;,&#34;offer_position&#34;:&#34;0&#34;,&#34;leadout_type&#34;:&#34;offer&#34;}" target="_blank" rel="noopener nofollow">
<div>
<div class="productOffers-listItemOfferShippingDetails" title="6.819,95 € inkl. Versand">
6.819,95 € inkl. Versand</div>
</div>
</a>
</div>
</div><div class="productOffers-listItemOfferInfoBadgesWrapper">
</div>
<div class="show-for-large hide-for-medium hide-for-xlarge productOffers-listItemOfferDeliveryStatusMobile">
</div>
</div>
</div>
<div class="column large-12 larger-12 xlarge-12 show-for-large payment-column">
<div class="productOffers-listItemOfferShippingDetailsRight" data-trx-click="offer_click;2-4-6;sooper" data-trx-click-data="click_target=&gt;payment-methods;offer_click_type=&gt;clickout;{&#34;offer_key&#34;:&#34;5d61970ba4cab8f8d6495b06efadffd8&#34;,&#34;shop_id&#34;:&#34;3040&#34;,&#34;offer_position&#34;:&#34;0&#34;,&#34;leadout_type&#34;:&#34;offer&#34;}">
<span class="productOffers-listItemOfferShippingDetailsRightItem" title="">
<a rel="noopener nofollow" target="_blank" href="/relocator/relocate?categoryId=18874&amp;offerKey=5d61970ba4cab8f8d6495b06efadffd8&amp;pos=1&amp;price=6780.00&amp;productid=202740303&amp;sid=3040&amp;type=offer">
<span>
<img width="45" height="13" class="offerImage" src="//cdn.idealo.com/storage/offerpage/assets/offerpage/img/payment-icons/2x/paypal-c038cb02ad0744a542c4.png" title=""/></span>
</a>
</span>
<span class="productOffers-listItemOfferShippingDetailsRightItem" title="Rechnung">
<a rel="noopener nofollow" target="_blank" href="/relocator/relocate?categoryId=18874&amp;offerKey=5d61970ba4cab8f8d6495b06efadffd8&amp;pos=1&amp;price=6780.00&amp;productid=202740303&amp;sid=3040&amp;type=offer">
<span>
Rechnung</span>
</a>
</span>
<span class="productOffers-listItemOfferShippingDetailsRightItem" title="">
<a rel="noopener nofollow" target="_blank" href="/relocator/relocate?categoryId=18874&amp;offerKey=5d61970ba4cab8f8d6495b06efadffd8&amp;pos=1&amp;price=6780.00&amp;productid=202740303&amp;sid=3040&amp;type=offer">
<span>
<img width="45" height="13" class="offerImage" src="//cdn.idealo.com/storage/offerpage/assets/offerpage/img/payment-icons/2x/visa-ac94b93bc9a9921b1f11.png" title=""/></span>
</a>
</span>
<span class="productOffers-listItemOfferShippingDetailsRightItem" title="">
<a rel="noopener nofollow" target="_blank" href="/relocator/relocate?categoryId=18874&amp;offerKey=5d61970ba4cab8f8d6495b06efadffd8&amp;pos=1&amp;price=6780.00&amp;productid=202740303&amp;sid=3040&amp;type=offer">
<span>
<img width="45" height="13" class="offerImage" src="//cdn.idealo.com/storage/offerpage/assets/offerpage/img/payment-icons/2x/mastercard-2e81fe3d252402ab0358.png" title=""/></span>
</a>
</span>
<span class="productOffers-listItemOfferShippingDetailsRightItem" title="">
<a rel="noopener nofollow" target="_blank" href="/relocator/relocate?categoryId=18874&amp;offerKey=5d61970ba4cab8f8d6495b06efadffd8&amp;pos=1&amp;price=6780.00&amp;productid=202740303&amp;sid=3040&amp;type=offer">
<span>
<img width="45" height="13" class="offerImage" src="//cdn.idealo.com/storage/offerpage/assets/offerpage/img/payment-icons/2x/american-express-b6d0b3d814c4b5314ddb.png" title=""/></span>
</a>
</span>
<span class="productOffers-listItemOfferShippingDetailsRightItem" title="Lastschrift">
<a rel="noopener nofollow" target="_blank" href="/relocator/relocate?categoryId=18874&amp;offerKey=5d61970ba4cab8f8d6495b06efadffd8&amp;pos=1&amp;price=6780.00&amp;productid=202740303&amp;sid=3040&amp;type=offer">
<span>
Lastschrift</span>
</a>
</span>
<span class="productOffers-listItemOfferShippingDetailsRightItem" title="Vorkasse">
<a rel="noopener nofollow" target="_blank" href="/relocator/relocate?categoryId=18874&amp;offerKey=5d61970ba4cab8f8d6495b06efadffd8&amp;pos=1&amp;price=6780.00&amp;productid=202740303&amp;sid=3040&amp;type=offer">
<span>
Vorkasse</span>
</a>
</span>
</div>
</div>
</div>
</div>
<ul class="productOffers-listItemOfferDeliveryBlock show-for-large large-5 larger-3 xlarge-4 columns va-middle-xlarge-up" role="list" data-offerlist-column="delivery" data-trx-click="offer_click;2-4-6;sooper" data-trx-click-data="click_target=&gt;delivery;offer_click_type=&gt;clickout;{&#34;offer_key&#34;:&#34;5d61970ba4cab8f8d6495b06efadffd8&#34;,&#34;shop_id&#34;:&#34;3040&#34;,&#34;offer_position&#34;:&#34;0&#34;,&#34;leadout_type&#34;:&#34;offer&#34;}">
<a rel="noopener nofollow" target="_blank" href="/relocator/relocate?categoryId=18874&amp;offerKey=5d61970ba4cab8f8d6495b06efadffd8&amp;pos=1&amp;price=6780.00&amp;productid=202740303&amp;sid=3040&amp;type=offer">
<li>
<svg class="long" viewBox="0 0 4 4" xmlns="http://www.w3.org/2000/svg">
<use href="/cdn/storage/offerpage/assets/offerpage/images/idealo-icons.7b411624cc016b71add610e57db8b8a1.svg#circle"></use>
</svg>
<p class="productOffers-listItemOfferDeliveryStatusDates productOffers-listItemOfferDeliveryStatus">
<span class="productOffers-listItemOfferDeliveryStatusDatesTitle">
Lieferung:
</span>
<span class="productOffers-listItemOfferDeliveryStatusDatesRange">
bis Do. 18.06.</span>
</p>
<div class="productOffers-listItemOfferDeliveryProviderWrapper">
<span class="productOffers-listItemOfferGreyBadge productOffers-listItemOfferDeliveryProvider">
Hermes</span>
</div>
</li>
<li>
<svg class="short" viewBox="0 0 4 4" xmlns="http://www.w3.org/2000/svg">
<use href="/cdn/storage/offerpage/assets/offerpage/images/idealo-icons.7b411624cc016b71add610e57db8b8a1.svg#circle"></use>
</svg>
<div class="productOffers-listItemOfferDeliveryRetourText">
<span>Rücksendung 30 Tage kostenfrei</span>
</div>
</li>
</a>
</ul>
<div class="small-8 medium-8 large-6 larger-4 xlarge-4 xlarge-text-left large-text-center small-text-center productOffers-listItemOfferShopV2Block va-middle-xlarge-up" data-offerlist-column="shop">
<div class="productOffers-listItemOfferShopV2">
<div class="productOffers-listItemOfferShopV2LogoContainer">
<div class="productOffers-listItemOfferShopV2Logo">
<a class="productOffers-listItemOfferShopV2LogoLink" data-shop-name="otto.de - Shop aus Hamburg" data-trx-click="offer_click;2-4-6;sooper" data-trx-click-data="click_target=&gt;shop-logo;offer_click_type=&gt;clickout;{&#34;offer_key&#34;:&#34;5d61970ba4cab8f8d6495b06efadffd8&#34;,&#34;shop_id&#34;:&#34;3040&#34;,&#34;offer_position&#34;:&#34;0&#34;,&#34;leadout_type&#34;:&#34;offer&#34;}" href="/relocator/relocate?categoryId=18874&amp;offerKey=5d61970ba4cab8f8d6495b06efadffd8&amp;pos=1&amp;price=6780.00&amp;productid=202740303&amp;sid=3040&amp;type=offer" rel="noopener nofollow" target="_blank">
<img class="productOffers-listItemOfferShopV2LogoImage" src="//cdn.idealo.com/storage/offerpage/assets/offerpage/img/spacer-06c805d5f8d0f0cd4e44.png" data-shop-logo="//cdn.idealo.com/folder/Shop/3/0/3040/s1_shop_160x60.png" data-shop-logo-fallback="//cdn.idealo.com/folder/Shop/3/0/3040/s1_shop.gif" alt="otto.de - Shop aus Hamburg"/>
<noscript>
<img class="productOffers-listItemOfferShopV2LogoImage noborder"
src="//cdn.idealo.com/folder/Shop/3/0/3040/s1_shop.gif"
alt="otto.de"
/>
</noscript>
</a>
</div>
</div>
<div class="productOffers-listItemOfferShopV2RatingsContainer">
<a target="_blank" class="productOffers-listItemOfferShopV2StarsLink" href="https://www.idealo.de/preisvergleich/Shop/3040.html">
<div class="productOffers-listItemOfferShopV2Stars rating-single-star" data-trx-click="offer_click;2-2-0;sooper" data-trx-click-data="click_target=&gt;shop-rating;offer_click_type=&gt;shoppage;{&#34;offer_key&#34;:&#34;5d61970ba4cab8f8d6495b06efadffd8&#34;,&#34;shop_id&#34;:&#34;3040&#34;,&#34;offer_position&#34;:&#34;0&#34;,&#34;leadout_type&#34;:&#34;offer&#34;}">
<div class="starAndRatingWrapper">
<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg" fill="#FF6600">
<use href="/cdn/storage/offerpage/assets/offerpage/images/idealo-icons.7b411624cc016b71add610e57db8b8a1.svg#star"></use>
</svg>
<span>
<b>2,2</b>
</span>
</div>
</div>
</a>
<a target="_blank" class="productOffers-listItemOfferShopV2NORatings" href="https://www.idealo.de/preisvergleich/Shop/3040.html" data-trx-click="offer_click;2-2-0;sooper" data-trx-click-data="click_target=&gt;shop-rating;offer_click_type=&gt;shoppage;{&#34;offer_key&#34;:&#34;5d61970ba4cab8f8d6495b06efadffd8&#34;,&#34;shop_id&#34;:&#34;3040&#34;,&#34;offer_position&#34;:&#34;0&#34;,&#34;leadout_type&#34;:&#34;offer&#34;}">
<span class="productOffers-listItemOfferShopV2NORatings--numberOfRatings">12697</span>
</a>
</div>
</div>
<button class="show-for-large productOffers-listItemOfferShopV2Info" data-trx-click="offer_click;2-4-5;sooper" data-trx-click-data="click_target=&gt;shop-info-button;offer_click_type=&gt;shop-info-overlay;{&#34;offer_key&#34;:&#34;5d61970ba4cab8f8d6495b06efadffd8&#34;,&#34;shop_id&#34;:&#34;3040&#34;,&#34;offer_position&#34;:&#34;0&#34;,&#34;leadout_type&#34;:&#34;offer&#34;}" data-overlay="{
&#34;closeCaption&#34; : &#34;back&#34;,
&#34;contentLoad&#34; : &#34;https://www.idealo.de/offerpage/ui/shop-infos/product/202740303/offerkey/5d61970ba4cab8f8d6495b06efadffd8/index/0?offerListCondition=null&amp;locale=de_DE&amp;language=de_DE&#34;,
&#34;contentLoadBy&#34; : &#34;ajax&#34;,
&#34;eventStopPropagation&#34; : &#34;false&#34;,
&#34;titleCaption&#34; : &#34;otto.de&#34;,
&#34;triggerOnOpen&#34; : &#34;shop-info-open&#34;,
&#34;contentPaddingTop&#34; : &#34;0&#34;,
&#34;wrapperClass&#34; : &#34;shopOverlay&#34;,
&#34;appendTo&#34; : &#34;#shop-overlay-wrapper&#34;
}">
Shop-Details</button>
</div>
<div class="productOffers-listItemOfferCtaHolder small-8 medium-8 large-4 larger-4 xlarge-4 columns va-middle-xlarge-up" data-offerlist-column="leadoutbutton">
<ul class="productOffers-listItemOfferCta">
<li>
<a class="productOffers-listItemOfferCtaLeadout button button--leadout" href="/relocator/relocate?categoryId=18874&amp;offerKey=5d61970ba4cab8f8d6495b06efadffd8&amp;pos=1&amp;price=6780.00&amp;productid=202740303&amp;sid=3040&amp;type=offer" data-shop-name="otto.de" rel="noopener nofollow" target="_blank" data-trx-click="offer_click;2-2-0;sooper" data-trx-click-data="click_target=&gt;offer-button;offer_click_type=&gt;clickout;{&#34;offer_key&#34;:&#34;5d61970ba4cab8f8d6495b06efadffd8&#34;,&#34;shop_id&#34;:&#34;3040&#34;,&#34;offer_position&#34;:&#34;0&#34;,&#34;leadout_type&#34;:&#34;offer&#34;}" aria-label="Zum otto.de Shop">
Zum Shop<img class="btn-cta-shop" src="//cdn.idealo.com/storage/offerpage/assets/offerpage/img/btn_placeholder-6a908321904cc83dbe01.gif" alt="Mobilis Elektrorollstuhl M45 Air rot kaufen: günstige Rollstühle &amp; Gehhilfen bei otto.de"/>
</a>
</li>
</ul>
</div>
<div class="productOffers-listItemOfferDetailsMobile ">
<div class="productOffers-listItemOfferDetails" data-overlay="{
&#34;closeCaption&#34; : &#34;back&#34;,
&#34;contentLoad&#34; : &#34;https://www.idealo.de/offerpage/ui/shop-infos/product/202740303/offerkey/5d61970ba4cab8f8d6495b06efadffd8/index/0?offerListCondition=null&amp;locale=de_DE&amp;language=de_DE&#34;,
&#34;contentLoadBy&#34; : &#34;ajax&#34;,
&#34;eventStopPropagation&#34; : &#34;false&#34;,
&#34;titleCaption&#34; : &#34;otto.de&#34;,
&#34;triggerOnOpen&#34; : &#34;shop-info-open&#34;,
&#34;contentPaddingTop&#34; : &#34;0&#34;,
&#34;wrapperClass&#34; : &#34;shopOverlay&#34;,
&#34;appendTo&#34; : &#34;#shop-overlay-wrapper&#34;
}" data-trx-click="offer_click;2-4-6;sooper" data-trx-click-data="click_target=&gt;details;offer_click_type=&gt;shop-info-overlay;{&#34;offer_key&#34;:&#34;5d61970ba4cab8f8d6495b06efadffd8&#34;,&#34;shop_id&#34;:&#34;3040&#34;,&#34;offer_position&#34;:&#34;0&#34;,&#34;leadout_type&#34;:&#34;offer&#34;}">
Details</div>
<div class="vertical-separator"></div>
<div class="productOffers-listItemOfferDelivery delivery delivery--long svg-icon" data-trx-click="offer_click;2-4-6;sooper" data-trx-click-data="click_target=&gt;delivery;offer_click_type=&gt;clickout;{&#34;offer_key&#34;:&#34;5d61970ba4cab8f8d6495b06efadffd8&#34;,&#34;shop_id&#34;:&#34;3040&#34;,&#34;offer_position&#34;:&#34;0&#34;,&#34;leadout_type&#34;:&#34;offer&#34;}">
<a rel="noopener nofollow" target="_blank" href="/relocator/relocate?categoryId=18874&amp;offerKey=5d61970ba4cab8f8d6495b06efadffd8&amp;pos=1&amp;price=6780.00&amp;productid=202740303&amp;sid=3040&amp;type=offer">
<svg width="20" height="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<use href="/cdn/storage/offerpage/assets/offerpage/images/idealo-icons.7b411624cc016b71add610e57db8b8a1.svg#truck"></use>
</svg>
</a>
</div>
<span class="hide-for-large productOffers-listItemOfferDeliveryStatusMobile" data-trx-click="offer_click;2-4-6;sooper" data-trx-click-data="click_target=&gt;delivery;offer_click_type=&gt;clickout;{&#34;offer_key&#34;:&#34;5d61970ba4cab8f8d6495b06efadffd8&#34;,&#34;shop_id&#34;:&#34;3040&#34;,&#34;offer_position&#34;:&#34;0&#34;,&#34;leadout_type&#34;:&#34;offer&#34;}">
<a rel="noopener nofollow" target="_blank" href="/relocator/relocate?categoryId=18874&amp;offerKey=5d61970ba4cab8f8d6495b06efadffd8&amp;pos=1&amp;price=6780.00&amp;productid=202740303&amp;sid=3040&amp;type=offer">
<span class="productOffers-listItemOfferDeliveryStatusMobileText">
<p class="productOffers-listItemOfferDeliveryStatusDates productOffers-listItemOfferDeliveryStatus">
<span class="productOffers-listItemOfferDeliveryStatusDatesTitle">
Lieferung:
</span>
<span class="productOffers-listItemOfferDeliveryStatusDatesRange">
bis Do. 18.06.</span>
</p>
</span>
</a>
</span>
</div>
<a class="productOffers-listItemOfferLink" href="/relocator/relocate?categoryId=18874&amp;offerKey=5d61970ba4cab8f8d6495b06efadffd8&amp;pos=1&amp;price=6780.00&amp;productid=202740303&amp;sid=3040&amp;type=offer" target="_blank" data-shop-name="otto.de" rel="noopener nofollow">
</a>
</li>
<li class="productOffers-listItemImportTime row">
<span class="small-12 columns">Daten vom 25.05.2026 15:04</span>
</li>
</ul>
<div>
<div class="productOffers-metric">
<h4 class="productOffers-metricHeadline">Wie zufrieden bist Du mit dem Preisvergleich?</h4>
<h4 class="productOffers-metricHeadlineComplete">Vielen Dank für Deine Teilnahme!</h4>
<div class="productOffers-metricWrapper">
<div class="productOffers-metricWrapperButtons">
<button class="productOffers-metricWrapperButtonsButton" data-score="1" data-trx-click="user_rating;1-1-1;sooper" data-trx-click-data="score=&gt;1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48">
<use href="/cdn/storage/offerpage/assets/offerpage/images/idealo-icons.7b411624cc016b71add610e57db8b8a1.svg#user_feedback_outline_1"></use>
<use href="/cdn/storage/offerpage/assets/offerpage/images/idealo-icons.7b411624cc016b71add610e57db8b8a1.svg#user_feedback_filled_1"></use>
</svg>
</button>
<button class="productOffers-metricWrapperButtonsButton" data-score="2" data-trx-click="user_rating;1-1-1;sooper" data-trx-click-data="score=&gt;2">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48">
<use href="/cdn/storage/offerpage/assets/offerpage/images/idealo-icons.7b411624cc016b71add610e57db8b8a1.svg#user_feedback_outline_2"></use>
<use href="/cdn/storage/offerpage/assets/offerpage/images/idealo-icons.7b411624cc016b71add610e57db8b8a1.svg#user_feedback_filled_2"></use>
</svg>
</button>
<button class="productOffers-metricWrapperButtonsButton" data-score="3" data-trx-click="user_rating;1-1-1;sooper" data-trx-click-data="score=&gt;3">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48">
<use href="/cdn/storage/offerpage/assets/offerpage/images/idealo-icons.7b411624cc016b71add610e57db8b8a1.svg#user_feedback_outline_3"></use>
<use href="/cdn/storage/offerpage/assets/offerpage/images/idealo-icons.7b411624cc016b71add610e57db8b8a1.svg#user_feedback_filled_3"></use>
</svg>
</button>
<button class="productOffers-metricWrapperButtonsButton" data-score="4" data-trx-click="user_rating;1-1-1;sooper" data-trx-click-data="score=&gt;4">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48">
<use href="/cdn/storage/offerpage/assets/offerpage/images/idealo-icons.7b411624cc016b71add610e57db8b8a1.svg#user_feedback_outline_4"></use>
<use href="/cdn/storage/offerpage/assets/offerpage/images/idealo-icons.7b411624cc016b71add610e57db8b8a1.svg#user_feedback_filled_4"></use>
</svg>
</button>
<button class="productOffers-metricWrapperButtonsButton" data-score="5" data-trx-click="user_rating;1-1-1;sooper" data-trx-click-data="score=&gt;5">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48">
<use href="/cdn/storage/offerpage/assets/offerpage/images/idealo-icons.7b411624cc016b71add610e57db8b8a1.svg#user_feedback_outline_5"></use>
<use href="/cdn/storage/offerpage/assets/offerpage/images/idealo-icons.7b411624cc016b71add610e57db8b8a1.svg#user_feedback_filled_5"></use>
</svg>
</button>
</div>
</div>
<div class="productOffers-metricComment">
<h4 class="productOffers-metricHeadline">Wie können wir den Preisvergleich für dich verbessern (optional)?</h4>
<div class="productOffers-metricCommentWrapper">
<textarea id="metric-comment" class="productOffers-metricCommentInput i-form-element-field" maxlength="300"></textarea>
<div class="productOffers-metricCommentButtonWrapper">
<button class="i-button i-button--ghost productOffers-metricCommentButtonSkip">Überspringen</button>
<button class="i-button productOffers-metricCommentButtonSend" data-trx-click="user_rating_comment;1-1-1;sooper">Absenden</button>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="short-offerlist-product-slider column">
<span class="ui-component-include"> <div class="tw-scoped v2"> <style>astro-island,astro-slot,astro-static-slot{display:contents}</style><script>(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).only=e;window.dispatchEvent(new Event("astro:only"));})();</script><script>(()=>{var A=Object.defineProperty;var g=(i,o,a)=>o in i?A(i,o,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[o]=a;var d=(i,o,a)=>g(i,typeof o!="symbol"?o+"":o,a);{let i={0:t=>m(t),1:t=>a(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(a(t)),5:t=>new Set(a(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t),11:t=>1/0*t},o=t=>{let[l,e]=t;return l in i?i[l](e):void 0},a=t=>t.map(o),m=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([l,e])=>[l,o(e)]));class y extends HTMLElement{constructor(){super(...arguments);d(this,"Component");d(this,"hydrator");d(this,"hydrate",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let c=this.querySelectorAll("astro-slot"),n={},h=this.querySelectorAll("template[data-astro-template]");for(let r of h){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("data-astro-template")||"default"]=r.innerHTML,r.remove())}for(let r of c){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("name")||"default"]=r.innerHTML)}let p;try{p=this.hasAttribute("props")?m(JSON.parse(this.getAttribute("props"))):{}}catch(r){let s=this.getAttribute("component-url")||"<unknown>",v=this.getAttribute("component-export");throw v&&(s+=` (export ${v})`),console.error(`[hydrate] Error parsing props for component ${s}`,this.getAttribute("props"),r),r}let u;await this.hydrator(this)(this.Component,p,n,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});d(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),c.disconnect(),this.childrenConnectedCallback()},c=new MutationObserver(()=>{var n;((n=this.lastChild)==null?void 0:n.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});c.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}async start(){let e=JSON.parse(this.getAttribute("opts")),c=this.getAttribute("client");if(Astro[c]===void 0){window.addEventListener(`astro:${c}`,()=>this.start(),{once:!0});return}try{await Astro[c](async()=>{let n=this.getAttribute("renderer-url"),[h,{default:p}]=await Promise.all([import(this.getAttribute("component-url")),n?import(n):()=>()=>{}]),u=this.getAttribute("component-export")||"default";if(!u.includes("."))this.Component=h[u];else{this.Component=h;for(let f of u.split("."))this.Component=this.Component[f]}return this.hydrator=p,this.hydrate},e,this)}catch(n){console.error(`[astro-island] Error hydrating ${this.getAttribute("component-url")}`,n)}}attributeChangedCallback(){this.hydrate()}}d(y,"observedAttributes",["props"]),customElements.get("astro-island")||customElements.define("astro-island",y)}})();</script><astro-island uid="1zrou8" component-url="https://cdn.idealo.com/storage/offerpage/assets/opr/_astro/SponsoredItemsSlider.DNayVcF9.js" component-export="SponsoredItemsSlider" renderer-url="https://cdn.idealo.com/storage/offerpage/assets/opr/_astro/client.BIvjCCMb.js" props="{&#34;sponsoredItemsSliderData&#34;:[0,{&#34;shouldBeRendered&#34;:[0,true],&#34;sessionId&#34;:[0,&#34;1779717849518_b5bd008b-2169-4a60-cd91-01c861dbca5b&#34;],&#34;trackingId&#34;:[0,null],&#34;eaUuid&#34;:[0,null],&#34;offerpageViewId&#34;:[0,&#34;4b27f317-587d-4fdf-975d-9257a4130f79&#34;],&#34;categoryId&#34;:[0,&#34;18874&#34;],&#34;adpEventTrackId&#34;:[0,null],&#34;previewParams&#34;:[0,null],&#34;manufacturerShopId&#34;:[0,null],&#34;mobileDevice&#34;:[0,false],&#34;componentId&#34;:[0,&#34;SPONSORED_ITEMS_SLIDER&#34;]}],&#34;dlApiUrl&#34;:[0,&#34;https://das.idealo.com/3572062/bid?data=%7B%22id%22%3A%22cccdd391f9998%22%2C%22imp%22%3A%5B%7B%22id%22%3A%22imp-slider-0%22%2C%22tagid%22%3A%22product-tile-slider2%22%2C%22secure%22%3A1%2C%22native%22%3A%7B%22request%22%3A%22%7B%7D%22%7D%2C%22ext%22%3A%7B%22no_redirect%22%3Atrue%2C%22offers_limit%22%3A3%2C%22pos%22%3A%220%22%7D%7D%2C%7B%22id%22%3A%22imp-slider-1%22%2C%22tagid%22%3A%22product-tile-slider2%22%2C%22secure%22%3A1%2C%22native%22%3A%7B%22request%22%3A%22%7B%7D%22%7D%2C%22ext%22%3A%7B%22no_redirect%22%3Atrue%2C%22offers_limit%22%3A3%2C%22pos%22%3A%221%22%7D%7D%2C%7B%22id%22%3A%22imp-slider-2%22%2C%22tagid%22%3A%22product-tile-slider2%22%2C%22secure%22%3A1%2C%22native%22%3A%7B%22request%22%3A%22%7B%7D%22%7D%2C%22ext%22%3A%7B%22no_redirect%22%3Atrue%2C%22offers_limit%22%3A3%2C%22pos%22%3A%222%22%7D%7D%2C%7B%22id%22%3A%22imp-slider-3%22%2C%22tagid%22%3A%22product-tile-slider2%22%2C%22secure%22%3A1%2C%22native%22%3A%7B%22request%22%3A%22%7B%7D%22%7D%2C%22ext%22%3A%7B%22no_redirect%22%3Atrue%2C%22offers_limit%22%3A3%2C%22pos%22%3A%223%22%7D%7D%2C%7B%22id%22%3A%22imp-slider-4%22%2C%22tagid%22%3A%22product-tile-slider2%22%2C%22secure%22%3A1%2C%22native%22%3A%7B%22request%22%3A%22%7B%7D%22%7D%2C%22ext%22%3A%7B%22no_redirect%22%3Atrue%2C%22offers_limit%22%3A3%2C%22pos%22%3A%224%22%7D%7D%2C%7B%22id%22%3A%22imp-slider-5%22%2C%22tagid%22%3A%22product-tile-slider2%22%2C%22secure%22%3A1%2C%22native%22%3A%7B%22request%22%3A%22%7B%7D%22%7D%2C%22ext%22%3A%7B%22no_redirect%22%3Atrue%2C%22offers_limit%22%3A3%2C%22pos%22%3A%225%22%7D%7D%2C%7B%22id%22%3A%22imp-slider-6%22%2C%22tagid%22%3A%22product-tile-slider2%22%2C%22secure%22%3A1%2C%22native%22%3A%7B%22request%22%3A%22%7B%7D%22%7D%2C%22ext%22%3A%7B%22no_redirect%22%3Atrue%2C%22offers_limit%22%3A3%2C%22pos%22%3A%226%22%7D%7D%2C%7B%22id%22%3A%22imp-slider-7%22%2C%22tagid%22%3A%22product-tile-slider2%22%2C%22secure%22%3A1%2C%22native%22%3A%7B%22request%22%3A%22%7B%7D%22%7D%2C%22ext%22%3A%7B%22no_redirect%22%3Atrue%2C%22offers_limit%22%3A3%2C%22pos%22%3A%227%22%7D%7D%2C%7B%22id%22%3A%22imp-slider-8%22%2C%22tagid%22%3A%22product-tile-slider2%22%2C%22secure%22%3A1%2C%22native%22%3A%7B%22request%22%3A%22%7B%7D%22%7D%2C%22ext%22%3A%7B%22no_redirect%22%3Atrue%2C%22offers_limit%22%3A3%2C%22pos%22%3A%228%22%7D%7D%2C%7B%22id%22%3A%22imp-slider-9%22%2C%22tagid%22%3A%22product-tile-slider2%22%2C%22secure%22%3A1%2C%22native%22%3A%7B%22request%22%3A%22%7B%7D%22%7D%2C%22ext%22%3A%7B%22no_redirect%22%3Atrue%2C%22offers_limit%22%3A3%2C%22pos%22%3A%229%22%7D%7D%2C%7B%22id%22%3A%22imp-slider-10%22%2C%22tagid%22%3A%22product-tile-slider2%22%2C%22secure%22%3A1%2C%22native%22%3A%7B%22request%22%3A%22%7B%7D%22%7D%2C%22ext%22%3A%7B%22no_redirect%22%3Atrue%2C%22offers_limit%22%3A3%2C%22pos%22%3A%2210%22%7D%7D%2C%7B%22id%22%3A%22imp-slider-11%22%2C%22tagid%22%3A%22product-tile-slider2%22%2C%22secure%22%3A1%2C%22native%22%3A%7B%22request%22%3A%22%7B%7D%22%7D%2C%22ext%22%3A%7B%22no_redirect%22%3Atrue%2C%22offers_limit%22%3A3%2C%22pos%22%3A%2211%22%7D%7D%2C%7B%22id%22%3A%22imp-slider-12%22%2C%22tagid%22%3A%22product-tile-slider2%22%2C%22secure%22%3A1%2C%22native%22%3A%7B%22request%22%3A%22%7B%7D%22%7D%2C%22ext%22%3A%7B%22no_redirect%22%3Atrue%2C%22offers_limit%22%3A3%2C%22pos%22%3A%2212%22%7D%7D%2C%7B%22id%22%3A%22imp-slider-13%22%2C%22tagid%22%3A%22product-tile-slider2%22%2C%22secure%22%3A1%2C%22native%22%3A%7B%22request%22%3A%22%7B%7D%22%7D%2C%22ext%22%3A%7B%22no_redirect%22%3Atrue%2C%22offers_limit%22%3A3%2C%22pos%22%3A%2213%22%7D%7D%2C%7B%22id%22%3A%22imp-slider-14%22%2C%22tagid%22%3A%22product-tile-slider2%22%2C%22secure%22%3A1%2C%22native%22%3A%7B%22request%22%3A%22%7B%7D%22%7D%2C%22ext%22%3A%7B%22no_redirect%22%3Atrue%2C%22offers_limit%22%3A3%2C%22pos%22%3A%2214%22%7D%7D%5D%2C%22at%22%3A1%2C%22site%22%3A%7B%22id%22%3A%22IDEALO_DE%22%2C%22domain%22%3A%22idealo.de%22%2C%22page%22%3A%22https%3A%2F%2Fwww.idealo.de%2Fpreisvergleich%2FOffersOfProduct%2F202740303.html%22%2C%22publisher%22%3A%7B%22domain%22%3A%22www.idealo.de%22%7D%2C%22ext%22%3A%7B%22area%22%3A%22OOP%22%7D%7D%2C%22user%22%3A%7B%22eids%22%3A%5B%7B%22source%22%3A%22idealo.de%22%2C%22inserter%22%3A%22idealo.de%22%2C%22uids%22%3A%5B%7B%22id%22%3A%221779717849518_b5bd008b-2169-4a60-cd91-01c861dbca5b%22%2C%22atype%22%3A500%2C%22ext%22%3A%7B%22id_type%22%3A%22session%22%2C%22consent_required%22%3Afalse%7D%7D%2C%7B%22id%22%3Anull%2C%22atype%22%3A1%2C%22ext%22%3A%7B%22id_type%22%3A%22tracking%22%2C%22consent_required%22%3Atrue%7D%7D%5D%7D%5D%2C%22ext%22%3A%7B%22npa%22%3Atrue%2C%22ids%22%3A%7B%22sid%22%3A%221779717849518_b5bd008b-2169-4a60-cd91-01c861dbca5b%22%2C%22lu%22%3Anull%7D%7D%7D%2C%22ext%22%3A%7B%22network%22%3A%223572062%22%2C%22keyvalues%22%3A%7B%22manufacturer_id%22%3A%22%22%2C%22main_category_id%22%3A18874%2C%22page_product_id%22%3A%22202740303%22%2C%22page_product_name%22%3A%22%22%2C%22IP%22%3A%224b27f317-587d-4fdf-975d-9257a4130f79%22%2C%22IV%22%3A%224b27f317-587d-4fdf-975d-9257a4130f79%22%7D%2C%22is_non_prebid_request%22%3Atrue%2C%22src%22%3A%22s2s%22%2C%22categoryids%22%3A%5B18874%5D%7D%2C%22regs%22%3A%7B%22gdpr%22%3A1%2C%22ext%22%3A%7B%22dsa%22%3A1%7D%7D%2C%22tmax%22%3A1000%7D&#34;],&#34;locale&#34;:[0,&#34;de-DE&#34;],&#34;isPreviewMode&#34;:[0,false]}" ssr="" client="only" opts="{&#34;name&#34;:&#34;SponsoredItemsSlider&#34;,&#34;value&#34;:&#34;react&#34;}"></astro-island> </div> </span></div>
<div id="alternative-products" data-sp-tracking="view" data-sp-tracking-meta="{&#34;event&#34;:&#34;offerlist_alternative_present&#34;, &#34;version&#34;:&#34;1-1-0&#34;, &#34;owner&#34;:&#34;de.idealo.koopa&#34;}" data-sp-tracking-additional-event-data="{&#34;product_ids_displayed&#34;:[&#34;209721491&#34;,&#34;208672820&#34;,&#34;207875933&#34;,&#34;209891847&#34;]}">
<h2 class="alternative-product-spacer">Das könnte dir auch gefallen</h2>
<ul>
<li><a href="/preisvergleich/OffersOfProduct/209721491_-elektrischer-rollstuhl-faltbar-lesbjfdm.html" data-sp-tracking="click" data-sp-tracking-meta="{&#34;event&#34;:&#34;offerlist_alternative_click&#34;, &#34;version&#34;:&#34;1-1-0&#34;, &#34;owner&#34;:&#34;de.idealo.koopa&#34;}" data-sp-tracking-additional-event-data="{&#34;product_id_clicked&#34;: &#34;209721491&#34;}">
<div class="alternative-product-image">
<img src="https://cdn.idealo.com/images/product/209721491/de_DE/0/top.jpg"/>
</div>
<div>
<span class="alternative-product-title">LESBJFDM Elektrischer Rollstuhl faltbar</span>
<span class="alternative-product-price-prefix">ab</span>
<span class="alternative-product-price">1.333,<span class="priceSup">57</span> €</span>
</div>
</a></li>
<li><a href="/preisvergleich/OffersOfProduct/208672820_-hzwjd-elektrischer-treppenlift-rollstuhl-fuer-aeltere-menschen-zusammenklappbarer-leichter-treppenrollstuhl-zuladung-165-kg.html" data-sp-tracking="click" data-sp-tracking-meta="{&#34;event&#34;:&#34;offerlist_alternative_click&#34;, &#34;version&#34;:&#34;1-1-0&#34;, &#34;owner&#34;:&#34;de.idealo.koopa&#34;}" data-sp-tracking-additional-event-data="{&#34;product_id_clicked&#34;: &#34;208672820&#34;}">
<div class="alternative-product-image">
<img src="https://cdn.idealo.com/images/product/208672820/de_DE/0/top.jpg"/>
</div>
<div>
<span class="alternative-product-title">HZWJD Elektrischer Treppenlift-Rollstuhl Für Ältere Menschen Zusammenklappbarer Leichter Treppenrollstuhl Zuladung 165 Kg</span>
<span class="alternative-product-price-prefix">ab</span>
<span class="alternative-product-price">1.199,<span class="priceSup">99</span> €</span>
</div>
</a></li>
<li><a href="/preisvergleich/OffersOfProduct/207875933_-locwanot-30-5-cm-ultraleichte-elektrorollstuehle-fuer-erwachsene-elektrorollstuhl-zusammenklappbar-leicht-mit-verstellbarem-handlauf-und-fussstuetze-40-cm-breiter-sitz-reiserollstuhl-fuer-erwachsene.html" data-sp-tracking="click" data-sp-tracking-meta="{&#34;event&#34;:&#34;offerlist_alternative_click&#34;, &#34;version&#34;:&#34;1-1-0&#34;, &#34;owner&#34;:&#34;de.idealo.koopa&#34;}" data-sp-tracking-additional-event-data="{&#34;product_id_clicked&#34;: &#34;207875933&#34;}">
<div class="alternative-product-image">
<img src="https://cdn.idealo.com/images/product/207875933/de_DE/0/top.jpg"/>
</div>
<div>
<span class="alternative-product-title">locwanot 30,5 cm Ultraleichte Elektrorollstühle für Erwachsene, Elektrorollstuhl, zusammenklappbar, leicht, mit verstellbarem Handlauf und Fußstütze, 40 cm breiter Sitz, Reiserollstuhl für Erwachsene</span>
<span class="alternative-product-price-prefix">ab</span>
<span class="alternative-product-price">430,<span class="priceSup">97</span> €</span>
</div>
</a></li>
<li><a href="/preisvergleich/OffersOfProduct/209891847_-elektrischer-rollstuhl-faltbar-lithium-akku-24v-bis-120-kg-antar.html" data-sp-tracking="click" data-sp-tracking-meta="{&#34;event&#34;:&#34;offerlist_alternative_click&#34;, &#34;version&#34;:&#34;1-1-0&#34;, &#34;owner&#34;:&#34;de.idealo.koopa&#34;}" data-sp-tracking-additional-event-data="{&#34;product_id_clicked&#34;: &#34;209891847&#34;}">
<div class="alternative-product-image">
<img src="https://cdn.idealo.com/folder/Product/209891/8/209891847/s1_produktbild_top/antar-elektrischer-rollstuhl-faltbar-lithium-akku-24v-bis-120-kg.jpg"/>
</div>
<div>
<span class="alternative-product-title">Antar Elektrischer Rollstuhl faltbar Lithium Akku 24V bis 120 kg</span>
<span class="alternative-product-price-prefix">ab</span>
<span class="alternative-product-price">749,<span class="priceSup">89</span> €</span>
</div>
</a></li>
</ul>
</div>
</div>
</div>
<div id="productFurtherTags" class="productFurtherTags row">
<div class="small-12 columns">
<div class="productFurtherTags-title"><h3>Weitere Stichworte zu dem Produkt Elektrorollstuhl M45 Air rot:</h3></div>
<a class="productFurtherTags-tag" href="https://www.idealo.de/preisvergleich/ProductCategory/18874F8222998.html" rel="">
höhenverstellbar</a>
<a class="productFurtherTags-tag" href="https://www.idealo.de/preisvergleich/ProductCategory/18874F8225441.html" rel="">
Sitz</a>
<a class="productFurtherTags-tag" href="https://www.idealo.de/preisvergleich/ProductCategory/18874F8223146.html" rel="">
Innenbereich</a>
<a class="productFurtherTags-tag" href="https://www.idealo.de/preisvergleich/Liste/123514677/elektrorollstuhl-mit-hubfunktion.html" rel="">
Elektrorollstuhl mit Hubfunktion</a>
</div>
</div>
<div id="travel-deals-wrapper"></div>
</main>
<span class="ui-component-include"> <div class="tw-scoped v2"> <footer id="wf-footer" class="bg-marine-800 text-marine-200 font-sans"><div class="bg-marine-200 text-marine-800 py-5 text-base text-center font-bold"><p>idealo Deals &amp; News per E-Mail<a class="inline-block font-bold text-base mx-5 text-white-100 bg-blue-500 hover:bg-orange-500 min-w-[271px] py-1 px-4 transition-colors duration-250 ease-out rounded-sm" href="https://www.idealo.de/subscriptions?source=ipc_footer" data-trx-click="newsletter_click;1-0-0;sooper" data-trx-exclude-context="true">Anmelden und bis zu 50% sparen</a></p></div><div class="flex flex-col items-center justify-center sm:grid sm:grid-cols-2 sm:items-start p-5 gap-2 sm:gap-x-4 bg-marine-200 text-marine-800"><div class="order-2 sm:order-1 flex items-center justify-center sm:row-span-2 sm:justify-end"><a href="https://www.idealo.de/unternehmen/pressemitteilungen/idealo-traegt-weiterhin-tuev-siegel-als-geprueftes-vergleichsportal-2020"><img src="https://cdn.idealo.com/storage/ids-assets/png/tuev_saarland_202306.png" alt="TÜV Saarland" width="200" height="auto"/></a></div><div class="order-1 sm:order-2 sm:col-start-2 sm:row-start-1 sm:justify-end"><h3 class="text-lg font-bold text-center sm:text-left">zertifizierte Qualität</h3><div class="grid grid-cols-1 sm:grid-cols-[max-content_max-content] gap-x-4 place-items-start sm:justify-start my-2.5"><p class="flex gap-1.5 items-center text-lg font-normal justify-center sm:justify-start"><svg width="16" height="16" viewBox="0 0 24 24" role="presentation" aria-hidden="true" focusable="false"><path d="M8.727 20a2 2 0 0 1-1.414-.586l-5.454-5.455a2 2 0 0 1 2.828-2.828l4.04 4.04L19.313 4.586a2 2 0 0 1 2.828 2.828l-12 12A2 2 0 0 1 8.727 20Z" fill="currentColor" stroke="none"></path></svg><span>Transparenz</span></p><p class="flex gap-1.5 items-center text-lg font-normal justify-center sm:justify-start"><svg width="16" height="16" viewBox="0 0 24 24" role="presentation" aria-hidden="true" focusable="false"><path d="M8.727 20a2 2 0 0 1-1.414-.586l-5.454-5.455a2 2 0 0 1 2.828-2.828l4.04 4.04L19.313 4.586a2 2 0 0 1 2.828 2.828l-12 12A2 2 0 0 1 8.727 20Z" fill="currentColor" stroke="none"></path></svg><span>Datenschutz</span></p><p class="flex gap-1.5 items-center text-lg font-normal justify-center sm:justify-start"><svg width="16" height="16" viewBox="0 0 24 24" role="presentation" aria-hidden="true" focusable="false"><path d="M8.727 20a2 2 0 0 1-1.414-.586l-5.454-5.455a2 2 0 0 1 2.828-2.828l4.04 4.04L19.313 4.586a2 2 0 0 1 2.828 2.828l-12 12A2 2 0 0 1 8.727 20Z" fill="currentColor" stroke="none"></path></svg><span>Aktualität</span></p><p class="flex gap-1.5 items-center text-lg font-normal justify-center sm:justify-start"><svg width="16" height="16" viewBox="0 0 24 24" role="presentation" aria-hidden="true" focusable="false"><path d="M8.727 20a2 2 0 0 1-1.414-.586l-5.454-5.455a2 2 0 0 1 2.828-2.828l4.04 4.04L19.313 4.586a2 2 0 0 1 2.828 2.828l-12 12A2 2 0 0 1 8.727 20Z" fill="currentColor" stroke="none"></path></svg><span>Suchoptionen</span></p></div></div><section class="order-last text-label3 sm:col-start-2 text-center sm:text-left hover:underline"><a href="https://www.idealo.de/unternehmen/pressemitteilungen/idealo-traegt-weiterhin-tuev-siegel-als-geprueftes-vergleichsportal-2020" class="sm:col-start-2">Mehr Infos</a></section></div><div class="flex flex-col text-xs py-5 text-marine-200"><div class="flex flex-col items-center px-[15px]"><div class="flex flex-wrap justify-center list-none"><li class="after:content-[&#39;·&#39;] after:mx-1.5"><a href="https://www.idealo.de/legal/datenschutz" class="hover:underline">Datenschutz</a></li><li class="after:content-[&#39;·&#39;] after:mx-1.5"><button id="oopr-footer-privacy-btn" type="button" class="hover:underline cursor-pointer">Privatsphäre</button></li><li class="after:content-[&#39;·&#39;] after:mx-1.5"><a href="https://www.idealo.de/legal/agb" class="hover:underline">Impressum / AGB</a></li><li><a href="https://www.idealo.de/aktion/ranking" class="hover:underline">Ranking</a></li></div><p class="mt-2 px-[15px] text-center"><a class="hover:underline" href="https://www.idealo.de/legal/hinweis" target="_blank" rel="noreferrer">* Alle Preisangaben in Euro inkl. MwSt, ggf. zzgl. Versand. Zwischenzeitliche Änderung der Preise, Rangfolge, Lieferzeit und -kosten möglich. Lieferzeiten in Tagen (Mo-Fr ohne Feiertage). Zahlungsarten Rechnungskauf und Lastschrift vorbehaltlich einer Prüfung durch den Händler.</a></p></div></div></footer> </div> </span><nav class="categoryNavigation" data-category-navigation="{
&#34;$i18n&#34; : {
&#34;back&#34; : &#34;Kategorien&#34;,
&#34;close&#34; : &#34;Alle Kategorien&#34;,
&#34;more&#34; : &#34;mehr&#34;
}
}">
<div class="categoryNavigation-header clearfix">
<span class="categoryNavigation-headerClose icon icon_cancel-thin icon-withText">
Kategorien</span>
<span class="categoryNavigation-headerBack icon icon_arrow-left-thin icon-withText">
Alle Kategorien</span>
<span class="categoryNavigation-headerSearch icon icon_search float-right"></span>
</div>
<div class="categoryNavigation-wrapper row clearfix">
<div class="categoryNavigation-main">
<ul class="categoryNavigation-list categoryNavigation-list--main">
<li class="categoryNavigation-listItem categoryNavigation-listItem--active">
<a class="categoryNavigation-listItemLink" href="/preisvergleich/SubProductCategory/3932.html">
Drogerie &amp; Gesundheit</a>
<ul class="categoryNavigation-list categoryNavigation-list--sub categoryNavigation-list--subShow row">
<li class="categoryNavigation-listItem">
<a class="categoryNavigation-listItemLink" href="/preisvergleich/ProductCategory/9352.html">
Babynahrung</a>
</li>
<li class="categoryNavigation-listItem">
<a class="categoryNavigation-listItemLink" href="/preisvergleich/SubProductCategory/14476.html">
Sanitätshaus &amp; Klinikbedarf</a>
</li>
<li class="categoryNavigation-listItem">
<a class="categoryNavigation-listItemLink" href="/preisvergleich/SubProductCategory/14733.html">
Baby-Ernährung</a>
</li>
<li class="categoryNavigation-listItem">
<a class="categoryNavigation-listItemLink" href="/preisvergleich/ProductCategory/11613.html">
Sonnenpflege</a>
</li>
<li class="categoryNavigation-listItem">
<a class="categoryNavigation-listItemLink" href="/preisvergleich/ProductCategory/3972.html">
Damendüfte</a>
</li>
<li class="categoryNavigation-listItem">
<a class="categoryNavigation-listItemLink" href="/preisvergleich/ProductCategory/5414.html">
Zahnpflegeprodukte</a>
</li>
<li class="categoryNavigation-listItem">
<a class="categoryNavigation-listItemLink" href="/preisvergleich/ProductCategory/5472.html">
Kontaktlinsen</a>
</li>
<li class="categoryNavigation-listItem">
<a class="categoryNavigation-listItemLink" href="/preisvergleich/ProductCategory/8694.html">
Herrendüfte</a>
</li>
<li class="categoryNavigation-listItem">
<a class="categoryNavigation-listItemLink" href="/preisvergleich/SubProductCategory/10812.html">
Make-up</a>
</li>
<li class="categoryNavigation-listItem">
<a class="categoryNavigation-listItemLink" href="/preisvergleich/ProductCategory/10832.html">
Gesichtspflege</a>
</li>
<li class="categoryNavigation-listItem">
<a class="categoryNavigation-listItemLink" href="/preisvergleich/ProductCategory/10852.html">
Körperpflegeprodukte</a>
</li>
<li class="categoryNavigation-listItem">
<a class="categoryNavigation-listItemLink" href="/preisvergleich/ProductCategory/10872.html">
Haarpflegeprodukte</a>
</li>
<li class="categoryNavigation-listItem">
<a class="categoryNavigation-listItemLink" href="/preisvergleich/ProductCategory/14673.html">
Pflege-Geschenksets</a>
</li>
<li class="categoryNavigation-listItem">
<a class="categoryNavigation-listItemLink" href="/preisvergleich/ProductCategory/16252.html">
Unisex-Düfte</a>
</li>
<li class="categoryNavigation-listItem">
<a class="categoryNavigation-listItemLink" href="/preisvergleich/SubProductCategory/18367.html">
Liebe &amp; Verhütung</a>
</li>
<li class="categoryNavigation-listItem">
<a class="categoryNavigation-listItemLink" href="/preisvergleich/ProductCategory/18454.html">
Deodorants</a>
</li>
<li class="categoryNavigation-listItem">
<a class="categoryNavigation-listItemLink" href="/preisvergleich/ProductCategory/18481.html">
Duschprodukte &amp; Badeprodukte</a>
</li>
<li class="categoryNavigation-listItem">
<a class="categoryNavigation-listItemLink" href="/preisvergleich/SubProductCategory/30302.html">
Haushaltsartikel</a>
</li>
<li class="categoryNavigation-listItem">
<a class="categoryNavigation-listItemLink" href="/preisvergleich/SubProductCategory/30333.html">
Babypflegeprodukte</a>
</li>
<li class="categoryNavigation-listItem">
<a class="categoryNavigation-listItemLink" href="/preisvergleich/SubProductCategory/30350.html">
Medizin &amp; Nahrungsergänzung</a>
</li>
</ul>
</li>
</ul>
</div>
<div class="categoryNavigation-sub">
</div>
</div>
</nav>
<script src="//cdn.idealo.com/storage/offerpage/assets/offerpage/vendor-7a70b829bff10bbc7d51.js"></script><script src="//cdn.idealo.com/storage/offerpage/assets/offerpage/idealo-f5f16123012ced3ad834.js"></script><script src="//cdn.idealo.com/storage/offerpage/assets/offerpage/local-offers-map-b4604c412038fb74f31d.js" defer=""></script><script src="//cdn.idealo.com/storage/offerpage/assets/offerpage/oop-aside-last-seen-c01542f5e51f8d0cf3e2.js" async=""></script><script src="https://cdn.idealo.com/storage/wishlist-assets/bundle-heart-module.js" data-wishlist-heart-tracking="offerlist" async=""></script>
<span class="ui-component-include"> <script>(function(){const tid = "EA-3572062";
const isMobile = false;
const country = "DE";
window.dlApi = {
target: `${isMobile ? 'M_' : ''}IDEALO_${country}/OOP`,
tid,
dsainfo: 1,
cmd: [],
};
})();</script><script src="https://das-cdn.idealo.com/3572062/build/dlApi/minit.boot.min.js" async=""></script><script>(function(){const consentGiven = false;
if (window.dlApi) {
// Initialize with current consent status
window.dlApi.cmd.push(function (_dlApi) {
_dlApi.consent({ npa: consentGiven ? 0 : 1 });
});
}
// Listen for consent status changes
window.addEventListener('ucEvent', (event) => {
const hasConsent = event.detail?.Idealo === true;
const hasConsentChanged = consentGiven !== hasConsent // event fires on mount too
if (window.dlApi && hasConsentChanged) {
window.dlApi.cmd.push(function (_dlApi) {
_dlApi.consent({ npa: hasConsent ? 0 : 1 });
});
}
});
})();</script> </span><div class="ipc-modal-dialog" id="voucherCodeModal">
<div class="ipc-modal-content">
<div class="ipc-modal-body">
<button class="btn-modal-close" aria-label="Schließen">
<img src="//cdn.idealo.com/storage/offerpage/assets/offerpage/img/close-d7823204560a71ca58b6.svg" alt="Schließen" width="14" height="14" loading="lazy"/>
</button>
<div class="content"></div>
</div>
</div>
<div class="ipc-modal-overlay"></div>
</div>
<span class="ui-component-include"></span><div id="ZN_eLQJnmgE0lsWGIR"><!--DO NOT REMOVE-CONTENTS PLACED HERE--></div>
</div></div><noscript><img src="https://www.idealo.de/akam/13/pixel_7723bc98?a=dD0yNWU1OGJjOTZkMjczMDA2NzAxY2FkMzM0YzAxN2Q5Nzc1NmMwMjkzJmpzPW9mZg==" style="visibility: hidden; position: absolute; left: -999px; top: -999px;" /></noscript><script type="text/javascript" src="/uNrARH5hlFFv/gIsbvAQMR3/ln/VpYa4b1EkY/UiMuSVE/DAB/-diZRJwZb?v=d65a9947-5a68-c3f4-48d4-9affa084173c" defer></script></body></html>