{"version":3,"sources":["webpack:///./src/project/app/blocks/UniqueSellingPointItem.vue?227b","webpack:///./src/project/app/blocks/TextWithImageBlock.vue?c337","webpack:///./src/assets/icons/map-marker-blue.svg","webpack:///./src/project/app/blocks/UniqueSellingPointItem.vue?00f6","webpack:///./src/project/app/blocks/UniqueSellingPointItem.vue","webpack:///./src/project/app/blocks/UniqueSellingPointItem.vue?e819","webpack:///./src/project/app/blocks/UniqueSellingPointItem.vue?dac9","webpack:///./src/project/app/blocks/categories/CategoryBlock.vue?6897","webpack:///./src/project/app/blocks/categories/CategoryBlock.vue","webpack:///./src/project/app/blocks/categories/CategoryBlock.vue?f360","webpack:///./src/project/app/blocks/categories/CategoryBlock.vue?50de","webpack:///./src/project/app/blocks/BrandsBlock.vue?f923","webpack:///./src/project/shared/category.service.ts","webpack:///./src/project/app/blocks/BrandsBlock.vue","webpack:///./src/project/app/blocks/BrandsBlock.vue?8621","webpack:///./src/project/app/blocks/BrandsBlock.vue?7948","webpack:///./src/project/app/blocks/categories/CategoryBlockItem.vue?127b","webpack:///./src/project/app/blocks/AdnuntiusHeroBannerBlock.vue?4c14","webpack:///./src/project/app/blocks/TextBlock.vue?a716","webpack:///./src/project/app/blocks/TextBlock.vue","webpack:///./src/project/app/blocks/TextBlock.vue?d537","webpack:///./src/project/app/blocks/TextBlock.vue?1b9a","webpack:///./src/project/app/blocks/tableHtml.service.ts","webpack:///./src/project/app/blocks/categories/CategoryBlockItem.vue?310b","webpack:///./src/project/app/blocks/categories/CategoryBlockItem.vue","webpack:///./src/project/app/blocks/categories/CategoryBlockItem.vue?f082","webpack:///./src/project/app/blocks/categories/CategoryBlockItem.vue?4345","webpack:///./src/project/app/blocks/ProductListBlock.vue?7418","webpack:///./src/project/app/blocks/ProductListBlock.vue","webpack:///./src/project/app/blocks/ProductListBlock.vue?49da","webpack:///./src/project/app/blocks/ProductListBlock.vue?7e3b","webpack:///./src/project/app/blocks/LatestNewsBlock.vue?3892","webpack:///./src/project/app/blocks/LatestNewsBlock.vue","webpack:///./src/project/app/blocks/LatestNewsBlock.vue?5a9f","webpack:///./src/project/app/blocks/LatestNewsBlock.vue?da71","webpack:///./src/project/app/blocks/TextWithImageBlock.vue?c6d2","webpack:///./src/project/app/blocks/TextWithImageBlock.vue","webpack:///./src/project/app/blocks/TextWithImageBlock.vue?d231","webpack:///./src/project/app/blocks/TextWithImageBlock.vue?7084","webpack:///./src/project/app/blocks/OnePlusTwoBlocks.vue?afb4","webpack:///./src/project/app/blocks/AdnuntiusHeroBannerBlock.vue?aaa4","webpack:///./src/project/app/blocks/AdnuntiusHeroBannerBlock.vue","webpack:///./src/project/app/blocks/AdnuntiusHeroBannerBlock.vue?0fc4","webpack:///./src/project/app/blocks/AdnuntiusHeroBannerBlock.vue?f415","webpack:///./src/core/ui-components/tabs/Tab.vue?d7bc","webpack:///./src/core/ui-components/tabs/Tab.vue","webpack:///./src/core/ui-components/tabs/Tab.vue?57b9","webpack:///./src/core/ui-components/tabs/Tab.vue?7f28","webpack:///./src/assets/icons/map-marker-turquoise.svg","webpack:///./src/project/app/blocks/CategoryRecommendationsBlock.vue?5358","webpack:///./src/project/app/blocks/ContentBlockContainer.vue?eb5a","webpack:///./src/project/app/blocks/ContentBlockContainer.vue","webpack:///./src/project/app/blocks/ContentBlockContainer.vue?4201","webpack:///./src/project/app/blocks/ContentBlockContainer.vue?3612","webpack:///./src/project/app/content-pages/NewsArticleTeaser.vue?06d4","webpack:///./src/project/app/content-pages/NewsArticleTeaser.vue","webpack:///./src/project/app/content-pages/NewsArticleTeaser.vue?e58d","webpack:///./src/project/app/content-pages/NewsArticleTeaser.vue?76cb","webpack:///./src/project/app/blocks/LatestCampaignsBlock.vue?1e9c","webpack:///./src/project/app/blocks/ImageTextVideoBlockNew.vue?daec","webpack:///./src/project/app/blocks/LatestNewsBlock.vue?fcd0","webpack:///./src/project/app/blocks/QuoteBlock.vue?3c60","webpack:///./src/project/app/blocks/QuoteBlock.vue","webpack:///./src/project/app/blocks/QuoteBlock.vue?d14f","webpack:///./src/project/app/blocks/QuoteBlock.vue?b77e","webpack:///./src/project/app/blocks/HeroBannerBlock.vue?745e","webpack:///./src/project/app/blocks/HeroBannerBlock.vue","webpack:///./src/project/app/blocks/HeroBannerBlock.vue?79ba","webpack:///./src/project/app/blocks/HeroBannerBlock.vue?a318","webpack:///./src/project/app/blocks/JotFormBlock.vue?2a7c","webpack:///./src/project/app/blocks/JotFormBlock.vue","webpack:///./src/project/app/blocks/JotFormBlock.vue?e090","webpack:///./src/project/app/blocks/JotFormBlock.vue?e782","webpack:///./src/core/ui-components/tabs/Tabs.vue?f69a","webpack:///./src/core/ui-components/tabs/Tabs.vue","webpack:///./src/core/ui-components/tabs/Tabs.vue?e940","webpack:///./src/core/ui-components/tabs/Tabs.vue?35b9","webpack:///./src/project/app/blocks/OnePlusTwoBlocks.vue?99c4","webpack:///./src/project/app/blocks/OnePlusTwoBlocks.vue","webpack:///./src/project/app/blocks/OnePlusTwoBlocks.vue?09c8","webpack:///./src/project/app/blocks/OnePlusTwoBlocks.vue?217c","webpack:///./src/project/app/content-pages/CampaignTeaser.vue?1777","webpack:///./src/project/app/blocks/google-maps/GoogleMapsBlock.vue?936b","webpack:///./src/project/app/blocks/AspectRatioBlockContainer.vue","webpack:///./src/project/app/blocks/AspectRatioBlockContainer.vue?6dce","webpack:///./src/project/app/blocks/AspectRatioBlockContainer.vue?793c","webpack:///./src/project/app/blocks/google-maps/GoogleMapsBlock.vue","webpack:///./src/project/app/blocks/google-maps/GoogleMapsBlock.vue?543a","webpack:///./src/project/app/blocks/google-maps/GoogleMapsBlock.vue?1bea","webpack:///./src/project/app/blocks/CategoryRecommendationsBlock.vue?9603","webpack:///./src/project/app/blocks/CategoryRecommendationsBlock.vue","webpack:///./src/project/app/blocks/CategoryRecommendationsBlock.vue?36b9","webpack:///./src/project/app/blocks/CategoryRecommendationsBlock.vue?7bcd","webpack:///./src/project/app/blocks/ImageTextVideoBlockNew.vue?f965","webpack:///./src/project/app/blocks/ImageTextVideoBlockNew.vue","webpack:///./src/project/app/blocks/ImageTextVideoBlockNew.vue?b139","webpack:///./src/project/app/blocks/ImageTextVideoBlockNew.vue?8b33","webpack:///./src/project/app/blocks/FullWidthTextBlock.vue?1c21","webpack:///./src/project/app/blocks/FullWidthTextBlock.vue","webpack:///./src/project/app/blocks/FullWidthTextBlock.vue?05c8","webpack:///./src/project/app/blocks/FullWidthTextBlock.vue?b5b2","webpack:///./src/project/app/blocks/LatestCampaignsBlock.vue?1d4e","webpack:///./src/project/app/blocks/LatestCampaignsBlock.vue","webpack:///./src/project/app/blocks/LatestCampaignsBlock.vue?20cf","webpack:///./src/project/app/blocks/LatestCampaignsBlock.vue?d587","webpack:///./src/project/app/blocks/TabbedContentBlock.vue?ee8c","webpack:///./src/project/app/blocks/TabbedContentBlock.vue","webpack:///./src/project/app/blocks/TabbedContentBlock.vue?df29","webpack:///./src/project/app/blocks/TabbedContentBlock.vue?b1e5","webpack:///./src/project/app/blocks/BrandRecommendationsBlock.vue?4d83","webpack:///./src/core/messages/WebApiMessage.vue?f9ab","webpack:///./src/core/messages/WebApiMessage.vue","webpack:///./src/core/messages/WebApiMessage.vue?5af9","webpack:///./src/core/messages/WebApiMessage.vue?0b74","webpack:///./src/project/app/blocks/HalfWidthBlocks.vue?3191","webpack:///./src/project/app/blocks/HalfWidthBlocks.vue","webpack:///./src/project/app/blocks/HalfWidthBlocks.vue?1ddc","webpack:///./src/project/app/blocks/HalfWidthBlocks.vue?639d","webpack:///./src/project/app/blocks/BrandsBlock.vue?e90c","webpack:///./src/assets/icons/map-marker-black.svg","webpack:///./src/project/app/blocks/UniqueSellingPointBlock.vue?b1ff","webpack:///./src/project/app/blocks/UniqueSellingPointBlock.vue","webpack:///./src/project/app/blocks/UniqueSellingPointBlock.vue?04f4","webpack:///./src/project/app/blocks/UniqueSellingPointBlock.vue?f89b","webpack:///./src/project/app/blocks/newsletter/CancelNewsletterBlock.vue?668e","webpack:///./src/project/app/blocks/newsletter/CancelNewsletterBlock.vue","webpack:///./src/project/app/blocks/newsletter/CancelNewsletterBlock.vue?fd13","webpack:///./src/project/app/blocks/newsletter/CancelNewsletterBlock.vue?1667","webpack:///./src/assets/icons/map-marker-green.svg","webpack:///./src/project/app/content-pages/NewsArticleTeaser.vue?2345","webpack:///./src/project/app/content-pages/CampaignTeaser.vue?d5dd","webpack:///./src/project/app/content-pages/CampaignTeaser.vue","webpack:///./src/project/app/content-pages/CampaignTeaser.vue?9690","webpack:///./src/project/app/content-pages/CampaignTeaser.vue?23d0","webpack:///./src/project/app/blocks/BrandRecommendationsBlock.vue?9cb7","webpack:///./src/project/app/blocks/BrandRecommendationsBlock.vue","webpack:///./src/project/app/blocks/BrandRecommendationsBlock.vue?7a7b","webpack:///./src/project/app/blocks/BrandRecommendationsBlock.vue?bb3d"],"names":["module","exports","render","_vm","this","_h","$createElement","_c","_self","staticClass","style","attrs","linkUrl","linkTarget","class","isPixelImage","backgroundColorStyle","content","iconBackgroundColor","iconUrl","width","height","_e","_v","_s","headline","text","linkName","staticRenderFns","icon","url","shortText","link","target","name","indexOf","color","length","backgroundColor","result","isColorDefined","required","type","Object","component","appendToPreviousBlock","isFirstBlock","_l","item","ix","key","categoryItems","customBackgroundColor","undefined","red","green","blue","isDarkBackground","theme","colors","white","black","paddingBottom","textColor","getCategoryItems","settings","selectedAdUnitIdContent","adUnitId","personalization","categories","$route","fullPath","getContactKey","getCustomerKey","Boolean","components","CategoryBlockItem","SmartHeadline","brands","linkText","brandOverviewPageName","brand","brandId","brandPageName","params","brandName","directives","rawName","value","imageLoadFailed","expression","imageUrl","on","$event","imageLoadError","_f","getCategoryIdFromUrl","regMatcher","matchingRegEx","match","replace","categoriesRegEx","RegExp","isLoading","BRAND","BRAND_OVERVIEW","categoryIdFromUrl","path","customer","brandTiles","isLoggedIn","$forceUpdate","getBrandTiles","ref","domProps","bodyText","callToActionColor","callToAction","html","wrapTableInOuterDivs","registerTableOverflow","$refs","htmlContent","unregisterTableOverflow","default","oldWidthNHeight","wrappersAndTables","Set","toggleHorisontalScroll","table","wrapper","clientWidth","classList","add","remove","viewPortChangeEventHandler","viewport","newWidthNHeight","forEach","x","containingElement","Error","wrappers","querySelectorAll","size","setCallback","querySelector","countBefore","delete","removeCallback","replaceFunc","replaceEx","renderedPixelUrl","visiblePixelUrl","viewPixelUrl","clickPixelUrl","scopedSlots","_u","fn","click","categoryUrl","nativeOn","apply","arguments","categoryDisplayName","campaignUrl","getUrlForMenuItem","getPageUrl","AdnuntiusPixels","products","header","productBackgroundColor","loading","productIds","product","simpleByItemId","getProducts","CondensedProductList","news","id","sliderOptions","index","prevButtonSelector","slot","nextButtonSelector","firstNews","Date","valueOf","spaceBetween","slidesPerView","slidesPerGroup","loop","loopFillGroupWithBlank","watchSlidesVisibility","watchOverflow","setWrapperSize","navigation","nextEl","prevEl","grabCursor","instanceName","observer","observeParents","observeSlideChildren","NewsArticleTeaser","placeImageRight","image","imageFormat","focalPoint","subHeadline","headlineColor","subHeadlineColor","isTakeOverBanner","leftImage","rightImage","hidden","contentLoadError","adnuntiusTrackingData","adContentBlockViewModel","aspectRatio","imageLoaded","getAdContent","setTimeout","setThemeLoaded","getBundledPersonalizedContent","isBackgroundVideo","vimeoVideoId","overlayVimeoVideoId","overlayVimeoCta","applyTheme","lineItemId","creativeId","parentBlockAlias","isTakeOverEnabled","marginColor","imageLeft","Math","floor","getScrollbarWidth","transform","scrollBarWidth","imageRight","ImageTextVideoBlock","_t","active","selected","hash","getHash","setHash","String","_b","$attrs","isHalfWidthBlock","isHeroBanner","parentAlias","UniqueSellingPointBlock","AllowedBlocks","alias","$emit","isAdUnitContent","validator","includes","Number","ImageTextVideoBlockNew","TextBlock","JotFormBlock","GoogleMapsBlock","CancelNewsletterBlock","newsImageFormat","date","teaser","SmartParagraph","quote","author","staticStyle","allowTransparency","allowFullscreen","allowScrolling","jotformSrc","jotFormId","window","addEventListener","handleIFrameMessage","removeEventListener","e","data","iframe","jotform","args","split","_window","scrollIntoView","clientHeight","innerHeight","src","script","document","createElement","body","appendChild","exitFullscreen","mozCancelFullScreen","mozCancelFullscreen","webkitExitFullscreen","msExitFullscreen","isJotForm","origin","contentWindow","urls","docurl","encodeURIComponent","URL","referrer","postMessage","JSON","stringify","headerClass","tab","activeTab","toggle","contentClass","tabs","bus","emit","$children","filter","$options","find","isActive","setup","blockAlignmentRight","largeBlock","halfWidthBlocksOne","halfWidthBlocksTwo","largeBlockAlignmentValue","Left","halfWidthBlocks","ContentBlockContainer","center","defaultZoom","options","marker","groupName","markerClicked","pixelOffset","infoWindow","position","open","hideInfoWindow","activeMarker","address","postalCodeAndCity","country","phoneNumber","email","mobileAspectRatio","isBreakpointActive","isMobile","widthOnScreen","aspectRatioMargins","activeBpDef","keys","bpDef","paddingPct","realAspectRatio","margin","lat","lng","styles","featureType","elementType","stylers","visibility","isOprema","markerOffice","markerOther","mapLocations","map","clickable","draggable","locationType","scaledSize","parseFloat","gpsLatitude","gpsLongitude","maxZoom","minZoom","zoomControl","mapTypeControl","scaleControl","streetViewControl","rotateControl","fullscreenControl","disableDefaultUI","clickableIcons","scrollwheel","disableDoubleClickZoom","keyboardShortcuts","$mapPromise","getMap","bounds","google","maps","LatLngBounds","markers","extend","fitBounds","panToBounds","getZoom","setZoom","navigator","geolocation","getCurrentPosition","coords","setCenter","latitude","longitude","$gmapApiPromiseLazy","setBoundsByMarkers","syncCenterLocationWithUser","GmapMap","GmapMarker","GmapInfoWindow","rendered","category","handleSlideVisible","viewed","handleClickCategory","imageIndex","resizeImageByPath","uri","x1","displayName","productCount","brandCount","activeBreakpoint","debouncedTrackCategoryViewed","doTrackCategoryViewed","viewedCategories","slidesPerGroupAuto","newBreakpoint","getActiveBreakpoint","$nextTick","recommendations","recommendByCategory","categoryIdFilterPositiveList","categoryIdFilterNegativeList","brandIdFilterList","displayedAtLocation","displayLocation","periodDays","interval","popularityType","popularity","categoryCount","error","formatImageUrl","ImageSizePlaceholderValues","W86","x2","W172","trackCreativeClick","categoryId","push","trackCreativeView","getCategoryData","addListener","handleBreakpointChange","removeListener","shouldUseFlexBox","hasTextContent","showCaptionAsContentTitle","caption","shouldApplyBannerTextLimits","video","showBackgroundImage","isBackgroundImageBehaviorCover","hasNoVideoOrVideoHasBeenLoaded","loadingVideo","extension","showHtmlCustomControls","isPlaying","isWithinWideBannerAspectRatio","alignRight","subheader","colorStyle","captionColor","headerColor","headerHeadlineLevel","subheaderSizeClass","subheaderColor","ctaColor","clickHandler","clickOpenVideoOverlay","renderContent","toggleVideoState","semiTransparencyPercentage","videoAspectRatio","wideBannerAspectRatio","contentBackgroundColor","vimeoVideoAspectRatio","backgroundImageWidth","useFlexBox","backgroundImageBehavior","styling","backgroundImage","backgroundSize","top","newBackgroundWidth","newBackgroundHeight","upsizeFactor","doResize","allowUpscale","round","backgroundImageUrl","flex","backgroundPosition","left","backgroundRepeat","quality","firstSeparator","focal","qualityFormatted","format","absoluteImageUrl","getBaseUrl","forceVimeoAspectRatio","$el","initVideo","videoMount","onloadeddata","ensureId","autoplay","muted","controls","showVideoControls","title","byline","portrait","opremayellow","autopause","console","log","getVimeoVideoAspectRatio","idOrUrl","idParts","parseInt","contentAligmentValue","contentWidthValue","TwoThird","FullWidth","subheaderFontSizeValue","Large","Normal","delayedVideoAspectRatio","getVideoWidth","getVideoHeight","minSize","subheaderSize","min","max","pause","play","hex","alpha","hexToRgbWithDefault","semiTransparent","makeContentBackgroundTransparent","shouldShowContentBackground","translateY","level","hexColor","EETBlack","Right","widthCls","OneThird","adImages","backgroundImages","img","isMatchingImageAspectRatio","allowedDelta","abs","adnuntiusImages","srcset","join","sort","imageA","imageB","sizes","realWidthOnScreen","shimColor","opacity","videoContainerMoreNarrowThanVideo","captionLocation","adImageProps","showCallToActionButton","show","Function","immediate","SpinnerOverlay","CallToAction","campaigns","campaign","anyCampaignWithImageOrIcon","firstCampaign","c","showIcon","autoHeight","CampaignTeaser","keepAlive","blocks","Tabs","Tab","messages","message","getMessage","errorId","onMessages","validationErrorEvent","messagesId","handled","msgOrLabel","exists","get","off","block","_uid","isSiblingVimeoVideo","failingBlocks","siblingIndex","sibling","b","uid","isInHalfWidth","wrapperClass","pointsClass","itemClasses","itemTextStyle","classes","uniqueSellingPointItems","UniqueSellingPointItem","success","subtitle","handleSubmit","preventDefault","submit","model","callback","$$v","newsletter","unsubscribe","WebApiMessage","forceImageThumb","xs","md","lg","iconInImage","defaultCampaignIcon","campaignName","endDate","buttonText","recommendedBrands","getBrandUrl","handleClickBrand","brandLogo","isSimpleView","debouncedTrackBrandViewed","doTrackBrandViewed","viewedBrands","recommendPopularBrands","toLowerCase","creative","getBrandData","ResponsiveIcon"],"mappings":"kJAAA,yBAAykB,EAAG,G,oCCA5kB,yBAAqkB,EAAG,G,qBCAxkBA,EAAOC,QAAU,IAA0B,oC,yCCA3C,IAAIC,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAACE,YAAY,8DAA8D,CAAEN,EAAW,QAAEI,EAAG,4BAA4B,CAACE,YAAY,8EAA8EC,MAAOP,EAAa,UAAEQ,MAAM,CAAC,GAAKR,EAAIS,QAAQ,OAAST,EAAIU,aAAa,CAAEV,EAAW,QAAEI,EAAG,MAAM,CAACE,YAAY,mDAAmDK,MAAM,CAAC,4BAA6BX,EAAIY,cAAcL,MAAOP,EAAIa,qBAAqBb,EAAIc,QAAQC,sBAAuB,CAACX,EAAG,MAAM,CAACE,YAAY,qBAAqBK,MAAM,CAAC,iCAAkCX,EAAIY,cAAcJ,MAAM,CAAC,IAAMR,EAAIgB,QAAQ,MAAQhB,EAAIiB,MAAM,OAASjB,EAAIkB,OAAO,IAAM,QAAQlB,EAAImB,KAAMnB,EAAY,SAAEI,EAAG,KAAK,CAACE,YAAY,uDAAuD,CAACN,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIsB,UAAU,OAAOtB,EAAImB,KAAMnB,EAAQ,KAAEI,EAAG,IAAI,CAACE,YAAY,2BAA2B,CAACN,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIuB,MAAM,OAAOvB,EAAImB,KAAKf,EAAG,OAAO,CAACE,YAAY,6DAA6D,CAACN,EAAIoB,GAAGpB,EAAIqB,GAAGrB,EAAIwB,eAAepB,EAAG,MAAM,CAACE,YAAY,sDAAsD,CAAEN,EAAW,QAAEI,EAAG,MAAM,CAACE,YAAY,mDAAmDK,MAAM,CAAC,4BAA6BX,EAAIY,cAAcL,MAAOP,EAAIa,qBAAqBb,EAAIc,QAAQC,sBAAuB,CAACX,EAAG,MAAM,CAACE,YAAY,qBAAqBK,MAAM,CAAC,wBAAyBX,EAAIY,cAAcJ,MAAM,CAAC,IAAMR,EAAIgB,QAAQ,MAAQhB,EAAIiB,MAAM,OAASjB,EAAIkB,OAAO,IAAM,QAAQlB,EAAImB,KAAMnB,EAAY,SAAEI,EAAG,KAAK,CAACE,YAAY,uDAAuD,CAACN,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIsB,UAAU,OAAOtB,EAAImB,KAAMnB,EAAQ,KAAEI,EAAG,IAAI,CAACE,YAAY,2BAA2B,CAACN,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIuB,MAAM,OAAOvB,EAAImB,QAAQ,IACn0DM,EAAkB,G,oCC0CtB,IAAqB,EAArB,cAAoD,aAS7B,oBACf,iBAAOxB,KAAKa,QAAQY,YAApB,aAAO,EAAmBC,IAGV,qBAChB,iBAAO1B,KAAKa,eAAZ,aAAO,EAAcQ,SAGT,iBACZ,iBAAOrB,KAAKa,eAAZ,aAAO,EAAcc,UAGN,oBACf,iBAAO3B,KAAKa,QAAQe,YAApB,aAAO,EAAmBF,IAGR,uBAClB,iBAAO1B,KAAKa,QAAQe,YAApB,aAAO,EAAmBC,OAGV,qBAChB,iBAAO7B,KAAKa,QAAQe,YAApB,aAAO,EAAmBE,KAGN,mBACpB,OAAyC,IAAlC9B,KAAKe,QAAQgB,QAAQ,UAAqD,IAAnC/B,KAAKe,QAAQgB,QAAQ,WAAqD,IAAlC/B,KAAKe,QAAQgB,QAAQ,QAG9F,YACb,OAAO/B,KAAKW,aAAe,GAAK,GAGlB,aACd,OAAOX,KAAKW,aAAe,GAAK,GAGpC,eAAeqB,GAAa,MACxB,iBAAyB,KAAb,OAALA,QAAK,IAALA,OAAA,EAAAA,EAAOC,eAAd,SAGI,qBAAqBC,GACzB,IAAIC,EAAS,GAMb,OAJInC,KAAKoC,eAAeF,KACpBC,EAASD,GAGL,CACJA,gBAAiBC,KArDtB,gBAHF,eAAK,CACFE,UAAU,EACVC,KAAMC,U,8BAIV,gBADC,kB,gCANgB,EAAsB,gBAD1C,QACoB,WC3Cga,I,wBCQjbC,EAAY,eACd,EACA1C,EACA0B,GACA,EACA,KACA,KACA,MAIa,aAAAgB,E,oDCnBf,IAAI1C,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAACO,MAAM,CAAE,6BAA8BX,EAAI0C,wBAAyB,CAACtC,EAAG,iBAAiB,CAACE,YAAY,sDAAsDE,MAAM,CAAC,MAAQR,EAAI2C,aAAe,KAAO,KAAK,cAAc3C,EAAI2C,eAAe,CAAC3C,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIc,QAAQQ,UAAU,OAAOlB,EAAG,MAAM,CAACE,YAAY,gCAAgCC,MAAOP,EAAS,OAAGA,EAAI4C,GAAI5C,EAAiB,eAAE,SAAS6C,EAAKC,GAAI,OAAO1C,EAAG,sBAAsB,CAAC2C,IAAID,EAAGtC,MAAM,CAAC,QAAUqC,QAAU,IAAI,IACjkBpB,EAAkB,G,yGCwBtB,IAAqB,EAArB,cAA2C,OAA3C,c,oBAoCY,KAAAuB,cAAyC,GAzBhB,4BAC7B,OAAO/C,KAAKa,QAAQ4B,wBAA0BzC,KAAK0C,aAG5B,sBACvB,OAAO1C,KAAKa,QAAQmC,sBACdhD,KAAKa,QAAQmC,sBACbhD,KAAKa,QAAQqB,gBAAkB,IAAMlC,KAAKa,QAAQqB,qBAAkBe,EAGzD,gBACjB,IAAKjD,KAAKkC,gBAAiB,OAC3B,MAAM,IAAEgB,EAAF,MAAOC,EAAP,KAAcC,GAAS,eAAepD,KAAKkC,iBAC3CmB,EAAmB,eAAKH,EAAKC,EAAOC,IAAS,GACnD,OAAOC,EAAmB,IAASC,MAAMC,OAAOC,MAAQ,IAASF,MAAMC,OAAOE,MAGjE,YACb,MAAO,CACHvB,gBAAiBlC,KAAKkC,mBAClBlC,KAAKkC,iBAAmB,CAAEwB,cAAe,QAC7C1B,MAAOhC,KAAK2D,WAMZ,UACJ3D,KAAK4D,iBAAiB5D,KAAKa,QAAQgD,SAASC,wBAAwBC,UAG1C,uBAACA,GAC3B/D,KAAK+C,oBAAsB,OAAIiB,gBAAgBC,WAC3CF,EACA/D,KAAKkE,OAAOC,SACZ,OAAiBC,gBACjB,OAAiBC,oBA3CtB,gBAHF,eAAK,CACFhC,UAAU,EACVC,KAAMC,U,8BAMP,gBAHF,eAAK,CACFF,UAAU,EACVC,KAAMgC,W,mCARO,EAAa,gBAHjC,eAAU,CACPC,WAAY,CAAEC,oBAAA,KAAmBC,gBAAA,SAEhB,WCzBya,I,YCO1bjC,EAAY,eACd,EACA1C,EACA0B,GACA,EACA,KACA,KACA,MAIa,aAAAgB,E,oDClBf,IAAI1C,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAI2E,QAAU3E,EAAI2E,OAAOzC,OAAS,EAAG9B,EAAG,UAAU,CAACE,YAAY,mCAAmCK,MAAM,CAAE,6BAA8BX,EAAI0C,wBAAyB,CAACtC,EAAG,MAAM,CAACE,YAAY,2BAA2B,CAAEN,EAAIc,QAAgB,SAAEV,EAAG,gBAAgB,CAACE,YAAY,qBAAqBE,MAAM,CAAC,MAAQR,EAAI2C,aAAe,KAAO,KAAK,cAAc3C,EAAI2C,eAAe,CAAC3C,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIc,QAAQQ,UAAU,OAAOtB,EAAImB,KAAMnB,EAAIc,QAAgB,SAAEV,EAAG,MAAM,CAACE,YAAY,0BAA0B,CAACF,EAAG,eAAe,CAACE,YAAY,kBAAkBE,MAAM,CAAC,KAAOR,EAAIc,QAAQ8D,SAAS,KAAO,CAAE7C,KAAM/B,EAAI6E,2BAA4B,GAAG7E,EAAImB,MAAM,GAAGf,EAAG,KAAK,CAACE,YAAY,kBAAkB,CAAEN,EAAa,UAAEI,EAAG,KAAK,CAACE,YAAY,cAAcN,EAAImB,KAAKnB,EAAI4C,GAAI5C,EAAU,QAAE,SAAS8E,GAAO,OAAO1E,EAAG,KAAK,CAAC2C,IAAI+B,EAAMC,QAAQzE,YAAY,qCAAqC,CAACF,EAAG,yBAAyB,CAACE,YAAY,2DAA2DE,MAAM,CAAC,GAAK,CAAEuB,KAAM/B,EAAIgF,cAAeC,OAAQ,CAAEC,UAAWJ,EAAMI,cAAgB,CAAC9E,EAAG,MAAM,CAAC+E,WAAW,CAAC,CAACpD,KAAK,OAAOqD,QAAQ,SAASC,OAAQP,EAAMQ,gBAAiBC,WAAW,2BAA2BjF,YAAY,0BAA0BE,MAAM,CAAC,IAAMsE,EAAMU,SAAS,IAAMV,EAAMI,WAAWO,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1F,EAAI2F,eAAeb,OAAW1E,EAAG,OAAO,CAACO,MAAM,CAAE,WAAYmE,EAAMQ,kBAAmB,CAAClF,EAAG,OAAO,CAACE,YAAY,WAAW,CAACN,EAAIoB,GAAGpB,EAAIqB,GAAGrB,EAAI4F,GAAG,IAAP5F,CAAY,8CAA8CA,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGyD,EAAMI,WAAW,UAAU,OAAM,GAAIlF,EAAIc,QAAgB,SAAEV,EAAG,MAAM,CAACE,YAAY,aAAa,CAACF,EAAG,eAAe,CAACE,YAAY,kBAAkBE,MAAM,CAAC,KAAOR,EAAIc,QAAQ8D,SAAS,KAAO,CAAE7C,KAAM/B,EAAIgF,mBAAoB,GAAGhF,EAAImB,OAAOnB,EAAImB,MAC7yDM,EAAkB,G,oCCKtB,SAASoE,EAAqBlE,GAC1B,MAAMmE,EAAaC,IAEbC,EAAQrE,EAAIqE,MAAMF,GACxB,OAAIE,GAA0B,IAAjBA,EAAM9D,OACR8D,EAAM,GAAGC,QAAQ,KAAM,KAE3B,KAGX,SAASF,IAEL,MAAMG,EAAkB,eACxB,OAAO,IAAIC,OAAOD,GAGP,OACXL,uBACAE,iB,oCCwBJ,IAAqB,EAArB,cAAyC,OAAzC,c,oBAWI,KAAAK,WAAqB,EAMb,KAAAzB,OAAgD,GAJ/B,4BACrB,OAAO1E,KAAKa,QAAQ4B,wBAA0BzC,KAAK0C,aAK9B,oBACrB,OAAO,OAAS0D,MAGa,4BAC7B,OAAO,OAASC,eAGO,sBACvB,MAAMC,EAAoB,EAAmBV,qBAAqB5F,KAAKkE,OAAOqC,MACxEpE,QAAe,OAAIqE,SAASC,WAAWH,GAC7CtG,KAAK0E,OAASvC,EAAOsE,WACrBzG,KAAKmG,WAAY,EAGH,qBACd,OAAO,OAAYO,aAGf,eAAe7B,GACnBA,EAAMQ,iBAAkB,EACxBrF,KAAK2G,eAGT,UACI3G,KAAK4G,kBAxCN,gBAHF,eAAK,CACFvE,UAAU,EACVC,KAAMC,U,8BAMP,gBAHF,eAAK,CACFF,UAAU,EACVC,KAAMgC,W,mCARO,EAAW,gBAH/B,eAAU,CACPC,WAAY,CAAEE,gBAAA,SAEG,WChDqZ,I,wBCQtajC,EAAY,eACd,EACA1C,EACA0B,GACA,EACA,KACA,KACA,MAIa,aAAAgB,E,sECnBf,yBAAinB,EAAG,G,oCCApnB,yBAA2kB,EAAG,G,kECA9kB,IAAI1C,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAACE,YAAY,SAASK,MAAM,CAAE,sCAAuCX,EAAImC,iBAAkB5B,MAAM,CAAG,mBAAoBP,EAAImC,kBAAoB,CAAC/B,EAAG,MAAM,CAACA,EAAG,MAAM,CAAEJ,EAAIc,QAAgB,SAAEV,EAAG,iBAAiB,CAACE,YAAY,QAAQE,MAAM,CAAC,MAAQR,EAAI2C,aAAe,KAAO,KAAK,cAAc3C,EAAI2C,eAAe,CAAC3C,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIc,QAAQQ,UAAU,OAAOtB,EAAImB,KAAKf,EAAG,UAAU,CAAC+E,WAAW,CAAC,CAACpD,KAAK,sBAAsBqD,QAAQ,0BAA0B0B,IAAI,cAAcxG,YAAY,qBAAqByG,SAAS,CAAC,UAAY/G,EAAIqB,GAAGrB,EAAIgH,SAAShH,EAAIc,QAAQkG,cAAehH,EAAIc,QAAoB,aAAEV,EAAG,iBAAiB,CAACE,YAAY,qBAAqBE,MAAM,CAAC,YAAYR,EAAIc,QAAQmG,kBAAkB,KAAOjH,EAAIc,QAAQoG,aAAanF,KAAK,KAAO/B,EAAIc,QAAQoG,aAAavF,IAAI,OAAS3B,EAAIc,QAAQoG,aAAapF,UAAU9B,EAAImB,MAAM,QACt6BM,EAAkB,G,gDC4BtB,IAAqB,EAArB,cAAuC,OAYR,sBACvB,OAAOxB,KAAKa,QAAQqB,gBAAkB,IAAIlC,KAAKa,QAAQqB,gBAAoB,KAGvE,SAASgF,GACb,OAAO,OAAiBC,qBAAqBD,GAOzC,UACJ,OAAiBE,sBAAsBpH,KAAKqH,MAAMC,aAG9C,gBACJ,OAAiBC,wBAAwBvH,KAAKqH,MAAMC,eAzBrD,gBAHF,eAAK,CACFjF,UAAU,EACVC,KAAMC,U,8BAOP,gBAJF,eAAK,CACFF,UAAU,EACVmF,SAAS,EACTlF,KAAMgC,W,mCATO,EAAS,gBAH7B,eAAU,CACPC,WAAY,CAAEE,gBAAA,SAEG,WC7BmZ,I,YCOpajC,EAAY,eACd,EACA1C,EACA0B,GACA,EACA,KACA,KACA,MAIa,aAAAgB,E,yHCVf,IAAIiF,EAAkB,EAEtB,MAAMC,EAAoB,IAAIC,IAE9B,SAASC,EAAuBC,EAAoBC,GAC5CD,EAAME,YAAcD,EAAQC,YAC5BD,EAAQE,UAAUC,IAAI,cAEtBH,EAAQE,UAAUE,OAAO,cAIjC,SAASC,EAA2BC,GAChC,MAAMC,EAAkBD,EAASpH,MAAQoH,EAASnH,OAC9CoH,IAAoBZ,IACxBA,EAAkBY,EAElBX,EAAkBY,QAAQC,IACtBX,EAAuBW,EAAEV,MAAOU,EAAET,YAI1C,SAASV,EAAsBoB,GAC3B,IAAKA,EAAmB,MAAM,IAAIC,MAAM,4CACxC,MAAMC,EAAWF,EAAkBG,iBAAiB,eACrB,IAA3BjB,EAAkBkB,MAClB,OAAeC,YAAYV,GAE/BO,EAASJ,QAAQR,IACb,MAAMD,EAAQC,EAAQgB,cAAc,SAChCjB,IACAH,EAAkBO,IAAI,CAClBO,oBACAV,UACAD,UAEJD,EAAuBC,EAAOC,MAK1C,SAASP,EAAwBiB,GAC7B,IAAKA,EAAmB,MAAM,IAAIC,MAAM,4CACxC,MAAMM,EAAcrB,EAAkBkB,KACtClB,EAAkBY,QAAQC,IAClBA,EAAEC,oBAAsBA,GACxBd,EAAkBsB,OAAOT,KAG7BQ,EAAc,GAAgC,IAA3BrB,EAAkBkB,MACrC,OAAeK,eAAed,GAItC,SAAShB,EAAqBD,GAC1B,SAASgC,KAAelE,GACpB,MAAO,gCAAgCA,EAAO,iBAGlD,MAAMmE,EAAY,iCAElB,OAAOjC,EAAKlB,QAAQmD,EAAWD,GAGpB,QACX9B,wBACAG,0BACAJ,yB,oCC3EJ,IAAIrH,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,kBAAkB,CAACE,YAAY,uFAAuFE,MAAM,CAAC,eAAeR,EAAIc,QAAQuI,iBAAiB,cAAcrJ,EAAIc,QAAQwI,gBAAgB,WAAWtJ,EAAIc,QAAQyI,aAAa,YAAYvJ,EAAIc,QAAQ0I,eAAeC,YAAYzJ,EAAI0J,GAAG,CAAC,CAAC3G,IAAI,UAAU4G,GAAG,SAAS7C,GAChb,IAAI8C,EAAQ9C,EAAI8C,MAChB,MAAO,CAAE5J,EAAe,YAAEI,EAAG,yBAAyB,CAACE,YAAY,oEAAoEE,MAAM,CAAC,GAAKR,EAAI6J,YAAY,OAAS,QAAQC,SAAS,CAAC,MAAQ,SAASpE,GAAQ,OAAOkE,EAAMG,MAAM,KAAMC,cAAc,CAAC5J,EAAG,MAAM,CAACE,YAAY,gEAAgE,CAACF,EAAG,MAAM,CAACI,MAAM,CAAC,IAAMR,EAAI0B,KAAK,IAAM1B,EAAIc,QAAQmJ,yBAAyB7J,EAAG,OAAO,CAACE,YAAY,WAAW,CAACN,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAI4F,GAAG,IAAP5F,CAAY,2CAA2C,OAAOI,EAAG,IAAI,CAACE,YAAY,6DAA6D,CAACN,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIc,QAAQmJ,qBAAqB,KAAK7J,EAAG,QAAQ,CAACE,YAAY,8BAA8BE,MAAM,CAAC,KAAO,cAAc,MAAQ,IAAI,OAAS,QAAQ,KAAKR,EAAImB,aAClxBM,EAAkB,G,4DCsCtB,IAAqB,EAArB,cAA+C,OAA/C,c,oBAKY,KAAAoI,YAA6B,KAErB,WACZ,OAAO5J,KAAKa,QAAQY,KAAKC,IAGL,mBACpB,IAAIA,EACJ,MAAMuI,EAAcjK,KAAKa,QAAQa,UAAY,OAAgBwI,kBAAkBlK,KAAKa,QAAQa,KAAO,KAQnG,OALIA,EADA1B,KAAKa,QAAQa,IAAKK,QAAQ,OAAS,GAAKkI,EAClCA,EAEAjK,KAAKa,QAAQa,IAGhBA,EAGiB,6BACxB,iBAAO1B,KAAKa,eAAZ,aAAO,EAAcuI,iBAGD,yBACpB,iBAAOpJ,KAAKa,eAAZ,aAAO,EAAcyI,aAGE,4BACvB,iBAAOtJ,KAAKa,eAAZ,aAAO,EAAcwI,gBAGA,0BACrB,iBAAOrJ,KAAKa,eAAZ,aAAO,EAAc0I,cAGZ,gBACTvJ,KAAK4J,kBAAoB5J,KAAKmK,eAtC/B,gBAFF,eAAK,CACF7H,KAAMC,U,8BAFO,EAAiB,gBAHrC,eAAU,CACPgC,WAAY,CAAE6F,kBAAA,SAEG,WCzC6a,I,wBCQ9b5H,EAAY,eACd,EACA1C,EACA0B,GACA,EACA,KACA,WACA,MAIa,OAAAgB,E,kDCnBf,IAAI1C,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAIsK,SAASpI,OAAS,EAAG9B,EAAG,uBAAuB,CAACI,MAAM,CAAC,SAAWR,EAAIc,QAAQyJ,OAAO,iBAAiBvK,EAAI2C,aAAa,SAAW3C,EAAIsK,SAAS,aAAa,GAAG,qBAAsB,oBAAuBtK,EAAImE,OAAW,KAAG,mBAAmBnE,EAAIc,QAAQ0J,0BAA0BxK,EAAImB,MAC5XM,EAAkB,G,4DCoBtB,IAAqB,EAArB,cAA8C,OAA9C,c,oBAYY,KAAA6I,SAAoC,GACpC,KAAAG,SAAmB,EAEF,oBACrB,GAAuC,IAAnCxK,KAAKa,QAAQ4J,WAAWxI,OAA5B,CAEAjC,KAAKwK,SAAU,EAEf,IACI,MAAMrI,QAAe,OAAIuI,QAAQC,eAAe3K,KAAKa,QAAQ4J,YAC7DzK,KAAKqK,SAAWlI,EAAOkI,SAF3B,QAIIrK,KAAKwK,SAAU,IAIf,UACJxK,KAAK4K,gBAzBN,gBAHF,eAAK,CACFvI,UAAU,EACVC,KAAMC,U,8BAOP,gBAJF,eAAK,CACFF,UAAU,EACVC,KAAMgC,QACNkD,SAAS,K,mCATI,EAAgB,gBAHpC,eAAU,CACPjD,WAAY,CAAEE,gBAAA,KAAeoG,uBAAA,SAEZ,WCrB0Z,I,YCO3arI,EAAY,eACd,EACA1C,EACA0B,GACA,EACA,KACA,KACA,MAIa,aAAAgB,E,oDClBf,IAAI1C,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAACE,YAAY,oCAAoC,CAAEN,EAAIc,QAAQQ,UAAYtB,EAAI+K,KAAK7I,OAAQ9B,EAAG,gBAAgB,CAACE,YAAY,QAAQE,MAAM,CAAC,MAAQR,EAAI2C,aAAe,KAAO,KAAK,cAAc3C,EAAI2C,eAAe,CAAC3C,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIc,QAAQQ,UAAU,OAAOtB,EAAImB,KAAKf,EAAG,SAAS,CAACO,MAAM,UAAYX,EAAIgL,GAAGxK,MAAM,CAAC,GAAKR,EAAIgL,GAAG,gBAAgBhL,EAAIgL,GAAG,QAAUhL,EAAIiL,gBAAgBjL,EAAI4C,GAAI5C,EAAQ,MAAE,SAAS+K,EAAKG,GAAO,OAAO9K,EAAG,cAAc,CAAC2C,IAAImI,EAAM5K,YAAY,gBAAgB,CAACF,EAAG,oBAAoB,CAACI,MAAM,CAAC,KAAOuK,MAAS,MAAK,GAAG3K,EAAG,SAAS,CAACE,YAAY,4CAA4CK,MAAMX,EAAImL,mBAAmB3K,MAAM,CAAC,KAAO,cAAc,KAAO,UAAU4K,KAAK,eAAe,CAAChL,EAAG,QAAQ,CAACI,MAAM,CAAC,KAAO,kBAAkB,MAAQ,KAAK,OAAS,SAAS,GAAGJ,EAAG,SAAS,CAACE,YAAY,4CAA4CK,MAAMX,EAAIqL,mBAAmB7K,MAAM,CAAC,KAAO,cAAc,KAAO,UAAU4K,KAAK,eAAe,CAAChL,EAAG,QAAQ,CAACI,MAAM,CAAC,KAAO,mBAAmB,MAAQ,KAAK,OAAS,SAAS,IAAI,IACvmCiB,EAAkB,G,gDC8BtB,IAAqB,EAArB,cAA6C,OAYzB,WACZ,MAAO,CAACxB,KAAKa,QAAQwK,aAAcrL,KAAKa,QAAQiK,MAGtC,SACV,MAAO,sBAAuB,IAAIQ,MAAOC,UAGf,yBAC1B,MAAO,6BAA+BvL,KAAK+K,GAGjB,yBAC1B,MAAO,6BAA+B/K,KAAK+K,GAGtB,oBACrB,MAAO,CACHS,aAAc,GACdC,cAAe,OACfC,eAAgB,EAChBC,MAAM,EACNC,wBAAwB,EACxBC,uBAAuB,EACvBC,eAAe,EACfC,gBAAgB,EAChBC,WAAY,CACRC,OAAQ,IAAMjM,KAAKoL,mBACnBc,OAAQ,IAAMlM,KAAKkL,oBAEvBiB,YAAY,EACZC,aAAcpM,KAAK+K,GACnBsB,UAAU,EACVC,gBAAgB,EAChBC,sBAAsB,KA1C3B,gBAHF,eAAK,CACFlK,UAAU,EACVC,KAAMC,U,8BAOP,gBAJF,eAAK,CACFF,UAAU,EACVmF,SAAS,EACTlF,KAAMgC,W,mCATO,EAAe,gBAHnC,eAAU,CACPC,WAAY,CAAEiI,oBAAA,KAAmB/H,gBAAA,SAEhB,WC/ByZ,I,wBCQ1ajC,EAAY,eACd,EACA1C,EACA0B,GACA,EACA,KACA,WACA,MAIa,aAAAgB,E,6ECnBf,IAAI1C,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAACE,YAAY,mCAAmC,CAAEN,EAAIc,QAAa,MAAEV,EAAG,MAAM,CAACE,YAAY,yBAAyBK,MAAM,CAAC,sBAAwBX,EAAIc,QAAQ4L,gBAAiB,YAAc1M,EAAIc,QAAQ4L,kBAAkB,CAACtM,EAAG,mBAAmB,CAACI,MAAM,CAAC,YAAYR,EAAIc,QAAQ6L,MAAMhL,IAAI,OAAS3B,EAAI4M,YAAY,KAAO,OAAO,cAAc5M,EAAIc,QAAQ6L,MAAME,WAAW,IAAM,OAAO,GAAG7M,EAAImB,KAAKf,EAAG,MAAM,CAACO,MAAM,CAAC,yBAA2BX,EAAIc,QAAQ6L,MAAO,WAAa3M,EAAIc,QAAQ4L,iBAAmB1M,EAAIc,QAAQ6L,MAAO,YAAc3M,EAAIc,QAAQ4L,iBAAmB1M,EAAIc,QAAQ6L,MAAO,UAAY3M,EAAIc,QAAQ6L,QAAQ,CAACvM,EAAG,MAAM,CAACE,YAAY,mDAAmD,CAAEN,EAAIc,QAAgB,SAAEV,EAAG,iBAAiB,CAACE,YAAY,4CAA4CK,MAAM,CAAC,iBAAmBX,EAAIc,QAAQgM,aAAavM,MAAM,CAAE,MAAUP,EAAI+M,eAAgBvM,MAAM,CAAC,MAAQR,EAAI2C,aAAe,KAAO,OAAO,CAAC3C,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIc,QAAQQ,UAAU,OAAOtB,EAAImB,KAAMnB,EAAIc,QAAmB,YAAEV,EAAG,iBAAiB,CAACE,YAAY,mBAAmBK,MAAM,CAAC,iBAAmBX,EAAIc,QAAQS,MAAMhB,MAAM,CAAE,MAAUP,EAAIgN,kBAAmBxM,MAAM,CAAC,MAAQR,EAAI2C,aAAe,KAAO,OAAO,CAAC3C,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIc,QAAQgM,aAAa,OAAO9M,EAAImB,KAAMnB,EAAIc,QAAY,KAAEV,EAAG,MAAM,CAAC+E,WAAW,CAAC,CAACpD,KAAK,sBAAsBqD,QAAQ,0BAA0B9E,YAAY,iEAAiEK,MAAM,CAAC,iBAAmBX,EAAIc,QAAQoG,cAAc3G,MAAM,CAAE,MAAUP,EAAI4D,WAAYmD,SAAS,CAAC,UAAY/G,EAAIqB,GAAGrB,EAAIc,QAAQS,SAASvB,EAAImB,KAAMnB,EAAIc,QAAoB,aAAEV,EAAG,iBAAiB,CAACE,YAAY,eAAeE,MAAM,CAAC,YAAYR,EAAIc,QAAQmG,kBAAkB,KAAOjH,EAAIc,QAAQoG,aAAanF,KAAK,KAAO/B,EAAIc,QAAQoG,aAAavF,IAAI,OAAS3B,EAAIc,QAAQoG,aAAapF,UAAU9B,EAAImB,MAAM,QAC/4DM,EAAkB,G,gDC8CtB,IAAqB,EAArB,cAAgD,OAWnB,0BACrB,iBAAOxB,KAAKa,QAAQiM,qBAApB,QAAqC,KAGb,6BACxB,iBAAO9M,KAAKa,QAAQkM,wBAApB,QAAwC,KAGvB,sBACjB,iBAAO/M,KAAKa,QAAQ8C,iBAApB,QAAiC,KAGd,wBACnB,OAAO,eAAyB,UAAC3D,KAAKa,eAAN,aAAC,EAAc6L,SApBhD,gBAHF,eAAK,CACFrK,UAAU,EACVC,KAAMC,U,8BAMP,gBAHF,eAAK,CACFF,UAAU,EACVC,KAAMgC,W,mCARO,EAAkB,gBAHtC,eAAU,CACPC,WAAY,CAAEE,gBAAA,SAEG,WC/C4Z,I,wBCQ7ajC,EAAY,eACd,EACA1C,EACA0B,GACA,EACA,KACA,KACA,MAIa,aAAAgB,E,6CCnBf,yBAAmkB,EAAG,G,yCCAtkB,IAAI1C,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,wBAAwBK,MAAM,CAAE,eAAgBX,EAAIiN,iBAAkB,6BAA8BjN,EAAI0C,uBAAwBnC,MAAOP,EAAe,aAAG,CAAEA,EAAa,UAAEI,EAAG,MAAM,CAACE,YAAY,eAAeC,MAAOP,EAAqB,kBAAEQ,MAAM,CAAC,IAAMR,EAAIkN,UAAU,IAAM,MAAMlN,EAAImB,KAAMnB,EAAc,WAAEI,EAAG,MAAM,CAACE,YAAY,eAAeC,MAAOP,EAAsB,mBAAEQ,MAAM,CAAC,IAAMR,EAAImN,WAAW,IAAM,MAAMnN,EAAImB,KAAKf,EAAG,MAAM,CAACE,YAAY,gBAAgBK,MAAM,CAAE,cAAeX,EAAIiN,iBAAkB,qBAAuBjN,EAAI2C,aAAcyK,OAAQpN,EAAIqN,mBAAoB,CAACjN,EAAG,kBAAkB,CAACI,MAAM,CAAC,eAAeR,EAAIqJ,iBAAiB,cAAcrJ,EAAIsJ,gBAAgB,WAAWtJ,EAAIuJ,aAAa,YAAYvJ,EAAIwJ,cAAc,gBAAgBxJ,EAAIsN,uBAAuB7D,YAAYzJ,EAAI0J,GAAG,CAAC,CAAC3G,IAAI,UAAU4G,GAAG,SAAS7C,GAC76B,IAAI8C,EAAQ9C,EAAI8C,MAChB,MAAO,CAAE5J,EAA2B,wBAAEI,EAAG,sBAAsB,CAACI,MAAM,CAAC,QAAUR,EAAIuN,wBAAwB,qBAAqBvN,EAAIqN,iBAAiB,kBAAkB,IAAI,eAAerN,EAAIwN,YAAY,iBAAiBxN,EAAI2C,aAAa,mCAAkC,EAAK,gBAAgBiH,GAAOnE,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAO1F,EAAIyN,kBAAkBzN,EAAImB,aAAa,MACpXM,EAAkB,G,oFC2CtB,IAAqB,EAArB,cAAsD,OAAtD,c,oBACY,KAAA8L,wBAAkE,KAClE,KAAAF,kBAAmB,EACnB,KAAAC,sBAAsD,KAYrC,4BACrB,OAAOrN,KAAKa,QAAQ4B,wBAA0BzC,KAAK0C,aAG/C,UACJ1C,KAAKyN,aAAazN,KAAKa,QAAQgD,SAASC,wBAAwBC,UAG5D,cAGJ2J,WAAW,KACP,OAAaC,kBACd,KAGmB,mBAAC5J,GACvB,IACI,MAAMuJ,QAAiE,OAAiBM,8BACpF7J,EACA/D,KAAKkE,OAAOC,UAChBmJ,EAAwBO,oBAAsBP,EAAwBQ,aAElER,EAAwBS,qBAAuBT,EAAwBU,iBAAmBV,EAAwBrG,eAClHqG,EAAwBrG,kBAAehE,GAE3CjD,KAAKsN,wBAA0BA,EAE3BtN,KAAK0C,cACL,OAAauL,WAAWjO,KAAKsN,yBAG7BtN,KAAKsN,wBAAwBY,YAAclO,KAAKsN,wBAAwBa,aACxEnO,KAAKqN,sBAAwB,CACzBa,WAAYlO,KAAKsN,wBAAwBY,WACzCC,WAAYnO,KAAKsN,wBAAwBa,WACzCC,iBAAkB,4BAG5B,MACEpO,KAAKoN,kBAAmB,GAIJ,uBACxB,OAAO,OAAaiB,kBAGD,kBACnB,OAAOrO,KAAKgN,iBAAoB,KAAO,IAAQ,EAG5B,0BACnB,GAAI,UAAChN,KAAKsN,+BAAN,OAAC,EAA8BgB,YAEnC,MAAO,CACHpM,gBAAe,UAAElC,KAAKsN,+BAAP,aAAE,EAA8BgB,aAIlC,wBACjB,iBAAOtO,KAAKsN,+BAAZ,iBAAO,EAA8BiB,iBAArC,aAAO,EAAyC7M,IAG1B,qBACtB,OAAO8M,KAAKC,MAAM,OAAcC,oBAAsB,GAG7B,8BACzB,GAAI,UAAC1O,KAAKsN,+BAAN,OAAC,EAA8BiB,UAEnC,MAAO,CACHI,UAAW,0CAA0C3O,KAAKsN,wBAAwBiB,UAAUvN,aAAahB,KAAK4O,sBAIhG,yBAClB,iBAAO5O,KAAKsN,+BAAZ,iBAAO,EAA8BuB,kBAArC,aAAO,EAA0CnN,IAGvB,+BAC1B,GAAI,UAAC1B,KAAKsN,+BAAN,OAAC,EAA8BuB,WAEnC,MAAO,CACHF,UAAW,0CAA0C3O,KAAKsN,wBAAwBuB,WAAW7N,aAAahB,KAAK4O,sBAI3F,6BACxB,iBAAO5O,KAAKsN,+BAAZ,aAAO,EAA8BlE,iBAGjB,yBACpB,iBAAOpJ,KAAKsN,+BAAZ,aAAO,EAA8BhE,aAGd,4BACvB,iBAAOtJ,KAAKsN,+BAAZ,aAAO,EAA8BjE,gBAGhB,0BACrB,iBAAOrJ,KAAKsN,+BAAZ,aAAO,EAA8B/D,gBA5GtC,gBAHF,eAAK,CACFlH,UAAU,EACVC,KAAMC,U,8BAMP,gBAHF,eAAK,CACFF,UAAU,EACVC,KAAMgC,W,mCAZO,EAAwB,gBAH5C,eAAU,CACPC,WAAY,CAAE6F,kBAAA,KAAiB0E,sBAAA,SAEd,WC9Cka,I,wBCQnbtM,EAAY,eACd,EACA1C,EACA0B,GACA,EACA,KACA,KACA,MAIa,aAAAgB,E,sECnBf,IAAI1C,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAa,UAAEI,EAAG,MAAM,CAAC+E,WAAW,CAAC,CAACpD,KAAK,OAAOqD,QAAQ,SAASC,MAAOrF,EAAU,OAAEuF,WAAW,YAAY,CAACvF,EAAIgP,GAAG,YAAY,GAAIhP,EAAU,OAAEI,EAAG,MAAM,CAACJ,EAAIgP,GAAG,YAAY,GAAGhP,EAAImB,MAClRM,EAAkB,G,oCCgBtB,IAAqB,EAArB,cAAiC,OAAjC,c,oBAMY,KAAAwN,OAAkBhP,KAAKiP,SAExB,OAAOD,GACVhP,KAAKgP,OAASA,EAEVA,GAAUhP,KAAKkP,MACX,OAAiBC,YAAcnP,KAAKkP,MACpC,OAAiBE,QAAQpP,KAAKkP,MAKvB,eACf,OAAOlP,KAAKgP,SAlBwB,gBAAvC,eAAK,CAAE1M,KAAM+M,OAAQhN,UAAU,K,2BACR,gBAAvB,eAAK,CAAEC,KAAM+M,U,2BAC2B,gBAAxC,eAAK,CAAE/M,KAAMgC,QAASkD,SAAS,K,+BACS,gBAAxC,eAAK,CAAElF,KAAMgC,QAASkD,SAAS,K,gCAJf,EAAG,gBAHvB,eAAU,CACP1F,KAAM,SAEW,WCjB6Y,I,YCO9ZU,EAAY,eACd,EACA1C,EACA0B,GACA,EACA,KACA,KACA,MAIa,OAAAgB,E,uDClBf5C,EAAOC,QAAU,IAA0B,yC,qCCA3C,yBAA+kB,EAAG,G,qCCAllB,IAAIC,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAmB,gBAAEI,EAAG,kBAAkB,CAACI,MAAM,CAAC,eAAeR,EAAIqJ,iBAAiB,cAAcrJ,EAAIsJ,gBAAgB,WAAWtJ,EAAIuJ,aAAa,YAAYvJ,EAAIwJ,cAAc,gBAAgBxJ,EAAIsN,uBAAuB7D,YAAYzJ,EAAI0J,GAAG,CAAC,CAAC3G,IAAI,UAAU4G,GAAG,SAAS7C,GAC7W,IAAI8C,EAAQ9C,EAAI8C,MAChB,MAAO,CAACxJ,EAAG,sBAAsBJ,EAAIuP,GAAG,CAAC/O,MAAM,CAAC,QAAUR,EAAIuN,wBAAwB,gBAAgB3D,EAAM,qBAAqB5J,EAAIqN,mBAAmB,sBAAsBrN,EAAIwP,QAAO,QAAY,MAAK,EAAM,cAAgBxP,EAAIyP,kBAAoBzP,EAAI0P,aAAetP,EAAG,yBAAyBJ,EAAIuP,GAAG,CAAC/O,MAAM,CAAC,QAAUR,EAAIc,UAAU,yBAAyBd,EAAIwP,QAAO,IAASxP,EAAe,YAAEI,EAAG,YAAYJ,EAAIuP,GAAG,CAAC/O,MAAM,CAAC,QAAUR,EAAIc,QAAQ,eAAed,EAAI2P,cAAc,YAAY3P,EAAIwP,QAAO,IAASxP,EAAkB,eAAEI,EAAG,eAAeJ,EAAIuP,GAAG,CAAC/O,MAAM,CAAC,QAAUR,EAAIc,UAAU,eAAed,EAAIwP,QAAO,IAASxP,EAAc,WAAEI,EAAG,kBAAkBJ,EAAIuP,GAAG,CAAC/O,MAAM,CAAC,QAAUR,EAAIc,UAAU,kBAAkBd,EAAIwP,QAAO,IAASxP,EAA2B,wBAAEI,EAAG,wBAAwBJ,EAAIuP,GAAG,CAAC/O,MAAM,CAAC,QAAUR,EAAIc,UAAU,wBAAwBd,EAAIwP,QAAO,IAASxP,EAA6B,0BAAEI,EAAG,0BAA0BJ,EAAIuP,GAAG,CAACjP,YAAY,gBAAgBE,MAAM,CAAC,QAAUR,EAAIc,QAAQ,mBAAmB,GAAG,gBAAgB,gBAAgB,eAAe,0BAA0B,0BAA0Bd,EAAIwP,QAAO,IAAQxP,EAAImB,MACvnCM,EAAkB,G,wHC2CtB,MAAMmO,EAA0B,IAAM,4CAEhCC,EAA6B,CAAC,aAAc,sBAAuB,iBAAkB,YAAa,eAAgB,MAAO,wBAAyB,2BAKxJ,IAAqB,EAArB,cAAmD,OAAnD,c,oBACY,KAAAxC,kBAAmB,EACnB,KAAAE,wBAA0D,KAC1D,KAAAD,sBAAsD,KActC,mBACpB,MAAsB,eAAfrN,KAAK6P,MAGW,sBACvB,MAAsB,wBAAf7P,KAAK6P,MAGY,uBACxB,MAAsB,mBAAf7P,KAAK6P,MAGO,kBACnB,MAAsB,cAAf7P,KAAK6P,MAGU,qBACtB,MAAsB,iBAAf7P,KAAK6P,MAGM,iBAClB,MAAsB,QAAf7P,KAAK6P,MAGmB,8BAC/B,MAAsB,0BAAf7P,KAAK6P,MAGqB,gCACjC,MAAsB,4BAAf7P,KAAK6P,MAGY,6BACxB,iBAAO7P,KAAKsN,+BAAZ,aAAO,EAA8BlE,iBAGjB,yBACpB,iBAAOpJ,KAAKsN,+BAAZ,aAAO,EAA8BhE,aAGd,4BACvB,iBAAOtJ,KAAKsN,+BAAZ,aAAO,EAA8BjE,gBAGhB,0BACrB,iBAAOrJ,KAAKsN,+BAAZ,aAAO,EAA8B/D,cAGf,mBAACxF,GACvB,IACI/D,KAAKsN,8BAAgC,OAAiBM,8BAClD7J,EACA/D,KAAKkE,OAAOC,UAEZnE,KAAKsN,wBAAwBY,YAAclO,KAAKsN,wBAAwBa,aACxEnO,KAAKqN,sBAAwB,CACzBa,WAAYlO,KAAKsN,wBAAwBY,WACzCC,WAAYnO,KAAKsN,wBAAwBa,WACzCC,iBAAkBpO,KAAK0P,cAGjC,MACE1P,KAAKoN,kBAAmB,EACxBpN,KAAK8P,MAAM,qBAIX,UACA9P,KAAK+P,iBACL/P,KAAKyN,aAAczN,KAAKa,QAA8CgD,SAASC,wBAAwBC,YAhF/G,gBADC,eAAK,CAAE1B,UAAU,EAAMC,KAAMC,U,8BAI9B,gBADC,eAAK,CAAEF,UAAU,EAAMC,KAAM+M,OAAQW,UAAY5K,GAAkBwK,EAAcK,SAAS7K,M,4BAI3F,gBADC,eAAK,CAAE/C,UAAU,EAAMC,KAAM+M,U,kCAI9B,gBADC,eAAK,CAAEhN,UAAU,EAAMC,KAAM4N,U,4BAdb,EAAqB,gBAHzC,eAAU,CACP3L,WAAY,CAAEoL,0BAAyBb,sBAAA,KAAqBqB,yBAAA,KAAwB/F,kBAAA,KAAiBgG,YAAA,WAAWC,eAAA,WAAcC,kBAAA,KAAiBC,wBAAA,eAE9H,WCrD+Z,I,YCOhb/N,EAAY,eACd,EACA1C,EACA0B,GACA,EACA,KACA,KACA,MAIa,OAAAgB,E,sEClBf,IAAI1C,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAQ,KAAEI,EAAG,UAAU,CAACE,YAAY,gBAAgB,CAACF,EAAG,MAAM,CAACE,YAAY,sBAAsB,CAAEN,EAAI+K,KAAU,MAAE3K,EAAG,mBAAmB,CAACI,MAAM,CAAC,YAAYR,EAAI+K,KAAK4B,MAAMhL,IAAI,KAAO,OAAO,OAAS3B,EAAIyQ,gBAAgB,eAAe,MAAU,cAAczQ,EAAI+K,KAAK4B,MAAME,WAAW,IAAM7M,EAAI+K,KAAK4B,MAAM5K,QAAQ3B,EAAG,MAAM,CAACE,YAAY,0CAA0C,CAACF,EAAG,QAAQ,CAACE,YAAY,OAAOE,MAAM,CAAC,KAAO,WAAW,GAAGJ,EAAG,4BAA4B,CAACE,YAAY,YAAYE,MAAM,CAAC,GAAKR,EAAI+K,KAAKpJ,IAAIA,MAAM,CAACvB,EAAG,iBAAiB,CAACE,YAAY,0BAA0BE,MAAM,CAAC,KAAOR,EAAI4F,GAAG,IAAP5F,CAAY,iBAAiB,KAAO,SAAS,KAAOA,EAAI+K,KAAKpJ,IAAIA,QAAQ,IAAI,GAAGvB,EAAG,MAAM,CAACE,YAAY,qCAAqC,CAACF,EAAG,IAAI,CAACE,YAAY,mBAAmB,CAACN,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAI+K,KAAK2F,MAAM,OAAOtQ,EAAG,IAAI,CAACE,YAAY,mBAAmB,CAACN,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAI+K,KAAKR,QAAQ,OAAOnK,EAAG,kBAAkB,CAACI,MAAM,CAAC,QAAUR,EAAI+K,KAAK4F,OAAO,iBAAiB,IAAI,UAAU,OAAO,KAAK3Q,EAAImB,MACvkCM,EAAkB,G,gDC4CtB,IAAqB,EAArB,cAA+C,OAIhB,4BACvB,OAAO,eAAyB,UAACxB,KAAK8K,YAAN,aAAC,EAAW4B,SAHhD,gBADC,eAAK,CAAErK,UAAU,K,2BADD,EAAiB,gBAHrC,eAAU,CACPkC,WAAY,CAAEoM,iBAAA,SAEG,WC7C2Z,I,wBCQ5anO,EAAY,eACd,EACA1C,EACA0B,GACA,EACA,KACA,WACA,MAIa,OAAAgB,E,2CCnBf,yBAA+lB,EAAG,G,oCCAlmB,yBAAimB,EAAG,G,oCCApmB,yBAA0lB,EAAG,G,2CCA7lB,IAAI1C,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAACE,YAAY,sBAAsBK,MAAM,CAAE,6BAA8BX,EAAI0C,uBAAwBnC,MAAOP,EAAS,OAAG,CAACI,EAAG,MAAM,CAACE,YAAY,QAAQ,CAACF,EAAG,MAAM,CAACE,YAAY,sBAAsB,CAACF,EAAG,QAAQ,CAACE,YAAY,kBAAkBE,MAAM,CAAC,KAAO,QAAQ,OAAS,KAAK,MAAQ,QAAQJ,EAAG,QAAQ,CAACE,YAAY,kBAAkBE,MAAM,CAAC,KAAO,QAAQ,OAAS,KAAK,MAAQ,SAAS,GAAGJ,EAAG,MAAM,CAACE,YAAY,uBAAuB,CAACF,EAAG,IAAI,CAAC+E,WAAW,CAAC,CAACpD,KAAK,sBAAsBqD,QAAQ,0BAA0B9E,YAAY,0EAA0EyG,SAAS,CAAC,UAAY/G,EAAIqB,GAAGrB,EAAIc,QAAQ+P,UAAUzQ,EAAG,IAAI,CAACE,YAAY,cAAc,CAACN,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIc,QAAQgQ,QAAQ,cACh0BrP,EAAkB,G,qEC8BtB,IAAqB,EAArB,cAAwC,OAYH,4BAC7B,OAAOxB,KAAKa,QAAQ4B,wBAA0BzC,KAAK0C,aAG5B,sBACvB,OAAO1C,KAAKa,QAAQmC,sBACdhD,KAAKa,QAAQmC,sBACbhD,KAAKa,QAAQqB,gBAAkB,IAAMlC,KAAKa,QAAQqB,qBAAkBe,EAGzD,gBACjB,IAAKjD,KAAKkC,gBAAiB,OAC3B,MAAM,IAAEgB,EAAF,MAAOC,EAAP,KAAcC,GAAS,eAAepD,KAAKkC,iBAC3CmB,EAAmB,eAAKH,EAAKC,EAAOC,IAAS,GACnD,OAAOC,EAAmB,IAASC,MAAMC,OAAOC,MAAQ,IAASF,MAAMC,OAAOE,MAGjE,YACb,MAAO,CACHvB,gBAAiBlC,KAAKkC,gBACtBF,MAAOhC,KAAK2D,aA5BjB,gBAHF,eAAK,CACFtB,UAAU,EACVC,KAAMC,U,8BAOP,gBAJF,eAAK,CACFF,UAAU,EACVmF,SAAS,EACTlF,KAAMgC,W,mCATO,EAAU,gBAH9B,eAAU,CACPC,WAAY,CAAEE,gBAAA,SAEG,WC/BoZ,I,YCOrajC,EAAY,eACd,EACA1C,EACA0B,GACA,EACA,KACA,KACA,MAIa,aAAAgB,E,kDClBf,IAAI1C,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACO,MAAM,CAAC,qBAAuBX,EAAI2C,eAAe,CAACvC,EAAG,yBAAyB,CAACI,MAAM,CAAC,QAAUR,EAAIc,QAAQ,kBAAkB,IAAI,eAAe,EAAS,kBAAiB,EAAK,iBAAiBd,EAAI2C,iBAAiB,IAC5TlB,EAAkB,G,gDCiBtB,IAAqB,EAArB,cAA6C,SAItC,gBAHF,eAAK,CACFa,UAAU,EACVC,KAAMC,U,8BAMP,gBAHF,eAAK,CACFF,UAAU,EACVC,KAAMgC,W,mCARO,EAAe,gBAHnC,eAAU,CACPC,WAAY,CAAEuK,sBAAA,KAAqBqB,yBAAA,SAElB,WClByZ,I,YCO1a3N,EAAY,eACd,EACA1C,EACA0B,GACA,EACA,KACA,KACA,MAIa,aAAAgB,E,kDClBf,IAAI1C,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAAEJ,EAAIc,QAAgB,SAAEV,EAAG,iBAAiB,CAACE,YAAY,QAAQE,MAAM,CAAC,MAAQR,EAAI2C,aAAe,KAAO,KAAK,cAAc3C,EAAI2C,eAAe,CAAC3C,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIc,QAAQQ,UAAU,OAAOtB,EAAImB,KAAKf,EAAG,UAAU,CAACA,EAAG,SAAS,CAAC0G,IAAI,UAAUiK,YAAY,CAAC,MAAQ,MAAM,YAAY,OAAO,OAAS,QAAQvQ,MAAM,CAAC,MAAQR,EAAIc,QAAQQ,SAAS,kBAAoBtB,EAAIc,QAAQkQ,kBAAkB,gBAAkBhR,EAAIc,QAAQmQ,gBAAgB,UAAYjR,EAAIc,QAAQoQ,eAAiB,MAAQ,KAAK,MAAQ,kCAAkC,IAAMlR,EAAImR,WAAW,YAAc,UAAU,IAC3qB1P,EAAkB,G,oCC4BtB,IAAqB,EAArB,cAA0C,OAYhB,iBAClB,MAAO,4BAA4BxB,KAAKa,QAAQsQ,UAO5C,UACJC,OAAOC,iBAAiB,UAAWrR,KAAKsR,qBAAqB,GAG1D,gBACHF,OAAOG,oBAAoB,UAAWvR,KAAKsR,qBAGvC,oBAAoBE,GACxB,GAAsB,kBAAXA,EAAEC,KAAqB,OAElC,MAAMC,EAAS1R,KAAKqH,MAAMsK,QAC1B,IAAKD,EAAU,OAEf,MAAME,EAAOJ,EAAEC,KAAKI,MAAM,KAEpBC,EAAUV,OAEhB,OAAQQ,EAAK,IACb,IAAK,iBACG5R,KAAK0C,cAAgBgP,EAAOK,iBAChC,MACJ,IAAK,YACDL,EAAOpR,MAAMW,OAAY2Q,EAAK,GAAR,KACtB,MACJ,IAAK,oBACGF,EAAOM,aAAeZ,OAAOa,cAC7BP,EAAOpR,MAAMW,OAAYmQ,OAAOa,YAAV,MAE1B,MACJ,IAAK,aACD,CACI,IAAIC,EAAMN,EAAK,GACXA,EAAK3P,OAAS,IACdiQ,EAAMN,EAAK,GAAK,IAAMA,EAAK,IAE/B,MAAMO,EAASC,SAASC,cAAc,UACtCF,EAAOD,IAAMA,EACbC,EAAO7P,KAAO,kBACd8P,SAASE,KAAKC,YAAYJ,GAE9B,MACJ,IAAK,iBACGL,EAAQM,SAASI,eAAgBV,EAAQM,SAASI,iBAC7CV,EAAQM,SAASK,qBACjBX,EAAQM,SAASM,oBADqBZ,EAAQM,SAASK,sBAEvDX,EAAQM,SAASO,qBAAsBb,EAAQM,SAASO,uBACxDb,EAAQM,SAASQ,kBAAkBd,EAAQM,SAASQ,mBAC7D,MAEJ,MAAMC,EAAarB,EAAEsB,OAAO/Q,QAAQ,YAAc,EAClD,GAAI8Q,GAAa,kBAAmBnB,GAAU,gBAAiBA,EAAOqB,cAAe,CACjF,MAAMC,EAAO,CAAEC,OAAQC,mBAAmBd,SAASe,KAAMC,SAAUF,mBAAmBd,SAASgB,WAC/F1B,EAAOqB,cAAcM,YAAYC,KAAKC,UAAU,CAAEjR,KAAM,OAAQ8C,MAAO4N,IAAS,QArErF,gBAHF,eAAK,CACF3Q,UAAU,EACVC,KAAMC,U,8BAOP,gBAJF,eAAK,CACFF,UAAU,EACVC,KAAMgC,QACNkD,SAAS,K,mCATI,EAAY,gBAHhC,eAAU,CACPjD,WAAY,CAAEE,gBAAA,SAEG,WC7BsZ,I,YCOvajC,EAAY,eACd,EACA1C,EACA0B,GACA,EACA,KACA,KACA,MAIa,aAAAgB,E,2CClBf,IAAI1C,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAACA,EAAG,MAAM,CAACE,YAAY,4BAA4B,CAACF,EAAG,MAAM,CAACE,YAAY,0BAA0BK,MAAMX,EAAIyT,aAAazT,EAAI4C,GAAI5C,EAAQ,MAAE,SAAS0T,GAAK,OAAOtT,EAAG,SAAS,CAAC2C,IAAI2Q,EAAI3R,KAAKzB,YAAY,4BAA4BK,MAAM,CAAE,OAAU+S,EAAI3R,OAAS/B,EAAI2T,UAAU5R,MAAOvB,MAAM,CAAC,KAAO,UAAUiF,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1F,EAAI4T,OAAOF,EAAI3R,SAAS,CAAC/B,EAAIgP,GAAG,UAAS,WAAW,MAAO,CAAChP,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGqS,EAAI3R,MAAM,QAAO,CAAC,MAAQ2R,EAAI3R,KAAK,OAAS2R,EAAI3R,OAAS/B,EAAI2T,UAAU5R,QAAQ,MAAK,KAAK/B,EAAIgP,GAAG,eAAe5O,EAAG,MAAM,CAACE,YAAY,cAAcK,MAAMX,EAAI6T,cAAc,CAAC7T,EAAIgP,GAAG,YAAY,IAAI,IAC9sBvN,EAAkB,G,4DCoCtB,IAAqB,EAArB,cAA2C,OAA3C,c,oBACY,KAAAkS,UAAwB,KAExB,KAAAG,KAAc,GAKf,OAAO/R,GACN9B,KAAK0T,WAAa1T,KAAK0T,UAAU5R,OAASA,GAC1C9B,KAAK8P,MAAM,UAAWhO,GAG1B,IAAK,MAAM2R,KAAOzT,KAAK6T,KACfJ,EAAI3R,OAASA,GACb9B,KAAK0T,UAAYD,EACjBA,EAAIE,QAAO,IAEXF,EAAIE,QAAO,GAGnBG,EAAA,KAAIC,KAAK,QAGL,QAEJ,GADA/T,KAAK6T,KAAO7T,KAAKgU,UAAUC,OAAO1L,GAAyB,QAApBA,EAAE2L,SAASpS,MACzB,IAArB9B,KAAK6T,KAAK5R,OACV,OAGJ,MAAMiN,EAAO,OAAiBC,UAC9B,GAAID,EAAM,CACN,MAAMwE,EAAY1T,KAAK6T,KAAKM,KAAK5L,GAAKA,EAAE2G,OAASA,GAC7CwE,IACA1T,KAAK0T,UAAYA,EACjBA,EAAUC,QAAO,IAIzB,IAAK3T,KAAK0T,UAAW,CACjB,IAAK,MAAMD,KAAOzT,KAAK6T,KACnB,GAAIJ,EAAIW,SAAU,CACdpU,KAAK0T,UAAYD,EACjB,MAKR,IAAKzT,KAAK0T,UAAW,CACjB,MAAMA,EAAY1T,KAAK6T,KAAK,GAC5B7T,KAAK0T,UAAYA,EACjBA,EAAUC,QAAO,IAIzB3T,KAAK8P,MAAM,OAAQ9P,KAAK0T,UAAU5R,MAGtC,UACI9B,KAAKqU,UAtDK,gBAAb,eAAKhF,S,kCACQ,gBAAb,eAAKA,S,mCANW,EAAa,gBADjC,QACoB,WCrC8Y,I,YCO/Z7M,EAAY,eACd,EACA1C,EACA0B,GACA,EACA,KACA,KACA,MAIa,OAAAgB,E,6EClBf,IAAI1C,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAACO,MAAM,CAAE,6BAA8BX,EAAI0C,wBAAyB,CAACtC,EAAG,MAAM,CAACE,YAAY,UAAU,CAACF,EAAG,MAAM,CAACE,YAAY,+BAA+BK,MAAM,CAAE,aAAcX,EAAIuU,sBAAsB,CAAEvU,EAAc,WAAEI,EAAG,wBAAwB,CAACE,YAAY,0BAA0BE,MAAM,CAAC,MAAQR,EAAIwU,WAAW1E,MAAM,QAAU9P,EAAIwU,WAAW1T,QAAQ,kBAAkB,GAAG,eAAe,EAAE,eAAed,EAAI8P,MAAM,MAAQ,KAAK9P,EAAImB,MAAM,GAAGf,EAAG,MAAM,CAACE,YAAY,gCAAgC,CAACF,EAAG,UAAU,CAACE,YAAY,wBAAwB,CAAEN,EAAsB,mBAAEI,EAAG,0BAA0B,CAACE,YAAY,4CAA4CE,MAAM,CAAC,MAAQR,EAAIyU,mBAAmB3E,MAAM,QAAU9P,EAAIyU,mBAAmB3T,QAAQ,kBAAkB,GAAG,eAAe,EAAE,eAAed,EAAI8P,MAAM,MAAQ,EAAE,uBAAuB,CAAE,UAAW,EAAG,SAAU,OAAQ9P,EAAImB,KAAMnB,EAAsB,mBAAEI,EAAG,0BAA0B,CAACE,YAAY,iBAAiBE,MAAM,CAAC,MAAQR,EAAI0U,mBAAmB5E,MAAM,QAAU9P,EAAI0U,mBAAmB5T,QAAQ,kBAAkB,GAAG,eAAe,EAAE,eAAed,EAAI8P,MAAM,MAAQ,EAAE,uBAAuB,CAAE,UAAW,EAAG,SAAU,OAAQ9P,EAAImB,MAAM,UACpxCM,EAAkB,G,iDC8CtB,IAAqB,EAArB,cAA8C,OAWjB,4BACrB,OAAOxB,KAAKa,QAAQ4B,wBAA0BzC,KAAK0C,aAGhC,0BACnB,OAAO1C,KAAKa,QAAQ6T,2BAA6B,OAAoBC,KAG3D,yBACV,OAAQ,UAAA3U,KAAKa,eAAL,mBAAc0T,kBAAd,eAA0BtS,QAAS,GAAKjC,KAAKa,QAAQ0T,WAAW,IAAO,KAG7D,iCAClB,OAAQ,UAAAvU,KAAKa,eAAL,mBAAc+T,uBAAd,eAA+B3S,QAAS,GAAKjC,KAAKa,QAAQ+T,gBAAgB,IAAO,KAGvE,iCAClB,OAAQ,UAAA5U,KAAKa,eAAL,mBAAc+T,uBAAd,eAA+B3S,QAAS,GAAKjC,KAAKa,QAAQ+T,gBAAgB,IAAO,OAxB1F,gBAHF,eAAK,CACFvS,UAAU,EACVC,KAAMC,U,8BAGI,gBAAb,eAAK8M,S,4BAGN,gBADC,eAAK,CAAEhN,UAAU,EAAMC,KAAMgC,W,mCARb,EAAgB,gBAHpC,eAAU,CACPC,WAAY,CAAEsQ,wBAAA,SAEG,WC/C0Z,I,wBCQ3arS,EAAY,eACd,EACA1C,EACA0B,GACA,EACA,KACA,KACA,MAIa,aAAAgB,E,2CCnBf,yBAAylB,EAAG,G,yDCA5lB,IAAI1C,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAACE,YAAY,0BAA0B,CAACF,EAAG,UAAU,CAACE,YAAY,WAAWC,MAAOP,EAAsB,oBAAG,CAACI,EAAG,MAAM,CAACE,YAAY,oBAAoB,CAACF,EAAG,UAAU,CAAC0G,IAAI,MAAMxG,YAAY,gBAAgBE,MAAM,CAAC,OAASR,EAAI+U,OAAO,KAAO/U,EAAIgV,YAAY,QAAUhV,EAAIiV,UAAU,CAACjV,EAAI4C,GAAI5C,EAAW,SAAE,SAASkV,EAAOhK,GAAO,OAAO9K,EAAG,aAAaJ,EAAIuP,GAAG,CAACxM,IAAImI,EAAM1K,MAAM,CAAC,MAAQ0U,EAAOxD,KAAKyD,WAAW1P,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1F,EAAIoV,cAAcF,MAAW,aAAaA,GAAO,OAAU9U,EAAG,iBAAiB,CAACI,MAAM,CAAC,QAAU,CAC7mB6U,YAAa,CAAEpU,MAAO,EAAGC,QAAS,KACpC,SAAWlB,EAAIsV,WAAWC,SAAS,OAASvV,EAAIsV,WAAWE,MAAM/P,GAAG,CAAC,WAAa,SAASC,GAAQ,OAAO1F,EAAIyV,oBAAoB,CAAEzV,EAAIsV,WAAuB,aAAElV,EAAG,MAAM,CAAC+E,WAAW,CAAC,CAACpD,KAAK,gBAAgBqD,QAAQ,kBAAkBC,MAAOrF,EAAkB,eAAEuF,WAAW,mBAAmBjF,YAAY,0CAA0C,CAACF,EAAG,IAAI,CAACE,YAAY,kBAAkB,CAACN,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIsV,WAAWI,aAAahE,KAAKyD,WAAW,OAAO/U,EAAG,IAAI,CAACE,YAAY,QAAQ,CAACN,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIsV,WAAWI,aAAahE,KAAKiE,SAAS,OAAOvV,EAAG,IAAI,CAACE,YAAY,QAAQ,CAACN,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIsV,WAAWI,aAAahE,KAAKkE,mBAAmB,OAAOxV,EAAG,IAAI,CAACE,YAAY,QAAQ,CAACN,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIsV,WAAWI,aAAahE,KAAKmE,SAAS,OAAOzV,EAAG,IAAI,CAACE,YAAY,QAAQ,CAACF,EAAG,IAAI,CAACI,MAAM,CAAC,KAAQ,OAAUR,EAAIsV,WAAWI,aAAahE,KAAgB,cAAK,CAAC1R,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIsV,WAAWI,aAAahE,KAAKoE,aAAa,SAAS1V,EAAG,IAAI,CAACE,YAAY,YAAYE,MAAM,CAAC,KAAO,UAAYR,EAAIsV,WAAWI,aAAahE,KAAKqE,MAAM,OAAS,WAAW,CAAC/V,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIsV,WAAWI,aAAahE,KAAKqE,OAAO,OAAQ/V,EAAIsV,WAAWI,aAAahE,KAAS,KAAEtR,EAAG,4BAA4B,CAACE,YAAY,kEAAkEE,MAAM,CAAC,GAAKR,EAAIsV,WAAWI,aAAahE,KAAK7P,KAAKF,IAAI,OAAS3B,EAAIsV,WAAWI,aAAahE,KAAK7P,KAAKC,SAAS,CAAC1B,EAAG,OAAO,CAACJ,EAAIoB,GAAGpB,EAAIqB,GAAGrB,EAAIsV,WAAWI,aAAahE,KAAK7P,KAAKE,SAAS3B,EAAG,QAAQ,CAACE,YAAY,OAAOE,MAAM,CAAC,KAAO,cAAc,OAAS,KAAK,MAAQ,SAAS,GAAGR,EAAImB,MAAM,GAAGnB,EAAImB,QAAQ,IAAI,QACtjDM,EAAkB,G,gDCEtB,MAAMuU,EAAoB,IAG1B,IAAqB,EAArB,cAAuD,OAgB7B,eAClB,OAAO,OAAgBC,mBAAmB,QAGjB,sBAEzB,OAAOhW,KAAKiW,SAAWF,EAAoB/V,KAAKuN,YAGrB,wBAE3B,OAAOvN,KAAKiW,SAAW,IAAMjW,KAAKkW,cAGlB,aAChB,IAAKlW,KAAKmW,mBAAoB,OAAO,EAErC,MAAMC,EAAc7T,OAAO8T,KAAKrW,KAAKmW,oBAAoBhC,KAAKmC,GAAS,OAAgBN,mBAAmBM,IACpGnU,EAASiU,EAAcpW,KAAKmW,mBAAmBC,GAAe,EACpE,OAAOjU,EAGqB,yBAC5B,MAAMoU,EAAc,EAAIvW,KAAKwW,gBAAmB,IAChD,MAAQ,CACJ9S,cAAe,QAAQ6S,QAAiBvW,KAAKyW,eArClD,gBAHF,eAAK,CACFpU,UAAU,EACVC,KAAM4N,U,oCAMP,gBAHF,eAAK,CACF7N,UAAU,EACVC,KAAM4N,U,kCAMP,gBAHF,eAAK,CACF7N,UAAU,EACVC,KAAMC,U,yCAbO,EAAyB,gBAD7C,QACoB,OCRjB,EAAQ,EDQS,IERma,I,YDOpbC,EAAY,eACd,EACA,EACA,GACA,EACA,KACA,KACA,MAIa,EAAAA,E,gCE6Gf,IAAqB,EAArB,cAA6C,EAA7C,c,oBAWY,KAAAsS,OAAmB,CAAE4B,IAAK,UAAWC,IAAK,WAC1C,KAAAtB,WAIJ,CACAI,aAAc,KACdH,SAAU,KACVC,MAAM,GAGF,KAAAR,YAAsB,EA2CtB,KAAA6B,OACH,CACI,CACIC,YAAa,iBACbC,YAAa,MACbC,QAAS,CACL,CACIC,WAAY,SAIxB,CACIH,YAAa,YACbC,YAAa,MACbC,QAAS,CACL,CACIC,WAAY,MAEhB,CACIhV,MAAOhC,KAAKiX,SAAW,UAAY,aAI/C,CACIJ,YAAa,YACbC,YAAa,WACbC,QAAS,CACL,CACIC,WAAY,QAIxB,CACIH,YAAa,YACbC,YAAa,SACbC,QAAS,CACL,CACIC,WAAY,SAIxB,CACIH,YAAa,MACbC,YAAa,MACbC,QAAS,CACL,CACIC,WAAY,SAIxB,CACIH,YAAa,OACbC,YAAa,MACbC,QAAS,CACL,CACIC,WAAY,SAIxB,CACIH,YAAa,UACbC,YAAa,MACbC,QAAS,CACL,CACIC,WAAY,SAIxB,CACIH,YAAa,QACbC,YAAa,MACbC,QAAS,CACL,CACI/U,MAAO,cAlHpB,cAAciT,GAClBjV,KAAKqV,WAAWI,aAAeR,EAC/BjV,KAAKqV,WAAWC,SAAWL,EAAOK,SAClCtV,KAAKqV,WAAWE,MAAO,EAGnB,iBACJvV,KAAKqV,WAAWE,MAAO,EACvBvV,KAAKqV,WAAWC,SAAW,KAC3BtV,KAAKqV,WAAWI,aAAe,KAGhB,cACf,MAAMyB,EAAe,EAAQlX,KAAKiX,SAAW,OAA4C,QACnFE,EAAc,EAAQnX,KAAKiX,SAAW,OAAwC,QACpF,OAAQjX,KAAKa,QAAQuW,aAChBC,IAAI,EAAGxW,aAAcA,GACrBwW,IAAI9O,IAAK,CACN+O,WAAW,EACXC,WAAW,EACX9V,KAAM,CACFC,IAAwB,WAAnB6G,EAAEiP,aACDN,EACAC,EACNvO,KAAM,CACF5H,MAAO,GACPC,OAAQ,IAEZwW,WAAY,CACRzW,MAAO,GACPC,OAAQ,KAGhBqU,SAAU,CACNoB,IAAKgB,WAAWnP,EAAEoP,aAClBhB,IAAKe,WAAWnP,EAAEqP,eAEtBnG,KAAMlJ,KAmFC,cACf,MAAO,CACHsP,QAAS7X,KAAKa,QAAQgX,QAAU7X,KAAKa,QAAQgX,QAAU,EACvDC,QAAS9X,KAAKa,QAAQiX,QAAU9X,KAAKa,QAAQiX,QAAU,EACvDC,aAAa,EACbC,gBAAgB,EAChBC,cAAc,EACdC,mBAAmB,EACnBC,eAAe,EACfC,mBAAmB,EACnBC,kBAAkB,EAClBd,WAAW,EACXe,gBAAgB,EAChBC,aAAa,EACbC,wBAAwB,EACxBC,mBAAmB,EACnB7B,OAAQ5W,KAAK4W,QAIT,eACR,cAAO,aAAP,IAAO,YAAP,EAAO,OAAsBK,SAGb,eAChB,aAAajX,KAAKqH,MAAMgQ,IAAIqB,YAGA,2BAC5B,MAAMrB,QAAYrX,KAAK2Y,SAEvB,IAAIC,EAAS,IAAIxH,OAAOyH,OAAOC,KAAKC,aAEpC,IAAK,MAAM9D,KAAUjV,KAAKgZ,QACtBJ,EAAOK,OAAOhE,EAAOK,UAGzB+B,EAAI6B,UAAUN,GACdvB,EAAI8B,YAAYP,GAGhBlL,WAAW,KACH2J,EAAI+B,UAAYpZ,KAAK+U,aACrBsC,EAAIgC,QAAQrZ,KAAK+U,cAEtB,KAGiC,mCACpC,IAAKuE,UAAUC,YAAa,OAE5B,MAAMlC,QAAYrX,KAAK2Y,SAEvBW,UAAUC,YAAYC,mBAAmB,EAAGC,aACxCpC,EAAIqC,UAAU,CACVhD,IAAK+C,EAAOE,SACZhD,IAAK8C,EAAOG,cAKX,sBACH5Z,KAAK6Z,sBAEP7Z,KAAKgZ,QAAQ/W,OACbjC,KAAK8Z,qBAEL9Z,KAAK+Z,+BA/MV,gBAHF,eAAK,CACF1X,UAAU,EACVC,KAAMC,U,8BAMP,gBAHF,eAAK,CACFF,UAAU,EACVC,KAAMgC,W,mCARO,EAAe,gBAHnC,eAAU,CACPC,WAAY,CAAEyV,QAAA,SAASC,WAAA,YAAYC,eAAA,oBAElB,WC/H2a,ICO5b,EAAY,eACd,EACApa,EACA0B,GACA,EACA,KACA,KACA,MAIa,S,kDClBf,IAAI1B,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAACE,YAAY,kDAAkDK,MAAM,CAAE,6BAA8BX,EAAI0C,wBAAyB,CAAE1C,EAAY,SAAEI,EAAG,gBAAgB,CAACE,YAAY,uCAAuCE,MAAM,CAAC,MAAQR,EAAI2C,aAAe,KAAO,KAAK,cAAc3C,EAAI2C,eAAe,CAAC3C,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIsB,UAAU,OAAOtB,EAAImB,KAAKf,EAAG,MAAM,CAACE,YAAY,YAAY,CAAEN,EAAIoa,UAAYpa,EAAIoC,OAAQhC,EAAG,SAAS,CAACO,MAAM,UAAYX,EAAIgL,GAAGxK,MAAM,CAAC,GAAKR,EAAIgL,GAAG,gBAAgBhL,EAAIgL,GAAG,QAAUhL,EAAIiL,gBAAgBjL,EAAI4C,GAAI5C,EAAIoC,OAA4B,uBAAE,SAASiY,EAASnP,GAAO,OAAO9K,EAAG,cAAc,CAAC2C,IAAImI,EAAM5K,YAAY,mCAAmC,CAACF,EAAG,cAAc,CAACE,YAAY,SAASE,MAAM,CAAC,UAAY,KAAMiF,GAAG,CAAC,QAAU,SAASC,GAAQ,OAAO1F,EAAIsa,mBAAmBD,KAAY5Q,YAAYzJ,EAAI0J,GAAG,CAAC,CAAC3G,IAAI,UAAU4G,GAAG,SAAS7C,GACl8B,IAAIyT,EAASzT,EAAIyT,OACjB,MAAO,CAAC,EAASna,EAAG,yBAAyB,CAACE,YAAY,sGAAsGE,MAAM,CAAC,GAAK6Z,EAAS1Y,KAAKmI,SAAS,CAAC,MAAQ,SAASpE,GAAQ,OAAO1F,EAAIwa,oBAAoBH,MAAa,CAACja,EAAG,MAAM,CAACE,YAAY,4FAA4FN,EAAI4C,GAAIyX,EAAe,QAAE,SAAS1N,EAAM8N,GAAY,OAAOra,EAAG,MAAM,CAAC2C,IAAI0X,EAAWna,YAAY,gGAAgGK,MAAM,CAC7hB,SAAyB,IAAf8Z,GAAmC,IAAfA,EAC9B,UAA0B,IAAfA,GAAmC,IAAfA,EAC/B,QAAwB,IAAfA,GAAmC,IAAfA,EAC7B,WAA2B,IAAfA,GAAmC,IAAfA,EAChC,4CAA4D,IAAfA,GAAmC,IAAfA,IAClE,CAACra,EAAG,MAAM,CAAC+E,WAAW,CAAC,CAACpD,KAAK,WAAWqD,QAAQ,eAAe9E,YAAY,yBAAyBE,MAAM,CAAC,IAAMR,EAAI0a,kBAAkB/N,EAAMgO,KAAKC,GAAG,OAAW5a,EAAI0a,kBAAkB/N,EAAMgO,KAAO,GAAI,QAAW3a,EAAI0a,kBAAkB/N,EAAMgO,KAAO,GAAI,MAAO,IAAMN,EAASQ,oBAAmB,GAAGza,EAAG,MAAM,CAACE,YAAY,0DAA0D,CAACN,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGgZ,EAASQ,aAAa,OAAOza,EAAG,MAAM,CAACE,YAAY,gDAAgD,CAACF,EAAG,MAAM,CAACE,YAAY,qBAAqB,CAACF,EAAG,MAAM,CAACE,YAAY,aAAa,CAACN,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAI4F,GAAG,eAAP5F,CAAuBqa,EAASS,eAAe,OAAO1a,EAAG,MAAM,CAACJ,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAI4F,GAAG,IAAP5F,CAAY,2CAA2C,SAASI,EAAG,MAAM,CAACE,YAAY,qBAAqB,CAACF,EAAG,MAAM,CAACE,YAAY,aAAa,CAACN,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAI4F,GAAG,eAAP5F,CAAuBqa,EAASU,aAAa,OAAO3a,EAAG,MAAM,CAACJ,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAI4F,GAAG,IAAP5F,CAAY,yCAAyC,aAAaA,EAAImB,SAAS,MAAK,MAAS,MAAK,GAAGf,EAAG,MAAM,CAACE,YAAY,oCAAoCF,EAAG,SAAS,CAACE,YAAY,uEAAuEK,MAAMX,EAAImL,mBAAmB3K,MAAM,CAAC,KAAO,cAAc,KAAO,UAAU4K,KAAK,eAAe,CAAChL,EAAG,QAAQ,CAACI,MAAM,CAAC,KAAO,kBAAkB,MAAQ,KAAK,OAAS,SAAS,GAAGJ,EAAG,SAAS,CAACE,YAAY,uEAAuEK,MAAMX,EAAIqL,mBAAmB7K,MAAM,CAAC,KAAO,cAAc,KAAO,UAAU4K,KAAK,eAAe,CAAChL,EAAG,QAAQ,CAACI,MAAM,CAAC,KAAO,mBAAmB,MAAQ,KAAK,OAAS,SAAS,IAAI,IAAI,IACjnDiB,EAAkB,G,qHCgFtB,IAAqB,EAArB,cAA0D,OAA1D,c,oBAcI,KAAA2Y,UAAoB,EACpB,KAAAY,iBAA2B,GACnB,KAAA5Y,OAAgD,KAChD,KAAA6Y,6BAA+B,IAAShb,KAAKib,sBAAuB,KACpE,KAAAC,iBAAmD,GAElC,oBACrB,MAAO,CACH1P,aAAc,GACdC,cAAe,OACfC,eAAgB,EAChByP,oBAAoB,EACpBxP,MAAM,EACNC,wBAAwB,EACxBC,uBAAuB,EACvBC,eAAe,EACfC,gBAAgB,EAChBC,WAAY,CACRC,OAAQ,IAAMjM,KAAKoL,mBACnBc,OAAQ,IAAMlM,KAAKkL,oBAEvBiB,YAAY,EACZC,aAAcpM,KAAK+K,GACnBsB,UAAU,EACVC,gBAAgB,EAChBC,sBAAsB,GAIhB,SACV,OAAO,IAAIjB,MAAOC,UAGQ,yBAC1B,MAAO,6BAA+BvL,KAAK+K,GAGjB,yBAC1B,MAAO,6BAA+B/K,KAAK+K,GAG/C,yBACI,MAAMqQ,EAAgB,OAAkBC,sBACpCD,IAAkBpb,KAAK+a,mBACvB/a,KAAK+a,iBAAmBK,EACxBpb,KAAKma,UAAW,EAChBna,KAAKsb,UAAU,IAAMtb,KAAKma,UAAW,IAIpB,4BACrB,OAAOna,KAAKa,QAAQ4B,wBAA0BzC,KAAK0C,aAG1B,wBACzB,IACI1C,KAAKmC,aAAe,OAAIoZ,gBAAgBC,oBAAoB,CACxDC,6BAA8Bzb,KAAKa,QAAQ4a,6BAC3CC,6BAA8B1b,KAAKa,QAAQ6a,6BAC3CC,kBAAmB3b,KAAKa,QAAQ8a,kBAChCC,oBAAqB5b,KAAKa,QAAQgb,gBAClCC,WAAY9b,KAAKa,QAAQkb,SACzBC,eAAgBhc,KAAKa,QAAQob,WAC7BC,cAAelc,KAAKa,QAAQqb,gBAElC,MAAO1K,GACL,OAAe2K,MAAM3K,IAIT,qBAChB,iBAAOxR,KAAKa,eAAZ,aAAO,EAAcQ,SAGzB,kBAAkBkF,GACd,MAAO,CACHoU,GAAI,OAA8ByB,eAAe7V,EAAM,OAA8B8V,2BAA2BC,KAChHC,GAAI,OAA8BH,eAAe7V,EAAM,OAA8B8V,2BAA2BG,OAIhH,oBAAoBpC,GACxB,OAAWqC,mBAAmB,uBAAuBrC,EAASQ,YAAe,uBAAuBR,EAASsC,YAGzG,mBAAmBtC,GACvBpa,KAAKkb,iBAAiByB,KAAK,CAAE7a,KAAM,uBAAuBsY,EAASQ,YAAe7P,GAAI,uBAAuBqP,EAASsC,aACtH1c,KAAKgb,+BAGD,wBACJ,MAAM/W,EAAa,IAAIjE,KAAKkb,kBAC5Blb,KAAKkb,iBAAmB,GACxB,OAAW0B,kBAAkB3Y,GAGzB,UACJjE,KAAK6c,kBAGT,UACI7c,KAAK+a,iBAAmB,OAAkBM,sBAC1C,OAAkByB,YAAY9c,KAAK+c,wBACnC/c,KAAKsb,UAAU,KACXtb,KAAKma,UAAW,IAIxB,YACI,OAAkB6C,eAAehd,KAAK+c,0BAtH1C,gBAJC,eAAK,CACF1a,UAAU,EACVC,KAAMC,U,8BASV,gBALC,eAAK,CACFF,UAAU,EACVC,KAAMgC,QACNkD,SAAS,K,mCAVI,EAA4B,gBAHhD,eAAU,CACPjD,WAAY,CAAEE,gBAAA,SAEG,WCzFsa,I,yBCQvbjC,EAAY,eACd,EACA1C,EACA0B,GACA,EACA,KACA,KACA,MAIa,aAAAgB,E,2CCnBf,IAAI1C,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,SAASK,MAAM,CAAE,gBAAiBX,EAAIkd,kBAAoBld,EAAImd,eACrK,cAAend,EAAIkd,mBAAqBld,EAAImd,eAC5C,mBAAoBnd,EAAImd,iBAAkB,CAAEnd,EAAIod,2BAA6Bpd,EAAIc,QAAQuc,QAASjd,EAAG,gBAAgB,CAACE,YAAY,2BAA2BE,MAAM,CAAC,cAAcR,EAAI2C,eAAe,CAAG3C,EAAIsd,4BAA2E,CAACld,EAAG,iBAAiB,CAACI,MAAM,CAAC,QAAUR,EAAIc,QAAQuc,QAAQ,iBAAiB,OAA1H,CAACrd,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIc,QAAQuc,SAAS,OAA0F,GAAGrd,EAAImB,KAAMnB,EAAW,QAAEI,EAAG,UAAU,CAAC0G,IAAI,UAAUxG,YAAY,WAAWK,MAAM,CAAE,qBAAuBX,EAAIc,QAAQiN,cAAgB/N,EAAIc,QAAQyc,OAASvd,EAAIwd,oBACpgB,uBAAwBxd,EAAIkd,kBAAoBld,EAAImd,eACpD,KAAQnd,EAAI0P,cAAgB1P,EAAImd,eAChC,SAAUnd,EAAIkd,mBAAqBld,EAAImd,eACvC,SAAUnd,EAAImd,iBAAmBnd,EAAIwd,oBACrC,YAAaxd,EAAIwd,qBAAuBxd,EAAIyd,kCAAoCzd,EAAI0P,eAAiB1P,EAAImd,gBACzG,4BAA6Bnd,EAAIwd,uBAAyBxd,EAAI0P,eAAiB1P,EAAImd,gBACnF,YAAand,EAAIwd,qBAAsBjd,MAAOP,EAA2B,yBAAG,CAAEA,EAAIc,QAAQiN,cAAgB/N,EAAIc,QAAQyc,MAAOnd,EAAG,MAAM,CAACO,MAAM,CACnJ,mBAAoBX,EAAI0d,+BACxB,wCAAyC1d,EAAIc,QAAQiN,cACvDxN,MAAOP,EAAuB,qBAAG,CAAEA,EAAIc,QAAa,MAAEV,EAAG,QAAQ,CAAC0G,IAAI,aAAaxG,YAAY,eAAeK,MAAM,CAAC,kCAAuD,IAArBX,EAAI2d,cAAwBnd,MAAM,CAAC,UAAW,EAAM,SAAWR,EAAIc,QAAQgN,kBAAkB,KAAO9N,EAAIc,QAAQgN,kBAAkB,OAAS,OAAO,MAAQ,QAAQ/G,SAAS,CAAC,MAAQ/G,EAAIc,QAAQgN,oBAAoB,CAAC1N,EAAG,SAAS,CAACI,MAAM,CAAC,IAAMR,EAAIc,QAAQyc,MAAM5b,IAAI,KAAO,SAAW3B,EAAIc,QAAQyc,MAAMK,aAAa5d,EAAIoB,GAAG,oDAAqDpB,EAAIc,QAAoB,aAAEV,EAAG,MAAM,CAAC0G,IAAI,aAAaxG,YAAY,QAAQK,MAAM,CAAC,kCAAuD,IAArBX,EAAI2d,gBAA0B3d,EAAImB,OAAOnB,EAAImB,KAAMnB,EAAImd,gBAAkBnd,EAAI0d,+BAAgCtd,EAAG,UAAU,CAACE,YAAY,6DAA6DK,MAAM,CAAE,eAAgBX,EAAI6d,uBAC/0B,QAAW7d,EAAI8d,UACf,UAAW9d,EAAI0P,cAAgB1P,EAAImd,eACnC,yCAA0Cnd,EAAI+d,8BAC9C,oCAAqC/d,EAAI+d,+BAAgCxd,MAAOP,EAAuB,qBAAG,CAAEA,EAAY,SAAEI,EAAG,UAAU,CAACE,YAAY,uCAAuCC,MAAOP,EAAa,YAAIA,EAAImB,KAAMnB,EAAiB,cAAEI,EAAG,MAAM,CAACE,YAAY,+BAA+BK,MAAM,CAAC,YAAaX,EAAIge,YAAazd,MAAOP,EAAiC,+BAAG,CAACI,EAAG,MAAM,CAACE,YAAY,4BAA4BK,MAAMX,EAAI6T,aAAatT,MAAOP,EAA+B,6BAAG,CAACI,EAAG,MAAM,CAAEJ,EAAIc,QAAe,QAAEV,EAAG,gBAAgB,CAACE,YAAY,oBAAoBK,MAAM,CACnjB,QAASX,EAAIc,QAAQyJ,QAAUvK,EAAIc,QAAQmd,UAC3C,YAAaje,EAAIc,QAAQyJ,QAAUvK,EAAIc,QAAQmd,aAAeje,EAAI+d,+BAAgCxd,MAAOP,EAAIke,WAAWle,EAAIc,QAAQqd,cAAe3d,MAAM,CAAC,MAAQR,EAAI2C,aAAe,KAAO,OAAO,CAAG3C,EAAIsd,4BAA2E,CAACld,EAAG,iBAAiB,CAACI,MAAM,CAAC,QAAUR,EAAIc,QAAQuc,QAAQ,iBAAiB,OAA1H,CAACrd,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIc,QAAQuc,SAAS,OAA0F,GAAGrd,EAAImB,KAAMnB,EAAIc,QAAc,OAAEV,EAAG,gBAAgB,CAAC+E,WAAW,CAAC,CAACpD,KAAK,oBAAoBqD,QAAQ,sBAAsBC,MAAOrF,EAAsB,mBAAEuF,WAAW,uBAAuB5E,MAAM,CAAE,QAASX,EAAIc,QAAQmd,UAAW,WAAYje,EAAIc,QAAQmd,YAAcje,EAAI+d,+BAAgCxd,MAAOP,EAAIke,WAAWle,EAAIc,QAAQsd,aAAc5d,MAAM,CAAC,MAAQR,EAAIqe,oBAAoB,eAAc,IAAO,CAAGre,EAAIsd,4BAA0E,CAACld,EAAG,iBAAiB,CAACI,MAAM,CAAC,QAAUR,EAAIc,QAAQyJ,OAAO,iBAAiB,OAAxH,CAACvK,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIc,QAAQyJ,QAAQ,OAAyF,GAAGvK,EAAImB,KAAMnB,EAAIc,QAAiB,UAAEV,EAAG,IAAI,CAACE,YAAY,qCAAqCK,MAAMX,EAAIse,mBAAmB/d,MAAOP,EAAIke,WAAWle,EAAIc,QAAQyd,iBAAkB,CAAGve,EAAIsd,4BAA+F,CAACld,EAAG,iBAAiB,CAACI,MAAM,CAAC,QAAUR,EAAIc,QAAQmd,UAAU,iBAAiB,QAAhJ7d,EAAG,OAAO,CAAC2G,SAAS,CAAC,UAAY/G,EAAIqB,GAAGrB,EAAIc,QAAQmd,eAAqG,GAAGje,EAAImB,KAAMnB,EAA0B,uBAAEI,EAAG,eAAe,CAACE,YAAY,eAAeK,MAAM,CAAE,QAASX,EAAI+d,8BAA+B,SAAU/d,EAAI+d,+BAAgCvd,MAAM,CAAC,YAAYR,EAAIwe,SAAS,KAAOxe,EAAIc,QAAQoG,aAAanF,KAAK,KAAO/B,EAAIc,QAAQoG,aAAavF,IAAI,OAAS3B,EAAIc,QAAQoG,aAAapF,OAAO,iBAAiB9B,EAAIsd,4BAA8B,IAAM,EAAE,iBAAiBtd,EAAIye,gBAAiBze,EAAsC,mCAAEI,EAAG,eAAe,CAACE,YAAY,eAAeK,MAAM,CAAE,QAASX,EAAI+d,8BAA+B,SAAU/d,EAAI+d,+BAAgCvd,MAAM,CAAC,YAAYR,EAAIwe,SAAS,KAAOxe,EAAIc,QAAQmN,gBAAgB,iBAAiBjO,EAAIsd,4BAA8B,IAAM,EAAE,iBAAiBtd,EAAIye,cAAchZ,GAAG,CAAC,MAAQzF,EAAI0e,yBAAyB1e,EAAImB,MAAM,OAAOnB,EAAImB,KAAMnB,EAA0B,uBAAEI,EAAG,MAAM,CAACE,YAAY,yCAAyCK,MAAM,CAAE,QAASX,EAAI2e,gBAAiB,CAACve,EAAG,SAAS,CAACE,YAAY,WAAWmF,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1F,EAAI4e,sBAAsB,CAAG5e,EAAI8d,UAAmJ,CAAC1d,EAAG,QAAQ,CAACE,YAAY,QAAQE,MAAM,CAAC,KAAO,QAAQ,MAAQ,KAAK,OAAS,QAAQJ,EAAG,OAAO,CAACE,YAAY,WAAW,CAACN,EAAIoB,GAAG,YAAvQ,CAAChB,EAAG,QAAQ,CAACE,YAAY,OAAOE,MAAM,CAAC,KAAO,OAAO,MAAQ,KAAK,OAAS,QAAQJ,EAAG,OAAO,CAACE,YAAY,WAAW,CAACN,EAAIoB,GAAG,YAAuJ,KAAKpB,EAAImB,KAAMnB,EAAgB,aAAEI,EAAG,MAAM,CAACE,YAAY,oBAAoB,CAACF,EAAG,iBAAiB,CAACI,MAAM,CAAC,KAAO,OAAO,GAAGR,EAAImB,OAAOnB,EAAImB,KAAMnB,EAAyB,sBAAEI,EAAG,yBAAyB,CAACE,YAAY,mBAAmBE,MAAM,CAAC,GAAKR,EAAIc,QAAQoG,aAAavF,IAAI,OAAS3B,EAAIc,QAAQoG,aAAapF,QAAQgI,SAAS,CAAC,MAAQ,SAASpE,GAAQ,OAAO1F,EAAIye,mBAAmBze,EAAImB,MAAM,GAAGf,EAAG,UAAU,CAACE,YAAY,WAAWC,MAAOP,EAAsB,oBAAG,CAACI,EAAG,MAAM,CAACE,YAAY,oBAAoB,CAACF,EAAG,iBAAiB,CAACI,MAAM,CAAC,MAAQR,EAAIqN,qBAAqB,MAAM,IACpsG5L,EAAkB,G,qNCsKtB,MAAMuU,EAAoB,IACpB6I,EAA6B,IAC7BC,EAAmB,GAAK,EACxBC,EAAwB,EAmB9B,IAAqB,EAArB,cAAoD,OAApD,c,oBA4DY,KAAAxB,MAAuC,KACvC,KAAAO,WAAqB,EACrB,KAAAH,cAAwB,EACxB,KAAAqB,uBAAiC,GACjC,KAAAC,sBAAkE,KAClE,KAAAC,qBAAsC,KACtC,KAAA9E,UAAoB,EAVA,uBACxB,OAAOna,KAAKkf,aAAelf,KAAKiW,SAWK,oCACrC,OAAOjW,KAAKuN,aAAeuR,EAGX,eAChB,OAAO,OAAgB9I,mBAAmB,QAGpB,mCACtB,SAAU,UAAAhW,KAAKa,eAAL,SAAcyJ,QAAd,UAAwBtK,KAAKa,eAA7B,OAAwB,EAAcmd,WAAtC,UAAmDhe,KAAKa,eAAxD,OAAmD,EAAcuc,SAAjE,UAA4Epd,KAAKa,eAAjF,iBAA4E,EAAcoG,oBAA1F,OAA4E,EAA4BvF,KAG5E,2CACtC,MAAiD,WAA1C,UAAA1B,KAAKa,eAAL,eAAcse,yBAGU,sCAC/B,MAAMC,EAAwC,GAC9C,aAAIpf,KAAKa,eAAT,OAAI,EAAcwe,gBAAiB,CAC/B,MAAMF,EAAkCnf,KAAKa,QAAQse,wBACrD,IAAIG,EAAyB,QACzB/R,EAA6BvN,KAAKiW,SAAWjW,KAAKa,QAAQwe,gBAAgBre,MAAQhB,KAAKa,QAAQwe,gBAAgBpe,OAAS,KAE5F,UAA5Bke,EACA5R,EAAc,KACqB,aAA5B4R,GACPnf,KAAKa,QAAQwe,gBAAgBzS,WAAW2S,IAAM,EAC9CD,EAAiB,WACkB,WAA5BH,IACPG,EAAiB,WAGrB,IAAIE,EAAqBxf,KAAKa,QAAQwe,gBAAgBre,MAClDye,EAAsBzf,KAAKa,QAAQwe,gBAAgBpe,OAGvD,GAAkC,OAA9BjB,KAAKif,qBAA+B,CACpC,MAAMS,EAAe,IACfC,EAAW3f,KAAKa,QAAQwe,gBAAgBre,MAAQhB,KAAKif,qBACrDW,EAAoD,UAA5BT,GAAuCnf,KAAKa,QAAQwe,gBAAgBre,MAAQhB,KAAKif,qBAAuBS,EAElIE,GAAgBD,IAChBH,EAAqBhR,KAAKqR,MAAM7f,KAAKif,qBAAuBS,GAC5DD,EAAsBjR,KAAKqR,MAAM7f,KAAKa,QAAQwe,gBAAgBpe,OAASjB,KAAKa,QAAQwe,gBAAgBre,MAAQhB,KAAKif,qBAAuBS,IAIhJ,MAAMI,EAAqB9f,KAAKoc,eAAepc,KAAKa,QAAQwe,gBAAiBG,EAAoBC,EAAqB,IACtHL,EAAQW,KAAO,IACfX,EAAQE,eAAiBA,EACzBF,EAAQY,mBAAqB,GAAG,IAAMhgB,KAAKa,QAAQwe,gBAAgBzS,WAAWqT,SAAS,IAAMjgB,KAAKa,QAAQwe,gBAAgBzS,WAAW2S,OACrIH,EAAQc,iBAAmB,YAC3Bd,EAAQld,gBAAkBlC,KAAKY,qBAAqBsB,gBAEpDkd,EAAQ7R,YAAcA,EAClBvN,KAAKma,WACLiF,EAAQC,gBAAkB,OAAOS,MAGzC,GAAI,UAAA9f,KAAKa,eAAL,SAAciN,cAA+C,OAA/B9N,KAAKgf,sBAEnCI,EAAQ7R,YAAcvN,KAAKgf,sBAAsBhe,MAAQhB,KAAKgf,sBAAsB/d,YACjF,GAAIjB,KAAKyP,cAAgBzP,KAAKa,QACjC,IAAKb,KAAKkd,gBAAkBld,KAAKa,QAAQwe,gBAGrCD,EAAQ7R,YAAcvN,KAAKa,QAAQwe,gBAAgBre,MAAQhB,KAAKa,QAAQwe,gBAAgBpe,YACrF,GAAIjB,KAAKa,QAAQmd,UAAU/b,OAAS,GAAI,CAE3C,MAAMsU,EAAc,EAAIvW,KAAKwW,gBAAmB,IAEhD4I,EAAQ7R,YAAc,QAAQgJ,QAAiBvW,KAAKyW,YAG5D,OAAO2I,EAGH,eAAe1S,EAAc1L,EAAeC,EAAgBkf,GAChE,MAAM5a,EAAWmH,EAAMhL,IACjBkL,EAAaF,EAAME,WACnBwT,EAAkB7a,IAAuC,IAA3BA,EAASxD,QAAQ,KAAoB,IAAN,IAC7Dse,EAAQzT,EAAa,WAAWA,EAAW2S,OAAO3S,EAAWqT,OAAS,GACtEK,EAAmBH,EAAU,YAAYA,EAAY,GACrDI,EAAS7T,EAAMiR,UAAY,WAAWjR,EAAMiR,UAAc,GAChE,MAAO,GAAG3d,KAAKwgB,iBAAiBjb,KAAY6a,UAAuBpf,YAAgBC,IAASsf,IAASF,IAAQC,IAGzG,iBAAiB/a,GACrB,OAAO,OAAuBkb,aAAelb,EAGvB,4BACtB,OAAIvF,KAAKid,iBAAyB,EAC9B,UAAAjd,KAAKa,eAAL,SAAcwe,iBAA4D,UAAzCrf,KAAKa,QAAQse,wBACvCnf,KAAKa,QAAQwe,gBAAgBre,MAAQhB,KAAKa,QAAQwe,gBAAgBpe,QAExEjB,KAAKiW,UAAYjW,KAAK0gB,sBAA8B1gB,KAAK0gB,sBAGvD1gB,KAAKiW,SAAWF,EAAoB/V,KAAKgf,sBAAyBhf,KAAKgf,sBAAsBhe,MAAQhB,KAAKgf,sBAAsB/d,OAAUjB,KAAKuN,YAG7H,wBAEzB,OAAOvN,KAAKiW,SAAW,IAAMjW,KAAKkW,cAGpB,aACd,IAAKlW,KAAKmW,mBAAoB,OAAO,EAErC,MAAMC,EAAc7T,OAAO8T,KAAKrW,KAAKmW,oBAAoBhC,KAAKmC,GAAS,OAAgBN,mBAAmBM,IACpGnU,EAASiU,EAAcpW,KAAKmW,mBAAmBC,GAAe,EACpE,OAAOjU,EAGmB,yBAC1B,GAAInC,KAAKid,iBAAkB,MAAO,GAElC,MAAM1G,EAAc,EAAIvW,KAAKwW,gBAAmB,IAChD,MAAQ,CACJ9S,cAAe,QAAQ6S,QAAiBvW,KAAKyW,aAI5B,gCACrB,OAAQzW,KAAK0d,eAAiB1d,KAAKmd,4BACJ,MAA1B,UAAAnd,KAAKa,eAAL,eAAcuc,UAA2C,MAAzB,UAAApd,KAAKa,eAAL,eAAcyJ,SAA6C,MAA5B,UAAAtK,KAAKa,eAAL,eAAcmd,YAAmD,QAA/B,UAAAhe,KAAKa,eAAL,eAAcoG,eAGnG,wBACjBjH,KAAK0d,gBAAkB,UAAA1d,KAAKa,eAAL,SAAcyc,OAAd,UAAuBtd,KAAKa,eAA5B,OAAuB,EAAciN,cACvD9N,KAAKa,UACVb,KAAKma,UAAW,EACZna,KAAKa,QAAQwe,kBACbrf,KAAKif,qBAAuBjf,KAAK2gB,IAAI5Y,aAEzC/H,KAAK4gB,YACL5gB,KAAKsb,UAAU,IAAMtb,KAAKma,UAAW,IAGzC,YAAS,QACL,aAAIna,KAAKa,eAAT,OAAI,EAAcyc,MACdtd,KAAK0d,cAAe,EACpB1d,KAAKsd,MAAQtd,KAAKqH,MAAMwZ,WAExB7gB,KAAKsd,MAAMwD,aAAe,KACtB9gB,KAAK0d,cAAe,QAErB,aAAI1d,KAAKa,eAAT,OAAI,EAAciN,aAAc,CACnC9N,KAAK0d,cAAe,EACpB1d,KAAKgf,sBAAwB,KAC7Bhf,KAAKsd,MAAQ,KACb,MAAMtI,EAAU,CACZjK,GAAIgW,EAAS/gB,KAAKa,QAAQiN,cAC1BkT,SAAUhhB,KAAKa,QAAQgN,kBACvBlC,KAAM3L,KAAKa,QAAQgN,kBACnBoT,MAAOjhB,KAAKa,QAAQgN,kBACpBqT,SAAUlhB,KAAKa,QAAQsgB,kBACvBC,OAAO,EACPC,QAAQ,EACRC,UAAU,EACVtf,QAAShC,KAAKiX,SAAW,IAAS3T,MAAMC,OAAOge,aAAa,OAAS,IAASje,MAAMC,OAAOH,KAAK,SAAW,IAAI4C,QAAQ,IAAK,IAC5Hwb,WAAYxhB,KAAKa,QAAQgN,mBAE7B7N,KAAKsb,UAAU,KAEXtb,KAAKsd,MAAQ,IAAI,OAAYtd,KAAKqH,MAAMwZ,WAA2B7L,GAEnEhV,KAAKsd,MAAM9X,GAAG,QAAS,KACnBxF,KAAK6d,WAAY,IAGrB7d,KAAKsd,MAAM9X,GAAG,QAAUgM,IACpBiQ,QAAQC,IAAI,oBAAqBlQ,KAErCxR,KAAKsd,MAAM9X,GAAG,SAAU,KACpBxF,KAAK2hB,+BAKjB,SAASZ,EAASa,GACd,MAAMC,EAAUD,EAAQ/P,MAAM,WAC9B,IAAI9G,EAAK6W,EAIT,OAHIC,EAAQ5f,OAAS,IACjB8I,EAAK8W,EAAQA,EAAQ5f,OAAS,IAE3B6f,SAAS/W,EAAI,KAOpB,gBAAgBlK,GAAwC,UACvDA,IAELA,EAAQkhB,qBAAR,UAA+BlhB,EAAQkhB,4BAAvC,QAA+D,OAAoBpN,KACnF9T,EAAQmhB,kBAAR,UAA4BnhB,EAAQmhB,yBAApC,QAA0DhiB,KAAKyP,aAAe,OAAawS,SAAW,OAAaC,UACnHrhB,EAAQshB,uBAAR,UAAiCthB,EAAQshB,8BAAzC,QAAoEniB,KAAKyP,aAAe,OAAkB2S,MAAQ,OAAkBC,QAGlG,iCAClC3U,WAAW,KACP1N,KAAKsiB,0BACLtiB,KAAK0d,cAAe,GACrB,KAG8B,gCACjC,GAAI1d,KAAKsd,MAAO,CACZ,MAAMtc,QAAchB,KAAKsd,MAAMiF,gBACzBthB,QAAejB,KAAKsd,MAAMkF,iBAChCxiB,KAAKgf,sBAAwB,CAAEhe,MAAOA,EAAOC,OAAQA,IAIjD,eACR,cAAO,aAAP,IAAO,YAAP,EAAO,OAAsBgW,SAGH,yBAE1B,MAAMwL,EAAiC,UAAvBziB,KAAK0iB,cAA4B,GAAK,GACtD,MAAO,CACH,CAAC,OAAQ,CAAEC,IAAKF,EAASG,IAAK,KAC9B,CAAC,OAAQ,CAAED,IAAKF,EAASG,IAAK,KAC9B,CAAC,OAAQ,CAAED,IAAKF,EAASG,IAAK,MAII,6CACtC,QAAI,UAAA5iB,KAAKa,eAAL,SAAciN,cAAd,UAA8B9N,KAAKa,eAAnC,OAA8B,EAAcyc,SACf,IAAtBtd,KAAK0d,cAAyD,OAA/B1d,KAAKgf,uBAAkChf,KAAKma,SAKlF,mBACJ,GAAKna,KAAKsd,MAAV,CAEA,GAAItd,KAAK6d,UACL,IACI7d,KAAKsd,MAAMuF,QACb,MAAOrR,GACL,OAAe2K,MAAM3K,QAGzB,IACIxR,KAAKsd,MAAMwF,OACb,MAAOtR,GACL,OAAe2K,MAAM3K,GAI7BxR,KAAK6d,WAAa7d,KAAK6d,WAGnB,oBAAoBkF,EAAaC,GACrC,OAAK,eAAgBD,GACd,eAASA,EAAKC,GADa,IAAS1f,MAAMC,OAAOE,MAI5B,2BAC5B,IAAItB,EAAS,cAMb,OAJInC,KAAKa,SAAWb,KAAKoC,eAAepC,KAAKa,QAAQqB,mBACjDC,EAASnC,KAAKijB,oBAAoBjjB,KAAKa,QAAQqB,kBAG3C,CACJA,gBAAiBC,GAIM,0BAC3B,IAAIA,EAAS,cAMb,OAJInC,KAAKa,UAAYb,KAAKa,QAAQwe,iBAAmBrf,KAAKoC,eAAepC,KAAKa,QAAQqB,mBAClFC,EAASnC,KAAKijB,oBAAoBjjB,KAAKa,QAAQqB,kBAG3C,CACJA,gBAAiBC,GAIc,kCACnC,IAAKnC,KAAKa,SAAWb,KAAK0d,aAAc,MAAO,GAE/C,MAAMxb,EAAkBlC,KAAKa,QAAQke,uBAC/BmE,EAAkBljB,KAAKa,QAAQsiB,iCAErC,IAAIhhB,EAAS,cAQb,OANInC,KAAKojB,6BAA+BpjB,KAAKoC,eAAeF,KACxDC,EAASnC,KAAKijB,oBAAoB/gB,EAAiBghB,EAAkBtE,OAA6B3b,IAGtGjD,KAAK+e,uBAAyB5c,EAEtB,CACJD,gBAAiBC,GAQgB,oCAGrC,MAAMkhB,EAAarjB,KAAKgN,mBAAqBhN,KAAKiW,SAAW,IAAM,EAEnE,MAAQ,CACJtH,UAAW,cAAc0U,QAIb,qBAChB,OAAO,UAAArjB,KAAKa,eAAL,eAAcmG,oBAAqB,KAGf,0CAC3B,IAAIsc,EAUJ,OALIA,GAHAtjB,KAAK0C,cAAgB,UAAC1C,KAAKa,eAAN,OAAC,EAAcuc,SAApC,UAA+Cpd,KAAKa,eAApD,QAA+C,EAAcyJ,OAErDtK,KAAK0C,cAAL,UAAqB1C,KAAKa,eAA1B,OAAqB,EAAcuc,SAAnC,UAA8Cpd,KAAKa,eAAnD,OAA8C,EAAcyJ,SAAatK,KAAK0C,eAAgB,UAAC1C,KAAKa,eAAN,QAAC,EAAcuc,UAArC,UAAgDpd,KAAKa,eAArD,OAAgD,EAAcyJ,OACtI,KAEA,KAJA,KAOLgZ,EAGX,eAAethB,GAAa,MACxB,iBAAyB,KAAb,OAALA,QAAK,IAALA,OAAA,EAAAA,EAAOC,eAAd,SAGI,WAAWshB,GACf,MAAMC,EAAW,IAASlgB,MAAMC,OAAOE,MACvC,MAAQ,CACJzB,MAAuC,UAAhChC,KAAK+e,uBAAqCyE,EAAWD,EAAWvjB,KAAKijB,oBAAoBM,GAAYC,GAI9F,uBAClB,OAAO,UAAAxjB,KAAKa,eAAL,eAAckhB,wBAAyB,OAAoB0B,MAG9C,mBACpB,IAAKzjB,KAAKa,QAAS,MAAO,GAE1B,IAAI6iB,EAAW,SACf,IAAK1jB,KAAKiW,SACN,OAAQjW,KAAKa,QAAQmhB,mBACrB,KAAK,OAAa2B,SACdD,EAAW,QACX,MACJ,KAAK,OAAazB,SACdyB,EAAW,QACX,MACJ,KAAK,OAAaxB,UACdwB,EAAW,SACX,MAGR,MAAO,GAAGA,EAGgB,yBAC1B,OAAK1jB,KAAK0iB,cAEoB,UAAvB1iB,KAAK0iB,cAA4B,UAAY1iB,KAAKsd,MAAQ,UAAY,UAF7C,GAKX,oBACrB,GAAKtd,KAAKa,QAEV,OAAI,OAAgBmV,mBAAmB,SAIhChW,KAAKa,QAAQshB,yBAA2B,OAAkBE,OAHtD,QAGyE,QAG7D,sBACvB,MAAMuB,EAAY5jB,KAAKa,QAA2CgjB,iBAClE,OAAKD,GAAgC,IAApBA,EAAS3hB,OAKnB2hB,EACF3P,OAAO6P,GAAOC,EAA2BD,EAAK9jB,KAAKwW,kBAL7C,GAOX,SAASuN,EAA2BrX,EAAgBa,GAEhD,MAAMyW,EAA6B,IAAdzW,EACrB,OAAOiB,KAAKyV,IAAIvX,EAAM1L,MAAQ0L,EAAMzL,OAASsM,IAAgByW,GAI7C,mBACpB,GAAoC,IAAhChkB,KAAKkkB,gBAAgBjiB,OACrB,OAAO,KAIX,MAAMkiB,EAASnkB,KAAKkkB,gBACf7M,IAAIyM,GAAO,GAAGA,EAAIpiB,OAAOoiB,EAAI9iB,UAC7BojB,KAAK,MAGJlS,EAAMlS,KAAKkkB,gBACZG,KAAK,CAACC,EAAQC,IAAWD,EAAOtjB,MAAQujB,EAAOvjB,OAAOhB,KAAKkkB,gBAAgBjiB,OAAS,GAAGP,IAGtF8iB,EAAWxkB,KAAKykB,kBAAR,KAEd,MAAO,CACHN,SACAjS,MACAsS,SAIa,sBACjB,MAAO,CAAEtiB,gBAAe,UAAElC,KAAKa,eAAP,aAAE,EAAc6jB,UAAWC,QAAS,OAGnB,wCACzC,OAAO3kB,KAAKwW,gBAAkBqI,EAGH,0BAC3B,OAAK7e,KAAKa,QACNb,KAAKa,QAAQiN,aAAqB,GAE/B9N,KAAK4kB,kCAAqC,CAC7C5jB,MAAO,OACPC,OAAQ,OACRgf,KAAM,MACNtR,UAAW,oBACT,MACK3O,KAAKa,QAAQiN,cAAiB,CAAE7M,OAAQ,IAAM4d,EAAmB,KACxE7d,MAAO,OACPue,IAAK,MACL5Q,UAAW,oBAZW,GAgBS,4CACnC,OAAO3O,KAAKud,yBAA2B,UAAAvd,KAAKa,eAAL,mBAAiDgjB,wBAAjD,eAAmE5hB,QAAS,MAAO,UAACjC,KAAKa,eAAN,QAAC,EAAciN,cAG3G,6BAC9B,OAAO9N,KAAKa,UAAiC,IAAtBb,KAAK0d,cAA0B1d,KAAKsd,QAA4C,IAAnCtd,KAAKa,QAAQgN,oBAAkE,IAAnC7N,KAAKa,QAAQsgB,kBAG5F,sCACjC,MAAyC,SAAlC,UAAAnhB,KAAKa,eAAL,eAAcgkB,iBAGM,oCAC3B,QAAQ,oBAAE7kB,KAAKa,eAAP,iBAAE,EAAcwe,uBAAhB,aAAE,EAA+B3d,WAAjC,WAGQ,qBAChB,QAAQ,UAAC1B,KAAKa,eAAN,QAAC,EAAc6jB,eAAgB1kB,KAAKa,QAAQiN,gBAAkB9N,KAAKa,QAAQyc,OAAStd,KAAKud,uBAAyBvd,KAAK8kB,cAGjG,uCAE9B,QAAQ,oBAAE9kB,KAAKa,eAAP,iBAAE,EAAcoG,oBAAhB,aAAE,EAA4BnF,YAA9B,WAGqB,sCAC7B,OAAQ9B,KAAK+kB,wBAAN,YAAkC,UAAC/kB,KAAKa,eAAN,iBAAC,EAAcoG,oBAAf,QAAC,EAA4BvF,YAA/D,SAGmC,iDAC1C,QAAU,UAAA1B,KAAKa,eAAL,UAAckN,qBAAd,UAAqC/N,KAAKa,eAA1C,QAAqC,EAAcmN,iBAGrC,uBACxB,OAAOhO,KAAK0C,cAAgB,OAAa2L,kBAGV,oCAC/B,UAAIrO,KAAKa,eAAT,OAAI,EAAckN,sBACV/N,KAAKsd,OAELtd,KAAKsd,MAAMuF,cAET,OAA8BmC,KAAKhlB,KAAKa,QAAQkN,qBAAqB,GACvE/N,KAAKsd,OAELtd,KAAKsd,MAAMwF,UAnjBpB,gBAFF,eAAK,CACFxgB,KAAMC,U,8BAMP,gBAHF,eAAK,CACFD,KAAMgC,QACNkD,SAAS,K,mCAMV,gBAHF,eAAK,CACFlF,KAAMgC,QACNkD,SAAS,K,uCAMV,gBAHF,eAAK,CACFlF,KAAM2iB,SACNzd,QAAS,U,mCAMV,gBAHF,eAAK,CACFlF,KAAMgC,QACNkD,SAAS,K,mCAMV,gBAHF,eAAK,CACFlF,KAAMgC,QACNkD,SAAS,K,iCAMV,gBAHF,eAAK,CACFlF,KAAMgC,QACNkD,SAAS,K,kDAMV,gBAHF,eAAK,CACFnF,UAAU,EACVC,KAAM4N,U,oCAMP,gBAHF,eAAK,CACF7N,UAAU,EACVC,KAAM4N,U,kCAIV,gBADC,kB,4CAME,gBAHF,eAAK,CACF7N,UAAU,EACVC,KAAMC,U,yCAiNV,gBAHC,eAAM,UAAW,CACd2iB,WAAW,K,8BAQd,MA5QgB,EAAsB,gBAH1C,eAAU,CACP3gB,WAAY,CAAEoM,iBAAA,KAAgBwU,iBAAA,KAAgBC,eAAA,KAAc3gB,gBAAA,SAE3C,WC/Mga,I,wBCQjbjC,EAAY,eACd,EACA1C,EACA0B,GACA,EACA,KACA,WACA,MAIa,OAAAgB,E,kDCnBf,IAAI1C,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAACE,YAAY,SAASK,MAAM,CAAE,6BAA8BX,EAAI0C,sBAAuB,qBAAsB1C,EAAI2P,cAAe,CAACvP,EAAG,MAAM,CAACO,MAAM,CAAE,6BAA8BX,EAAImC,gBAAiB,iBAAkBnC,EAAImC,iBAAkB5B,MAAOP,EAAS,OAAG,CAACI,EAAG,MAAM,CAACE,YAAY,sBAAsB,CAAEN,EAAIc,QAAgB,SAAEV,EAAG,iBAAiB,CAACE,YAAY,QAAQE,MAAM,CAAC,MAAQR,EAAI2C,aAAe,KAAO,KAAK,cAAc3C,EAAI2C,eAAe,CAAC3C,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIc,QAAQQ,UAAU,OAAOtB,EAAImB,KAAKf,EAAG,UAAU,CAAC+E,WAAW,CAAC,CAACpD,KAAK,sBAAsBqD,QAAQ,0BAA0B0B,IAAI,cAAcxG,YAAY,qBAAqByG,SAAS,CAAC,UAAY/G,EAAIqB,GAAGrB,EAAIgH,SAAShH,EAAIc,QAAQkG,cAAehH,EAAIc,QAAoB,aAAEV,EAAG,iBAAiB,CAACE,YAAY,qBAAqBE,MAAM,CAAC,YAAYR,EAAIc,QAAQmG,kBAAkB,KAAOjH,EAAIc,QAAQoG,aAAanF,KAAK,KAAO/B,EAAIc,QAAQoG,aAAavF,IAAI,OAAS3B,EAAIc,QAAQoG,aAAapF,UAAU9B,EAAImB,MAAM,QAChjCM,EAAkB,G,iFC6BtB,IAAqB,EAArB,cAAgD,OAgBjB,sBACvB,OAAOxB,KAAKa,QAAQmC,sBACdhD,KAAKa,QAAQmC,sBACbhD,KAAKa,QAAQqB,gBAAkB,IAAMlC,KAAKa,QAAQqB,qBAAkBe,EAGzD,gBACjB,IAAKjD,KAAKkC,gBAAiB,OAC3B,MAAM,IAAEgB,EAAF,MAAOC,EAAP,KAAcC,GAAS,eAAepD,KAAKkC,iBAC3CmB,EAAmB,eAAKH,EAAKC,EAAOC,IAAS,GACnD,OAAOC,EAAmB,IAASC,MAAMC,OAAOC,MAAQ,IAASF,MAAMC,OAAOE,MAGjE,YACb,MAAO,CACHvB,gBAAiBlC,KAAKkC,gBACtBF,MAAOhC,KAAK2D,WAIa,4BAC7B,OAAO3D,KAAKa,QAAQ4B,wBAA0BzC,KAAK0C,aAG/C,SAASwE,GACb,OAAO,OAAiBC,qBAAqBD,GAOzC,UACJ,OAAiBE,sBAAsBpH,KAAKqH,MAAMC,aAG9C,gBACJ,OAAiBC,wBAAwBvH,KAAKqH,MAAMC,eAjDrD,gBAHF,eAAK,CACFjF,UAAU,EACVC,KAAMC,U,8BAMP,gBAHF,eAAK,CACFF,UAAU,EACVC,KAAMgC,W,mCAMP,gBAHF,eAAK,CACFjC,UAAU,EACVC,KAAM+M,U,kCAbO,EAAkB,gBAHtC,eAAU,CACP9K,WAAY,CAAEE,gBAAA,SAEG,WC9B4Z,I,YCO7ajC,EAAY,eACd,EACA1C,EACA0B,GACA,EACA,KACA,KACA,MAIa,aAAAgB,E,kDClBf,IAAI1C,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAACE,YAAY,oCAAoC,CAAEN,EAAIc,QAAQQ,UAAYtB,EAAIslB,UAAUpjB,OAAQ9B,EAAG,gBAAgB,CAACE,YAAY,QAAQE,MAAM,CAAC,MAAQR,EAAI2C,aAAe,KAAO,KAAK,cAAc3C,EAAI2C,eAAe,CAAC3C,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIc,QAAQQ,UAAU,OAAOtB,EAAImB,KAAKf,EAAG,SAAS,CAACO,MAAM,UAAYX,EAAIgL,GAAGxK,MAAM,CAAC,GAAKR,EAAIgL,GAAG,gBAAgBhL,EAAIgL,GAAG,QAAUhL,EAAIiL,gBAAgBjL,EAAI4C,GAAI5C,EAAa,WAAE,SAASulB,EAASra,GAAO,OAAO9K,EAAG,cAAc,CAAC2C,IAAImI,EAAM5K,YAAY,8BAA8B,CAACF,EAAG,iBAAiB,CAACI,MAAM,CAAC,QAAU+kB,EAAS,iBAAgB,EAAK,oBAAoBvlB,EAAIwlB,+BAA+B,MAAK,GAAGplB,EAAG,SAAS,CAACE,YAAY,4CAA4CK,MAAMX,EAAImL,mBAAmB3K,MAAM,CAAC,KAAO,cAAc,KAAO,UAAU4K,KAAK,eAAe,CAAChL,EAAG,QAAQ,CAACI,MAAM,CAAC,KAAO,kBAAkB,MAAQ,KAAK,OAAS,SAAS,GAAGJ,EAAG,SAAS,CAACE,YAAY,4CAA4CK,MAAMX,EAAIqL,mBAAmB7K,MAAM,CAAC,KAAO,cAAc,KAAO,UAAU4K,KAAK,eAAe,CAAChL,EAAG,QAAQ,CAACI,MAAM,CAAC,KAAO,mBAAmB,MAAQ,KAAK,OAAS,SAAS,IAAI,IAC/sCiB,EAAkB,G,gDC8BtB,IAAqB,EAArB,cAAkD,OAYzB,gBACjB,OAAKxB,KAAKa,QAAQ2kB,cAGX,CAACxlB,KAAKa,QAAQ2kB,iBAAkBxlB,KAAKa,QAAQwkB,WAFzC,IAAIrlB,KAAKa,QAAQwkB,WAKM,iCAClC,QAASrlB,KAAKqlB,UAAUlR,KAAKsR,IAAC,aAAI,UAAAA,EAAE/Y,aAAF,eAAShL,MAAQ+jB,EAAEC,UAAYD,EAAE1kB,UAGzD,SACV,MAAO,2BAA4B,IAAIuK,MAAOC,UAGpB,yBAC1B,MAAO,6BAA+BvL,KAAK+K,GAGjB,yBAC1B,MAAO,6BAA+B/K,KAAK+K,GAGtB,oBACrB,MAAO,CACHS,aAAc,GACdC,cAAe,OACfC,eAAgB,EAChBC,MAAM,EACNC,wBAAwB,EACxBC,uBAAuB,EACvBC,eAAe,EACfC,gBAAgB,EAChB4Z,YAAY,EACZ3Z,WAAY,CACRC,OAAQ,IAAMjM,KAAKoL,mBACnBc,OAAQ,IAAMlM,KAAKkL,oBAEvBiB,YAAY,EACZC,aAAcpM,KAAK+K,GACnBsB,UAAU,EACVC,gBAAgB,EAChBC,sBAAsB,KAlD3B,gBAHF,eAAK,CACFlK,UAAU,EACVC,KAAMC,U,8BAOP,gBAJF,eAAK,CACFF,UAAU,EACVmF,SAAS,EACTlF,KAAMgC,W,mCATO,EAAoB,gBAHxC,eAAU,CACPC,WAAY,CAAEqhB,iBAAA,KAAgBnhB,gBAAA,SAEb,WC/B8Z,I,wBCQ/ajC,EAAY,eACd,EACA1C,EACA0B,GACA,EACA,KACA,WACA,MAIa,aAAAgB,E,kDCnBf,IAAI1C,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAACE,YAAY,kBAAkB,CAACF,EAAG,OAAO,CAACI,MAAM,CAAC,eAAe,UAAUR,EAAI4C,GAAI5C,EAAIc,QAAY,MAAE,SAAS4S,EAAIxI,GAAO,OAAO9K,EAAG,MAAM,CAAC2C,IAAImI,EAAM1K,MAAM,CAAC,KAAOkT,EAAI5S,QAAQQ,SAAS,aAAaoS,EAAI5S,QAAQglB,YAAY,CAAC1lB,EAAG,aAAa,CAACI,MAAM,CAAC,OAASkT,EAAI5S,QAAQilB,OAAO,oBAAmB,MAAU,MAAK,IAAI,IAChatkB,EAAkB,G,gDCkBtB,IAAqB,EAArB,cAAgD,SAE5C,gBADC,eAAK,CAAEa,UAAU,EAAMC,KAAMC,U,8BADb,EAAkB,gBAHtC,eAAU,CACPgC,WAAY,CAAEwhB,OAAA,KAAMC,MAAA,SAEH,WCnB4Z,I,YCO7axjB,EAAY,eACd,EACA1C,EACA0B,GACA,EACA,KACA,KACA,MAIa,aAAAgB,E,2CClBf,yBAA4kB,EAAG,G,kCCA/kB,IAAI1C,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAIkmB,SAAShkB,OAAS,EAAG9B,EAAG,MAAM,CAACJ,EAAIgP,GAAG,WAAU,WAAW,MAAO,CAAC5O,EAAG,KAAK,CAACE,YAAY,+CAA+CN,EAAI4C,GAAI5C,EAAY,UAAE,SAASmmB,EAAQrjB,GAAI,OAAO1C,EAAG,KAAK,CAAC2C,IAAID,EAAGxC,YAAY,SAAS,CAACN,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIomB,WAAWD,EAAQA,UAAU,KAAMnmB,EAAW,QAAE,CAACA,EAAIoB,GAAG,MAAMpB,EAAIqB,GAAGrB,EAAIqmB,SAAS,OAAOrmB,EAAImB,MAAM,MAAK,MAAK,CAAC,SAAWnB,EAAIkmB,YAAY,GAAGlmB,EAAImB,MACteM,EAAkB,G,oFCwBtB,IAAqB,EAArB,cAA2C,aAA3C,c,oBACY,KAAAykB,SAA4B,GAC5B,KAAAG,QAAkB,GAMlB,UACJtS,EAAA,KAAItO,GAAG,OAAyBxF,KAAKqmB,YAGjC,WAAWC,GACXA,EAAqBC,aAAevmB,KAAK+K,KACzC/K,KAAKimB,SAAWK,EAAqBL,SACrCjmB,KAAKomB,QAAUE,EAAqBF,QACpCE,EAAqBE,WAIrB,WAAWC,GACf,OAAI,OAAkBC,OAAOD,GAClB,OAAkBE,IAAIF,GAE1BA,EAGH,YACJ3S,EAAA,KAAI8S,IAAI,OAAyB5mB,KAAKqmB,cAtB1C,gBAHC,eAAK,CACFhkB,UAAU,K,yBAJG,EAAa,gBADjC,QACoB,WCzBqY,I,YCOtZG,EAAY,eACd,EACA1C,EACA0B,GACA,EACA,KACA,KACA,MAIa,OAAAgB,E,yEClBf,IAAI1C,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAACE,YAAY,QAAQK,MAAM,CAAE,6BAA8BX,EAAI0C,wBAAyB,CAACtC,EAAG,MAAM,CAACE,YAAY,SAASK,MAAM,CAAE,eAAe,IAASX,EAAI4C,GAAI5C,EAAkB,gBAAE,SAAS8mB,EAAM5b,GAAO,OAAO9K,EAAG,UAAU,CAAC2C,IAAI+jB,EAAMC,KAAKzmB,YAAY,sCAAsC,CAACF,EAAG,wBAAwB,CAACI,MAAM,CAAC,MAAQ0K,EAAM,MAAQ4b,EAAMhX,MAAM,QAAUgX,EAAMhmB,QAAQ,kBAAkB,GAAG,eAAe,IAAI,IAAI,eAAed,EAAI8P,MAAM,iBAAiB9P,EAAI2C,aAAa,eAAe3C,EAAIgnB,oBAAoB9b,IAAQzF,GAAG,CAAC,iBAAmB,SAASC,GAAQ,OAAO1F,EAAIqN,iBAAiByZ,EAAMC,WAAW,MAAK,MACvtBtlB,EAAkB,G,6DC+BtB,IAAqB,EAArB,cAA6C,aAA7C,c,oBACY,KAAAwlB,cAA0B,GAc1B,oBAAoB/b,GAAa,MACrC,MAAMgc,EAAehc,EAAQ,IAAM,EAAIA,EAAQ,EAAIA,EAAQ,EACrDic,EAAO,UAAGlnB,KAAK8lB,OAAOmB,UAAf,aAAG,EAA2BpmB,QAC3C,OAAOqmB,KAAaA,EAAQpZ,aAGP,4BACrB,OAAO9N,KAAKa,QAAQ4B,wBAA0BzC,KAAK0C,aAGrC,uBACd,2BAAO1C,KAAKa,eAAZ,iBAAO,EAAcilB,cAArB,aAAO,EAAsBzO,IAAI,CAAC8P,EAAGtkB,KACzB,IACDskB,EACHL,KAAMjkB,YAHd,QAKM,GAGgB,qBACtB,OAAO7C,KAAK8lB,OAAO7R,OAAOkT,IAAMnnB,KAAKgnB,cAAc/W,SAASkX,EAAEL,OAG1D,iBAAiBM,GACrBpnB,KAAKgnB,cAAcrK,KAAKyK,KAjCzB,gBAHF,eAAK,CACF/kB,UAAU,EACVC,KAAMC,U,8BAGI,gBAAb,eAAK8M,S,4BAGN,gBADC,eAAK,CAAEhN,UAAU,EAAMC,KAAMgC,W,mCAVb,EAAe,gBAHnC,eAAU,CACPC,WAAY,CAAEsQ,wBAAA,SAEG,WChCyZ,I,YCO1arS,EAAY,eACd,EACA1C,EACA0B,GACA,EACA,KACA,KACA,MAIa,aAAAgB,E,kEClBf,yBAA8jB,EAAG,G,qBCAjkB5C,EAAOC,QAAU,IAA0B,qC,yCCA3C,IAAIC,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACO,MAAM,CAAE,6BAA8BX,EAAI0C,wBAAyB,CAACtC,EAAG,MAAM,CAACE,YAAY,gBAAgBK,MAAM,CAAC,CAAE,YAAaX,EAAImC,gBAAiB,wBAA8C,IAAtBnC,EAAIsnB,eAA2BtnB,EAAIc,QAAQQ,SAAU,gBAAsC,IAAtBtB,EAAIsnB,eAA0BtnB,EAAIc,QAAQQ,UAAYtB,EAAIunB,cAAchnB,MAAOP,EAAS,OAAG,CAACI,EAAG,MAAM,CAAEJ,EAAIc,QAAgB,SAAEV,EAAG,gBAAgB,CAACE,YAAY,6BAA6BK,MAAM,CAAC,4BAA6BX,EAAIsnB,cAAe,2BAA4BtnB,EAAIsnB,eAAe9mB,MAAM,CAAC,MAAQR,EAAI2C,aAAe,KAAO,KAAK,cAAc3C,EAAI2C,eAAe,CAAC3C,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIc,QAAQQ,UAAU,OAAOtB,EAAImB,MAAM,GAAGf,EAAG,MAAM,CAACE,YAAY,WAAW,CAACF,EAAG,MAAM,CAACE,YAAY,gCAAgCK,MAAMX,EAAIwnB,aAAaxnB,EAAI4C,GAAI5C,EAAIc,QAA+B,yBAAE,SAAS+B,EAAKC,GAAI,OAAO1C,EAAG,yBAAyB,CAAC2C,IAAID,EAAGnC,MAAM,CAACX,EAAIynB,YAAa,CAAC,wBAAyBznB,EAAIsnB,cAAe,cAAetnB,EAAIsnB,gBAAgB9mB,MAAM,CAAC,QAAUqC,EAAK/B,QAAQ,aAAad,EAAI0nB,oBAAmB,UACvoCjmB,EAAkB,G,iFCmCtB,IAAqB,EAArB,cAAqD,OAkBhB,4BAC7B,OAAOxB,KAAKa,QAAQ4B,wBAA0BzC,KAAK0C,aAG5B,sBACvB,OAAO1C,KAAKa,QAAQmC,sBACdhD,KAAKa,QAAQmC,sBACbhD,KAAKa,QAAQqB,gBAAkB,IAAMlC,KAAKa,QAAQqB,qBAAkBe,EAGzD,gBACjB,IAAKjD,KAAKkC,gBAAiB,OAC3B,MAAM,IAAEgB,EAAF,MAAOC,EAAP,KAAcC,GAAS,eAAepD,KAAKkC,iBAC3CmB,EAAmB,eAAKH,EAAKC,EAAOC,IAAS,GACnD,OAAOC,EAAmB,IAASC,MAAMC,OAAOC,MAAQ,IAASF,MAAMC,OAAOE,MAGzD,oBACrB,OAAOzD,KAAK2D,UAAY,CAAE3B,MAAOhC,KAAK2D,gBAAcV,EAGvC,YACb,MAAO,CACHf,gBAAiBlC,KAAKkC,gBACtBF,MAAOhC,KAAK2D,WAIG,kBACnB,IAAI+jB,EAAkB,GActB,OAXQA,EAFJ1nB,KAAKqnB,cACDrnB,KAAKa,QAAQ8mB,wBAAwB1lB,OAAS,IAAM,EAC1C,QAEA,iBAEPjC,KAAKa,QAAQ8mB,wBAAwB1lB,OAAS,IAAM,EACjD,6BACHjC,KAAKa,QAAQ8mB,wBAAwB1lB,OAAS,IAAM,EACjD,oBAEA,oBAEPylB,IAzDR,gBAHF,eAAK,CACFrlB,UAAU,EACVC,KAAMC,U,8BAIV,gBADC,eAAK,CAAEF,UAAU,EAAMC,KAAMgC,W,mCAI9B,gBADC,eAAK,CAAEhC,KAAMgC,W,oCAId,gBADC,eAAK,CAAEhC,KAAM+M,U,mCAId,gBADC,eAAK,CAAE/M,KAAM+M,U,kCAfG,EAAuB,gBAH3C,eAAU,CACP9K,WAAY,CAAEE,gBAAA,KAAemjB,yBAAA,eAEZ,WCpCia,I,YCOlbplB,EAAY,eACd,EACA1C,EACA0B,GACA,EACA,KACA,KACA,MAIa,aAAAgB,E,kDClBf,IAAI1C,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,aAAa,CAACI,MAAM,CAAC,KAAO,SAAS,IAAM,MAAM,qBAAqB,iCAAiC,qBAAqB,oCAAoC,CAAGR,EAAI8nB,QAEke1nB,EAAG,UAAU,CAAC2C,IAAI,UAAUpC,MAAM,CAAE,6BAA8BX,EAAI0C,wBAAyB,CAACtC,EAAG,iBAAiB,CAACE,YAAY,qBAAqBE,MAAM,CAAC,MAAQR,EAAI2C,aAAe,KAAO,KAAK,cAAc3C,EAAI2C,eAAe,CAAC3C,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAI4F,GAAG,IAAP5F,CAAY,6CAA6C,OAAOI,EAAG,IAAI,CAACE,YAAY,2CAA2C,CAACN,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAI4F,GAAG,IAAP5F,CAAY,gDAAgD,QAAQ,GAFv6BI,EAAG,UAAU,CAAC2C,IAAI,cAAcpC,MAAM,CAAE,6BAA8BX,EAAI0C,wBAAyB,CAACtC,EAAG,iBAAiB,CAACE,YAAY,qBAAqBE,MAAM,CAAC,MAAQR,EAAI2C,aAAe,KAAO,KAAK,cAAc3C,EAAI2C,eAAe,CAAC3C,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIc,QAAQQ,UAAU,OAAOlB,EAAG,IAAI,CAACE,YAAY,SAAS,CAAEN,EAAIc,QAAgB,SAAE,CAACd,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIc,QAAQinB,UAAU,MAAM,CAAC/nB,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAI4F,GAAG,IAAP5F,CAAY,0CAA0C,OAAO,GAAGI,EAAG,qBAAqB,CAACI,MAAM,CAAC,IAAM,WAAWiJ,YAAYzJ,EAAI0J,GAAG,CAAC,CAAC3G,IAAI,UAAU4G,GAAG,SAAS7C,GACn0B,IAAIkhB,EAAelhB,EAAIkhB,aACvB,MAAO,CAAC5nB,EAAG,OAAO,CAACE,YAAY,6BAA6BmF,GAAG,CAAC,OAAS,SAASC,GAAgC,OAAxBA,EAAOuiB,iBAAwBD,EAAahoB,EAAIkoB,WAAW,CAAC9nB,EAAG,IAAI,CAACE,YAAY,qBAAqB,CAACN,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAI4F,GAAG,IAAP5F,CAAY,uCAAuC,OAAOI,EAAG,aAAa,CAACE,YAAY,QAAQE,MAAM,CAAC,KAAO,QAAQ,KAAO,OAAO,MAAQR,EAAI4F,GAAG,IAAP5F,CAAY,sCAAsC,MAAQ,kBAAkBmoB,MAAM,CAAC9iB,MAAOrF,EAAS,MAAEooB,SAAS,SAAUC,GAAMroB,EAAI+V,MAAMsS,GAAK9iB,WAAW,WAAWnF,EAAG,kBAAkB,CAACI,MAAM,CAAC,GAAK,yBAAyBJ,EAAG,iBAAiB,CAACE,YAAY,QAAQE,MAAM,CAAC,SAAWR,EAAIyK,QAAQ,KAAOzK,EAAI4F,GAAG,IAAP5F,CAAY,+BAA+B,KAAO,aAAa,OAAO,MAAK,EAAM,eAAe,MACruByB,EAAkB,G,wEC2DtB,IAAqB,EAArB,cAAmD,OAAnD,c,oBAeY,KAAAgJ,SAAmB,EACnB,KAAAqd,SAAmB,EACnB,KAAA/R,MAAgB,GANC,4BACrB,OAAO9V,KAAKa,QAAQ4B,wBAA0BzC,KAAK0C,aAO/C,QACJ1C,KAAK8V,MAAQ,GAGG,eAChB9V,KAAKwK,SAAU,EAEf,UACU,OAAI6d,WAAWC,YAAYtoB,KAAK8V,MAAO,uBAC7C9V,KAAK6nB,SAAU,EACjB,MAAOrW,GACL,OAAe2K,MAAM3K,GAJzB,QAMIxR,KAAKwK,SAAU,KA5BpB,gBAHF,eAAK,CACFnI,UAAU,EACVC,KAAMC,U,8BAMP,gBAHF,eAAK,CACFF,UAAU,EACVC,KAAMgC,W,mCARO,EAAqB,gBAHzC,eAAU,CACPC,WAAY,CAAEE,gBAAA,KAAe8jB,gBAAA,SAEZ,WC9Dib,I,YCOlc/lB,EAAY,eACd,EACA1C,EACA0B,GACA,EACA,KACA,KACA,MAIa,aAAAgB,E,8BClBf5C,EAAOC,QAAU,IAA0B,qC,kCCA3C,yBAA4lB,EAAG,G,kCCA/lB,IAAIC,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAW,QAAEI,EAAG,UAAU,CAACE,YAAY,yBAAyB,CAACF,EAAG,MAAM,CAACE,YAAY,gDAAgD,CAACF,EAAG,MAAM,CAACE,YAAY,QAAQK,MAAM,CAAE,sBAAuBX,EAAIyoB,mBAAqBzoB,EAAIc,QAAQ6L,OAAS3M,EAAIc,QAAQ6L,MAAMhL,OAAQ,CAAE3B,EAAIyoB,iBAAmBzoB,EAAIc,QAAQ6L,OAAS3M,EAAIc,QAAQ6L,MAAMhL,IAAKvB,EAAG,kBAAkB,CAACI,MAAM,CAAC,YAAYR,EAAIc,QAAQ6L,OAAS3M,EAAIc,QAAQ6L,MAAMhL,KAAO,GAAG,cAAc3B,EAAIc,QAAQ6L,OAAS3M,EAAIc,QAAQ6L,MAAME,WAAW,eAAe,IAAI,IAAI,kBAAkB,CAAE6b,GAAI,GAAGC,GAAI,GAAIC,GAAI,OAAO5oB,EAAImB,MAAM,GAAGf,EAAG,MAAM,CAACE,YAAY,qBAAqBK,MAAM,CAAC,oBAAqBX,EAAI6oB,YAAa,eAAgB7oB,EAAI6oB,cAAc,CAAE7oB,EAAIc,QAAQ6kB,UAAY3lB,EAAIc,QAAQE,QAASZ,EAAG,MAAM,CAACE,YAAY,wBAAwB,CAACF,EAAG,QAAQ,CAACE,YAAY,YAAYE,MAAM,CAAC,KAAOR,EAAI8oB,oBAAoB,MAAO,EAAK,UAAW,KAAQ1oB,EAAG,MAAM,CAACE,YAAY,8EAA8E,CAAEN,EAAIc,QAAe,QAAEV,EAAG,MAAM,CAAC+E,WAAW,CAAC,CAACpD,KAAK,WAAWqD,QAAQ,eAAe5E,MAAM,CAAC,IAAMR,EAAIc,QAAQE,QAAQ,IAAM,mBAAmBhB,EAAImB,QAAQ,GAAGnB,EAAImB,OAAOf,EAAG,yBAAyB,CAACE,YAAY,0CAA0CE,MAAM,CAAC,GAAKR,EAAIc,QAAQoJ,cAAc,CAAClK,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIc,QAAQioB,cAAc,OAAQ/oB,EAAIc,QAAoB,aAAEV,EAAG,yBAAyB,CAACE,YAAY,QAAQE,MAAM,CAAC,GAAKR,EAAIc,QAAQoJ,cAAc,CAAC9J,EAAG,gBAAgB,CAACI,MAAM,CAAC,MAAQ,OAAO,CAACR,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIc,QAAQioB,cAAc,QAAQ,GAAG/oB,EAAImB,KAAKf,EAAG,IAAI,CAACE,YAAY,cAAcyG,SAAS,CAAC,UAAY/G,EAAIqB,GAAGrB,EAAIc,QAAQ6P,WAAWvQ,EAAG,IAAI,CAACE,YAAY,uBAAuB,CAAEN,EAAIc,QAAe,QAAE,CAACd,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAI4F,GAAG,IAAP5F,CAAY,oBAAoBA,EAAIc,QAAQkoB,UAAU,MAAMhpB,EAAImB,MAAM,GAAGf,EAAG,MAAM,CAACE,YAAY,sBAAsB,CAACF,EAAG,eAAe,CAACE,YAAY,SAASE,MAAM,CAAC,KAAOR,EAAIc,QAAQoJ,YAAY,KAAOlK,EAAIipB,eAAe,IAAI,KAAKjpB,EAAImB,MAC1gEM,EAAkB,G,gDC+CtB,IAAqB,EAArB,cAA4C,OAK1B,iBACV,OAAOxB,KAAKa,QAAQmoB,YAAc,OAAkBrC,IAAI,+BAG7B,0BAC3B,OAAO3mB,KAAKa,QAAQE,QAAU,0BAA4B,oBATtB,gBAAvC,eAAK,CAAEsB,UAAU,EAAMC,KAAMC,U,8BACW,gBAAxC,eAAK,CAAED,KAAMgC,QAASkD,SAAS,K,kCACS,gBAAxC,eAAK,CAAElF,KAAMgC,QAASkD,SAAS,K,sCAHf,EAAc,gBAHlC,eAAU,CACPjD,WAAY,CAAEE,gBAAA,SAEG,WChDwZ,I,wBCQzajC,EAAY,eACd,EACA1C,EACA0B,GACA,EACA,KACA,WACA,MAIa,OAAAgB,E,mDCnBf,IAAI1C,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAACE,YAAY,kDAAkDK,MAAM,CAAE,6BAA8BX,EAAI0C,wBAAyB,CAAE1C,EAAY,SAAEI,EAAG,gBAAgB,CAACE,YAAY,uCAAuCE,MAAM,CAAC,MAAQR,EAAI2C,aAAe,KAAO,KAAK,cAAc3C,EAAI2C,eAAe,CAAC3C,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAIsB,UAAU,OAAOtB,EAAImB,KAAKf,EAAG,MAAM,CAACE,YAAY,YAAY,CAAEN,EAAIkpB,kBAAkBhnB,QAAUlC,EAAIoa,SAAU,CAAEpa,EAAIc,QAAoB,aAAE,CAAEd,EAAIc,QAAoB,aAAEV,EAAG,MAAM,CAACE,YAAY,8EAA8EN,EAAI4C,GAAI5C,EAAqB,mBAAE,SAAS8E,EAAMoG,GAAO,OAAO9K,EAAG,MAAM,CAAC2C,IAAImI,EAAM5K,YAAY,qGAAqG,CAACF,EAAG,cAAc,CAACE,YAAY,cAAcE,MAAM,CAAC,UAAY,KAAMiF,GAAG,CAAC,QAAU,SAASC,GAAQ,OAAO1F,EAAIsa,mBAAmBxV,KAAS2E,YAAYzJ,EAAI0J,GAAG,CAAC,CAAC3G,IAAI,UAAU4G,GAAG,SAAS7C,GAChjC,IAAIyT,EAASzT,EAAIyT,OACjB,MAAO,CAAC,EAASna,EAAG,yBAAyB,CAACE,YAAY,cAAcE,MAAM,CAAC,GAAKR,EAAImpB,YAAYrkB,IAAQgF,SAAS,CAAC,MAAQ,SAASpE,GAAQ,OAAO1F,EAAIopB,iBAAiBtkB,MAAU,CAAC1E,EAAG,MAAM,CAAC+E,WAAW,CAAC,CAACpD,KAAK,OAAOqD,QAAQ,SAASC,OAAQP,EAAMQ,gBAAiBC,WAAW,2BAA2B/E,MAAM,CAAC,IAAMsE,EAAMukB,UAAU1O,IAAI,IAAM7V,EAAMI,WAAWO,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAO1F,EAAI2F,eAAeb,OAAW1E,EAAG,OAAO,CAAC+E,WAAW,CAAC,CAACpD,KAAK,OAAOqD,QAAQ,SAASC,MAAOP,EAAqB,gBAAES,WAAW,0BAA0BjF,YAAY,oCAAoC,CAACN,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGyD,EAAMI,WAAW,SAASlF,EAAImB,SAAS,MAAK,MAAS,MAAK,GAAGnB,EAAImB,MAAM,CAACf,EAAG,SAAS,CAACO,MAAM,UAAYX,EAAIgL,GAAGxK,MAAM,CAAC,GAAKR,EAAIgL,GAAG,gBAAgBhL,EAAIgL,GAAG,QAAUhL,EAAIiL,gBAAgBjL,EAAI4C,GAAI5C,EAAqB,mBAAE,SAAS8E,EAAMoG,GAAO,OAAO9K,EAAG,cAAc,CAAC2C,IAAImI,EAAM5K,YAAY,gCAAgC,CAACF,EAAG,cAAc,CAACE,YAAY,SAASE,MAAM,CAAC,UAAY,KAAMiF,GAAG,CAAC,QAAU,SAASC,GAAQ,OAAO1F,EAAIsa,mBAAmBxV,KAAS2E,YAAYzJ,EAAI0J,GAAG,CAAC,CAAC3G,IAAI,UAAU4G,GAAG,SAAS7C,GACplC,IAAIyT,EAASzT,EAAIyT,OACjB,MAAO,CAAC,EAASna,EAAG,yBAAyB,CAACE,YAAY,sGAAsGE,MAAM,CAAC,GAAKR,EAAImpB,YAAYrkB,IAAQgF,SAAS,CAAC,MAAQ,SAASpE,GAAQ,OAAO1F,EAAIopB,iBAAiBtkB,MAAU,CAAC1E,EAAG,MAAM,CAACE,YAAY,mCAAmC,CAACF,EAAG,MAAM,CAAC+E,WAAW,CAAC,CAACpD,KAAK,WAAWqD,QAAQ,eAAe9E,YAAY,+BAA+BE,MAAM,CAAC,IAAMsE,EAAMukB,UAAU1O,IAAI,IAAM7V,EAAMI,eAAe9E,EAAG,MAAM,CAACE,YAAY,0DAA0D,CAACN,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGyD,EAAMI,WAAW,OAAO9E,EAAG,MAAM,CAACE,YAAY,gDAAgD,CAACF,EAAG,MAAM,CAACE,YAAY,qBAAqB,CAACF,EAAG,MAAM,CAACE,YAAY,aAAa,CAACN,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAI4F,GAAG,eAAP5F,CAAuB8E,EAAMgW,eAAe,OAAO1a,EAAG,MAAM,CAACJ,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAI4F,GAAG,IAAP5F,CAAY,uCAAuC,SAASI,EAAG,MAAM,CAACE,YAAY,qBAAqB,CAACF,EAAG,MAAM,CAACE,YAAY,aAAa,CAACN,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAI4F,GAAG,eAAP5F,CAAuB8E,EAAMqX,gBAAgB,OAAO/b,EAAG,MAAM,CAACJ,EAAIoB,GAAG,IAAIpB,EAAIqB,GAAGrB,EAAI4F,GAAG,IAAP5F,CAAY,wCAAwC,aAAaA,EAAImB,SAAS,MAAK,MAAS,MAAK,GAAGf,EAAG,SAAS,CAACE,YAAY,uEAAuEK,MAAMX,EAAImL,mBAAmB3K,MAAM,CAAC,KAAO,cAAc,KAAO,UAAU4K,KAAK,eAAe,CAAChL,EAAG,QAAQ,CAACI,MAAM,CAAC,KAAO,kBAAkB,MAAQ,KAAK,OAAS,SAAS,GAAGJ,EAAG,SAAS,CAACE,YAAY,uEAAuEK,MAAMX,EAAIqL,mBAAmB7K,MAAM,CAAC,KAAO,cAAc,KAAO,UAAU4K,KAAK,eAAe,CAAChL,EAAG,QAAQ,CAACI,MAAM,CAAC,KAAO,mBAAmB,MAAQ,KAAK,OAAS,SAAS,KAAKJ,EAAG,MAAM,CAACO,MAAM,CAAC,gCAA6D,IAA7BX,EAAIc,QAAQwoB,aAAwB,6CAA0E,IAA7BtpB,EAAIc,QAAQwoB,iBAA0B,IAAI,IACv3D7nB,EAAkB,G,iICwGtB,IAAqB,EAArB,cAAuD,OAAvD,c,oBAcI,KAAA2Y,UAAoB,EACpB,KAAAY,iBAA2B,GACnB,KAAA5Y,OAA4C,KAC5C,KAAAmnB,0BAA4B,IAAStpB,KAAKupB,mBAAoB,KAC9D,KAAAC,aAAkE,GAEjD,oBACrB,MAAO,CACHhe,aAAc,GACdC,cAAe,OACfC,eAAgB,EAChByP,oBAAoB,EACpBxP,MAAM,EACNC,wBAAwB,EACxBC,uBAAuB,EACvBC,eAAe,EACfC,gBAAgB,EAChBC,WAAY,CACRC,OAAQ,IAAMjM,KAAKoL,mBACnBc,OAAQ,IAAMlM,KAAKkL,oBAEvBiB,YAAY,EACZC,aAAcpM,KAAK+K,GACnBsB,UAAU,EACVC,gBAAgB,EAChBC,sBAAsB,GAIhB,SACV,OAAO,IAAIjB,MAAOC,UAGQ,yBAC1B,MAAO,6BAA+BvL,KAAK+K,GAGjB,yBAC1B,MAAO,6BAA+B/K,KAAK+K,GAG/C,yBACI,MAAMqQ,EAAgB,OAAkBC,sBACpCD,IAAkBpb,KAAK+a,mBACvB/a,KAAK+a,iBAAmBK,EACxBpb,KAAKma,UAAW,EAChBna,KAAKsb,UAAU,IAAMtb,KAAKma,UAAW,IAIpB,4BACrB,OAAOna,KAAKa,QAAQ4B,wBAA0BzC,KAAK0C,aAG7B,qBACtB,IACI1C,KAAKmC,aAAe,OAAIoZ,gBAAgBkO,uBAAuB,CAC3DhO,6BAA8Bzb,KAAKa,QAAQ4a,6BAC3CC,6BAA8B1b,KAAKa,QAAQ6a,6BAC3CC,kBAAmB3b,KAAKa,QAAQ8a,kBAChCC,oBAAqB5b,KAAKa,QAAQgb,gBAClCC,WAAY9b,KAAKa,QAAQkb,SACzBC,eAAgBhc,KAAKa,QAAQob,WAC7BnB,WAAY9a,KAAKa,QAAQia,aAE/B,MAAOtJ,GACL,OAAe2K,MAAM3K,IAIrB,YAAY3M,GAChB,MAAO,WAAWA,EAAMI,UAAUykB,cAGlB,qBAChB,iBAAO1pB,KAAKa,eAAZ,aAAO,EAAcQ,SAGI,8BACzB,OAAO,UAAArB,KAAKmC,cAAL,eAAa8mB,oBAAqB,GAG7C,kBAAkB1iB,GACd,OAAO,OAA8B6V,eAAe7V,EAAM,OAA8B8V,2BAA2BC,KAG/G,iBAAiBzX,GACrB,OAAW4X,mBAAmB5X,EAAMI,UAAWJ,EAAMI,eAAWhC,GAG5D,mBAAmB4B,GACvB7E,KAAKwpB,aAAa7M,KAAK,CAAE7a,KAAM+C,EAAMI,UAAW8F,GAAIlG,EAAMI,UAAW0kB,cAAU1mB,IAC/EjD,KAAKspB,4BAGD,qBACJ,MAAM5kB,EAAS,IAAI1E,KAAKwpB,cACxBxpB,KAAKwpB,aAAe,GACpB,OAAW5M,kBAAkBlY,GAGzB,eAAeG,GACnBA,EAAMQ,iBAAkB,EACxBrF,KAAK2G,eAGT,UACI3G,KAAK4pB,eACL5pB,KAAK+a,iBAAmB,OAAkBM,sBAC1C,OAAkByB,YAAY9c,KAAK+c,wBACnC/c,KAAKsb,UAAU,KACXtb,KAAKma,UAAW,IAIxB,YACI,OAAkB6C,eAAehd,KAAK+c,0BA7H1C,gBAJC,eAAK,CACF1a,UAAU,EACVC,KAAMC,U,8BASV,gBALC,eAAK,CACFF,UAAU,EACVC,KAAMgC,QACNkD,SAAS,K,mCAVI,EAAyB,gBAH7C,eAAU,CACPjD,WAAY,CAAEslB,iBAAA,KAAgBplB,gBAAA,SAEb,WC7Gma,I,wBCQpbjC,EAAY,eACd,EACA1C,EACA0B,GACA,EACA,KACA,KACA,MAIa,aAAAgB,E","file":"js/basic-blocks.b992df10.js","sourcesContent":["import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UniqueSellingPointItem.vue?vue&type=style&index=0&lang=less&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UniqueSellingPointItem.vue?vue&type=style&index=0&lang=less&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextWithImageBlock.vue?vue&type=style&index=0&lang=less&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextWithImageBlock.vue?vue&type=style&index=0&lang=less&\"","module.exports = __webpack_public_path__ + \"img/map-marker-blue.938d6f14.svg\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('article',{staticClass:\"flex flex-wrap flex-col justify-start items-center f-basis\"},[(_vm.linkUrl)?_c('culture-aware-router-link',{staticClass:\"flex flex-wrap flex-col justify-start items-center c-usp-item__link-content\",style:(_vm.textStyle),attrs:{\"to\":_vm.linkUrl,\"target\":_vm.linkTarget}},[(_vm.iconUrl)?_c('div',{staticClass:\"w-80 h-80 flex justify-center align-center mb-15\",class:{'bg-gray-300 rounded-full': !_vm.isPixelImage},style:(_vm.backgroundColorStyle(_vm.content.iconBackgroundColor))},[_c('img',{staticClass:\"self-center h-full\",class:{'max-w-usp-icon max-h-usp-icon': !_vm.isPixelImage},attrs:{\"src\":_vm.iconUrl,\"width\":_vm.width,\"height\":_vm.height,\"alt\":\"\"}})]):_vm._e(),(_vm.headline)?_c('h2',{staticClass:\"text-18 lh-normal font-bold text-center mb-3 w-full\"},[_vm._v(\" \"+_vm._s(_vm.headline)+\" \")]):_vm._e(),(_vm.text)?_c('p',{staticClass:\"text-center mb-3 w-full\"},[_vm._v(\" \"+_vm._s(_vm.text)+\" \")]):_vm._e(),_c('span',{staticClass:\"c-usp-item__text underline hover:no-underline text-center\"},[_vm._v(_vm._s(_vm.linkName))])]):_c('div',{staticClass:\"flex flex-wrap flex-col justify-start items-center\"},[(_vm.iconUrl)?_c('div',{staticClass:\"w-80 h-80 flex justify-center align-center mb-15\",class:{'bg-gray-300 rounded-full': !_vm.isPixelImage},style:(_vm.backgroundColorStyle(_vm.content.iconBackgroundColor))},[_c('img',{staticClass:\"self-center h-full\",class:{'c-usp-item__icon-svg': !_vm.isPixelImage},attrs:{\"src\":_vm.iconUrl,\"width\":_vm.width,\"height\":_vm.height,\"alt\":\"\"}})]):_vm._e(),(_vm.headline)?_c('h2',{staticClass:\"text-18 lh-normal font-bold text-center mb-3 w-full\"},[_vm._v(\" \"+_vm._s(_vm.headline)+\" \")]):_vm._e(),(_vm.text)?_c('p',{staticClass:\"text-center mb-3 w-full\"},[_vm._v(\" \"+_vm._s(_vm.text)+\" \")]):_vm._e()])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport { Component, Prop } from 'vue-property-decorator';\r\nimport { UniqueSellingPointItemViewModel } from '@/types/contentServerContract';\r\n\r\n@Component\r\nexport default class UniqueSellingPointItem extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: UniqueSellingPointItemViewModel;\r\n\r\n @Prop()\r\n textStyle!: Partial;\r\n\r\n private get iconUrl() {\r\n return this.content.icon?.url;\r\n }\r\n\r\n private get headline() {\r\n return this.content?.headline;\r\n }\r\n\r\n private get text() {\r\n return this.content?.shortText;\r\n }\r\n\r\n private get linkUrl() {\r\n return this.content.link?.url;\r\n }\r\n\r\n private get linkTarget() {\r\n return this.content.link?.target;\r\n }\r\n\r\n private get linkName() {\r\n return this.content.link?.name;\r\n }\r\n\r\n private get isPixelImage() {\r\n return this.iconUrl.indexOf('.jpg') !== -1 || this.iconUrl.indexOf('.jpeg') !== -1 || this.iconUrl.indexOf('.png') !== -1;\r\n }\r\n\r\n private get width() {\r\n return this.isPixelImage ? 80 : 40;\r\n }\r\n\r\n private get height() {\r\n return this.isPixelImage ? 80 : 40;\r\n }\r\n\r\n isColorDefined(color: string): boolean {\r\n return color?.length === 7 ?? false; // #233445\r\n }\r\n\r\n private backgroundColorStyle(backgroundColor: string): object {\r\n let result = '';\r\n\r\n if (this.isColorDefined(backgroundColor)) {\r\n result = backgroundColor;\r\n }\r\n\r\n return ({\r\n backgroundColor: result\r\n });\r\n }\r\n}\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UniqueSellingPointItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UniqueSellingPointItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./UniqueSellingPointItem.vue?vue&type=template&id=286d9f23&\"\nimport script from \"./UniqueSellingPointItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./UniqueSellingPointItem.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./UniqueSellingPointItem.vue?vue&type=style&index=0&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('article',{class:{ '-is-appended-to-prev-block': _vm.appendToPreviousBlock }},[_c('smart-headline',{staticClass:\"ml-15 md:ml-0 text-18 md:text-36 font-regular my-30\",attrs:{\"level\":_vm.isFirstBlock ? 'h1' : 'h2',\"style-as-h1\":_vm.isFirstBlock}},[_vm._v(\" \"+_vm._s(_vm.content.headline)+\" \")]),_c('div',{staticClass:\"flex flex-wrap justify-center\",style:(_vm.style)},_vm._l((_vm.categoryItems),function(item,ix){return _c('category-block-item',{key:ix,attrs:{\"content\":item}})}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport { CategoryItemViewModel } from '@/types/apiServerContract';\r\nimport { CategoryBlockViewModel } from '@/types/contentServerContract';\r\nimport Api from '@/project/http/Api.service';\r\nimport adnuntiusService from '@/project/personalization/adnuntius.service';\r\nimport CategoryBlockItem from './CategoryBlockItem.vue';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\nimport { hexToRgbValues, luma } from '@/core/color/color.service';\r\nimport tailwind from '@/styling/tailwind.config';\r\n\r\n@Component({\r\n components: { CategoryBlockItem, SmartHeadline }\r\n})\r\nexport default class CategoryBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: CategoryBlockViewModel;\r\n\r\n @Prop({\r\n required: true,\r\n type: Boolean\r\n }) isFirstBlock!: boolean;\r\n\r\n private get appendToPreviousBlock() {\r\n return this.content.appendToPreviousBlock && !this.isFirstBlock;\r\n }\r\n\r\n private get backgroundColor() {\r\n return this.content.customBackgroundColor\r\n ? this.content.customBackgroundColor\r\n : this.content.backgroundColor ? '#' + this.content.backgroundColor : undefined;\r\n }\r\n\r\n private get textColor() {\r\n if (!this.backgroundColor) return undefined;\r\n const { red, green, blue } = hexToRgbValues(this.backgroundColor);\r\n const isDarkBackground = luma(red, green, blue) <= 0.5;\r\n return isDarkBackground ? tailwind.theme.colors.white : tailwind.theme.colors.black;\r\n }\r\n\r\n private get style(): Partial {\r\n return {\r\n backgroundColor: this.backgroundColor,\r\n ...(this.backgroundColor && { paddingBottom: '15px' }),\r\n color: this.textColor\r\n };\r\n }\r\n\r\n private categoryItems: CategoryItemViewModel[] = [];\r\n\r\n private created() {\r\n this.getCategoryItems(this.content.settings.selectedAdUnitIdContent.adUnitId);\r\n }\r\n\r\n private async getCategoryItems(adUnitId: string) {\r\n this.categoryItems = await Api.personalization.categories(\r\n adUnitId,\r\n this.$route.fullPath,\r\n adnuntiusService.getContactKey(),\r\n adnuntiusService.getCustomerKey());\r\n }\r\n}\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CategoryBlock.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CategoryBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CategoryBlock.vue?vue&type=template&id=86e73c1a&\"\nimport script from \"./CategoryBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./CategoryBlock.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.brands && _vm.brands.length > 0)?_c('article',{staticClass:\"o-chrome-container flex flex-col\",class:{ '-is-appended-to-prev-block': _vm.appendToPreviousBlock }},[_c('div',{staticClass:\"flex md:justify-between\"},[(_vm.content.headline)?_c('SmartHeadline',{staticClass:\"text-18 md:text-34\",attrs:{\"level\":_vm.isFirstBlock ? 'h1' : 'h2',\"style-as-h1\":_vm.isFirstBlock}},[_vm._v(\" \"+_vm._s(_vm.content.headline)+\" \")]):_vm._e(),(_vm.content.linkText)?_c('div',{staticClass:\"hidden md:inline-block\"},[_c('CallToAction',{staticClass:\"cta--blue-light\",attrs:{\"text\":_vm.content.linkText,\"href\":{ name: _vm.brandOverviewPageName }}})],1):_vm._e()],1),_c('ul',{staticClass:\"flex flex-wrap\"},[(_vm.isLoading)?_c('li',{staticClass:\"min-h-200\"}):_vm._e(),_vm._l((_vm.brands),function(brand){return _c('li',{key:brand.brandId,staticClass:\"c-brandblock--item my-15 md:my-30\"},[_c('CultureAwareRouterLink',{staticClass:\"c-brandblock--item-link flex items-center justify-center\",attrs:{\"to\":{ name: _vm.brandPageName, params: { brandName: brand.brandName } }}},[_c('img',{directives:[{name:\"show\",rawName:\"v-show\",value:(!brand.imageLoadFailed),expression:\"!brand.imageLoadFailed\"}],staticClass:\"c-brandblock--item-logo\",attrs:{\"src\":brand.imageUrl,\"alt\":brand.brandName},on:{\"error\":function($event){return _vm.imageLoadError(brand)}}}),_c('span',{class:{ 'sr-only': !brand.imageLoadFailed }},[_c('span',{staticClass:\"sr-only\"},[_vm._v(_vm._s(_vm._f(\"t\")('BrandHero.BrandLogo.SeeAllProductsFrom')))]),_vm._v(\" \"+_vm._s(brand.brandName)+\" \")])])],1)})],2),(_vm.content.linkText)?_c('div',{staticClass:\"md:hidden\"},[_c('CallToAction',{staticClass:\"cta--blue-light\",attrs:{\"text\":_vm.content.linkText,\"href\":{ name: _vm.brandPageName }}})],1):_vm._e()]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\r\n/c-1-24\r\n/xxxxx/c-1-22\r\n/xxxxx/yyyy/c-2-343244\r\n*/\r\n\r\nfunction getCategoryIdFromUrl(url: string): string | null {\r\n const regMatcher = matchingRegEx();\r\n\r\n const match = url.match(regMatcher);\r\n if (match && match.length === 2) {\r\n return match[1].replace(/-/g, '_');\r\n }\r\n return null;\r\n}\r\n\r\nfunction matchingRegEx(): RegExp {\r\n // Create new one every time - RegEx is stateful.\r\n const categoriesRegEx = /c-([\\d,-]+)/i;\r\n return new RegExp(categoriesRegEx);\r\n}\r\n\r\nexport default {\r\n getCategoryIdFromUrl,\r\n matchingRegEx\r\n};\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport Api from '@/project/http/Api.service';\r\nimport { BrandsBlockViewModel } from '@/types/contentServerContract';\r\nimport { CustomerBrandTileViewObject } from '@/types/apiServerContract';\r\nimport categoryUrlService from '@/project/shared/category.service';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\nimport { PageName } from '@/router/routes/constants';\r\nimport authService from '@/core/auth/auth.service';\r\ninterface CustomerBrandTileViewObjectExtended extends CustomerBrandTileViewObject {\r\n imageLoadFailed?: boolean;\r\n}\r\n\r\n@Component({\r\n components: { SmartHeadline }\r\n})\r\nexport default class BrandsBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: BrandsBlockViewModel;\r\n\r\n @Prop({\r\n required: true,\r\n type: Boolean\r\n }) isFirstBlock!: boolean;\r\n\r\n isLoading: boolean = true;\r\n\r\n get appendToPreviousBlock() {\r\n return this.content.appendToPreviousBlock && !this.isFirstBlock;\r\n }\r\n\r\n private brands: CustomerBrandTileViewObjectExtended[] = [];\r\n\r\n private get brandPageName() {\r\n return PageName.BRAND;\r\n }\r\n\r\n private get brandOverviewPageName() {\r\n return PageName.BRAND_OVERVIEW;\r\n }\r\n\r\n private async getBrandTiles() {\r\n const categoryIdFromUrl = categoryUrlService.getCategoryIdFromUrl(this.$route.path);\r\n const result = await Api.customer.brandTiles(categoryIdFromUrl);\r\n this.brands = result.brandTiles;\r\n this.isLoading = false;\r\n }\r\n\r\n get isUserLoggedIn(): boolean {\r\n return authService.isLoggedIn();\r\n }\r\n\r\n private imageLoadError(brand) {\r\n brand.imageLoadFailed = true;\r\n this.$forceUpdate();\r\n }\r\n\r\n created() {\r\n this.getBrandTiles();\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BrandsBlock.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BrandsBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BrandsBlock.vue?vue&type=template&id=9e3ec46a&\"\nimport script from \"./BrandsBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./BrandsBlock.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BrandsBlock.vue?vue&type=style&index=0&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CategoryBlockItem.vue?vue&type=style&index=0&id=4034c70f&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CategoryBlockItem.vue?vue&type=style&index=0&id=4034c70f&lang=less&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdnuntiusHeroBannerBlock.vue?vue&type=style&index=0&lang=less&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdnuntiusHeroBannerBlock.vue?vue&type=style&index=0&lang=less&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('article',{staticClass:\"h-full\",class:{ 'p-20 md:p-30 lg:p-40 has-background': _vm.backgroundColor },style:({ 'background-color': _vm.backgroundColor })},[_c('div',[_c('div',[(_vm.content.headline)?_c('smart-headline',{staticClass:\"mb-10\",attrs:{\"level\":_vm.isFirstBlock ? 'h1' : 'h2',\"style-as-h1\":_vm.isFirstBlock}},[_vm._v(\" \"+_vm._s(_vm.content.headline)+\" \")]):_vm._e(),_c('section',{directives:[{name:\"delegate-html-links\",rawName:\"v-delegate-html-links\"}],ref:\"htmlContent\",staticClass:\"wysiwyg text-block\",domProps:{\"innerHTML\":_vm._s(_vm.bodyText(_vm.content.bodyText))}}),(_vm.content.callToAction)?_c('call-to-action',{staticClass:\"cta--rounded mt-20\",attrs:{\"hex-color\":_vm.content.callToActionColor,\"text\":_vm.content.callToAction.name,\"href\":_vm.content.callToAction.url,\"target\":_vm.content.callToAction.target}}):_vm._e()],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport { TextBlockViewModel } from '@/types/contentServerContract';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\nimport tableHtmlService from './tableHtml.service';\r\n\r\n@Component({\r\n components: { SmartHeadline }\r\n})\r\nexport default class TextBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: TextBlockViewModel;\r\n\r\n @Prop({\r\n required: false,\r\n default: false,\r\n type: Boolean\r\n }) isFirstBlock!: boolean;\r\n\r\n private get backgroundColor() {\r\n return this.content.backgroundColor ? `#${this.content.backgroundColor}` : null;\r\n }\r\n\r\n private bodyText(html: string): string {\r\n return tableHtmlService.wrapTableInOuterDivs(html);\r\n }\r\n\r\n $refs!: Vue['$refs'] & {\r\n htmlContent: HTMLElement\r\n }\r\n\r\n private mounted() {\r\n tableHtmlService.registerTableOverflow(this.$refs.htmlContent);\r\n }\r\n\r\n private beforeDestroy() {\r\n tableHtmlService.unregisterTableOverflow(this.$refs.htmlContent);\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextBlock.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TextBlock.vue?vue&type=template&id=b8c0db08&\"\nimport script from \"./TextBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./TextBlock.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import viewportEvents, { Viewport } from '@/core/responsive/viewport/viewportEvents.service';\r\n\r\ninterface WrapperAndTable {\r\n containingElement: HTMLElement,\r\n wrapper: HTMLElement,\r\n table: HTMLElement\r\n}\r\n\r\nlet oldWidthNHeight = 0;\r\n\r\nconst wrappersAndTables = new Set();\r\n\r\nfunction toggleHorisontalScroll(table: HTMLElement, wrapper: HTMLElement) {\r\n if (table.clientWidth > wrapper.clientWidth) {\r\n wrapper.classList.add('has-scroll');\r\n } else {\r\n wrapper.classList.remove('has-scroll');\r\n }\r\n}\r\n\r\nfunction viewPortChangeEventHandler(viewport: Viewport) {\r\n const newWidthNHeight = viewport.width + viewport.height;\r\n if (newWidthNHeight === oldWidthNHeight) return;\r\n oldWidthNHeight = newWidthNHeight;\r\n\r\n wrappersAndTables.forEach(x => {\r\n toggleHorisontalScroll(x.table, x.wrapper);\r\n });\r\n}\r\n\r\nfunction registerTableOverflow(containingElement: HTMLElement) {\r\n if (!containingElement) throw new Error('containingElement must not be undefined!');\r\n const wrappers = containingElement.querySelectorAll('.scrollable') as NodeListOf;\r\n if (wrappersAndTables.size === 0) {\r\n viewportEvents.setCallback(viewPortChangeEventHandler);\r\n }\r\n wrappers.forEach(wrapper => {\r\n const table = wrapper.querySelector('table') as HTMLTableElement;\r\n if (table) {\r\n wrappersAndTables.add({\r\n containingElement,\r\n wrapper,\r\n table\r\n });\r\n toggleHorisontalScroll(table, wrapper);\r\n }\r\n });\r\n}\r\n\r\nfunction unregisterTableOverflow(containingElement: HTMLElement) {\r\n if (!containingElement) throw new Error('containingElement must not be undefined!');\r\n const countBefore = wrappersAndTables.size;\r\n wrappersAndTables.forEach(x => {\r\n if (x.containingElement === containingElement) {\r\n wrappersAndTables.delete(x);\r\n }\r\n });\r\n if (countBefore > 0 && wrappersAndTables.size === 0) {\r\n viewportEvents.removeCallback(viewPortChangeEventHandler);\r\n }\r\n}\r\n\r\nfunction wrapTableInOuterDivs(html: string): string {\r\n function replaceFunc(...params: string[]): string {\r\n return `
${params[0]}
`;\r\n }\r\n\r\n const replaceEx = /(]*>[^]*?<\\/table>)/ig;\r\n\r\n return html.replace(replaceEx, replaceFunc);\r\n}\r\n\r\nexport default {\r\n registerTableOverflow,\r\n unregisterTableOverflow,\r\n wrapTableInOuterDivs\r\n};\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('AdnuntiusPixels',{staticClass:\"flex justify-center md:mx-10 first:ml-0 last:mr-0 w-1/2 sm:w-1/3 md:w-auto md:flex-1\",attrs:{\"rendered-url\":_vm.content.renderedPixelUrl,\"visible-url\":_vm.content.visiblePixelUrl,\"view-url\":_vm.content.viewPixelUrl,\"click-url\":_vm.content.clickPixelUrl},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar click = ref.click;\nreturn [(_vm.categoryUrl)?_c('CultureAwareRouterLink',{staticClass:\"category-link category-link--whiteBox mb-15 md:mb-0 mx-5 md:mx-10\",attrs:{\"to\":_vm.categoryUrl,\"target\":\"_top\"},nativeOn:{\"click\":function($event){return click.apply(null, arguments)}}},[_c('div',{staticClass:\"category-item w-full h-full flex items-center justify-center\"},[_c('img',{attrs:{\"src\":_vm.icon,\"alt\":_vm.content.categoryDisplayName}})]),_c('span',{staticClass:\"sr-only\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('BrandHero.BrandLogo.SeeAllProductsFrom'))+\" \")]),_c('p',{staticClass:\"text-12 md:text-14 font-medium mt-10 md:mt-20 text-center\"},[_vm._v(\" \"+_vm._s(_vm.content.categoryDisplayName)+\" \"),_c('CIcon',{staticClass:\"category-link--arrow hidden\",attrs:{\"name\":\"arrow-right\",\"width\":\"9\",\"height\":\"9\"}})],1)]):_vm._e()]}}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Prop, Vue } from 'vue-property-decorator';\r\nimport Component from 'vue-class-component';\r\nimport AdnuntiusPixels from '@/project/tracking/adnuntius/AdnuntiusPixels.vue';\r\nimport { CategoryItemViewModel } from '@/types/apiServerContract';\r\nimport megaMenuService from '@/project/shared/megaMenu.service';\r\n\r\n@Component({\r\n components: { AdnuntiusPixels }\r\n})\r\nexport default class CategoryBlockItem extends Vue {\r\n @Prop({\r\n type: Object\r\n }) content!: CategoryItemViewModel;\r\n\r\n private categoryUrl: string | null = null;\r\n\r\n private get icon(): string {\r\n return this.content.icon.url;\r\n }\r\n\r\n private async getPageUrl() {\r\n let url;\r\n const campaignUrl = this.content.url ? await megaMenuService.getUrlForMenuItem(this.content.url) : null;\r\n\r\n if (this.content.url!.indexOf('c-') >= 0 && campaignUrl) {\r\n url = campaignUrl;\r\n } else {\r\n url = this.content.url;\r\n }\r\n\r\n return url;\r\n }\r\n\r\n private get renderedPixelUrl() {\r\n return this.content?.renderedPixelUrl;\r\n }\r\n\r\n private get viewPixelUrl() {\r\n return this.content?.viewPixelUrl;\r\n }\r\n\r\n private get visiblePixelUrl() {\r\n return this.content?.visiblePixelUrl;\r\n }\r\n\r\n private get clickPixelUrl() {\r\n return this.content?.clickPixelUrl;\r\n }\r\n\r\n async created() {\r\n this.categoryUrl = await this.getPageUrl();\r\n }\r\n}\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CategoryBlockItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CategoryBlockItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CategoryBlockItem.vue?vue&type=template&id=4034c70f&scoped=true&\"\nimport script from \"./CategoryBlockItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./CategoryBlockItem.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CategoryBlockItem.vue?vue&type=style&index=0&id=4034c70f&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4034c70f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.products.length > 0)?_c('CondensedProductList',{attrs:{\"headline\":_vm.content.header,\"is-first-block\":_vm.isFirstBlock,\"products\":_vm.products,\"use-swiper\":\"\",\"tracking-list-name\":(\"productListBlock-\" + (_vm.$route.name)),\"product-bg-color\":_vm.content.productBackgroundColor}}):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport { ProductListBlockViewModel } from '@/types/contentServerContract';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\nimport CondensedProductList from '@/project/product/condensed/CondensedProductList.vue';\r\nimport { ProductTileViewObject } from '@/types/apiServerContract';\r\nimport Api from '@/project/http/Api.service';\r\n\r\n@Component({\r\n components: { SmartHeadline, CondensedProductList }\r\n})\r\nexport default class ProductListBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: ProductListBlockViewModel;\r\n\r\n @Prop({\r\n required: false,\r\n type: Boolean,\r\n default: false\r\n }) isFirstBlock!: boolean;\r\n\r\n private products: ProductTileViewObject[] = [];\r\n private loading: boolean = false;\r\n\r\n private async getProducts() {\r\n if (this.content.productIds.length === 0) return;\r\n\r\n this.loading = true;\r\n\r\n try {\r\n const result = await Api.product.simpleByItemId(this.content.productIds);\r\n this.products = result.products;\r\n } finally {\r\n this.loading = false;\r\n }\r\n }\r\n\r\n private created() {\r\n this.getProducts();\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductListBlock.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductListBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductListBlock.vue?vue&type=template&id=9509971e&\"\nimport script from \"./ProductListBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductListBlock.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('article',{staticClass:\"relative w-full overflow-visible\"},[(_vm.content.headline && _vm.news.length)?_c('SmartHeadline',{staticClass:\"mb-10\",attrs:{\"level\":_vm.isFirstBlock ? 'h1' : 'h2',\"style-as-h1\":_vm.isFirstBlock}},[_vm._v(\" \"+_vm._s(_vm.content.headline)+\" \")]):_vm._e(),_c('Swiper',{class:'swiper-' + _vm.id,attrs:{\"id\":_vm.id,\"instance-name\":_vm.id,\"options\":_vm.sliderOptions}},_vm._l((_vm.news),function(news,index){return _c('SwiperSlide',{key:index,staticClass:\"news-wrapper\"},[_c('NewsArticleTeaser',{attrs:{\"news\":news}})],1)}),1),_c('button',{staticClass:\"custom-swiper-button-prev hidden md:block\",class:_vm.prevButtonSelector,attrs:{\"slot\":\"button-prev\",\"type\":\"button\"},slot:\"button-prev\"},[_c('CIcon',{attrs:{\"name\":\"arrow-thin-left\",\"width\":\"25\",\"height\":\"25\"}})],1),_c('button',{staticClass:\"custom-swiper-button-next hidden md:block\",class:_vm.nextButtonSelector,attrs:{\"slot\":\"button-next\",\"type\":\"button\"},slot:\"button-next\"},[_c('CIcon',{attrs:{\"name\":\"arrow-thin-right\",\"width\":\"25\",\"height\":\"25\"}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { NewsPageViewModel } from '@/types/contentServerContract';\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport NewsArticleTeaser from '@/project/app/content-pages/NewsArticleTeaser.vue';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\n\r\n@Component({\r\n components: { NewsArticleTeaser, SmartHeadline }\r\n})\r\nexport default class LatestNewsBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: NewsPageViewModel;\r\n\r\n @Prop({\r\n required: false,\r\n default: false,\r\n type: Boolean\r\n }) isFirstBlock!: boolean;\r\n\r\n private get news() {\r\n return [this.content.firstNews, ...this.content.news];\r\n }\r\n\r\n private get id() {\r\n return 'latest-news-block-' + new Date().valueOf();\r\n }\r\n\r\n private get prevButtonSelector() {\r\n return 'custom-swiper-button-prev-' + this.id;\r\n }\r\n\r\n private get nextButtonSelector() {\r\n return 'custom-swiper-button-next-' + this.id;\r\n }\r\n\r\n private get sliderOptions() {\r\n return {\r\n spaceBetween: 20,\r\n slidesPerView: 'auto',\r\n slidesPerGroup: 1,\r\n loop: false,\r\n loopFillGroupWithBlank: false,\r\n watchSlidesVisibility: true,\r\n watchOverflow: true,\r\n setWrapperSize: true,\r\n navigation: {\r\n nextEl: '.' + this.nextButtonSelector,\r\n prevEl: '.' + this.prevButtonSelector\r\n },\r\n grabCursor: true,\r\n instanceName: this.id,\r\n observer: true,\r\n observeParents: true,\r\n observeSlideChildren: true\r\n };\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LatestNewsBlock.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LatestNewsBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LatestNewsBlock.vue?vue&type=template&id=59e799eb&scoped=true&\"\nimport script from \"./LatestNewsBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./LatestNewsBlock.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./LatestNewsBlock.vue?vue&type=style&index=0&id=59e799eb&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"59e799eb\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('article',{staticClass:\"text-image-block flex flex-wrap\"},[(_vm.content.image)?_c('div',{staticClass:\"text-image-block__item\",class:{'sm:order-1 sm:ml-10' : _vm.content.placeImageRight, 'sm:mr-10' : !_vm.content.placeImageRight}},[_c('responsive-image',{attrs:{\"image-url\":_vm.content.image.url,\"format\":_vm.imageFormat,\"mode\":\"crop\",\"focal-point\":_vm.content.image.focalPoint,\"alt\":\"\"}})],1):_vm._e(),_c('div',{class:{'text-image-block__item' : _vm.content.image, 'sm:mr-10' : _vm.content.placeImageRight && _vm.content.image, 'sm:ml-10' : !_vm.content.placeImageRight && _vm.content.image, 'w-full' : !_vm.content.image}},[_c('div',{staticClass:\"text-image-block__content bg-white p-20 lg:p-40\"},[(_vm.content.headline)?_c('smart-headline',{staticClass:\"uppercase text-12 font-bold text-blue-700\",class:{'mb-10 sm:mb-15' : _vm.content.subHeadline},style:({'color' : _vm.headlineColor}),attrs:{\"level\":_vm.isFirstBlock ? 'h1' : 'h2'}},[_vm._v(\" \"+_vm._s(_vm.content.headline)+\" \")]):_vm._e(),(_vm.content.subHeadline)?_c('smart-headline',{staticClass:\"h1 text-blue-700\",class:{'mb-10 sm:mb-15' : _vm.content.text},style:({'color' : _vm.subHeadlineColor}),attrs:{\"level\":_vm.isFirstBlock ? 'h2' : 'h3'}},[_vm._v(\" \"+_vm._s(_vm.content.subHeadline)+\" \")]):_vm._e(),(_vm.content.text)?_c('div',{directives:[{name:\"delegate-html-links\",rawName:\"v-delegate-html-links\"}],staticClass:\"wysiwyg theme-text-linkcolor leading-normal text-15 md:text-22\",class:{'mb-15 sm:mb-20' : _vm.content.callToAction},style:({'color' : _vm.textColor}),domProps:{\"innerHTML\":_vm._s(_vm.content.text)}}):_vm._e(),(_vm.content.callToAction)?_c('call-to-action',{staticClass:\"cta--rounded\",attrs:{\"hex-color\":_vm.content.callToActionColor,\"text\":_vm.content.callToAction.name,\"href\":_vm.content.callToAction.url,\"target\":_vm.content.callToAction.target}}):_vm._e()],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport { TextWithImageBlockViewModel } from '@/types/contentServerContract';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\nimport { extensionIsGifOrUndefined } from '@/project/shared/responsive-umbraco-image.service';\r\n\r\n@Component({\r\n components: { SmartHeadline }\r\n})\r\nexport default class TextWithImageBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: TextWithImageBlockViewModel;\r\n\r\n @Prop({\r\n required: true,\r\n type: Boolean\r\n }) isFirstBlock!: boolean;\r\n\r\n private get headlineColor() {\r\n return this.content.headlineColor ?? null;\r\n }\r\n\r\n private get subHeadlineColor() {\r\n return this.content.subHeadlineColor ?? null;\r\n }\r\n\r\n private get textColor() {\r\n return this.content.textColor ?? null;\r\n }\r\n\r\n private get imageFormat(): string | undefined {\r\n return extensionIsGifOrUndefined(this.content?.image);\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextWithImageBlock.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextWithImageBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TextWithImageBlock.vue?vue&type=template&id=5db8850b&\"\nimport script from \"./TextWithImageBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./TextWithImageBlock.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./TextWithImageBlock.vue?vue&type=style&index=0&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OnePlusTwoBlocks.vue?vue&type=style&index=0&lang=less&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OnePlusTwoBlocks.vue?vue&type=style&index=0&lang=less&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"adnuntius-hero-banner\",class:{ 'no-container': _vm.isTakeOverBanner, '-is-appended-to-prev-block': _vm.appendToPreviousBlock },style:(_vm.marginStyle)},[(_vm.leftImage)?_c('img',{staticClass:\"left-bannner\",style:(_vm.leftImagePosition),attrs:{\"src\":_vm.leftImage,\"alt\":\"\"}}):_vm._e(),(_vm.rightImage)?_c('img',{staticClass:\"right-banner\",style:(_vm.rightImagePosition),attrs:{\"src\":_vm.rightImage,\"alt\":\"\"}}):_vm._e(),_c('div',{staticClass:\"center-banner\",class:{ 'o-container': _vm.isTakeOverBanner, 'o-container--bleed' : _vm.isFirstBlock, hidden: _vm.contentLoadError }},[_c('AdnuntiusPixels',{attrs:{\"rendered-url\":_vm.renderedPixelUrl,\"visible-url\":_vm.visiblePixelUrl,\"view-url\":_vm.viewPixelUrl,\"click-url\":_vm.clickPixelUrl,\"tracking-data\":_vm.adnuntiusTrackingData},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar click = ref.click;\nreturn [(_vm.adContentBlockViewModel)?_c('ImageTextVideoBlock',{attrs:{\"content\":_vm.adContentBlockViewModel,\"content-load-error\":_vm.contentLoadError,\"width-on-screen\":100,\"aspect-ratio\":_vm.aspectRatio,\"is-first-block\":_vm.isFirstBlock,\"should-apply-banner-text-limits\":true,\"click-handler\":click},on:{\"loaded\":function($event){return _vm.imageLoaded()}}}):_vm._e()]}}])})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport ImageTextVideoBlock from './ImageTextVideoBlock.vue';\r\nimport AdnuntiusPixels from '@/project/tracking/adnuntius/AdnuntiusPixels.vue';\r\nimport { AdContentBlockViewModel } from '@/types/apiServerContract';\r\nimport { PersonalizedContentBlockViewModel } from '@/types/contentServerContract';\r\nimport adnuntiusService from '@/project/personalization/adnuntius.service';\r\nimport { AdnuntiusTrackingData } from '@/project/tracking/adnuntius/types';\r\nimport themeService from '@/project/app/themes/theme.service';\r\nimport scrollService from '@/core/scroll/scroll.service';\r\ninterface ExtendedAdContentBlockViewModel extends AdContentBlockViewModel {\r\n isBackgroundVideo?: boolean;\r\n}\r\n@Component({\r\n components: { AdnuntiusPixels, ImageTextVideoBlock }\r\n})\r\nexport default class AdnuntiusHeroBannerBlock extends Vue {\r\n private adContentBlockViewModel: ExtendedAdContentBlockViewModel | null = null;\r\n private contentLoadError = false;\r\n private adnuntiusTrackingData: AdnuntiusTrackingData | null = null;\r\n\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: PersonalizedContentBlockViewModel;\r\n\r\n @Prop({\r\n required: true,\r\n type: Boolean\r\n }) isFirstBlock!: boolean;\r\n\r\n get appendToPreviousBlock() {\r\n return this.content.appendToPreviousBlock && !this.isFirstBlock;\r\n }\r\n\r\n private created() {\r\n this.getAdContent(this.content.settings.selectedAdUnitIdContent.adUnitId);\r\n }\r\n\r\n private imageLoaded() {\r\n // During take-over, a lot of re-rendering is going on with colors and element sizes, so we wait with the\r\n // big animation till the actual center is loaded\r\n setTimeout(() => {\r\n themeService.setThemeLoaded();\r\n }, 100);\r\n }\r\n\r\n private async getAdContent(adUnitId: string) {\r\n try {\r\n const adContentBlockViewModel: ExtendedAdContentBlockViewModel = await adnuntiusService.getBundledPersonalizedContent(\r\n adUnitId,\r\n this.$route.fullPath);\r\n adContentBlockViewModel.isBackgroundVideo = !!adContentBlockViewModel.vimeoVideoId; // To make ImageTextVideoBlock work, it must have video playing in background\r\n // hide callToAction if both overlayVimeoCta and overlayVimeoVideoId is set\r\n if (adContentBlockViewModel.overlayVimeoVideoId && adContentBlockViewModel.overlayVimeoCta && adContentBlockViewModel.callToAction) {\r\n adContentBlockViewModel.callToAction = undefined;\r\n }\r\n this.adContentBlockViewModel = adContentBlockViewModel;\r\n\r\n if (this.isFirstBlock) {\r\n themeService.applyTheme(this.adContentBlockViewModel);\r\n }\r\n\r\n if (this.adContentBlockViewModel.lineItemId && this.adContentBlockViewModel.creativeId) {\r\n this.adnuntiusTrackingData = {\r\n lineItemId: this.adContentBlockViewModel.lineItemId,\r\n creativeId: this.adContentBlockViewModel.creativeId,\r\n parentBlockAlias: 'personalizedContentHero'\r\n };\r\n }\r\n } catch {\r\n this.contentLoadError = true;\r\n }\r\n }\r\n\r\n private get isTakeOverBanner() {\r\n return themeService.isTakeOverEnabled;\r\n }\r\n\r\n private get aspectRatio() {\r\n return this.isTakeOverBanner ? (1440 / 680) : (1440 / 480);\r\n }\r\n\r\n private get marginStyle(): Partial | undefined {\r\n if (!this.adContentBlockViewModel?.marginColor) return undefined;\r\n\r\n return {\r\n backgroundColor: this.adContentBlockViewModel?.marginColor\r\n };\r\n }\r\n\r\n private get leftImage() {\r\n return this.adContentBlockViewModel?.imageLeft?.url;\r\n }\r\n\r\n private get scrollBarWidth() {\r\n return Math.floor(scrollService.getScrollbarWidth() / 2);\r\n }\r\n\r\n private get leftImagePosition(): Partial | undefined {\r\n if (!this.adContentBlockViewModel?.imageLeft) return undefined;\r\n\r\n return {\r\n transform: `translateX(calc((100vw - 1440px) / 2 - ${this.adContentBlockViewModel.imageLeft.width}px - ${this.scrollBarWidth}px))`\r\n };\r\n }\r\n\r\n private get rightImage() {\r\n return this.adContentBlockViewModel?.imageRight?.url;\r\n }\r\n\r\n private get rightImagePosition(): Partial | undefined {\r\n if (!this.adContentBlockViewModel?.imageRight) return undefined;\r\n\r\n return {\r\n transform: `translateX(calc((1440px - 100vw) / 2 + ${this.adContentBlockViewModel.imageRight.width}px + ${this.scrollBarWidth}px))`\r\n };\r\n }\r\n\r\n private get renderedPixelUrl() {\r\n return this.adContentBlockViewModel?.renderedPixelUrl;\r\n }\r\n\r\n private get viewPixelUrl() {\r\n return this.adContentBlockViewModel?.viewPixelUrl;\r\n }\r\n\r\n private get visiblePixelUrl() {\r\n return this.adContentBlockViewModel?.visiblePixelUrl;\r\n }\r\n\r\n private get clickPixelUrl() {\r\n return this.adContentBlockViewModel?.clickPixelUrl;\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdnuntiusHeroBannerBlock.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdnuntiusHeroBannerBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AdnuntiusHeroBannerBlock.vue?vue&type=template&id=04443050&\"\nimport script from \"./AdnuntiusHeroBannerBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./AdnuntiusHeroBannerBlock.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AdnuntiusHeroBannerBlock.vue?vue&type=style&index=0&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.keepAlive)?_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.active),expression:\"active\"}]},[_vm._t(\"default\")],2):(_vm.active)?_c('div',[_vm._t(\"default\")],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport ITab from './ITab';\r\nimport urlHelperService from '@/core/urlHelper.service';\r\n\r\n@Component({\r\n name: 'Tab'\r\n})\r\nexport default class Tab extends Vue implements ITab {\r\n @Prop({ type: String, required: true }) name!: string;\r\n @Prop({ type: String }) hash!: string;\r\n @Prop({ type: Boolean, default: false }) selected!: boolean;\r\n @Prop({ type: Boolean, default: false }) keepAlive!: boolean;\r\n\r\n private active: boolean = this.selected;\r\n\r\n public toggle(active: boolean) {\r\n this.active = active;\r\n\r\n if (active && this.hash) {\r\n if (urlHelperService.getHash() !== this.hash) {\r\n urlHelperService.setHash(this.hash);\r\n }\r\n }\r\n }\r\n\r\n public get isActive() {\r\n return this.active;\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tab.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tab.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Tab.vue?vue&type=template&id=661915bb&\"\nimport script from \"./Tab.vue?vue&type=script&lang=ts&\"\nexport * from \"./Tab.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","module.exports = __webpack_public_path__ + \"img/map-marker-turquoise.d2be1daf.svg\";","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CategoryRecommendationsBlock.vue?vue&type=style&index=0&lang=less&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CategoryRecommendationsBlock.vue?vue&type=style&index=0&lang=less&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isAdUnitContent)?_c('AdnuntiusPixels',{attrs:{\"rendered-url\":_vm.renderedPixelUrl,\"visible-url\":_vm.visiblePixelUrl,\"view-url\":_vm.viewPixelUrl,\"click-url\":_vm.clickPixelUrl,\"tracking-data\":_vm.adnuntiusTrackingData},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar click = ref.click;\nreturn [_c('ImageTextVideoBlock',_vm._b({attrs:{\"content\":_vm.adContentBlockViewModel,\"click-handler\":click,\"content-load-error\":_vm.contentLoadError}},'ImageTextVideoBlock',_vm.$attrs,false))]}}],null,false,3737032441)}):((_vm.isHalfWidthBlock || _vm.isHeroBanner))?_c('ImageTextVideoBlockNew',_vm._b({attrs:{\"content\":_vm.content}},'ImageTextVideoBlockNew',_vm.$attrs,false)):(_vm.isTextBlock)?_c('TextBlock',_vm._b({attrs:{\"content\":_vm.content,\"parent-alias\":_vm.parentAlias}},'TextBlock',_vm.$attrs,false)):(_vm.isJotFormBlock)?_c('JotFormBlock',_vm._b({attrs:{\"content\":_vm.content}},'JotFormBlock',_vm.$attrs,false)):(_vm.isMapBlock)?_c('GoogleMapsBlock',_vm._b({attrs:{\"content\":_vm.content}},'GoogleMapsBlock',_vm.$attrs,false)):(_vm.isCancelNewsletterBlock)?_c('CancelNewsletterBlock',_vm._b({attrs:{\"content\":_vm.content}},'CancelNewsletterBlock',_vm.$attrs,false)):(_vm.isUniqueSellingPointBlock)?_c('UniqueSellingPointBlock',_vm._b({staticClass:\"h-full w-full\",attrs:{\"content\":_vm.content,\"is-in-half-width\":\"\",\"wrapper-class\":\"h-full w-full\",\"points-class\":\"w-full flex flex-wrap\"}},'UniqueSellingPointBlock',_vm.$attrs,false)):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport {\r\n HalfWidthBlockViewModel,\r\n PersonalizedContentBlockViewModel,\r\n TextBlockViewModel\r\n} from '@/types/contentServerContract';\r\nimport AdnuntiusPixels from '@/project/tracking/adnuntius/AdnuntiusPixels.vue';\r\nimport ImageTextVideoBlock from '@/project/app/blocks/ImageTextVideoBlock.vue';\r\nimport ImageTextVideoBlockNew from '@/project/app/blocks/ImageTextVideoBlockNew.vue';\r\nimport { AdContentBlockViewModel } from '@/types/apiServerContract';\r\nimport adnuntiusService from '@/project/personalization/adnuntius.service';\r\nimport TextBlock from './TextBlock.vue';\r\nimport JotFormBlock from './JotFormBlock.vue';\r\nimport CancelNewsletterBlock from './newsletter/CancelNewsletterBlock.vue';\r\nimport GoogleMapsBlock from './google-maps/GoogleMapsBlock.vue';\r\nimport { AdnuntiusTrackingData } from '@/project/tracking/adnuntius/types';\r\nimport { BlockName } from '@/project/app/blocks/index';\r\nconst UniqueSellingPointBlock = () => import(/* webpackPrefetch: true, webpackChunkName: 'basic-blocks' */ './UniqueSellingPointBlock.vue');\r\n\r\nconst AllowedBlocks: BlockName[] = ['heroBanner', 'personalizedContent', 'halfWidthBlock', 'textBlock', 'jotFormBlock', 'map', 'cancelNewsletterBlock', 'uniqueSellingPointBlock'];\r\n\r\n@Component({\r\n components: { UniqueSellingPointBlock, ImageTextVideoBlock, ImageTextVideoBlockNew, AdnuntiusPixels, TextBlock, JotFormBlock, GoogleMapsBlock, CancelNewsletterBlock }\r\n})\r\nexport default class ContentBlockContainer extends Vue {\r\n private contentLoadError = false;\r\n private adContentBlockViewModel: AdContentBlockViewModel | null = null;\r\n private adnuntiusTrackingData: AdnuntiusTrackingData | null = null;\r\n\r\n @Prop({ required: true, type: Object })\r\n content!: HalfWidthBlockViewModel | PersonalizedContentBlockViewModel | TextBlockViewModel;\r\n\r\n @Prop({ required: true, type: String, validator: (value: string) => AllowedBlocks.includes(value as BlockName) })\r\n alias!: BlockName;\r\n\r\n @Prop({ required: true, type: String })\r\n parentAlias!: string;\r\n\r\n @Prop({ required: true, type: Number })\r\n index!: number;\r\n\r\n private get isHeroBanner(): boolean {\r\n return this.alias === 'heroBanner';\r\n }\r\n\r\n private get isAdUnitContent(): boolean {\r\n return this.alias === 'personalizedContent';\r\n }\r\n\r\n private get isHalfWidthBlock(): boolean {\r\n return this.alias === 'halfWidthBlock';\r\n }\r\n\r\n private get isTextBlock(): boolean {\r\n return this.alias === 'textBlock';\r\n }\r\n\r\n private get isJotFormBlock(): boolean {\r\n return this.alias === 'jotFormBlock';\r\n }\r\n\r\n private get isMapBlock(): boolean {\r\n return this.alias === 'map';\r\n }\r\n\r\n private get isCancelNewsletterBlock(): boolean {\r\n return this.alias === 'cancelNewsletterBlock';\r\n }\r\n\r\n private get isUniqueSellingPointBlock(): boolean {\r\n return this.alias === 'uniqueSellingPointBlock';\r\n }\r\n\r\n private get renderedPixelUrl() {\r\n return this.adContentBlockViewModel?.renderedPixelUrl;\r\n }\r\n\r\n private get viewPixelUrl() {\r\n return this.adContentBlockViewModel?.viewPixelUrl;\r\n }\r\n\r\n private get visiblePixelUrl() {\r\n return this.adContentBlockViewModel?.visiblePixelUrl;\r\n }\r\n\r\n private get clickPixelUrl() {\r\n return this.adContentBlockViewModel?.clickPixelUrl;\r\n }\r\n\r\n private async getAdContent(adUnitId: string) {\r\n try {\r\n this.adContentBlockViewModel = await adnuntiusService.getBundledPersonalizedContent(\r\n adUnitId,\r\n this.$route.fullPath);\r\n\r\n if (this.adContentBlockViewModel.lineItemId && this.adContentBlockViewModel.creativeId) {\r\n this.adnuntiusTrackingData = {\r\n lineItemId: this.adContentBlockViewModel.lineItemId,\r\n creativeId: this.adContentBlockViewModel.creativeId,\r\n parentBlockAlias: this.parentAlias\r\n };\r\n }\r\n } catch {\r\n this.contentLoadError = true;\r\n this.$emit('contentLoadError');\r\n }\r\n }\r\n\r\n private created() {\r\n if (this.isAdUnitContent) {\r\n this.getAdContent((this.content as PersonalizedContentBlockViewModel).settings.selectedAdUnitIdContent.adUnitId);\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContentBlockContainer.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContentBlockContainer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ContentBlockContainer.vue?vue&type=template&id=102b0dee&\"\nimport script from \"./ContentBlockContainer.vue?vue&type=script&lang=ts&\"\nexport * from \"./ContentBlockContainer.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.news)?_c('article',{staticClass:\"news-article\"},[_c('div',{staticClass:\"news-article-image\"},[(_vm.news.image)?_c('responsive-image',{attrs:{\"image-url\":_vm.news.image.url,\"mode\":\"crop\",\"format\":_vm.newsImageFormat,\"aspect-ratio\":710 / 400,\"focal-point\":_vm.news.image.focalPoint,\"alt\":_vm.news.image.name}}):_c('div',{staticClass:\"hero-article-logo theme-text-linkcolor\"},[_c('CIcon',{staticClass:\"logo\",attrs:{\"name\":\"logo\"}})],1),_c('culture-aware-router-link',{staticClass:\"read-more\",attrs:{\"to\":_vm.news.url.url}},[_c('call-to-action',{staticClass:\"cta--rounded cta--white\",attrs:{\"text\":_vm._f(\"t\")('News.ReadMore'),\"type\":\"button\",\"href\":_vm.news.url.url}})],1)],1),_c('div',{staticClass:\"news-article-text overflow-hidden\"},[_c('p',{staticClass:\"font-bold mb-10\"},[_vm._v(\" \"+_vm._s(_vm.news.date)+\" \")]),_c('p',{staticClass:\"font-bold mb-10\"},[_vm._v(\" \"+_vm._s(_vm.news.header)+\" \")]),_c('smart-paragraph',{attrs:{\"content\":_vm.news.teaser,\"max-characters\":200,\"as-html\":\"\"}})],1)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport { News } from '@/types/contentServerContract';\r\nimport SmartParagraph from '@/core/ui-components/SmartParagraph.vue';\r\nimport { extensionIsGifOrUndefined } from '@/project/shared/responsive-umbraco-image.service';\r\n\r\n@Component({\r\n components: { SmartParagraph }\r\n})\r\nexport default class NewsArticleTeaser extends Vue {\r\n @Prop({ required: true })\r\n private news!: News;\r\n\r\n private get newsImageFormat() {\r\n return extensionIsGifOrUndefined(this.news?.image);\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewsArticleTeaser.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewsArticleTeaser.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NewsArticleTeaser.vue?vue&type=template&id=f621c00e&scoped=true&\"\nimport script from \"./NewsArticleTeaser.vue?vue&type=script&lang=ts&\"\nexport * from \"./NewsArticleTeaser.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NewsArticleTeaser.vue?vue&type=style&index=0&id=f621c00e&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f621c00e\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LatestCampaignsBlock.vue?vue&type=style&index=0&id=86e9ec32&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LatestCampaignsBlock.vue?vue&type=style&index=0&id=86e9ec32&lang=less&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageTextVideoBlockNew.vue?vue&type=style&index=0&id=340b2eb9&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageTextVideoBlockNew.vue?vue&type=style&index=0&id=340b2eb9&lang=less&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LatestNewsBlock.vue?vue&type=style&index=0&id=59e799eb&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LatestNewsBlock.vue?vue&type=style&index=0&id=59e799eb&lang=less&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('article',{staticClass:\"h-full p-30 md:p-40\",class:{ '-is-appended-to-prev-block': _vm.appendToPreviousBlock },style:(_vm.style)},[_c('div',{staticClass:\"flex\"},[_c('div',{staticClass:\"flex flex-shrink-0\"},[_c('CIcon',{staticClass:\"hidden md:block\",attrs:{\"name\":\"quote\",\"height\":\"30\",\"width\":\"64\"}}),_c('CIcon',{staticClass:\"md:hidden block\",attrs:{\"name\":\"quote\",\"height\":\"20\",\"width\":\"20\"}})],1),_c('div',{staticClass:\"ml-15 md:ml-20 pt-5\"},[_c('p',{directives:[{name:\"delegate-html-links\",rawName:\"v-delegate-html-links\"}],staticClass:\"wysiwyg text-block break-words overflow-hidden text-14 md:text-20 mb-20\",domProps:{\"innerHTML\":_vm._s(_vm.content.quote)}}),_c('p',{staticClass:\"md:text-15\"},[_vm._v(\" \"+_vm._s(_vm.content.author)+\" \")])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport { QuoteBlockViewModel } from '@/types/contentServerContract';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\nimport { hexToRgbValues, luma } from '@/core/color/color.service';\r\nimport tailwind from '@/styling/tailwind.config';\r\n\r\n@Component({\r\n components: { SmartHeadline }\r\n})\r\nexport default class QuoteBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: QuoteBlockViewModel;\r\n\r\n @Prop({\r\n required: false,\r\n default: false,\r\n type: Boolean\r\n }) isFirstBlock!: boolean;\r\n\r\n private get appendToPreviousBlock() {\r\n return this.content.appendToPreviousBlock && !this.isFirstBlock;\r\n }\r\n\r\n private get backgroundColor() {\r\n return this.content.customBackgroundColor\r\n ? this.content.customBackgroundColor\r\n : this.content.backgroundColor ? '#' + this.content.backgroundColor : undefined;\r\n }\r\n\r\n private get textColor() {\r\n if (!this.backgroundColor) return undefined;\r\n const { red, green, blue } = hexToRgbValues(this.backgroundColor);\r\n const isDarkBackground = luma(red, green, blue) <= 0.5;\r\n return isDarkBackground ? tailwind.theme.colors.white : tailwind.theme.colors.black;\r\n }\r\n\r\n private get style(): Partial {\r\n return {\r\n backgroundColor: this.backgroundColor,\r\n color: this.textColor\r\n };\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuoteBlock.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuoteBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./QuoteBlock.vue?vue&type=template&id=3b4d1429&\"\nimport script from \"./QuoteBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./QuoteBlock.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{'o-container--bleed' : _vm.isFirstBlock}},[_c('ImageTextVideoBlockNew',{attrs:{\"content\":_vm.content,\"width-on-screen\":100,\"aspect-ratio\":1440/480,\"is-hero-banner\":true,\"is-first-block\":_vm.isFirstBlock}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport { HeroBannerViewModel } from '@/types/contentServerContract';\r\nimport ImageTextVideoBlock from './ImageTextVideoBlock.vue';\r\nimport ImageTextVideoBlockNew from './ImageTextVideoBlockNew.vue';\r\n@Component({\r\n components: { ImageTextVideoBlock, ImageTextVideoBlockNew }\r\n})\r\nexport default class HeroBannerBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: HeroBannerViewModel;\r\n\r\n @Prop({\r\n required: true,\r\n type: Boolean\r\n }) isFirstBlock!: boolean;\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeroBannerBlock.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeroBannerBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./HeroBannerBlock.vue?vue&type=template&id=4c974ff4&\"\nimport script from \"./HeroBannerBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./HeroBannerBlock.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('article',[(_vm.content.headline)?_c('smart-headline',{staticClass:\"mb-10\",attrs:{\"level\":_vm.isFirstBlock ? 'h1' : 'h2',\"style-as-h1\":_vm.isFirstBlock}},[_vm._v(\" \"+_vm._s(_vm.content.headline)+\" \")]):_vm._e(),_c('section',[_c('iframe',{ref:\"jotform\",staticStyle:{\"width\":\"1px\",\"min-width\":\"100%\",\"border\":\"none\"},attrs:{\"title\":_vm.content.headline,\"allowtransparency\":_vm.content.allowTransparency,\"allowfullscreen\":_vm.content.allowFullscreen,\"scrolling\":_vm.content.allowScrolling ? 'yes' : 'no',\"allow\":\"geolocation; microphone; camera\",\"src\":_vm.jotformSrc,\"frameborder\":\"0\"}})])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport { JotFormBlockViewModel } from '@/types/contentServerContract';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\n\r\n@Component({\r\n components: { SmartHeadline }\r\n})\r\nexport default class JotFormBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: JotFormBlockViewModel;\r\n\r\n @Prop({\r\n required: false,\r\n type: Boolean,\r\n default: false\r\n }) isFirstBlock!: boolean;\r\n\r\n private get jotformSrc() {\r\n return `https://form.jotform.com/${this.content.jotFormId}`;\r\n }\r\n\r\n public $refs!: {\r\n jotform: any\r\n }\r\n\r\n private mounted() {\r\n window.addEventListener('message', this.handleIFrameMessage, false);\r\n }\r\n\r\n public beforeDestroy() {\r\n window.removeEventListener('message', this.handleIFrameMessage);\r\n }\r\n\r\n private handleIFrameMessage(e: any) {\r\n if (typeof e.data === 'object') { return; }\r\n\r\n const iframe = this.$refs.jotform;\r\n if (!iframe) { return; }\r\n\r\n const args = e.data.split(':');\r\n\r\n const _window = window as any;\r\n\r\n switch (args[0]) {\r\n case 'scrollIntoView':\r\n if (this.isFirstBlock) { iframe.scrollIntoView(); }\r\n break;\r\n case 'setHeight':\r\n iframe.style.height = `${args[1]}px`;\r\n break;\r\n case 'collapseErrorPage':\r\n if (iframe.clientHeight > window.innerHeight) {\r\n iframe.style.height = `${window.innerHeight}px`;\r\n }\r\n break;\r\n case 'loadScript':\r\n {\r\n let src = args[1];\r\n if (args.length > 3) {\r\n src = args[1] + ':' + args[2];\r\n }\r\n const script = document.createElement('script');\r\n script.src = src;\r\n script.type = 'text/javascript';\r\n document.body.appendChild(script);\r\n }\r\n break;\r\n case 'exitFullscreen':\r\n if (_window.document.exitFullscreen) _window.document.exitFullscreen();\r\n else if (_window.document.mozCancelFullScreen) _window.document.mozCancelFullScreen();\r\n else if (_window.document.mozCancelFullscreen) _window.document.mozCancelFullScreen();\r\n else if (_window.document.webkitExitFullscreen) _window.document.webkitExitFullscreen();\r\n else if (_window.document.msExitFullscreen) _window.document.msExitFullscreen();\r\n break;\r\n }\r\n const isJotForm = (e.origin.indexOf('jotform') > -1);\r\n if (isJotForm && 'contentWindow' in iframe && 'postMessage' in iframe.contentWindow) {\r\n const urls = { docurl: encodeURIComponent(document.URL), referrer: encodeURIComponent(document.referrer) };\r\n iframe.contentWindow.postMessage(JSON.stringify({ type: 'urls', value: urls }), '*');\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JotFormBlock.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JotFormBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./JotFormBlock.vue?vue&type=template&id=01292be5&\"\nimport script from \"./JotFormBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./JotFormBlock.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('div',{staticClass:\"tab-header flex-shrink-0\"},[_c('div',{staticClass:\"flex flex-row flex-wrap\",class:_vm.headerClass},_vm._l((_vm.tabs),function(tab){return _c('button',{key:tab.name,staticClass:\"tab-button cursor-pointer\",class:{ 'active': tab.name === _vm.activeTab.name },attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.toggle(tab.name)}}},[_vm._t(\"header\",function(){return [_vm._v(\" \"+_vm._s(tab.name)+\" \")]},{\"title\":tab.name,\"active\":tab.name === _vm.activeTab.name})],2)}),0)]),_vm._t(\"sub-content\"),_c('div',{staticClass:\"tab-content\",class:_vm.contentClass},[_vm._t(\"default\")],2)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport Tab from './Tab.vue';\r\nimport urlHelperService from '@/core/urlHelper.service';\r\nimport bus from '@/core/bus';\r\nimport { ProductTrackerProcessBatchKey } from '@/project/tracking/gtm/ProductListTracker.vue';\r\n\r\n@Component\r\nexport default class TabsContainer extends Vue {\r\n private activeTab: Tab | null = null;\r\n\r\n private tabs: Tab[] = []\r\n\r\n @Prop(String) headerClass!: string\r\n @Prop(String) contentClass!: string\r\n\r\n public toggle(name: string) {\r\n if (this.activeTab && this.activeTab.name !== name) {\r\n this.$emit('changed', name);\r\n }\r\n\r\n for (const tab of this.tabs) {\r\n if (tab.name === name) {\r\n this.activeTab = tab;\r\n tab.toggle(true);\r\n } else {\r\n tab.toggle(false);\r\n }\r\n }\r\n bus.emit(ProductTrackerProcessBatchKey);\r\n }\r\n\r\n private setup() {\r\n this.tabs = this.$children.filter(x => x.$options.name === 'Tab') as Tab[];\r\n if (this.tabs.length === 0) {\r\n return;\r\n }\r\n\r\n const hash = urlHelperService.getHash();\r\n if (hash) {\r\n const activeTab = this.tabs.find(x => x.hash === hash);\r\n if (activeTab) {\r\n this.activeTab = activeTab;\r\n activeTab.toggle(true);\r\n }\r\n }\r\n\r\n if (!this.activeTab) {\r\n for (const tab of this.tabs) {\r\n if (tab.isActive) {\r\n this.activeTab = tab;\r\n break;\r\n }\r\n }\r\n\r\n // Always show atleast 1 tab\r\n if (!this.activeTab) {\r\n const activeTab = this.tabs[0];\r\n this.activeTab = activeTab;\r\n activeTab.toggle(true);\r\n }\r\n }\r\n\r\n this.$emit('init', this.activeTab.name);\r\n }\r\n\r\n mounted() {\r\n this.setup();\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tabs.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tabs.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Tabs.vue?vue&type=template&id=475bab18&\"\nimport script from \"./Tabs.vue?vue&type=script&lang=ts&\"\nexport * from \"./Tabs.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('article',{class:{ '-is-appended-to-prev-block': _vm.appendToPreviousBlock }},[_c('div',{staticClass:\"o-grid\"},[_c('div',{staticClass:\"o-grid--item w-full md:w-1/2\",class:{ 'order-last': _vm.blockAlignmentRight}},[(_vm.largeBlock)?_c('ContentBlockContainer',{staticClass:\"only-xs:mt-10 sm:h-full\",attrs:{\"alias\":_vm.largeBlock.alias,\"content\":_vm.largeBlock.content,\"width-on-screen\":50,\"aspect-ratio\":1,\"parent-alias\":_vm.alias,\"index\":0}}):_vm._e()],1),_c('div',{staticClass:\"o-grid--item w-full md:w-1/2\"},[_c('section',{staticClass:\"h-full flex flex-col\"},[(_vm.halfWidthBlocksOne)?_c('content-block-container',{staticClass:\"oneplustwo--height-override only-xs:mt-10\",attrs:{\"alias\":_vm.halfWidthBlocksOne.alias,\"content\":_vm.halfWidthBlocksOne.content,\"width-on-screen\":50,\"aspect-ratio\":2,\"parent-alias\":_vm.alias,\"index\":0,\"aspect-ratio-margins\":{ 'only-xs': 5, 'min-sm': 10 }}}):_vm._e(),(_vm.halfWidthBlocksTwo)?_c('content-block-container',{staticClass:\"mt-10 sm:mt-20\",attrs:{\"alias\":_vm.halfWidthBlocksTwo.alias,\"content\":_vm.halfWidthBlocksTwo.content,\"width-on-screen\":50,\"aspect-ratio\":2,\"parent-alias\":_vm.alias,\"index\":1,\"aspect-ratio-margins\":{ 'only-xs': 5, 'min-sm': 10 }}}):_vm._e()],1)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport { HorizontalAlignment, TwoPlusOneBlocksViewModel } from '@/types/contentServerContract';\r\nimport ContentBlockContainer from '@/project/app/blocks/ContentBlockContainer.vue';\r\n\r\n@Component({\r\n components: { ContentBlockContainer }\r\n})\r\nexport default class OnePlusTwoBlocks extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: TwoPlusOneBlocksViewModel;\r\n\r\n @Prop(String) alias!: string;\r\n\r\n @Prop({ required: true, type: Boolean })\r\n isFirstBlock!: boolean;\r\n\r\n get appendToPreviousBlock() {\r\n return this.content.appendToPreviousBlock && !this.isFirstBlock;\r\n }\r\n\r\n get blockAlignmentRight() {\r\n return this.content.largeBlockAlignmentValue !== HorizontalAlignment.Left;\r\n }\r\n\r\n get largeBlock() {\r\n return (this.content?.largeBlock?.length > 0 && this.content.largeBlock[0]) || null;\r\n }\r\n\r\n get halfWidthBlocksOne() {\r\n return (this.content?.halfWidthBlocks?.length > 0 && this.content.halfWidthBlocks[0]) || null;\r\n }\r\n\r\n get halfWidthBlocksTwo() {\r\n return (this.content?.halfWidthBlocks?.length > 1 && this.content.halfWidthBlocks[1]) || null;\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OnePlusTwoBlocks.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OnePlusTwoBlocks.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OnePlusTwoBlocks.vue?vue&type=template&id=799dc4cc&\"\nimport script from \"./OnePlusTwoBlocks.vue?vue&type=script&lang=ts&\"\nexport * from \"./OnePlusTwoBlocks.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./OnePlusTwoBlocks.vue?vue&type=style&index=0&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CampaignTeaser.vue?vue&type=style&index=0&id=d5f3b642&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CampaignTeaser.vue?vue&type=style&index=0&id=d5f3b642&lang=less&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('article',{staticClass:\"h-full overflow-hidden\"},[_c('section',{staticClass:\"relative\",style:(_vm.aspectRatioStyling)},[_c('div',{staticClass:\"absolute inset-0\"},[_c('GmapMap',{ref:\"map\",staticClass:\"w-full h-full\",attrs:{\"center\":_vm.center,\"zoom\":_vm.defaultZoom,\"options\":_vm.options}},[_vm._l((_vm.markers),function(marker,index){return _c('GmapMarker',_vm._b({key:index,attrs:{\"title\":marker.data.groupName},on:{\"click\":function($event){return _vm.markerClicked(marker)}}},'GmapMarker',marker,false))}),_c('GmapInfoWindow',{attrs:{\"options\":{\n pixelOffset: { width: 0, height: -25 },\n },\"position\":_vm.infoWindow.position,\"opened\":_vm.infoWindow.open},on:{\"closeclick\":function($event){return _vm.hideInfoWindow()}}},[(_vm.infoWindow.activeMarker)?_c('div',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.hideInfoWindow),expression:\"hideInfoWindow\"}],staticClass:\"p-20 bg-blue-400 text-14 flex flex-col\"},[_c('p',{staticClass:\"font-bold mb-2\"},[_vm._v(\" \"+_vm._s(_vm.infoWindow.activeMarker.data.groupName)+\" \")]),_c('p',{staticClass:\"mb-2\"},[_vm._v(\" \"+_vm._s(_vm.infoWindow.activeMarker.data.address)+\" \")]),_c('p',{staticClass:\"mb-2\"},[_vm._v(\" \"+_vm._s(_vm.infoWindow.activeMarker.data.postalCodeAndCity)+\" \")]),_c('p',{staticClass:\"mb-2\"},[_vm._v(\" \"+_vm._s(_vm.infoWindow.activeMarker.data.country)+\" \")]),_c('p',{staticClass:\"mb-2\"},[_c('a',{attrs:{\"href\":(\"tel:\" + (_vm.infoWindow.activeMarker.data.phoneNumber))}},[_vm._v(\" \"+_vm._s(_vm.infoWindow.activeMarker.data.phoneNumber)+\" \")])]),_c('a',{staticClass:\"underline\",attrs:{\"href\":'mailto:' + _vm.infoWindow.activeMarker.data.email,\"target\":\"_blank\"}},[_vm._v(\" \"+_vm._s(_vm.infoWindow.activeMarker.data.email)+\" \")]),(_vm.infoWindow.activeMarker.data.link)?_c('culture-aware-router-link',{staticClass:\"flex flex-row items-center theme-text-linkcolor underline mt-15\",attrs:{\"to\":_vm.infoWindow.activeMarker.data.link.url,\"target\":_vm.infoWindow.activeMarker.data.link.target}},[_c('span',[_vm._v(_vm._s(_vm.infoWindow.activeMarker.data.link.name))]),_c('CIcon',{staticClass:\"ml-5\",attrs:{\"name\":\"arrow-right\",\"height\":\"10\",\"width\":\"10\"}})],1):_vm._e()],1):_vm._e()])],2)],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport breakpointState from '@/core/responsive/breakpoints/breakpointsState.observable';\r\nimport { MAX_SM } from '@/core/config/breakpointConfig';\r\n\r\nconst mobileAspectRatio = 3 / 2;\r\n\r\n@Component\r\nexport default class AspectRatioBlockContainer extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Number\r\n }) widthOnScreen!: number;\r\n\r\n @Prop({\r\n required: true,\r\n type: Number\r\n }) aspectRatio!: number;\r\n\r\n @Prop({\r\n required: false,\r\n type: Object\r\n }) aspectRatioMargins!: { [bp: string]: number };\r\n\r\n protected get isMobile() {\r\n return breakpointState.isBreakpointActive(MAX_SM);\r\n }\r\n\r\n protected get realAspectRatio(): number {\r\n // For mobile, aspect-ratio is controlled from within.\r\n return this.isMobile ? mobileAspectRatio : this.aspectRatio;\r\n }\r\n\r\n protected get realWidthOnScreen(): number {\r\n // For mobile, widht is controlled from within.\r\n return this.isMobile ? 100 : this.widthOnScreen;\r\n }\r\n\r\n protected get margin() {\r\n if (!this.aspectRatioMargins) return 0;\r\n\r\n const activeBpDef = Object.keys(this.aspectRatioMargins).find(bpDef => breakpointState.isBreakpointActive(bpDef));\r\n const result = activeBpDef ? this.aspectRatioMargins[activeBpDef] : 0;\r\n return result;\r\n }\r\n\r\n protected get aspectRatioStyling() {\r\n const paddingPct = (1 / this.realAspectRatio) * 100;\r\n return ({\r\n paddingBottom: `calc(${paddingPct}% - ${this.margin}px)`\r\n });\r\n }\r\n}\r\n","var render, staticRenderFns\nimport script from \"./AspectRatioBlockContainer.vue?vue&type=script&lang=ts&\"\nexport * from \"./AspectRatioBlockContainer.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AspectRatioBlockContainer.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AspectRatioBlockContainer.vue?vue&type=script&lang=ts&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop } from 'vue-property-decorator';\r\nimport { MapBlockViewModel, MapLocationBlockViewModel } from '@/types/contentServerContract';\r\nimport AspectRatioBlockContainer from '@/project/app/blocks/AspectRatioBlockContainer.vue';\r\nimport { Map as GmapMap, Marker as GmapMarker, InfoWindow as GmapInfoWindow } from 'gmap-vue';\r\nimport serverContextService from '@/core/serverContext.service';\r\n\r\ninterface Position {\r\n lat: number;\r\n lng: number;\r\n}\r\n\r\n// ref: https://developers.google.com/maps/documentation/javascript/reference/marker#MarkerOptions\r\ninterface Marker {\r\n clickable: boolean;\r\n draggable: boolean;\r\n icon: {\r\n url: string;\r\n size: {\r\n width: number;\r\n height: number;\r\n },\r\n scaledSize: {\r\n width: number;\r\n height: number;\r\n }\r\n };\r\n position: Position;\r\n data: MapLocationBlockViewModel;\r\n}\r\n\r\n// ref: https://developers.google.com/maps/documentation/javascript/reference/map#MapOptions\r\ninterface MapOptions {\r\n\r\n tilt?: number;\r\n zoom?: number; // The initial Map zoom level. Valid values: Integers between 0 - 18.\r\n minZoom?: number;\r\n maxZoom?: number;\r\n zoomControl?: boolean; // The enabled/disabled state of the Zoom control.\r\n zoomControlOptions?: {\r\n position: 'BOTTOM_CENTER' | 'BOTTOM_LEFT' | 'BOTTOM_RIGHT' | 'LEFT_BOTTOM' | 'LEFT_CENTER' | 'LEFT_TOP' | 'RIGHT_BOTTOM' | 'RIGHT_CENTER' | 'RIGHT_TOP' | 'TOP_CENTER' | 'TOP_LEFT' | 'TOP_RIGHT';\r\n },\r\n mapTypeControl: boolean;\r\n scaleControl: boolean;\r\n streetViewControl: boolean;\r\n rotateControl: boolean;\r\n fullscreenControl: boolean;\r\n disableDefaultUI: boolean;\r\n draggable: boolean;\r\n clickableIcons: boolean;\r\n scrollwheel?: boolean;\r\n disableDoubleClickZoom?: boolean;\r\n keyboardShortcuts?: boolean;\r\n styles: any[];\r\n}\r\n\r\n@Component({\r\n components: { GmapMap, GmapMarker, GmapInfoWindow }\r\n})\r\nexport default class GoogleMapsBlock extends AspectRatioBlockContainer {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: MapBlockViewModel;\r\n\r\n @Prop({\r\n required: true,\r\n type: Boolean\r\n }) isFirstBlock!: boolean;\r\n\r\n private center: Position = { lat: 55.838395, lng: 12.402816 };\r\n private infoWindow: {\r\n activeMarker: Marker | null,\r\n position: Position | null,\r\n open: boolean\r\n } = {\r\n activeMarker: null,\r\n position: null,\r\n open: false\r\n }\r\n\r\n private defaultZoom: number = 6;\r\n\r\n private markerClicked(marker: Marker) {\r\n this.infoWindow.activeMarker = marker;\r\n this.infoWindow.position = marker.position;\r\n this.infoWindow.open = true;\r\n }\r\n\r\n private hideInfoWindow() {\r\n this.infoWindow.open = false;\r\n this.infoWindow.position = null;\r\n this.infoWindow.activeMarker = null;\r\n }\r\n\r\n private get markers(): Marker[] {\r\n const markerOffice = require(this.isOprema ? '@/assets/icons/map-marker-turquoise.svg' : '@/assets/icons/map-marker-blue.svg');\r\n const markerOther = require(this.isOprema ? '@/assets/icons/map-marker-black.svg' : '@/assets/icons/map-marker-green.svg');\r\n return (this.content.mapLocations)\r\n .map(({ content }) => content as MapLocationBlockViewModel)\r\n .map(x => ({\r\n clickable: true,\r\n draggable: false,\r\n icon: {\r\n url: x.locationType === 'Office'\r\n ? markerOffice\r\n : markerOther,\r\n size: {\r\n width: 20,\r\n height: 20\r\n },\r\n scaledSize: {\r\n width: 20,\r\n height: 20\r\n }\r\n },\r\n position: {\r\n lat: parseFloat(x.gpsLatitude),\r\n lng: parseFloat(x.gpsLongitude)\r\n },\r\n data: x\r\n } as Marker));\r\n }\r\n\r\n private styles =\r\n [\r\n {\r\n featureType: 'administrative',\r\n elementType: 'all',\r\n stylers: [\r\n {\r\n visibility: 'off'\r\n }\r\n ]\r\n },\r\n {\r\n featureType: 'landscape',\r\n elementType: 'all',\r\n stylers: [\r\n {\r\n visibility: 'on'\r\n },\r\n {\r\n color: this.isOprema ? '#c0dfe7' : '#c5d2e0'\r\n }\r\n ]\r\n },\r\n {\r\n featureType: 'landscape',\r\n elementType: 'geometry',\r\n stylers: [\r\n {\r\n visibility: 'on'\r\n }\r\n ]\r\n },\r\n {\r\n featureType: 'landscape',\r\n elementType: 'labels',\r\n stylers: [\r\n {\r\n visibility: 'off'\r\n }\r\n ]\r\n },\r\n {\r\n featureType: 'poi',\r\n elementType: 'all',\r\n stylers: [\r\n {\r\n visibility: 'off'\r\n }\r\n ]\r\n },\r\n {\r\n featureType: 'road',\r\n elementType: 'all',\r\n stylers: [\r\n {\r\n visibility: 'off'\r\n }\r\n ]\r\n },\r\n {\r\n featureType: 'transit',\r\n elementType: 'all',\r\n stylers: [\r\n {\r\n visibility: 'off'\r\n }\r\n ]\r\n },\r\n {\r\n featureType: 'water',\r\n elementType: 'all',\r\n stylers: [\r\n {\r\n color: '#ffffff'\r\n }\r\n ]\r\n }\r\n ];\r\n\r\n private get options(): MapOptions {\r\n return {\r\n maxZoom: this.content.maxZoom ? this.content.maxZoom : 9,\r\n minZoom: this.content.minZoom ? this.content.minZoom : 4,\r\n zoomControl: true,\r\n mapTypeControl: false,\r\n scaleControl: false,\r\n streetViewControl: false,\r\n rotateControl: false,\r\n fullscreenControl: false,\r\n disableDefaultUI: true,\r\n draggable: true,\r\n clickableIcons: true,\r\n scrollwheel: false,\r\n disableDoubleClickZoom: true,\r\n keyboardShortcuts: false,\r\n styles: this.styles\r\n };\r\n }\r\n\r\n get isOprema() {\r\n return serverContextService?.isOprema;\r\n }\r\n\r\n private async getMap() {\r\n return await this.$refs.map.$mapPromise;\r\n }\r\n\r\n private async setBoundsByMarkers() {\r\n const map = await this.getMap();\r\n\r\n var bounds = new window.google.maps.LatLngBounds();\r\n\r\n for (const marker of this.markers) {\r\n bounds.extend(marker.position);\r\n }\r\n\r\n map.fitBounds(bounds);\r\n map.panToBounds(bounds);\r\n\r\n // fitBounds will zoom in as much as possible, so we zoom back out if thats the case\r\n setTimeout(() => {\r\n if (map.getZoom() > this.defaultZoom) {\r\n map.setZoom(this.defaultZoom);\r\n }\r\n }, 500);\r\n }\r\n\r\n private async syncCenterLocationWithUser() {\r\n if (!navigator.geolocation) return;\r\n\r\n const map = await this.getMap();\r\n\r\n navigator.geolocation.getCurrentPosition(({ coords }) => {\r\n map.setCenter({\r\n lat: coords.latitude,\r\n lng: coords.longitude\r\n });\r\n });\r\n }\r\n\r\n async mounted() {\r\n await this.$gmapApiPromiseLazy();\r\n\r\n if (this.markers.length) {\r\n this.setBoundsByMarkers();\r\n } else {\r\n this.syncCenterLocationWithUser();\r\n }\r\n }\r\n\r\n public $refs!: {\r\n map: any;\r\n }\r\n}\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoogleMapsBlock.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoogleMapsBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GoogleMapsBlock.vue?vue&type=template&id=240d1736&\"\nimport script from \"./GoogleMapsBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./GoogleMapsBlock.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('article',{staticClass:\"o-chrome-container flex flex-col bg-white py-40\",class:{ '-is-appended-to-prev-block': _vm.appendToPreviousBlock }},[(_vm.headline)?_c('SmartHeadline',{staticClass:\"text-15 md:text-20 text-center mb-30\",attrs:{\"level\":_vm.isFirstBlock ? 'h1' : 'h2',\"style-as-h1\":_vm.isFirstBlock}},[_vm._v(\" \"+_vm._s(_vm.headline)+\" \")]):_vm._e(),_c('div',{staticClass:\"relative\"},[(_vm.rendered && _vm.result)?_c('Swiper',{class:'swiper-' + _vm.id,attrs:{\"id\":_vm.id,\"instance-name\":_vm.id,\"options\":_vm.sliderOptions}},_vm._l((_vm.result.recommendedCategories),function(category,index){return _c('SwiperSlide',{key:index,staticClass:\"c-recommendation-category--item\"},[_c('Interceptor',{staticClass:\"h-full\",attrs:{\"threshold\":0.05},on:{\"visible\":function($event){return _vm.handleSlideVisible(category)}},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar viewed = ref.viewed;\nreturn [(viewed)?_c('CultureAwareRouterLink',{staticClass:\"bg-gray-300 hover:bg-gray-400 u-trans u-trans-bg h-full flex flex-col pt-25 md:pt-30 pb-20 md:pb-25\",attrs:{\"to\":category.url},nativeOn:{\"click\":function($event){return _vm.handleClickCategory(category)}}},[_c('div',{staticClass:\"w-80 h-80 md:w-100 md:h-100 rounded-full relative overflow-hidden mx-auto mb-15 md:mb-22\"},_vm._l((category.images),function(image,imageIndex){return _c('div',{key:imageIndex,staticClass:\"flex absolute w-40 md:w-50 h-40 md:h-50 min-w-30 c-recommendation-category--item-img bg-white\",class:{\n 'left-0': imageIndex === 0 || imageIndex === 3,\n 'right-0': imageIndex === 1 || imageIndex === 2,\n 'top-0': imageIndex === 0 || imageIndex === 1,\n 'bottom-0': imageIndex === 2 || imageIndex === 3,\n 'c-recommendation-category--item-img--even': imageIndex === 1 || imageIndex === 3,\n }},[_c('img',{directives:[{name:\"on-error\",rawName:\"v-on-error\"}],staticClass:\"responsive-icon m-auto\",attrs:{\"src\":_vm.resizeImageByPath(image.uri).x1,\"srcset\":((_vm.resizeImageByPath(image.uri).x1) + \" 1x, \" + (_vm.resizeImageByPath(image.uri).x2) + \" 2x\"),\"alt\":category.displayName}})])}),0),_c('div',{staticClass:\"font-bold text-15 text-center px-10 md:px-20 hyphenate\"},[_vm._v(\" \"+_vm._s(category.displayName)+\" \")]),_c('div',{staticClass:\"flex text-9 md:text-12 leading-large mt-auto\"},[_c('div',{staticClass:\"w-1/2 text-center\"},[_c('div',{staticClass:\"font-bold\"},[_vm._v(\" \"+_vm._s(_vm._f(\"localeNumber\")(category.productCount))+\" \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Category.Recommendations.ProductsCount'))+\" \")])]),_c('div',{staticClass:\"w-1/2 text-center\"},[_c('div',{staticClass:\"font-bold\"},[_vm._v(\" \"+_vm._s(_vm._f(\"localeNumber\")(category.brandCount))+\" \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Category.Recommendations.BrandsCount'))+\" \")])])])]):_vm._e()]}}],null,true)})],1)}),1):_c('div',{staticClass:\"c-recommendation-category--item\"}),_c('button',{staticClass:\"faded-custom-swiper-button-prev hidden md:block theme-text-linkcolor\",class:_vm.prevButtonSelector,attrs:{\"slot\":\"button-prev\",\"type\":\"button\"},slot:\"button-prev\"},[_c('CIcon',{attrs:{\"name\":\"arrow-thin-left\",\"width\":\"25\",\"height\":\"25\"}})],1),_c('button',{staticClass:\"faded-custom-swiper-button-next hidden md:block theme-text-linkcolor\",class:_vm.nextButtonSelector,attrs:{\"slot\":\"button-next\",\"type\":\"button\"},slot:\"button-next\"},[_c('CIcon',{attrs:{\"name\":\"arrow-thin-right\",\"width\":\"25\",\"height\":\"25\"}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport { CategoryRecommendationsBlockViewModel } from '@/types/contentServerContract';\r\nimport { RecommendedCategoriesViewModel, RecommendedCategoryViewObject } from '@/types/apiServerContract';\r\nimport loggingService from '@/core/logging.service';\r\nimport Api from '@/project/http/Api.service';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\nimport breakpointService from '@/core/responsive/breakpoints/breakpoints.service';\r\nimport responsiveProductImageService from '@/project/product/image/responsiveProductImage.service';\r\nimport { debounce } from 'lodash';\r\nimport GTMService from '@/project/tracking/gtm/GTM.service';\r\n\r\n@Component({\r\n components: { SmartHeadline }\r\n})\r\nexport default class CategoryRecommendationsBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n })\r\n private content!: CategoryRecommendationsBlockViewModel;\r\n\r\n @Prop({\r\n required: false,\r\n type: Boolean,\r\n default: false\r\n })\r\n private isFirstBlock!: boolean;\r\n\r\n rendered: boolean = false;\r\n activeBreakpoint: string = '';\r\n private result: RecommendedCategoriesViewModel | null = null;\r\n private debouncedTrackCategoryViewed = debounce(this.doTrackCategoryViewed, 500);\r\n private viewedCategories: { name: string, id: string }[] = [];\r\n\r\n private get sliderOptions() {\r\n return {\r\n spaceBetween: 12,\r\n slidesPerView: 'auto',\r\n slidesPerGroup: 1,\r\n slidesPerGroupAuto: true,\r\n loop: false,\r\n loopFillGroupWithBlank: false,\r\n watchSlidesVisibility: true,\r\n watchOverflow: true,\r\n setWrapperSize: true,\r\n navigation: {\r\n nextEl: '.' + this.nextButtonSelector,\r\n prevEl: '.' + this.prevButtonSelector\r\n },\r\n grabCursor: true,\r\n instanceName: this.id,\r\n observer: true,\r\n observeParents: true,\r\n observeSlideChildren: true\r\n };\r\n }\r\n\r\n private get id() {\r\n return new Date().valueOf();\r\n }\r\n\r\n private get prevButtonSelector() {\r\n return 'custom-swiper-button-prev-' + this.id;\r\n }\r\n\r\n private get nextButtonSelector() {\r\n return 'custom-swiper-button-next-' + this.id;\r\n }\r\n\r\n handleBreakpointChange() {\r\n const newBreakpoint = breakpointService.getActiveBreakpoint();\r\n if (newBreakpoint !== this.activeBreakpoint) {\r\n this.activeBreakpoint = newBreakpoint;\r\n this.rendered = false;\r\n this.$nextTick(() => this.rendered = true);\r\n }\r\n }\r\n\r\n get appendToPreviousBlock() {\r\n return this.content.appendToPreviousBlock && !this.isFirstBlock;\r\n }\r\n\r\n private async getCategoryData() {\r\n try {\r\n this.result = await Api.recommendations.recommendByCategory({\r\n categoryIdFilterPositiveList: this.content.categoryIdFilterPositiveList,\r\n categoryIdFilterNegativeList: this.content.categoryIdFilterNegativeList,\r\n brandIdFilterList: this.content.brandIdFilterList,\r\n displayedAtLocation: this.content.displayLocation,\r\n periodDays: this.content.interval,\r\n popularityType: this.content.popularity,\r\n categoryCount: this.content.categoryCount\r\n });\r\n } catch (e) {\r\n loggingService.error(e);\r\n }\r\n }\r\n\r\n private get headline(): string | undefined {\r\n return this.content?.headline;\r\n }\r\n\r\n resizeImageByPath(path: string): { x1: string, x2: string } {\r\n return {\r\n x1: responsiveProductImageService.formatImageUrl(path, responsiveProductImageService.ImageSizePlaceholderValues.W86),\r\n x2: responsiveProductImageService.formatImageUrl(path, responsiveProductImageService.ImageSizePlaceholderValues.W172)\r\n };\r\n }\r\n\r\n private handleClickCategory(category:RecommendedCategoryViewObject) {\r\n GTMService.trackCreativeClick(`recommendedCategory:${category.displayName}`, `recommendedCategory:${category.categoryId}`);\r\n }\r\n\r\n private handleSlideVisible(category:RecommendedCategoryViewObject) {\r\n this.viewedCategories.push({ name: `recommendedCategory:${category.displayName}`, id: `recommendedCategory:${category.categoryId}` });\r\n this.debouncedTrackCategoryViewed();\r\n }\r\n\r\n private doTrackCategoryViewed() {\r\n const categories = [...this.viewedCategories];\r\n this.viewedCategories = [];\r\n GTMService.trackCreativeView(categories);\r\n }\r\n\r\n private created() {\r\n this.getCategoryData();\r\n }\r\n\r\n mounted() {\r\n this.activeBreakpoint = breakpointService.getActiveBreakpoint();\r\n breakpointService.addListener(this.handleBreakpointChange);\r\n this.$nextTick(() => {\r\n this.rendered = true;\r\n });\r\n }\r\n\r\n destroyed() {\r\n breakpointService.removeListener(this.handleBreakpointChange);\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CategoryRecommendationsBlock.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CategoryRecommendationsBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CategoryRecommendationsBlock.vue?vue&type=template&id=6555ef18&\"\nimport script from \"./CategoryRecommendationsBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./CategoryRecommendationsBlock.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CategoryRecommendationsBlock.vue?vue&type=style&index=0&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"h-full\",class:{ 'flex flex-col': _vm.shouldUseFlexBox && _vm.hasTextContent,\n 'flex w-full': _vm.shouldUseFlexBox && !_vm.hasTextContent,\n 'overflow-hidden': !_vm.hasTextContent }},[(_vm.showCaptionAsContentTitle && _vm.content.caption)?_c('SmartHeadline',{staticClass:\"text-18 md:text-34 mb-10\",attrs:{\"style-as-h1\":_vm.isFirstBlock}},[(!_vm.shouldApplyBannerTextLimits)?[_vm._v(\" \"+_vm._s(_vm.content.caption)+\" \")]:[_c('SmartParagraph',{attrs:{\"content\":_vm.content.caption,\"max-characters\":20}})]],2):_vm._e(),(_vm.content)?_c('section',{ref:\"element\",staticClass:\"relative\",class:{ 'has-video-or-image' : _vm.content.vimeoVideoId || _vm.content.video || _vm.showBackgroundImage,\n 'flex flex-col flex-1': _vm.shouldUseFlexBox && _vm.hasTextContent,\n 'flex': _vm.isHeroBanner && _vm.hasTextContent,\n 'h-full': _vm.shouldUseFlexBox && !_vm.hasTextContent,\n 'h-full': _vm.hasTextContent && !_vm.showBackgroundImage,\n 'min-h-280': _vm.showBackgroundImage && _vm.isBackgroundImageBehaviorCover && !(_vm.isHeroBanner && !_vm.hasTextContent),\n 'md:min-h-350 lg:min-h-400': _vm.showBackgroundImage && !(_vm.isHeroBanner && !_vm.hasTextContent),\n 'md:h-full': _vm.showBackgroundImage },style:(_vm.styleForImageBackground)},[(_vm.content.vimeoVideoId || _vm.content.video)?_c('div',{class:{\n 'absolute inset-0': _vm.hasNoVideoOrVideoHasBeenLoaded,\n 'relative flex flex-col h-full flex-1': !_vm.content.vimeoVideoId\n },style:(_vm.videoContainerStyle)},[(_vm.content.video)?_c('video',{ref:\"videoMount\",staticClass:\"video flex-1\",class:{'video--loaded absolute inset-0': _vm.loadingVideo === false},attrs:{\"controls\":false,\"autoplay\":_vm.content.isBackgroundVideo,\"loop\":_vm.content.isBackgroundVideo,\"height\":\"100%\",\"width\":\"100%\"},domProps:{\"muted\":_vm.content.isBackgroundVideo}},[_c('source',{attrs:{\"src\":_vm.content.video.url,\"type\":'video/' + _vm.content.video.extension}}),_vm._v(\" Your browser does not support the video tag. \")]):(_vm.content.vimeoVideoId)?_c('div',{ref:\"videoMount\",staticClass:\"video\",class:{'video--loaded absolute inset-0': _vm.loadingVideo === false}}):_vm._e()]):_vm._e(),(_vm.hasTextContent || _vm.hasNoVideoOrVideoHasBeenLoaded)?_c('section',{staticClass:\"content-wrapper flex flex-col h-full w-full justify-center\",class:{ 'has-controls': _vm.showHtmlCustomControls,\n 'playing': _vm.isPlaying,\n 'my-auto': _vm.isHeroBanner && _vm.hasTextContent,\n 'wide-banner md:py-20 md:pl-70 md:pr-10': _vm.isWithinWideBannerAspectRatio,\n 'py-60 md:py-20 lg:py-30 xl:py-60': !_vm.isWithinWideBannerAspectRatio },style:(_vm.contentWrapperStyle)},[(_vm.showShim)?_c('section',{staticClass:\"absolute inset-0 pointer-events-none\",style:(_vm.shimColor)}):_vm._e(),(_vm.renderContent)?_c('div',{staticClass:\"flex flex-col justify-center\",class:{'items-end': _vm.alignRight },style:(_vm.contentTakeoverTransformStyle)},[_c('div',{staticClass:\"content flex items-center\",class:_vm.contentClass,style:(_vm.backgroundContentColorStyle)},[_c('div',[(_vm.content.caption)?_c('SmartHeadline',{staticClass:\"text-12 font-bold\",class:{\n 'mb-10': _vm.content.header || _vm.content.subheader,\n 'sm:mb-15': (_vm.content.header || _vm.content.subheader) && !_vm.isWithinWideBannerAspectRatio },style:(_vm.colorStyle(_vm.content.captionColor)),attrs:{\"level\":_vm.isFirstBlock ? 'h1' : 'h2'}},[(!_vm.shouldApplyBannerTextLimits)?[_vm._v(\" \"+_vm._s(_vm.content.caption)+\" \")]:[_c('SmartParagraph',{attrs:{\"content\":_vm.content.caption,\"max-characters\":20}})]],2):_vm._e(),(_vm.content.header)?_c('SmartHeadline',{directives:[{name:\"font-content-sync\",rawName:\"v-font-content-sync\",value:(_vm.headerFontSyncData),expression:\"headerFontSyncData\"}],class:{ 'mb-10': _vm.content.subheader, 'sm:mb-15': _vm.content.subheader && !_vm.isWithinWideBannerAspectRatio },style:(_vm.colorStyle(_vm.content.headerColor)),attrs:{\"level\":_vm.headerHeadlineLevel,\"style-as-h1\":true}},[(!_vm.shouldApplyBannerTextLimits)?[_vm._v(\" \"+_vm._s(_vm.content.header)+\" \")]:[_c('SmartParagraph',{attrs:{\"content\":_vm.content.header,\"max-characters\":30}})]],2):_vm._e(),(_vm.content.subheader)?_c('p',{staticClass:\"leading-normal whitespace-pre-line\",class:_vm.subheaderSizeClass,style:(_vm.colorStyle(_vm.content.subheaderColor))},[(!_vm.shouldApplyBannerTextLimits)?_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.content.subheader)}}):[_c('SmartParagraph',{attrs:{\"content\":_vm.content.subheader,\"max-characters\":180}})]],2):_vm._e(),(_vm.showCallToActionButton)?_c('CallToAction',{staticClass:\"cta--rounded\",class:{ 'mt-15': _vm.isWithinWideBannerAspectRatio, 'mt-20': !_vm.isWithinWideBannerAspectRatio },attrs:{\"hex-color\":_vm.ctaColor,\"text\":_vm.content.callToAction.name,\"href\":_vm.content.callToAction.url,\"target\":_vm.content.callToAction.target,\"max-characters\":_vm.shouldApplyBannerTextLimits ? 30 : -1,\"on-click-event\":_vm.clickHandler}}):(_vm.showCallToActionVideoOverlayButton)?_c('CallToAction',{staticClass:\"cta--rounded\",class:{ 'mt-15': _vm.isWithinWideBannerAspectRatio, 'mt-20': !_vm.isWithinWideBannerAspectRatio },attrs:{\"hex-color\":_vm.ctaColor,\"text\":_vm.content.overlayVimeoCta,\"max-characters\":_vm.shouldApplyBannerTextLimits ? 30 : -1,\"on-click-event\":_vm.clickHandler},on:{\"click\":_vm.clickOpenVideoOverlay}}):_vm._e()],1)])]):_vm._e(),(_vm.showHtmlCustomControls)?_c('div',{staticClass:\"video-controls flex justify-center z-1\",class:{ 'mt-20': _vm.renderContent }},[_c('button',{staticClass:\"controls\",on:{\"click\":function($event){return _vm.toggleVideoState()}}},[(!_vm.isPlaying)?[_c('CIcon',{staticClass:\"play\",attrs:{\"name\":\"play\",\"width\":\"30\",\"height\":\"30\"}}),_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Play\")])]:[_c('CIcon',{staticClass:\"pause\",attrs:{\"name\":\"pause\",\"width\":\"30\",\"height\":\"30\"}}),_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Pause\")])]],2)]):_vm._e(),(_vm.loadingVideo)?_c('div',{staticClass:\"absolute inset-0\"},[_c('SpinnerOverlay',{attrs:{\"show\":\"\"}})],1):_vm._e()]):_vm._e(),(_vm.showCallToActionBlock)?_c('CultureAwareRouterLink',{staticClass:\"absolute inset-0\",attrs:{\"to\":_vm.content.callToAction.url,\"target\":_vm.content.callToAction.target},nativeOn:{\"click\":function($event){return _vm.clickHandler()}}}):_vm._e()],1):_c('section',{staticClass:\"relative\",style:(_vm.aspectRatioStyling)},[_c('div',{staticClass:\"absolute inset-0\"},[_c('SpinnerOverlay',{attrs:{\"show\":!_vm.contentLoadError}})],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop, Watch } from 'vue-property-decorator';\r\nimport { ContentWidth, HeroBannerViewModel, HorizontalAlignment, SubheaderFontSize, Media } from '@/types/contentServerContract';\r\nimport CallToAction from '@/project/form/CallToAction.vue';\r\nimport VimeoPlayer from '@vimeo/player';\r\nimport breakpointState from '@/core/responsive/breakpoints/breakpointsState.observable';\r\nimport { MAX_MD, MIN_LG, MIN_MD, MAX_SM, MIN_XS } from '@/core/config/breakpointConfig';\r\nimport { hexToRgb, isValidHexColor } from '@/core/color/color.service';\r\nimport { AdContentBlockViewModel, AdImage } from '@/types/apiServerContract';\r\nimport SpinnerOverlay from '@/project/spinners/SpinnerOverlay.vue';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\nimport tailwind from '@/styling/tailwind.config';\r\nimport themeService from '@/project/app/themes/theme.service';\r\nimport loggingService from '@/core/logging.service';\r\nimport SmartParagraph from '@/core/ui-components/SmartParagraph.vue';\r\nimport videoFullscreenOverlayService from '@/project/modals/overlays/VimeoVideoFullscreenOverlay.service';\r\nimport responsiveImageService from '@/core/responsive/image/responsiveImage.service';\r\nimport serverContextService from '@/core/serverContext.service';\r\n\r\nconst mobileAspectRatio = 3 / 2;\r\nconst semiTransparencyPercentage = 0.75;\r\nconst videoAspectRatio = 16 / 9;\r\nconst wideBannerAspectRatio = 5;\r\n\r\ninterface VideoElm {\r\n play: () => void;\r\n pause: () => void;\r\n on: any;\r\n onloadeddata: () => void;\r\n getVideoWidth: () => Promise;\r\n getVideoHeight: () => Promise;\r\n}\r\ninterface CombinedHeroBannerViewModel extends HeroBannerViewModel {\r\n // Mixing HeroBannerViewModel with stuff from AdContentBlockViewModel\r\n overlayVimeoVideoId?:string;\r\n overlayVimeoCta?:string;\r\n}\r\n\r\n@Component({\r\n components: { SmartParagraph, SpinnerOverlay, CallToAction, SmartHeadline }\r\n})\r\nexport default class ImageTextVideoBlockNew extends Vue {\r\n /* Could also be a BaseBlockViewModel - but we handle the missing props:\r\n contentAlignment, contentWidth, subheaderFontSize.\r\n Could also be a AdContentBlockViewModel, but we handle the extra backgroundImages special */\r\n @Prop({\r\n type: Object\r\n }) content!: CombinedHeroBannerViewModel | null;\r\n\r\n @Prop({\r\n type: Boolean,\r\n default: false\r\n }) isFirstBlock!: boolean;\r\n\r\n @Prop({\r\n type: Boolean,\r\n default: false\r\n }) contentLoadError!: boolean;\r\n\r\n @Prop({\r\n type: Function,\r\n default: () => {}\r\n }) clickHandler!: () => void;\r\n\r\n @Prop({\r\n type: Boolean,\r\n default: false\r\n }) isHeroBanner!: boolean;\r\n\r\n @Prop({\r\n type: Boolean,\r\n default: false\r\n }) useFlexBox!: boolean;\r\n\r\n @Prop({\r\n type: Boolean,\r\n default: false\r\n }) shouldApplyBannerTextLimits!: boolean;\r\n\r\n @Prop({\r\n required: true,\r\n type: Number\r\n }) widthOnScreen!: number;\r\n\r\n @Prop({\r\n required: true,\r\n type: Number\r\n }) aspectRatio!: number;\r\n\r\n @Prop()\r\n forceVimeoAspectRatio!: number;\r\n\r\n @Prop({\r\n required: false,\r\n type: Object\r\n }) aspectRatioMargins!: { [bp: string]: number };\r\n\r\n private get shouldUseFlexBox() {\r\n return this.useFlexBox && !this.isMobile;\r\n }\r\n\r\n private video: VimeoPlayer | VideoElm | null = null;\r\n private isPlaying: boolean = false;\r\n private loadingVideo: boolean = true;\r\n private contentBackgroundColor: string = '';\r\n private vimeoVideoAspectRatio: { width: number, height: number } | null = null;\r\n private backgroundImageWidth: number | null = null;\r\n private rendered: boolean = false;\r\n\r\n private get isWithinWideBannerAspectRatio() {\r\n return this.aspectRatio >= wideBannerAspectRatio;\r\n }\r\n\r\n private get isMobile() {\r\n return breakpointState.isBreakpointActive(MAX_SM);\r\n }\r\n\r\n private get hasTextContent(): boolean {\r\n return !!(this.content?.header || this.content?.subheader || this.content?.caption || this.content?.callToAction?.url);\r\n }\r\n\r\n private get isBackgroundImageBehaviorCover(): boolean {\r\n return this.content?.backgroundImageBehavior === 'cover';\r\n }\r\n\r\n private get styleForImageBackground(): Partial | null {\r\n const styling: Partial = {};\r\n if (this.content?.backgroundImage) {\r\n const backgroundImageBehavior: string = this.content.backgroundImageBehavior;\r\n let backgroundSize: string = 'cover';\r\n let aspectRatio: null | number = this.isMobile ? this.content.backgroundImage.width / this.content.backgroundImage.height : null;\r\n\r\n if (backgroundImageBehavior === 'cover') {\r\n aspectRatio = null;\r\n } else if (backgroundImageBehavior === 'alignTop') {\r\n this.content.backgroundImage.focalPoint.top = 0;\r\n backgroundSize = 'contain';\r\n } else if (backgroundImageBehavior === 'center') {\r\n backgroundSize = 'contain';\r\n }\r\n\r\n let newBackgroundWidth = this.content.backgroundImage.width;\r\n let newBackgroundHeight = this.content.backgroundImage.height;\r\n // Upscale image from element width, because we use background-size: cover that \"might\" (most likely will) scale the image a bit.\r\n // Using a low number (e.g. 1.2) makes images look bad in most cases\r\n if (this.backgroundImageWidth !== null) {\r\n const upsizeFactor = 1.5;\r\n const doResize = this.content.backgroundImage.width > this.backgroundImageWidth;\r\n const allowUpscale: boolean = backgroundImageBehavior === 'cover' && this.content.backgroundImage.width > this.backgroundImageWidth * upsizeFactor;\r\n\r\n if (allowUpscale && doResize) {\r\n newBackgroundWidth = Math.round(this.backgroundImageWidth * upsizeFactor);\r\n newBackgroundHeight = Math.round(this.content.backgroundImage.height / this.content.backgroundImage.width * this.backgroundImageWidth * upsizeFactor);\r\n }\r\n }\r\n\r\n const backgroundImageUrl = this.formatImageUrl(this.content.backgroundImage, newBackgroundWidth, newBackgroundHeight, 80);\r\n styling.flex = '1';\r\n styling.backgroundSize = backgroundSize;\r\n styling.backgroundPosition = `${100 * this.content.backgroundImage.focalPoint.left}% ${100 * this.content.backgroundImage.focalPoint.top}%`;\r\n styling.backgroundRepeat = 'no-repeat';\r\n styling.backgroundColor = this.backgroundColorStyle.backgroundColor;\r\n // @ts-ignore\r\n styling.aspectRatio = aspectRatio;\r\n if (this.rendered) {\r\n styling.backgroundImage = `url(${backgroundImageUrl})`;\r\n }\r\n }\r\n if (this.content?.vimeoVideoId && this.vimeoVideoAspectRatio !== null) {\r\n // @ts-ignore\r\n styling.aspectRatio = this.vimeoVideoAspectRatio.width / this.vimeoVideoAspectRatio.height;\r\n } else if (this.isHeroBanner && this.content) {\r\n if (!this.hasTextContent && this.content.backgroundImage) {\r\n // Hero banner without text\r\n // @ts-ignore\r\n styling.aspectRatio = this.content.backgroundImage.width / this.content.backgroundImage.height;\r\n } else if (this.content.subheader.length < 80) {\r\n // Force old aspect ratio to Hero Banner if there is only a limited amount of text\r\n const paddingPct = (1 / this.realAspectRatio) * 100;\r\n // @ts-ignore\r\n styling.aspectRatio = `calc(${paddingPct}% - ${this.margin}px)`;\r\n }\r\n }\r\n return styling;\r\n }\r\n\r\n private formatImageUrl(image: Media, width: number, height: number, quality?: number): string {\r\n const imageUrl = image.url;\r\n const focalPoint = image.focalPoint;\r\n const firstSeparator = !imageUrl || imageUrl.indexOf('?') === -1 ? '?' : '&';\r\n const focal = focalPoint ? `¢er=${focalPoint.top},${focalPoint.left}` : '';\r\n const qualityFormatted = quality ? `&quality=${quality}` : '';\r\n const format = image.extension ? `&format=${image.extension}` : '';\r\n return `${this.absoluteImageUrl(imageUrl)}${firstSeparator}width=${width}&height=${height}${format}${focal}${qualityFormatted}`;\r\n }\r\n\r\n private absoluteImageUrl(imageUrl: string): string {\r\n return responsiveImageService.getBaseUrl() + imageUrl;\r\n }\r\n\r\n public get realAspectRatio(): number {\r\n if (this.shouldUseFlexBox) return 0;\r\n if (this.content?.backgroundImage && this.content.backgroundImageBehavior !== 'cover') {\r\n return this.content.backgroundImage.width / this.content.backgroundImage.height;\r\n }\r\n if (!this.isMobile && this.forceVimeoAspectRatio) return this.forceVimeoAspectRatio;\r\n\r\n // For mobile, aspect-ratio is controlled from within.\r\n return this.isMobile ? mobileAspectRatio : this.vimeoVideoAspectRatio ? (this.vimeoVideoAspectRatio.width / this.vimeoVideoAspectRatio.height) : this.aspectRatio;\r\n }\r\n\r\n private get realWidthOnScreen(): number {\r\n // For mobile, width is controlled from within.\r\n return this.isMobile ? 100 : this.widthOnScreen;\r\n }\r\n\r\n private get margin() {\r\n if (!this.aspectRatioMargins) return 0;\r\n\r\n const activeBpDef = Object.keys(this.aspectRatioMargins).find(bpDef => breakpointState.isBreakpointActive(bpDef));\r\n const result = activeBpDef ? this.aspectRatioMargins[activeBpDef] : 0;\r\n return result;\r\n }\r\n\r\n private get aspectRatioStyling(): Partial {\r\n if (this.shouldUseFlexBox) return {};\r\n\r\n const paddingPct = (1 / this.realAspectRatio) * 100;\r\n return ({\r\n paddingBottom: `calc(${paddingPct}% - ${this.margin}px)`\r\n });\r\n }\r\n\r\n private get renderContent() {\r\n return !this.loadingVideo && !this.showCaptionAsContentTitle &&\r\n (this.content?.caption !== '' || this.content?.header !== '' || this.content?.subheader !== '' || this.content?.callToAction !== null);\r\n }\r\n\r\n private async mounted() {\r\n this.loadingVideo = !!(this.content?.video || this.content?.vimeoVideoId);\r\n if (!this.content) return; // For normal blocks (not ad) it will always be not null\r\n this.rendered = false;\r\n if (this.content.backgroundImage) {\r\n this.backgroundImageWidth = this.$el.clientWidth;\r\n }\r\n this.initVideo();\r\n this.$nextTick(() => this.rendered = true);\r\n }\r\n\r\n initVideo() {\r\n if (this.content?.video) {\r\n this.loadingVideo = true;\r\n this.video = this.$refs.videoMount as any as VideoElm;\r\n\r\n this.video.onloadeddata = () => {\r\n this.loadingVideo = false;\r\n };\r\n } else if (this.content?.vimeoVideoId) {\r\n this.loadingVideo = true;\r\n this.vimeoVideoAspectRatio = null;\r\n this.video = null;\r\n const options = {\r\n id: ensureId(this.content.vimeoVideoId),\r\n autoplay: this.content.isBackgroundVideo,\r\n loop: this.content.isBackgroundVideo,\r\n muted: this.content.isBackgroundVideo,\r\n controls: this.content.showVideoControls,\r\n title: false,\r\n byline: false,\r\n portrait: false,\r\n color: ((this.isOprema ? tailwind.theme.colors.opremayellow['500'] : tailwind.theme.colors.blue['500']) || '').replace('#', ''),\r\n autopause: !this.content.isBackgroundVideo // Ensure that all videos on a page will autoplay\r\n };\r\n this.$nextTick(() => {\r\n // eslint-disable-next-line no-new\r\n this.video = new VimeoPlayer(this.$refs.videoMount as HTMLElement, options) as VimeoPlayer;\r\n\r\n this.video.on('ended', () => {\r\n this.isPlaying = false;\r\n });\r\n\r\n this.video.on('error', (e) => {\r\n console.log('vimeo video error', e);\r\n });\r\n this.video.on('loaded', () => {\r\n this.getVimeoVideoAspectRatio();\r\n });\r\n });\r\n }\r\n\r\n function ensureId(idOrUrl: string): number {\r\n const idParts = idOrUrl.split(/(\\\\|\\/)/);\r\n let id = idOrUrl;\r\n if (idParts.length > 1) {\r\n id = idParts[idParts.length - 1];\r\n }\r\n return parseInt(id, 10);\r\n }\r\n }\r\n\r\n @Watch('content', {\r\n immediate: true\r\n })\r\n private onContentChange(content: HeroBannerViewModel | undefined) {\r\n if (!content) return;\r\n // Set defaults for properties. Width and subheader-font varies depending on whether hero or not\r\n content.contentAligmentValue = content.contentAligmentValue ?? HorizontalAlignment.Left;\r\n content.contentWidthValue = content.contentWidthValue ?? (this.isHeroBanner ? ContentWidth.TwoThird : ContentWidth.FullWidth);\r\n content.subheaderFontSizeValue = content.subheaderFontSizeValue ?? (this.isHeroBanner ? SubheaderFontSize.Large : SubheaderFontSize.Normal);\r\n }\r\n\r\n private async getVimeoVideoAspectRatio() {\r\n setTimeout(() => {\r\n this.delayedVideoAspectRatio();\r\n this.loadingVideo = false;\r\n }, 200); // 200 seems to be the magic number after the video is loaded.\r\n }\r\n\r\n private async delayedVideoAspectRatio() {\r\n if (this.video) {\r\n const width = await this.video.getVideoWidth();\r\n const height = await this.video.getVideoHeight();\r\n this.vimeoVideoAspectRatio = { width: width, height: height };\r\n }\r\n }\r\n\r\n get isOprema() {\r\n return serverContextService?.isOprema;\r\n }\r\n\r\n private get headerFontSyncData(): object {\r\n // Minimum is controlled by current subheader size\r\n const minSize = this.subheaderSize === 'small' ? 15 : 22;\r\n return [\r\n [MIN_LG, { min: minSize, max: 34 }],\r\n [MIN_MD, { min: minSize, max: 22 }],\r\n [MIN_XS, { min: minSize, max: 18 }]\r\n ];\r\n }\r\n\r\n private get hasNoVideoOrVideoHasBeenLoaded(): boolean {\r\n if (this.content?.vimeoVideoId || this.content?.video) {\r\n return this.loadingVideo === false && this.vimeoVideoAspectRatio !== null && this.rendered;\r\n }\r\n return true;\r\n }\r\n\r\n private toggleVideoState() {\r\n if (!this.video) return;\r\n\r\n if (this.isPlaying) {\r\n try {\r\n this.video.pause();\r\n } catch (e) {\r\n loggingService.error(e);\r\n }\r\n } else {\r\n try {\r\n this.video.play();\r\n } catch (e) {\r\n loggingService.error(e);\r\n }\r\n }\r\n\r\n this.isPlaying = !this.isPlaying;\r\n }\r\n\r\n private hexToRgbWithDefault(hex: string, alpha?: number): string {\r\n if (!isValidHexColor(hex)) return tailwind.theme.colors.black;\r\n return hexToRgb(hex, alpha);\r\n }\r\n\r\n private get backgroundColorStyle(): { backgroundColor: string } {\r\n let result = 'transparent';\r\n\r\n if (this.content && this.isColorDefined(this.content.backgroundColor)) {\r\n result = this.hexToRgbWithDefault(this.content.backgroundColor);\r\n }\r\n\r\n return ({\r\n backgroundColor: result\r\n });\r\n }\r\n\r\n private get contentWrapperStyle(): { backgroundColor: string } {\r\n let result = 'transparent';\r\n\r\n if (this.content && !this.content.backgroundImage && this.isColorDefined(this.content.backgroundColor)) {\r\n result = this.hexToRgbWithDefault(this.content.backgroundColor);\r\n }\r\n\r\n return ({\r\n backgroundColor: result\r\n });\r\n }\r\n\r\n private get backgroundContentColorStyle(): Partial {\r\n if (!this.content || this.loadingVideo) return {};\r\n\r\n const backgroundColor = this.content.contentBackgroundColor;\r\n const semiTransparent = this.content.makeContentBackgroundTransparent;\r\n\r\n let result = 'transparent';\r\n\r\n if (this.shouldShowContentBackground && this.isColorDefined(backgroundColor)) {\r\n result = this.hexToRgbWithDefault(backgroundColor, semiTransparent ? semiTransparencyPercentage : undefined);\r\n }\r\n\r\n this.contentBackgroundColor = result;\r\n\r\n return ({\r\n backgroundColor: result\r\n });\r\n }\r\n\r\n // private get backgroundImageFormat() {\r\n // return extensionIsGifOrUndefined(this.content?.backgroundImage);\r\n // }\r\n\r\n private get contentTakeoverTransformStyle(): Partial {\r\n // Take over banner is 200px taller than normal banners, so we have to push content down by half (100)\r\n // to ensure it is centered correctly\r\n const translateY = this.isTakeOverBanner && !this.isMobile ? 100 : 0;\r\n\r\n return ({\r\n transform: `translateY(${translateY}px)`\r\n });\r\n }\r\n\r\n private get ctaColor(): string | null {\r\n return this.content?.callToActionColor || null;\r\n }\r\n\r\n private get headerHeadlineLevel(): string {\r\n let level;\r\n\r\n if (this.isFirstBlock && !this.content?.caption && this.content?.header) {\r\n level = 'h1';\r\n } else if ((this.isFirstBlock && this.content?.caption && this.content?.header) || (!this.isFirstBlock && !this.content?.caption && this.content?.header)) {\r\n level = 'h2';\r\n } else {\r\n level = 'h3';\r\n }\r\n\r\n return level;\r\n }\r\n\r\n isColorDefined(color: string): boolean {\r\n return color?.length === 7 ?? false; // #233445\r\n }\r\n\r\n private colorStyle(hexColor: string): object {\r\n const EETBlack = tailwind.theme.colors.black;\r\n return ({\r\n color: this.contentBackgroundColor === 'white' ? EETBlack : hexColor ? this.hexToRgbWithDefault(hexColor) : EETBlack\r\n });\r\n }\r\n\r\n private get alignRight(): boolean {\r\n return this.content?.contentAligmentValue === HorizontalAlignment.Right; // Left is default\r\n }\r\n\r\n private get contentClass(): string {\r\n if (!this.content) return '';\r\n\r\n let widthCls = 'w-full'; // Default for mobile\r\n if (!this.isMobile) {\r\n switch (this.content.contentWidthValue) {\r\n case ContentWidth.OneThird:\r\n widthCls = 'w-1/3';\r\n break;\r\n case ContentWidth.TwoThird:\r\n widthCls = 'w-2/3';\r\n break;\r\n case ContentWidth.FullWidth:\r\n widthCls = 'w-full';\r\n break;\r\n }\r\n }\r\n return `${widthCls}`;\r\n }\r\n\r\n private get subheaderSizeClass(): string {\r\n if (!this.subheaderSize) return '';\r\n\r\n return this.subheaderSize === 'small' ? 'text-15' : this.video ? 'text-18' : 'text-22';\r\n }\r\n\r\n private get subheaderSize(): undefined | 'small' | 'large' {\r\n if (!this.content) return undefined;\r\n\r\n if (breakpointState.isBreakpointActive(MAX_MD)) {\r\n return 'small';\r\n }\r\n\r\n return this.content.subheaderFontSizeValue === SubheaderFontSize.Normal ? 'small' : 'large';\r\n }\r\n\r\n private get adnuntiusImages() : AdImage[] {\r\n const adImages = (this.content as any as AdContentBlockViewModel).backgroundImages;\r\n if (!adImages || adImages.length === 0) {\r\n return [];\r\n }\r\n\r\n // Take the ones matching aspect-ratio\r\n return adImages\r\n .filter(img => isMatchingImageAspectRatio(img, this.realAspectRatio));\r\n\r\n function isMatchingImageAspectRatio(image: AdImage, aspectRatio: number): boolean {\r\n // Allow for 5 percentage in difference, to be a bit relaxed. Image will overflow correctly\r\n const allowedDelta = aspectRatio * 0.05;\r\n return Math.abs(image.width / image.height - aspectRatio) <= allowedDelta;\r\n }\r\n }\r\n\r\n private get adImageProps(): object | null {\r\n if (this.adnuntiusImages.length === 0) {\r\n return null;\r\n }\r\n\r\n // Src-set\r\n const srcset = this.adnuntiusImages\r\n .map(img => `${img.url} ${img.width}w`)\r\n .join(', ');\r\n\r\n // src. Take largest\r\n const src = this.adnuntiusImages\r\n .sort((imageA, imageB) => imageA.width - imageB.width)[this.adnuntiusImages.length - 1].url;\r\n\r\n // Sizes\r\n const sizes = `${this.realWidthOnScreen}vw`;\r\n\r\n return {\r\n srcset,\r\n src,\r\n sizes\r\n };\r\n }\r\n\r\n private get shimColor(): Partial {\r\n return { backgroundColor: this.content?.shimColor, opacity: '0.3' };\r\n }\r\n\r\n private get videoContainerMoreNarrowThanVideo() {\r\n return this.realAspectRatio < videoAspectRatio;\r\n }\r\n\r\n private get videoContainerStyle(): Partial {\r\n if (!this.content) return {};\r\n if (this.content.vimeoVideoId) return {};\r\n\r\n return this.videoContainerMoreNarrowThanVideo ? ({\r\n width: 100 + '%',\r\n height: '100%',\r\n left: '50%',\r\n transform: 'translateX(-50%)'\r\n }) : ({\r\n ...(!!(this.content.vimeoVideoId) && { height: 100 * videoAspectRatio + '%' }),\r\n width: '100%',\r\n top: '50%',\r\n transform: 'translateY(-50%)'\r\n });\r\n }\r\n\r\n private get shouldShowContentBackground(): boolean {\r\n return this.showBackgroundImage || !!((this.content as any as AdContentBlockViewModel)?.backgroundImages?.length > 0) || !!this.content?.vimeoVideoId;\r\n }\r\n\r\n private get showHtmlCustomControls() {\r\n return this.content && this.loadingVideo === false && this.video && this.content.isBackgroundVideo === false && this.content.showVideoControls === false;\r\n }\r\n\r\n private get showCaptionAsContentTitle() {\r\n return this.content?.captionLocation === 'Top';\r\n }\r\n\r\n private get showBackgroundImage(): boolean {\r\n return !!(this.content?.backgroundImage?.url ?? false);\r\n }\r\n\r\n private get showShim(): boolean {\r\n return !!this.content?.shimColor && (!!this.content.vimeoVideoId || !!this.content.video || this.showBackgroundImage || !!this.adImageProps);\r\n }\r\n\r\n private get showCallToActionButton(): boolean {\r\n // Show button if there are no overlayVimeoVideoId (then another button should be shown)\r\n return !!(this.content?.callToAction?.name ?? false);\r\n }\r\n\r\n private get showCallToActionBlock(): boolean {\r\n return !this.showCallToActionButton && (!!this.content?.callToAction?.url ?? false);\r\n }\r\n\r\n private get showCallToActionVideoOverlayButton(): boolean {\r\n return !!(this.content?.overlayVimeoVideoId && this.content?.overlayVimeoCta);\r\n }\r\n\r\n private get isTakeOverBanner() {\r\n return this.isFirstBlock && themeService.isTakeOverEnabled;\r\n }\r\n\r\n private async clickOpenVideoOverlay() {\r\n if (this.content?.overlayVimeoVideoId) {\r\n if (this.video) {\r\n // Pauses video background while playing overlay video\r\n this.video.pause();\r\n }\r\n await videoFullscreenOverlayService.show(this.content.overlayVimeoVideoId, true);\r\n if (this.video) {\r\n // Starts video background again, after video overlay has been closed\r\n this.video.play();\r\n }\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageTextVideoBlockNew.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageTextVideoBlockNew.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ImageTextVideoBlockNew.vue?vue&type=template&id=340b2eb9&scoped=true&\"\nimport script from \"./ImageTextVideoBlockNew.vue?vue&type=script&lang=ts&\"\nexport * from \"./ImageTextVideoBlockNew.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ImageTextVideoBlockNew.vue?vue&type=style&index=0&id=340b2eb9&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"340b2eb9\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('article',{staticClass:\"w-full\",class:{ '-is-appended-to-prev-block': _vm.appendToPreviousBlock, 'o-container--bleed': _vm.parentAlias }},[_c('div',{class:{ 'py-35 px-40 has-background': _vm.backgroundColor, 'px-10 sm:px-0': !_vm.backgroundColor },style:(_vm.style)},[_c('div',{staticClass:\"w-full break-words\"},[(_vm.content.headline)?_c('smart-headline',{staticClass:\"mb-10\",attrs:{\"level\":_vm.isFirstBlock ? 'h1' : 'h2',\"style-as-h1\":_vm.isFirstBlock}},[_vm._v(\" \"+_vm._s(_vm.content.headline)+\" \")]):_vm._e(),_c('section',{directives:[{name:\"delegate-html-links\",rawName:\"v-delegate-html-links\"}],ref:\"htmlContent\",staticClass:\"wysiwyg text-block\",domProps:{\"innerHTML\":_vm._s(_vm.bodyText(_vm.content.bodyText))}}),(_vm.content.callToAction)?_c('call-to-action',{staticClass:\"cta--rounded mt-20\",attrs:{\"hex-color\":_vm.content.callToActionColor,\"text\":_vm.content.callToAction.name,\"href\":_vm.content.callToAction.url,\"target\":_vm.content.callToAction.target}}):_vm._e()],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport { FullWidthTextBlockViewModel } from '@/types/contentServerContract';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\nimport tableHtmlService from './tableHtml.service';\r\nimport { hexToRgbValues, luma } from '@/core/color/color.service';\r\nimport tailwind from '@/styling/tailwind.config';\r\n\r\n@Component({\r\n components: { SmartHeadline }\r\n})\r\nexport default class FullWidthTextBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: FullWidthTextBlockViewModel;\r\n\r\n @Prop({\r\n required: true,\r\n type: Boolean\r\n }) isFirstBlock!: boolean;\r\n\r\n @Prop({\r\n required: false,\r\n type: String\r\n }) parentAlias!: string;\r\n\r\n private get backgroundColor() {\r\n return this.content.customBackgroundColor\r\n ? this.content.customBackgroundColor\r\n : this.content.backgroundColor ? '#' + this.content.backgroundColor : undefined;\r\n }\r\n\r\n private get textColor() {\r\n if (!this.backgroundColor) return undefined;\r\n const { red, green, blue } = hexToRgbValues(this.backgroundColor);\r\n const isDarkBackground = luma(red, green, blue) <= 0.5;\r\n return isDarkBackground ? tailwind.theme.colors.white : tailwind.theme.colors.black;\r\n }\r\n\r\n private get style(): Partial {\r\n return {\r\n backgroundColor: this.backgroundColor,\r\n color: this.textColor\r\n };\r\n }\r\n\r\n private get appendToPreviousBlock() {\r\n return this.content.appendToPreviousBlock && !this.isFirstBlock;\r\n }\r\n\r\n private bodyText(html: string): string {\r\n return tableHtmlService.wrapTableInOuterDivs(html);\r\n }\r\n\r\n $refs!: Vue['$refs'] & {\r\n htmlContent: HTMLElement\r\n }\r\n\r\n private mounted() {\r\n tableHtmlService.registerTableOverflow(this.$refs.htmlContent);\r\n }\r\n\r\n private beforeDestroy() {\r\n tableHtmlService.unregisterTableOverflow(this.$refs.htmlContent);\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FullWidthTextBlock.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FullWidthTextBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FullWidthTextBlock.vue?vue&type=template&id=02aaaf54&\"\nimport script from \"./FullWidthTextBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./FullWidthTextBlock.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('article',{staticClass:\"relative w-full overflow-visible\"},[(_vm.content.headline && _vm.campaigns.length)?_c('SmartHeadline',{staticClass:\"mb-10\",attrs:{\"level\":_vm.isFirstBlock ? 'h1' : 'h2',\"style-as-h1\":_vm.isFirstBlock}},[_vm._v(\" \"+_vm._s(_vm.content.headline)+\" \")]):_vm._e(),_c('Swiper',{class:'swiper-' + _vm.id,attrs:{\"id\":_vm.id,\"instance-name\":_vm.id,\"options\":_vm.sliderOptions}},_vm._l((_vm.campaigns),function(campaign,index){return _c('SwiperSlide',{key:index,staticClass:\"c-campaigns--wrapper pt-10\"},[_c('CampaignTeaser',{attrs:{\"content\":campaign,\"icon-in-image\":true,\"force-image-thumb\":_vm.anyCampaignWithImageOrIcon}})],1)}),1),_c('button',{staticClass:\"custom-swiper-button-prev hidden md:block\",class:_vm.prevButtonSelector,attrs:{\"slot\":\"button-prev\",\"type\":\"button\"},slot:\"button-prev\"},[_c('CIcon',{attrs:{\"name\":\"arrow-thin-left\",\"width\":\"25\",\"height\":\"25\"}})],1),_c('button',{staticClass:\"custom-swiper-button-next hidden md:block\",class:_vm.nextButtonSelector,attrs:{\"slot\":\"button-next\",\"type\":\"button\"},slot:\"button-next\"},[_c('CIcon',{attrs:{\"name\":\"arrow-thin-right\",\"width\":\"25\",\"height\":\"25\"}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { CampaignsViewModel } from '@/types/contentServerContract';\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport CampaignTeaser from '@/project/app/content-pages/CampaignTeaser.vue';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\n\r\n@Component({\r\n components: { CampaignTeaser, SmartHeadline }\r\n})\r\nexport default class LatestCampaignsBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: CampaignsViewModel;\r\n\r\n @Prop({\r\n required: false,\r\n default: false,\r\n type: Boolean\r\n }) isFirstBlock!: boolean;\r\n\r\n private get campaigns() {\r\n if (!this.content.firstCampaign) {\r\n return [...this.content.campaigns];\r\n }\r\n return [this.content.firstCampaign, ...this.content.campaigns];\r\n }\r\n\r\n private get anyCampaignWithImageOrIcon(): boolean {\r\n return !!this.campaigns.find(c => c.image?.url || (c.showIcon && c.iconUrl));\r\n }\r\n\r\n private get id() {\r\n return 'latest-campaigns-block-' + new Date().valueOf();\r\n }\r\n\r\n private get prevButtonSelector() {\r\n return 'custom-swiper-button-prev-' + this.id;\r\n }\r\n\r\n private get nextButtonSelector() {\r\n return 'custom-swiper-button-next-' + this.id;\r\n }\r\n\r\n private get sliderOptions() {\r\n return {\r\n spaceBetween: 20,\r\n slidesPerView: 'auto',\r\n slidesPerGroup: 1,\r\n loop: false,\r\n loopFillGroupWithBlank: false,\r\n watchSlidesVisibility: true,\r\n watchOverflow: true,\r\n setWrapperSize: false,\r\n autoHeight: false,\r\n navigation: {\r\n nextEl: '.' + this.nextButtonSelector,\r\n prevEl: '.' + this.prevButtonSelector\r\n },\r\n grabCursor: true,\r\n instanceName: this.id,\r\n observer: true,\r\n observeParents: true,\r\n observeSlideChildren: true\r\n };\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LatestCampaignsBlock.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LatestCampaignsBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LatestCampaignsBlock.vue?vue&type=template&id=86e9ec32&scoped=true&\"\nimport script from \"./LatestCampaignsBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./LatestCampaignsBlock.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./LatestCampaignsBlock.vue?vue&type=style&index=0&id=86e9ec32&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"86e9ec32\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('article',{staticClass:\"tabbed-content\"},[_c('Tabs',{attrs:{\"header-class\":\"mb-15\"}},_vm._l((_vm.content.tabs),function(tab,index){return _c('Tab',{key:index,attrs:{\"name\":tab.content.headline,\"keep-alive\":tab.content.keepAlive}},[_c('block-list',{attrs:{\"blocks\":tab.content.blocks,\"enable-container\":false}})],1)}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport { TabbedContentBlockViewModel } from '@/types/contentServerContract';\r\nimport Tabs from '@/core/ui-components/tabs/Tabs.vue';\r\nimport Tab from '@/core/ui-components/tabs/Tab.vue';\r\n\r\n@Component({\r\n components: { Tabs, Tab }\r\n})\r\nexport default class TabbedContentBlock extends Vue {\r\n @Prop({ required: true, type: Object })\r\n private content!: TabbedContentBlockViewModel;\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TabbedContentBlock.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TabbedContentBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TabbedContentBlock.vue?vue&type=template&id=bff44b92&\"\nimport script from \"./TabbedContentBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./TabbedContentBlock.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BrandRecommendationsBlock.vue?vue&type=style&index=0&lang=less&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BrandRecommendationsBlock.vue?vue&type=style&index=0&lang=less&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.messages.length > 0)?_c('div',[_vm._t(\"default\",function(){return [_c('ul',{staticClass:\"text-red-500 text-12 font-medium list-reset\"},_vm._l((_vm.messages),function(message,ix){return _c('li',{key:ix,staticClass:\"mt-15\"},[_vm._v(\" \"+_vm._s(_vm.getMessage(message.message))+\" \"),(_vm.errorId)?[_vm._v(\" [ \"+_vm._s(_vm.errorId)+\"] \")]:_vm._e()],2)}),0)]},{\"messages\":_vm.messages})],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { Prop } from 'vue-property-decorator';\r\nimport bus from '@/core/bus';\r\nimport { ClientMessage, ValidationErrorEvent, ValidationErrorEventKey } from '@/core/messages/types';\r\nimport dictionaryService from '@/core/translation/dictionary.service';\r\n\r\n@Component\r\nexport default class WebApiMessage extends Vue {\r\n private messages: ClientMessage[] = [];\r\n private errorId: string = '';\r\n @Prop({\r\n required: true\r\n })\r\n private id!: string;\r\n\r\n private created() {\r\n bus.on(ValidationErrorEventKey, this.onMessages);\r\n }\r\n\r\n private onMessages(validationErrorEvent: ValidationErrorEvent) {\r\n if (validationErrorEvent.messagesId === this.id) {\r\n this.messages = validationErrorEvent.messages;\r\n this.errorId = validationErrorEvent.errorId;\r\n validationErrorEvent.handled();\r\n }\r\n }\r\n\r\n private getMessage(msgOrLabel: string): string {\r\n if (dictionaryService.exists(msgOrLabel)) {\r\n return dictionaryService.get(msgOrLabel);\r\n }\r\n return msgOrLabel;\r\n }\r\n\r\n private destroyed() {\r\n bus.off(ValidationErrorEventKey, this.onMessages);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebApiMessage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebApiMessage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./WebApiMessage.vue?vue&type=template&id=5e361244&\"\nimport script from \"./WebApiMessage.vue?vue&type=script&lang=ts&\"\nexport * from \"./WebApiMessage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('article',{staticClass:\"pt-20\",class:{ '-is-appended-to-prev-block': _vm.appendToPreviousBlock }},[_c('div',{staticClass:\"o-grid\",class:{ '-row-gutter': false }},_vm._l((_vm.filteredBlocks),function(block,index){return _c('section',{key:block._uid,staticClass:\"o-grid--item w-full md:w-1/2 mb-20\"},[_c('ContentBlockContainer',{attrs:{\"index\":index,\"alias\":block.alias,\"content\":block.content,\"width-on-screen\":50,\"aspect-ratio\":710/480,\"parent-alias\":_vm.alias,\"is-first-block\":_vm.isFirstBlock,\"use-flex-box\":_vm.isSiblingVimeoVideo(index)},on:{\"contentLoadError\":function($event){return _vm.contentLoadError(block._uid)}}})],1)}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport Component from 'vue-class-component';\r\nimport { HalfWidthBlocksViewModel, HeroBannerViewModel, JsonContent } from '@/types/contentServerContract';\r\nimport { Prop } from 'vue-property-decorator';\r\nimport ContentBlockContainer from '@/project/app/blocks/ContentBlockContainer.vue';\r\n\r\ninterface JsonContentWithUniqueKey extends JsonContent{\r\n _uid: number;\r\n}\r\n\r\n@Component({\r\n components: { ContentBlockContainer }\r\n})\r\nexport default class HalfWidthBlocks extends Vue {\r\n private failingBlocks: number[] = [];\r\n\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: HalfWidthBlocksViewModel;\r\n\r\n @Prop(String) alias!: string;\r\n\r\n @Prop({ required: true, type: Boolean })\r\n isFirstBlock!: boolean;\r\n\r\n // Vimeo videos are not allowed to be cropped, therefor we always respect their aspect ratio\r\n // and then the sibling has to use flexbox to align to its height\r\n private isSiblingVimeoVideo(index: number) {\r\n const siblingIndex = index % 2 === 0 ? index + 1 : index - 1;\r\n const sibling = this.blocks[siblingIndex]?.content as HeroBannerViewModel;\r\n return sibling && !!sibling.vimeoVideoId;\r\n }\r\n\r\n get appendToPreviousBlock() {\r\n return this.content.appendToPreviousBlock && !this.isFirstBlock;\r\n }\r\n\r\n private get blocks(): JsonContentWithUniqueKey[] {\r\n return this.content?.blocks?.map((b, ix) => {\r\n return ({\r\n ...b,\r\n _uid: ix\r\n });\r\n }) ?? [];\r\n }\r\n\r\n private get filteredBlocks(): JsonContentWithUniqueKey[] {\r\n return this.blocks.filter(b => !this.failingBlocks.includes(b._uid));\r\n }\r\n\r\n private contentLoadError(uid: number) {\r\n this.failingBlocks.push(uid);\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HalfWidthBlocks.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HalfWidthBlocks.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./HalfWidthBlocks.vue?vue&type=template&id=721001a6&\"\nimport script from \"./HalfWidthBlocks.vue?vue&type=script&lang=ts&\"\nexport * from \"./HalfWidthBlocks.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BrandsBlock.vue?vue&type=style&index=0&lang=less&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BrandsBlock.vue?vue&type=style&index=0&lang=less&\"","module.exports = __webpack_public_path__ + \"img/map-marker-black.440a8478.svg\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{ '-is-appended-to-prev-block': _vm.appendToPreviousBlock }},[_c('div',{staticClass:\"flex flex-col\",class:[{ 'bg-white': !_vm.backgroundColor, 'p-20 md:p-30 lg:p-40': _vm.isInHalfWidth === false && _vm.content.headline, 'p-10 lg:p-20': _vm.isInHalfWidth === true && _vm.content.headline }, _vm.wrapperClass],style:(_vm.style)},[_c('div',[(_vm.content.headline)?_c('SmartHeadline',{staticClass:\"ml-15 md:ml-0 font-regular\",class:{'my-30 text-18 md:text-36': !_vm.isInHalfWidth, 'my-10 text-16 md:text-24': _vm.isInHalfWidth},attrs:{\"level\":_vm.isFirstBlock ? 'h1' : 'h2',\"style-as-h1\":_vm.isFirstBlock}},[_vm._v(\" \"+_vm._s(_vm.content.headline)+\" \")]):_vm._e()],1),_c('div',{staticClass:\"my-auto\"},[_c('div',{staticClass:\"flex flex-wrap justify-center\",class:_vm.pointsClass},_vm._l((_vm.content.uniqueSellingPointItems),function(item,ix){return _c('UniqueSellingPointItem',{key:ix,class:[_vm.itemClasses, {'my-30 px-20 md:px-30': !_vm.isInHalfWidth, 'my-10 px-10': _vm.isInHalfWidth}],attrs:{\"content\":item.content,\"text-style\":_vm.itemTextStyle}})}),1)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport { UniqueSellingPointBlocksViewModel } from '@/types/contentServerContract';\r\nimport UniqueSellingPointItem from './UniqueSellingPointItem.vue';\r\nimport { hexToRgbValues, luma } from '@/core/color/color.service';\r\nimport tailwind from '@/styling/tailwind.config';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\n\r\n@Component({\r\n components: { SmartHeadline, UniqueSellingPointItem }\r\n})\r\nexport default class UniqueSellingPointBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: UniqueSellingPointBlocksViewModel;\r\n\r\n @Prop({ required: true, type: Boolean })\r\n isFirstBlock!: boolean;\r\n\r\n @Prop({ type: Boolean })\r\n isInHalfWidth!: boolean;\r\n\r\n @Prop({ type: String })\r\n wrapperClass!: string;\r\n\r\n @Prop({ type: String })\r\n pointsClass!: string;\r\n\r\n private get appendToPreviousBlock() {\r\n return this.content.appendToPreviousBlock && !this.isFirstBlock;\r\n }\r\n\r\n private get backgroundColor() {\r\n return this.content.customBackgroundColor\r\n ? this.content.customBackgroundColor\r\n : this.content.backgroundColor ? '#' + this.content.backgroundColor : undefined;\r\n }\r\n\r\n private get textColor() {\r\n if (!this.backgroundColor) return undefined;\r\n const { red, green, blue } = hexToRgbValues(this.backgroundColor);\r\n const isDarkBackground = luma(red, green, blue) <= 0.5;\r\n return isDarkBackground ? tailwind.theme.colors.white : tailwind.theme.colors.black;\r\n }\r\n\r\n private get itemTextStyle(): Partial | undefined {\r\n return this.textColor ? { color: this.textColor } : undefined;\r\n }\r\n\r\n private get style(): Partial {\r\n return {\r\n backgroundColor: this.backgroundColor,\r\n color: this.textColor\r\n };\r\n }\r\n\r\n private get itemClasses(): string {\r\n let classes: string = '';\r\n if (this.isInHalfWidth) {\r\n if (this.content.uniqueSellingPointItems.length % 2 === 0) {\r\n classes = 'w-1/2';\r\n } else {\r\n classes = 'w-1/2 xl:w-1/3';\r\n }\r\n } else if (this.content.uniqueSellingPointItems.length % 5 === 0) {\r\n classes = 'sm:w-1/2 md:w-1/3 lg:w-1/5';\r\n } else if (this.content.uniqueSellingPointItems.length % 4 === 0) {\r\n classes = 'sm:w-1/2 md:w-1/4';\r\n } else {\r\n classes = 'sm:w-1/2 md:w-1/3';\r\n }\r\n return classes;\r\n }\r\n}\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UniqueSellingPointBlock.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UniqueSellingPointBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./UniqueSellingPointBlock.vue?vue&type=template&id=1369ca5d&\"\nimport script from \"./UniqueSellingPointBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./UniqueSellingPointBlock.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"mode\":\"out-in\",\"tag\":\"div\",\"enter-active-class\":\"animated fadeIn u-anim-dur-350\",\"leave-active-class\":\"animated fadeOut u-anim-dur-250\"}},[(!_vm.success)?_c('article',{key:\"in-progress\",class:{ '-is-appended-to-prev-block': _vm.appendToPreviousBlock }},[_c('smart-headline',{staticClass:\"text-18 md:text-34\",attrs:{\"level\":_vm.isFirstBlock ? 'h1' : 'h2',\"style-as-h1\":_vm.isFirstBlock}},[_vm._v(\" \"+_vm._s(_vm.content.headline)+\" \")]),_c('p',{staticClass:\"my-10\"},[(_vm.content.subtitle)?[_vm._v(\" \"+_vm._s(_vm.content.subtitle)+\" \")]:[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Information.CancelNewsletter.Subtitle'))+\" \")]],2),_c('ValidationObserver',{attrs:{\"tag\":\"section\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar handleSubmit = ref.handleSubmit;\nreturn [_c('form',{staticClass:\"bg-white px-20 py-15 mt-15\",on:{\"submit\":function($event){$event.preventDefault();return handleSubmit(_vm.submit)}}},[_c('p',{staticClass:\"font-bold text-15\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Information.CancelNewsletter.Email'))+\" \")]),_c('input-text',{staticClass:\"mt-20\",attrs:{\"name\":\"email\",\"type\":\"text\",\"label\":_vm._f(\"t\")('Information.CancelNewsletter.Email'),\"rules\":\"required|email\"},model:{value:(_vm.email),callback:function ($$v) {_vm.email=$$v},expression:\"email\"}}),_c('web-api-message',{attrs:{\"id\":\"sendapplicationform\"}}),_c('call-to-action',{staticClass:\"mt-20\",attrs:{\"disabled\":_vm.loading,\"text\":_vm._f(\"t\")('Information.SendApplication'),\"type\":\"submit\"}})],1)]}}],null,false,3275895775)})],1):_c('article',{key:\"success\",class:{ '-is-appended-to-prev-block': _vm.appendToPreviousBlock }},[_c('smart-headline',{staticClass:\"text-18 md:text-34\",attrs:{\"level\":_vm.isFirstBlock ? 'h1' : 'h2',\"style-as-h1\":_vm.isFirstBlock}},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Information.CancelNewsletter.SuccesTitle'))+\" \")]),_c('p',{staticClass:\"my-10 whitespace-pre-line bg-white p-20\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Information.CancelNewsletter.SuccesSubtitle'))+\" \")])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport { CancelNewsletterBlockViewModel } from '@/types/contentServerContract';\r\n\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\nimport WebApiMessage from '@/core/messages/WebApiMessage.vue';\r\nimport Api from '@/project/http/Api.service';\r\nimport loggingService from '@/core/logging.service';\r\n\r\n@Component({\r\n components: { SmartHeadline, WebApiMessage }\r\n})\r\nexport default class CancelNewsletterBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n }) content!: CancelNewsletterBlockViewModel;\r\n\r\n @Prop({\r\n required: true,\r\n type: Boolean\r\n }) isFirstBlock!: boolean;\r\n\r\n get appendToPreviousBlock() {\r\n return this.content.appendToPreviousBlock && !this.isFirstBlock;\r\n }\r\n\r\n private loading: boolean = false;\r\n private success: boolean = false;\r\n private email: string = '';\r\n\r\n private reset() {\r\n this.email = '';\r\n }\r\n\r\n private async submit() {\r\n this.loading = true;\r\n\r\n try {\r\n await Api.newsletter.unsubscribe(this.email, 'sendapplicationform');\r\n this.success = true;\r\n } catch (e) {\r\n loggingService.error(e);\r\n } finally {\r\n this.loading = false;\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CancelNewsletterBlock.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CancelNewsletterBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CancelNewsletterBlock.vue?vue&type=template&id=14aafb6b&\"\nimport script from \"./CancelNewsletterBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./CancelNewsletterBlock.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","module.exports = __webpack_public_path__ + \"img/map-marker-green.0918c2e5.svg\";","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewsArticleTeaser.vue?vue&type=style&index=0&id=f621c00e&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewsArticleTeaser.vue?vue&type=style&index=0&id=f621c00e&lang=less&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.content)?_c('article',{staticClass:\"c-campaign-list__item\"},[_c('div',{staticClass:\"bg-white h-full pb-20 relative flex flex-col\"},[_c('div',{staticClass:\"mb-20\",class:{ 'border border-white': _vm.forceImageThumb && !(_vm.content.image && _vm.content.image.url) }},[(_vm.forceImageThumb || _vm.content.image && _vm.content.image.url)?_c('ResponsiveImage',{attrs:{\"image-url\":_vm.content.image && _vm.content.image.url || '',\"focal-point\":_vm.content.image && _vm.content.image.focalPoint,\"aspect-ratio\":325/183,\"width-on-screen\":{ xs: 50,md: 33, lg: 25}}}):_vm._e()],1),_c('div',{staticClass:\"absolute w-34 h-34\",class:{'-top-10 -left-10': !_vm.iconInImage, 'top-5 left-5': _vm.iconInImage}},[(_vm.content.showIcon && _vm.content.iconUrl)?_c('div',{staticClass:\"relative select-none\"},[_c('CIcon',{staticClass:\"w-34 h-34\",attrs:{\"name\":_vm.defaultCampaignIcon,\"fill\":true,\"original\":true}}),_c('div',{staticClass:\"campaign-image__icon absolute inset-0 p-5 flex items-center justify-center\"},[(_vm.content.iconUrl)?_c('img',{directives:[{name:\"on-error\",rawName:\"v-on-error\"}],attrs:{\"src\":_vm.content.iconUrl,\"alt\":\"campaign-icon\"}}):_vm._e()])],1):_vm._e()]),_c('CultureAwareRouterLink',{staticClass:\"absolute inset-0 z-0 text-hidden-indent\",attrs:{\"to\":_vm.content.campaignUrl}},[_vm._v(\" \"+_vm._s(_vm.content.campaignName)+\" \")]),(_vm.content.campaignName)?_c('CultureAwareRouterLink',{staticClass:\"px-20\",attrs:{\"to\":_vm.content.campaignUrl}},[_c('SmartHeadline',{attrs:{\"level\":\"h3\"}},[_vm._v(\" \"+_vm._s(_vm.content.campaignName)+\" \")])],1):_vm._e(),_c('p',{staticClass:\"px-20 mb-10\",domProps:{\"innerHTML\":_vm._s(_vm.content.teaser)}}),_c('p',{staticClass:\"mt-auto px-20 mb-10\"},[(_vm.content.endDate)?[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Campaigns.EndDate',_vm.content.endDate))+\" \")]:_vm._e()],2),_c('div',{staticClass:\"px-20 relative z-1\"},[_c('CallToAction',{staticClass:\"w-full\",attrs:{\"href\":_vm.content.campaignUrl,\"text\":_vm.buttonText}})],1)],1)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport { CampaignBlockViewModel } from '@/types/contentServerContract';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\nimport dictionaryService from '@/core/translation/dictionary.service';\r\n\r\n@Component({\r\n components: { SmartHeadline }\r\n})\r\nexport default class CampaignTeaser extends Vue {\r\n @Prop({ required: true, type: Object }) content!: CampaignBlockViewModel;\r\n @Prop({ type: Boolean, default: false }) iconInImage!: boolean;\r\n @Prop({ type: Boolean, default: false }) forceImageThumb!: boolean;\r\n\r\n get buttonText():string {\r\n return this.content.buttonText || dictionaryService.get('Campaigns.DefaultButtonText');\r\n }\r\n\r\n private get defaultCampaignIcon() {\r\n return this.content.iconUrl ? 'splash-campaign-no-icon' : 'splash-campaign';\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CampaignTeaser.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CampaignTeaser.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CampaignTeaser.vue?vue&type=template&id=d5f3b642&scoped=true&\"\nimport script from \"./CampaignTeaser.vue?vue&type=script&lang=ts&\"\nexport * from \"./CampaignTeaser.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CampaignTeaser.vue?vue&type=style&index=0&id=d5f3b642&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d5f3b642\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('article',{staticClass:\"o-chrome-container flex flex-col bg-white py-40\",class:{ '-is-appended-to-prev-block': _vm.appendToPreviousBlock }},[(_vm.headline)?_c('SmartHeadline',{staticClass:\"text-15 md:text-20 text-center mb-30\",attrs:{\"level\":_vm.isFirstBlock ? 'h1' : 'h2',\"style-as-h1\":_vm.isFirstBlock}},[_vm._v(\" \"+_vm._s(_vm.headline)+\" \")]):_vm._e(),_c('div',{staticClass:\"relative\"},[(_vm.recommendedBrands.length && _vm.rendered)?[(_vm.content.isSimpleView)?[(_vm.content.isSimpleView)?_c('div',{staticClass:\"flex flex-row flex-wrap overflow-hidden justify-between h-18 md:h-35 mb-10\"},_vm._l((_vm.recommendedBrands),function(brand,index){return _c('div',{key:index,staticClass:\"c-recommendation-brand-simple--item h-18 md:h-35 mb-5 mx-3 sm:mx-10 lg:mx-20 first:ml-0 last:mr-0\"},[_c('Interceptor',{staticClass:\"h-full flex\",attrs:{\"threshold\":0.05},on:{\"visible\":function($event){return _vm.handleSlideVisible(brand)}},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar viewed = ref.viewed;\nreturn [(viewed)?_c('CultureAwareRouterLink',{staticClass:\"flex m-auto\",attrs:{\"to\":_vm.getBrandUrl(brand)},nativeOn:{\"click\":function($event){return _vm.handleClickBrand(brand)}}},[_c('img',{directives:[{name:\"show\",rawName:\"v-show\",value:(!brand.imageLoadFailed),expression:\"!brand.imageLoadFailed\"}],attrs:{\"src\":brand.brandLogo.uri,\"alt\":brand.brandName},on:{\"error\":function($event){return _vm.imageLoadError(brand)}}}),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(brand.imageLoadFailed),expression:\"brand.imageLoadFailed\"}],staticClass:\"m-auto min-h-15 min-w-15 text-18\"},[_vm._v(\" \"+_vm._s(brand.brandName)+\" \")])]):_vm._e()]}}],null,true)})],1)}),0):_vm._e()]:[_c('Swiper',{class:'swiper-' + _vm.id,attrs:{\"id\":_vm.id,\"instance-name\":_vm.id,\"options\":_vm.sliderOptions}},_vm._l((_vm.recommendedBrands),function(brand,index){return _c('SwiperSlide',{key:index,staticClass:\"c-recommendation-brand--item\"},[_c('Interceptor',{staticClass:\"h-full\",attrs:{\"threshold\":0.05},on:{\"visible\":function($event){return _vm.handleSlideVisible(brand)}},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar viewed = ref.viewed;\nreturn [(viewed)?_c('CultureAwareRouterLink',{staticClass:\"bg-gray-300 hover:bg-gray-400 u-trans u-trans-bg h-full flex flex-col pt-10 md:pt-10 pb-20 md:pb-25\",attrs:{\"to\":_vm.getBrandUrl(brand)},nativeOn:{\"click\":function($event){return _vm.handleClickBrand(brand)}}},[_c('div',{staticClass:\"flex px-10 md:w-160 h-60 m-auto\"},[_c('img',{directives:[{name:\"on-error\",rawName:\"v-on-error\"}],staticClass:\"m-auto max-w-full max-h-full\",attrs:{\"src\":brand.brandLogo.uri,\"alt\":brand.brandName}})]),_c('div',{staticClass:\"font-bold text-15 text-center px-10 md:px-20 hyphenate\"},[_vm._v(\" \"+_vm._s(brand.brandName)+\" \")]),_c('div',{staticClass:\"flex text-9 md:text-12 leading-large mt-auto\"},[_c('div',{staticClass:\"w-1/2 text-center\"},[_c('div',{staticClass:\"font-bold\"},[_vm._v(\" \"+_vm._s(_vm._f(\"localeNumber\")(brand.productCount))+\" \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Brand.Recommendations.ProductCount'))+\" \")])]),_c('div',{staticClass:\"w-1/2 text-center\"},[_c('div',{staticClass:\"font-bold\"},[_vm._v(\" \"+_vm._s(_vm._f(\"localeNumber\")(brand.categoryCount))+\" \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Brand.Recommendations.CategoryCount'))+\" \")])])])]):_vm._e()]}}],null,true)})],1)}),1),_c('button',{staticClass:\"faded-custom-swiper-button-prev hidden md:block theme-text-linkcolor\",class:_vm.prevButtonSelector,attrs:{\"slot\":\"button-prev\",\"type\":\"button\"},slot:\"button-prev\"},[_c('CIcon',{attrs:{\"name\":\"arrow-thin-left\",\"width\":\"25\",\"height\":\"25\"}})],1),_c('button',{staticClass:\"faded-custom-swiper-button-next hidden md:block theme-text-linkcolor\",class:_vm.nextButtonSelector,attrs:{\"slot\":\"button-next\",\"type\":\"button\"},slot:\"button-next\"},[_c('CIcon',{attrs:{\"name\":\"arrow-thin-right\",\"width\":\"25\",\"height\":\"25\"}})],1)]]:_c('div',{class:{'c-recommendation-brand--item': _vm.content.isSimpleView === false, 'c-recommendation-brand-simple--item h-150': _vm.content.isSimpleView === true}})],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport { CategoryRecommendationsBlockViewModel } from '@/types/contentServerContract';\r\nimport {\r\n RecommendedBrandsViewModel,\r\n RecommendedBrandViewObject\r\n} from '@/types/apiServerContract';\r\nimport loggingService from '@/core/logging.service';\r\nimport Api from '@/project/http/Api.service';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\nimport breakpointService from '@/core/responsive/breakpoints/breakpoints.service';\r\nimport ResponsiveIcon from '@/core/responsive/image/ResponsiveIcon.vue';\r\nimport responsiveProductImageService from '@/project/product/image/responsiveProductImage.service';\r\nimport { debounce } from 'lodash';\r\nimport GTMService from '@/project/tracking/gtm/GTM.service';\r\nexport interface BrandRecommendationsBlockViewModel extends Omit {\r\n brandCount: number;\r\n isSimpleView: boolean;\r\n}\r\nexport interface RecommendedBrandViewObjectExtended extends RecommendedBrandViewObject {\r\n imageLoadFailed?:boolean;\r\n}\r\n@Component({\r\n components: { ResponsiveIcon, SmartHeadline }\r\n})\r\nexport default class BrandRecommendationsBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n })\r\n private content!: BrandRecommendationsBlockViewModel;\r\n\r\n @Prop({\r\n required: false,\r\n type: Boolean,\r\n default: false\r\n })\r\n private isFirstBlock!: boolean;\r\n\r\n rendered: boolean = false;\r\n activeBreakpoint: string = '';\r\n private result: RecommendedBrandsViewModel | null = null;\r\n private debouncedTrackBrandViewed = debounce(this.doTrackBrandViewed, 500);\r\n private viewedBrands: { name: string, id: string, creative?: string }[] = [];\r\n\r\n private get sliderOptions() {\r\n return {\r\n spaceBetween: 12,\r\n slidesPerView: 'auto',\r\n slidesPerGroup: 1,\r\n slidesPerGroupAuto: true,\r\n loop: false,\r\n loopFillGroupWithBlank: false,\r\n watchSlidesVisibility: true,\r\n watchOverflow: true,\r\n setWrapperSize: true,\r\n navigation: {\r\n nextEl: '.' + this.nextButtonSelector,\r\n prevEl: '.' + this.prevButtonSelector\r\n },\r\n grabCursor: true,\r\n instanceName: this.id,\r\n observer: true,\r\n observeParents: true,\r\n observeSlideChildren: true\r\n };\r\n }\r\n\r\n private get id() {\r\n return new Date().valueOf();\r\n }\r\n\r\n private get prevButtonSelector() {\r\n return 'custom-swiper-button-prev-' + this.id;\r\n }\r\n\r\n private get nextButtonSelector() {\r\n return 'custom-swiper-button-next-' + this.id;\r\n }\r\n\r\n handleBreakpointChange() {\r\n const newBreakpoint = breakpointService.getActiveBreakpoint();\r\n if (newBreakpoint !== this.activeBreakpoint) {\r\n this.activeBreakpoint = newBreakpoint;\r\n this.rendered = false;\r\n this.$nextTick(() => this.rendered = true);\r\n }\r\n }\r\n\r\n get appendToPreviousBlock() {\r\n return this.content.appendToPreviousBlock && !this.isFirstBlock;\r\n }\r\n\r\n private async getBrandData() {\r\n try {\r\n this.result = await Api.recommendations.recommendPopularBrands({\r\n categoryIdFilterPositiveList: this.content.categoryIdFilterPositiveList,\r\n categoryIdFilterNegativeList: this.content.categoryIdFilterNegativeList,\r\n brandIdFilterList: this.content.brandIdFilterList,\r\n displayedAtLocation: this.content.displayLocation,\r\n periodDays: this.content.interval,\r\n popularityType: this.content.popularity,\r\n brandCount: this.content.brandCount\r\n });\r\n } catch (e) {\r\n loggingService.error(e);\r\n }\r\n }\r\n\r\n private getBrandUrl(brand: RecommendedBrandViewObject): string {\r\n return `/brands/${brand.brandName.toLowerCase()}`;\r\n }\r\n\r\n private get headline(): string | undefined {\r\n return this.content?.headline;\r\n }\r\n\r\n private get recommendedBrands(): RecommendedBrandViewObjectExtended[] {\r\n return this.result?.recommendedBrands || [];\r\n }\r\n\r\n resizeImageByPath(path: string): string {\r\n return responsiveProductImageService.formatImageUrl(path, responsiveProductImageService.ImageSizePlaceholderValues.W86);\r\n }\r\n\r\n private handleClickBrand(brand:RecommendedBrandViewObject) {\r\n GTMService.trackCreativeClick(brand.brandName, brand.brandName, undefined);\r\n }\r\n\r\n private handleSlideVisible(brand:RecommendedBrandViewObject) {\r\n this.viewedBrands.push({ name: brand.brandName, id: brand.brandName, creative: undefined });\r\n this.debouncedTrackBrandViewed();\r\n }\r\n\r\n private doTrackBrandViewed() {\r\n const brands = [...this.viewedBrands];\r\n this.viewedBrands = [];\r\n GTMService.trackCreativeView(brands);\r\n }\r\n\r\n private imageLoadError(brand) {\r\n brand.imageLoadFailed = true;\r\n this.$forceUpdate();\r\n }\r\n\r\n mounted() {\r\n this.getBrandData();\r\n this.activeBreakpoint = breakpointService.getActiveBreakpoint();\r\n breakpointService.addListener(this.handleBreakpointChange);\r\n this.$nextTick(() => {\r\n this.rendered = true;\r\n });\r\n }\r\n\r\n destroyed() {\r\n breakpointService.removeListener(this.handleBreakpointChange);\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BrandRecommendationsBlock.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BrandRecommendationsBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BrandRecommendationsBlock.vue?vue&type=template&id=ba161c0a&\"\nimport script from \"./BrandRecommendationsBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./BrandRecommendationsBlock.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BrandRecommendationsBlock.vue?vue&type=style&index=0&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}