{"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/ProductRecommendationsBlock.vue?7700","webpack:///./src/project/app/blocks/ProductRecommendationsBlock.vue","webpack:///./src/project/app/blocks/ProductRecommendationsBlock.vue?4754","webpack:///./src/project/app/blocks/ProductRecommendationsBlock.vue?9ba8","webpack:///./src/project/app/blocks/UniqueSellingPointItem.vue?c095","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?f889","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?692d","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/product/condensed/CondensedProductList.vue?aab0","webpack:///./src/project/app/blocks/categories/CategoryBlockItem.vue?127b","webpack:///./src/project/app/blocks/AdnuntiusHeroBannerBlock.vue?4c14","webpack:///./src/project/app/blocks/TextBlock.vue?5c9b","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?e190","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?3822","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?eaf3","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?c896","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?2230","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/project/app/content-pages/NewsArticleTeaser.vue?3c30","webpack:///./src/core/ui-components/tabs/Tab.vue?889c","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?0c72","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?3a7c","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?b078","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?9564","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?1002","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?abcf","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?0b55","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?d13c","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?9093","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?9849","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?ba54","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?6a0f","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?8b02","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/project/product/condensed/CondensedProductList.vue?8d34","webpack:///./src/project/product/condensed/CondensedProductList.vue","webpack:///./src/project/product/condensed/CondensedProductList.vue?4313","webpack:///./src/project/product/condensed/CondensedProductList.vue?b4f7","webpack:///./src/core/messages/WebApiMessage.vue?6c2e","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?5183","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?008d","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?0d46","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/CampaignTeaser.vue?83eb","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?6191","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","products","length","class","appendToPreviousBlock","attrs","headline","isFirstBlock","trackingListName","content","useListView","listViewPageSize","productBackgroundColor","_e","staticRenderFns","result","undefined","recommendations","recommend","categoryIdFilterPositiveList","categoryIdFilterNegativeList","displayedAtLocation","displayLocation","intervalDays","interval","popularityType","popularity","categoryId","productId","getQueryParam","wid","productCount","recommendationType","type","allowFillIfNecessary","brandId","hasImages","stockFilter","showFeedProducts","e","error","key","Object","keys","filter","v","isNaN","Number","find","k","$route","name","getProductData","required","Boolean","default","String","components","CondensedProductList","component","staticClass","style","linkUrl","linkTarget","isPixelImage","backgroundColorStyle","iconBackgroundColor","iconUrl","width","height","_v","_s","text","linkName","icon","url","shortText","link","target","indexOf","color","backgroundColor","isColorDefined","_l","item","ix","categoryItems","customBackgroundColor","red","green","blue","isDarkBackground","theme","colors","white","black","paddingBottom","textColor","getCategoryItems","settings","selectedAdUnitIdContent","adUnitId","personalization","categories","fullPath","getContactKey","getCustomerKey","CategoryBlockItem","SmartHeadline","brands","linkText","brandOverviewPageName","brand","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","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","header","loading","productIds","product","simpleByItemId","getProducts","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","_b","$attrs","isHalfWidthBlock","isHeroBanner","parentAlias","UniqueSellingPointBlock","AllowedBlocks","alias","$emit","isAdUnitContent","validator","includes","ImageTextVideoBlockNew","TextBlock","JotFormBlock","GoogleMapsBlock","CancelNewsletterBlock","newsImageFormat","date","teaser","SmartParagraph","quote","author","staticStyle","allowTransparency","allowFullscreen","allowScrolling","jotformSrc","jotFormId","window","addEventListener","handleIFrameMessage","removeEventListener","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","$options","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","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","brandCount","activeBreakpoint","debouncedTrackCategoryViewed","doTrackCategoryViewed","viewedCategories","slidesPerGroupAuto","newBreakpoint","getActiveBreakpoint","$nextTick","recommendByCategory","brandIdFilterList","periodDays","categoryCount","formatImageUrl","ImageSizePlaceholderValues","W86","x2","W172","trackCreativeClick","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","productImpression","productClick","productColor","relationType","itemId","page","handleNextPage","p","productBgColor","toLowerCase","setSlidesPerView","Array","ProductListTracker","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","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,OAAQF,EAAIM,SAASC,OAAS,EAAGH,EAAG,uBAAuB,CAACI,MAAM,CAAE,6BAA8BR,EAAIS,uBAAwBC,MAAM,CAAC,SAAWV,EAAIW,SAAS,iBAAiBX,EAAIY,aAAa,SAAWZ,EAAIM,SAAS,qBAAqBN,EAAIa,iBAAiB,cAAcb,EAAIc,QAAQC,YAAY,sBAAsBf,EAAIgB,iBAAiB,mBAAmBhB,EAAIc,QAAQG,0BAA0BjB,EAAIkB,MACpeC,EAAkB,G,oFCuBtB,IAAqB,EAArB,cAAyD,OAAzD,c,oBAwBY,KAAAC,OAAsC,KAVrB,4BACrB,OAAOnB,KAAKa,QAAQL,wBAA0BR,KAAKW,aAWnC,eAChB,OAAOX,KAAKmB,OAASnB,KAAKmB,OAAOd,SAAW,GAGpB,uBACxB,OAAOL,KAAKa,QAAQC,YAAc,OAAIM,EAGd,uBACxB,IACIpB,KAAKmB,aAAe,OAAIE,gBAAgBC,UAAU,CAC9CC,6BAA8BvB,KAAKa,QAAQU,6BAC3CC,6BAA8BxB,KAAKa,QAAQW,6BAC3CC,oBAAqBzB,KAAKa,QAAQa,gBAClCC,aAAc3B,KAAKa,QAAQe,SAC3BC,eAAgB7B,KAAKa,QAAQiB,WAC7BC,WAAY/B,KAAKa,QAAQkB,WACzBC,UAAWhC,KAAKgC,WAAa,OAAiBC,cAAc,OAAYC,KACxEC,aAAcnC,KAAKa,QAAQsB,aAC3BC,mBAAoBpC,KAAKa,QAAQwB,KACjCC,qBAAsBtC,KAAKa,QAAQyB,qBACnCC,QAASvC,KAAKa,QAAQ0B,QACtBC,UAAWxC,KAAKa,QAAQ2B,UACxBC,YAAazC,KAAKa,QAAQ4B,YAC1BC,iBAAkB1C,KAAKa,QAAQ6B,mBAErC,MAAOC,GACL,OAAeC,MAAMD,IAIT,qBAChB,iBAAO3C,KAAKa,eAAZ,aAAO,EAAcH,SAGG,uBACxB,MAAMmC,EAAMC,OAAOC,KAAK,QAA2BC,OAAQC,GAAMC,MAAMC,OAAOF,KAAKG,KAAKC,GAAK,OAA0BA,KAAOrD,KAAKa,QAAQwB,OAAS,iBAEpJ,MAAO,mBAAmBrC,KAAKsD,OAAOC,QAAQV,IAG1C,UACJ7C,KAAKwD,mBA/DT,gBAJC,eAAK,CACFC,UAAU,EACVpB,KAAMS,U,8BASV,gBALC,eAAK,CACFW,UAAU,EACVpB,KAAMqB,QACNC,SAAS,K,mCAYb,gBAJC,eAAK,CACFF,UAAU,EACVpB,KAAMuB,U,gCApBO,EAA2B,gBAH/C,eAAU,CACPC,WAAY,CAAEC,uBAAA,SAEG,WCxBqa,I,YCOtbC,EAAY,eACd,EACAjE,EACAoB,GACA,EACA,KACA,KACA,MAIa,aAAA6C,E,kDClBf,IAAIjE,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAAC6D,YAAY,8DAA8D,CAAEjE,EAAW,QAAEI,EAAG,4BAA4B,CAAC6D,YAAY,8EAA8EC,MAAOlE,EAAa,UAAEU,MAAM,CAAC,GAAKV,EAAImE,QAAQ,OAASnE,EAAIoE,aAAa,CAAEpE,EAAW,QAAEI,EAAG,MAAM,CAAC6D,YAAY,mDAAmDzD,MAAM,CAAC,4BAA6BR,EAAIqE,cAAcH,MAAOlE,EAAIsE,qBAAqBtE,EAAIc,QAAQyD,sBAAuB,CAACnE,EAAG,MAAM,CAAC6D,YAAY,qBAAqBzD,MAAM,CAAC,iCAAkCR,EAAIqE,cAAc3D,MAAM,CAAC,IAAMV,EAAIwE,QAAQ,MAAQxE,EAAIyE,MAAM,OAASzE,EAAI0E,OAAO,IAAM,QAAQ1E,EAAIkB,KAAMlB,EAAY,SAAEI,EAAG,KAAK,CAAC6D,YAAY,uDAAuD,CAACjE,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIW,UAAU,OAAOX,EAAIkB,KAAMlB,EAAQ,KAAEI,EAAG,IAAI,CAAC6D,YAAY,2BAA2B,CAACjE,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAI6E,MAAM,OAAO7E,EAAIkB,KAAKd,EAAG,OAAO,CAAC6D,YAAY,6DAA6D,CAACjE,EAAI2E,GAAG3E,EAAI4E,GAAG5E,EAAI8E,eAAe1E,EAAG,MAAM,CAAC6D,YAAY,sDAAsD,CAAEjE,EAAW,QAAEI,EAAG,MAAM,CAAC6D,YAAY,mDAAmDzD,MAAM,CAAC,4BAA6BR,EAAIqE,cAAcH,MAAOlE,EAAIsE,qBAAqBtE,EAAIc,QAAQyD,sBAAuB,CAACnE,EAAG,MAAM,CAAC6D,YAAY,qBAAqBzD,MAAM,CAAC,wBAAyBR,EAAIqE,cAAc3D,MAAM,CAAC,IAAMV,EAAIwE,QAAQ,MAAQxE,EAAIyE,MAAM,OAASzE,EAAI0E,OAAO,IAAM,QAAQ1E,EAAIkB,KAAMlB,EAAY,SAAEI,EAAG,KAAK,CAAC6D,YAAY,uDAAuD,CAACjE,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIW,UAAU,OAAOX,EAAIkB,KAAMlB,EAAQ,KAAEI,EAAG,IAAI,CAAC6D,YAAY,2BAA2B,CAACjE,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAI6E,MAAM,OAAO7E,EAAIkB,QAAQ,IACn0DC,EAAkB,G,oCC0CtB,IAAqB,EAArB,cAAoD,aAS7B,oBACf,iBAAOlB,KAAKa,QAAQiE,YAApB,aAAO,EAAmBC,IAGV,qBAChB,iBAAO/E,KAAKa,eAAZ,aAAO,EAAcH,SAGT,iBACZ,iBAAOV,KAAKa,eAAZ,aAAO,EAAcmE,UAGN,oBACf,iBAAOhF,KAAKa,QAAQoE,YAApB,aAAO,EAAmBF,IAGR,uBAClB,iBAAO/E,KAAKa,QAAQoE,YAApB,aAAO,EAAmBC,OAGV,qBAChB,iBAAOlF,KAAKa,QAAQoE,YAApB,aAAO,EAAmB1B,KAGN,mBACpB,OAAyC,IAAlCvD,KAAKuE,QAAQY,QAAQ,UAAqD,IAAnCnF,KAAKuE,QAAQY,QAAQ,WAAqD,IAAlCnF,KAAKuE,QAAQY,QAAQ,QAG9F,YACb,OAAOnF,KAAKoE,aAAe,GAAK,GAGlB,aACd,OAAOpE,KAAKoE,aAAe,GAAK,GAGpC,eAAegB,GAAa,MACxB,iBAAyB,KAAb,OAALA,QAAK,IAALA,OAAA,EAAAA,EAAO9E,eAAd,SAGI,qBAAqB+E,GACzB,IAAIlE,EAAS,GAMb,OAJInB,KAAKsF,eAAeD,KACpBlE,EAASkE,GAGL,CACJA,gBAAiBlE,KArDtB,gBAHF,eAAK,CACFsC,UAAU,EACVpB,KAAMS,U,8BAIV,gBADC,kB,gCANgB,EAAsB,gBAD1C,QACoB,WC3Cga,I,wBCQjbiB,EAAY,eACd,EACAjE,EACAoB,GACA,EACA,KACA,KACA,MAIa,aAAA6C,E,oDCnBf,IAAIjE,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAACI,MAAM,CAAE,6BAA8BR,EAAIS,wBAAyB,CAACL,EAAG,iBAAiB,CAAC6D,YAAY,sDAAsDvD,MAAM,CAAC,MAAQV,EAAIY,aAAe,KAAO,KAAK,cAAcZ,EAAIY,eAAe,CAACZ,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIc,QAAQH,UAAU,OAAOP,EAAG,MAAM,CAAC6D,YAAY,gCAAgCC,MAAOlE,EAAS,OAAGA,EAAIwF,GAAIxF,EAAiB,eAAE,SAASyF,EAAKC,GAAI,OAAOtF,EAAG,sBAAsB,CAAC0C,IAAI4C,EAAGhF,MAAM,CAAC,QAAU+E,QAAU,IAAI,IACjkBtE,EAAkB,G,yGCwBtB,IAAqB,EAArB,cAA2C,OAA3C,c,oBAoCY,KAAAwE,cAAyC,GAzBhB,4BAC7B,OAAO1F,KAAKa,QAAQL,wBAA0BR,KAAKW,aAG5B,sBACvB,OAAOX,KAAKa,QAAQ8E,sBACd3F,KAAKa,QAAQ8E,sBACb3F,KAAKa,QAAQwE,gBAAkB,IAAMrF,KAAKa,QAAQwE,qBAAkBjE,EAGzD,gBACjB,IAAKpB,KAAKqF,gBAAiB,OAC3B,MAAM,IAAEO,EAAF,MAAOC,EAAP,KAAcC,GAAS,eAAe9F,KAAKqF,iBAC3CU,EAAmB,eAAKH,EAAKC,EAAOC,IAAS,GACnD,OAAOC,EAAmB,IAASC,MAAMC,OAAOC,MAAQ,IAASF,MAAMC,OAAOE,MAGjE,YACb,MAAO,CACHd,gBAAiBrF,KAAKqF,mBAClBrF,KAAKqF,iBAAmB,CAAEe,cAAe,QAC7ChB,MAAOpF,KAAKqG,WAMZ,UACJrG,KAAKsG,iBAAiBtG,KAAKa,QAAQ0F,SAASC,wBAAwBC,UAG1C,uBAACA,GAC3BzG,KAAK0F,oBAAsB,OAAIgB,gBAAgBC,WAC3CF,EACAzG,KAAKsD,OAAOsD,SACZ,OAAiBC,gBACjB,OAAiBC,oBA3CtB,gBAHF,eAAK,CACFrD,UAAU,EACVpB,KAAMS,U,8BAMP,gBAHF,eAAK,CACFW,UAAU,EACVpB,KAAMqB,W,mCARO,EAAa,gBAHjC,eAAU,CACPG,WAAY,CAAEkD,oBAAA,KAAmBC,gBAAA,SAEhB,WCzBya,I,YCO1bjD,EAAY,eACd,EACAjE,EACAoB,GACA,EACA,KACA,KACA,MAIa,aAAA6C,E,oDClBf,IAAIjE,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAIkH,QAAUlH,EAAIkH,OAAO3G,OAAS,EAAGH,EAAG,UAAU,CAAC6D,YAAY,mCAAmCzD,MAAM,CAAE,6BAA8BR,EAAIS,wBAAyB,CAACL,EAAG,MAAM,CAAC6D,YAAY,2BAA2B,CAAEjE,EAAIc,QAAgB,SAAEV,EAAG,gBAAgB,CAAC6D,YAAY,qBAAqBvD,MAAM,CAAC,MAAQV,EAAIY,aAAe,KAAO,KAAK,cAAcZ,EAAIY,eAAe,CAACZ,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIc,QAAQH,UAAU,OAAOX,EAAIkB,KAAMlB,EAAIc,QAAgB,SAAEV,EAAG,MAAM,CAAC6D,YAAY,0BAA0B,CAAC7D,EAAG,eAAe,CAAC6D,YAAY,kBAAkBvD,MAAM,CAAC,KAAOV,EAAIc,QAAQqG,SAAS,KAAO,CAAE3D,KAAMxD,EAAIoH,2BAA4B,GAAGpH,EAAIkB,MAAM,GAAGd,EAAG,KAAK,CAAC6D,YAAY,kBAAkB,CAAEjE,EAAa,UAAEI,EAAG,KAAK,CAAC6D,YAAY,cAAcjE,EAAIkB,KAAKlB,EAAIwF,GAAIxF,EAAU,QAAE,SAASqH,GAAO,OAAOjH,EAAG,KAAK,CAAC0C,IAAIuE,EAAM7E,QAAQyB,YAAY,qCAAqC,CAAC7D,EAAG,yBAAyB,CAAC6D,YAAY,2DAA2DvD,MAAM,CAAC,GAAK,CAAE8C,KAAMxD,EAAIsH,cAAeC,OAAQ,CAAEC,UAAWH,EAAMG,cAAgB,CAACpH,EAAG,MAAM,CAACqH,WAAW,CAAC,CAACjE,KAAK,OAAOkE,QAAQ,SAASC,OAAQN,EAAMO,gBAAiBC,WAAW,2BAA2B5D,YAAY,0BAA0BvD,MAAM,CAAC,IAAM2G,EAAMS,SAAS,IAAMT,EAAMG,WAAWO,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOhI,EAAIiI,eAAeZ,OAAWjH,EAAG,OAAO,CAACI,MAAM,CAAE,WAAY6G,EAAMO,kBAAmB,CAACxH,EAAG,OAAO,CAAC6D,YAAY,WAAW,CAACjE,EAAI2E,GAAG3E,EAAI4E,GAAG5E,EAAIkI,GAAG,IAAPlI,CAAY,8CAA8CA,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAGyC,EAAMG,WAAW,UAAU,OAAM,GAAIxH,EAAIc,QAAgB,SAAEV,EAAG,MAAM,CAAC6D,YAAY,aAAa,CAAC7D,EAAG,eAAe,CAAC6D,YAAY,kBAAkBvD,MAAM,CAAC,KAAOV,EAAIc,QAAQqG,SAAS,KAAO,CAAE3D,KAAMxD,EAAIsH,mBAAoB,GAAGtH,EAAIkB,OAAOlB,EAAIkB,MAC7yDC,EAAkB,G,oCCKtB,SAASgH,EAAqBnD,GAC1B,MAAMoD,EAAaC,IAEbC,EAAQtD,EAAIsD,MAAMF,GACxB,OAAIE,GAA0B,IAAjBA,EAAM/H,OACR+H,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,KAAAxB,OAAgD,GAJ/B,4BACrB,OAAOjH,KAAKa,QAAQL,wBAA0BR,KAAKW,aAK9B,oBACrB,OAAO,OAAS+H,MAGa,4BAC7B,OAAO,OAASC,eAGO,sBACvB,MAAMC,EAAoB,EAAmBV,qBAAqBlI,KAAKsD,OAAOuF,MACxE1H,QAAe,OAAI2H,SAASC,WAAWH,GAC7C5I,KAAKiH,OAAS9F,EAAO4H,WACrB/I,KAAKyI,WAAY,EAGH,qBACd,OAAO,OAAYO,aAGf,eAAe5B,GACnBA,EAAMO,iBAAkB,EACxB3H,KAAKiJ,eAGT,UACIjJ,KAAKkJ,kBAxCN,gBAHF,eAAK,CACFzF,UAAU,EACVpB,KAAMS,U,8BAMP,gBAHF,eAAK,CACFW,UAAU,EACVpB,KAAMqB,W,mCARO,EAAW,gBAH/B,eAAU,CACPG,WAAY,CAAEmD,gBAAA,SAEG,WChDqZ,I,wBCQtajD,EAAY,eACd,EACAjE,EACAoB,GACA,EACA,KACA,KACA,MAIa,aAAA6C,E,2CCnBf,yBAA+lB,EAAG,G,sFCAlmB,yBAAinB,EAAG,G,oCCApnB,yBAA2kB,EAAG,G,kECA9kB,IAAIjE,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAAC6D,YAAY,SAASzD,MAAM,CAAE,sCAAuCR,EAAIsF,iBAAkBpB,MAAM,CAAG,mBAAoBlE,EAAIsF,kBAAoB,CAAClF,EAAG,MAAM,CAACA,EAAG,MAAM,CAAEJ,EAAIc,QAAgB,SAAEV,EAAG,iBAAiB,CAAC6D,YAAY,QAAQvD,MAAM,CAAC,MAAQV,EAAIY,aAAe,KAAO,KAAK,cAAcZ,EAAIY,eAAe,CAACZ,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIc,QAAQH,UAAU,OAAOX,EAAIkB,KAAKd,EAAG,UAAU,CAACqH,WAAW,CAAC,CAACjE,KAAK,sBAAsBkE,QAAQ,0BAA0B0B,IAAI,cAAcnF,YAAY,qBAAqBoF,SAAS,CAAC,UAAYrJ,EAAI4E,GAAG5E,EAAIsJ,SAAStJ,EAAIc,QAAQwI,cAAetJ,EAAIc,QAAoB,aAAEV,EAAG,iBAAiB,CAAC6D,YAAY,qBAAqBvD,MAAM,CAAC,YAAYV,EAAIc,QAAQyI,kBAAkB,KAAOvJ,EAAIc,QAAQ0I,aAAahG,KAAK,KAAOxD,EAAIc,QAAQ0I,aAAaxE,IAAI,OAAShF,EAAIc,QAAQ0I,aAAarE,UAAUnF,EAAIkB,MAAM,QACt6BC,EAAkB,G,gDC4BtB,IAAqB,EAArB,cAAuC,OAYR,sBACvB,OAAOlB,KAAKa,QAAQwE,gBAAkB,IAAIrF,KAAKa,QAAQwE,gBAAoB,KAGvE,SAASmE,GACb,OAAO,OAAiBC,qBAAqBD,GAOzC,UACJ,OAAiBE,sBAAsB1J,KAAK2J,MAAMC,aAG9C,gBACJ,OAAiBC,wBAAwB7J,KAAK2J,MAAMC,eAzBrD,gBAHF,eAAK,CACFnG,UAAU,EACVpB,KAAMS,U,8BAOP,gBAJF,eAAK,CACFW,UAAU,EACVE,SAAS,EACTtB,KAAMqB,W,mCATO,EAAS,gBAH7B,eAAU,CACPG,WAAY,CAAEmD,gBAAA,SAEG,WC7BmZ,I,YCOpajD,EAAY,eACd,EACAjE,EACAoB,GACA,EACA,KACA,KACA,MAIa,aAAA6C,E,gGCVf,IAAI+F,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,EAASjG,MAAQiG,EAAShG,OAC9CiG,IAAoBZ,IACxBA,EAAkBY,EAElBX,EAAkBY,QAAQC,IACtBX,EAAuBW,EAAEV,MAAOU,EAAET,YAI1C,SAAST,EAAsBmB,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,SAASN,EAAwBgB,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,SAASf,EAAqBD,GAC1B,SAAS+B,KAAejE,GACpB,MAAO,gCAAgCA,EAAO,iBAGlD,MAAMkE,EAAY,iCAElB,OAAOhC,EAAKlB,QAAQkD,EAAWD,GAGpB,QACX7B,wBACAG,0BACAJ,yB,oCC3EJ,IAAI3J,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,kBAAkB,CAAC6D,YAAY,uFAAuFvD,MAAM,CAAC,eAAeV,EAAIc,QAAQ4K,iBAAiB,cAAc1L,EAAIc,QAAQ6K,gBAAgB,WAAW3L,EAAIc,QAAQ8K,aAAa,YAAY5L,EAAIc,QAAQ+K,eAAeC,YAAY9L,EAAI+L,GAAG,CAAC,CAACjJ,IAAI,UAAUkJ,GAAG,SAAS5C,GAChb,IAAI6C,EAAQ7C,EAAI6C,MAChB,MAAO,CAAEjM,EAAe,YAAEI,EAAG,yBAAyB,CAAC6D,YAAY,oEAAoEvD,MAAM,CAAC,GAAKV,EAAIkM,YAAY,OAAS,QAAQC,SAAS,CAAC,MAAQ,SAASnE,GAAQ,OAAOiE,EAAMG,MAAM,KAAMC,cAAc,CAACjM,EAAG,MAAM,CAAC6D,YAAY,gEAAgE,CAAC7D,EAAG,MAAM,CAACM,MAAM,CAAC,IAAMV,EAAI+E,KAAK,IAAM/E,EAAIc,QAAQwL,yBAAyBlM,EAAG,OAAO,CAAC6D,YAAY,WAAW,CAACjE,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIkI,GAAG,IAAPlI,CAAY,2CAA2C,OAAOI,EAAG,IAAI,CAAC6D,YAAY,6DAA6D,CAACjE,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIc,QAAQwL,qBAAqB,KAAKlM,EAAG,QAAQ,CAAC6D,YAAY,8BAA8BvD,MAAM,CAAC,KAAO,cAAc,MAAQ,IAAI,OAAS,QAAQ,KAAKV,EAAIkB,aAClxBC,EAAkB,G,4DCsCtB,IAAqB,EAArB,cAA+C,OAA/C,c,oBAKY,KAAA+K,YAA6B,KAErB,WACZ,OAAOjM,KAAKa,QAAQiE,KAAKC,IAGL,mBACpB,IAAIA,EACJ,MAAMuH,EAActM,KAAKa,QAAQkE,UAAY,OAAgBwH,kBAAkBvM,KAAKa,QAAQkE,KAAO,KAQnG,OALIA,EADA/E,KAAKa,QAAQkE,IAAKI,QAAQ,OAAS,GAAKmH,EAClCA,EAEAtM,KAAKa,QAAQkE,IAGhBA,EAGiB,6BACxB,iBAAO/E,KAAKa,eAAZ,aAAO,EAAc4K,iBAGD,yBACpB,iBAAOzL,KAAKa,eAAZ,aAAO,EAAc8K,aAGE,4BACvB,iBAAO3L,KAAKa,eAAZ,aAAO,EAAc6K,gBAGA,0BACrB,iBAAO1L,KAAKa,eAAZ,aAAO,EAAc+K,cAGZ,gBACT5L,KAAKiM,kBAAoBjM,KAAKwM,eAtC/B,gBAFF,eAAK,CACFnK,KAAMS,U,8BAFO,EAAiB,gBAHrC,eAAU,CACPe,WAAY,CAAE4I,kBAAA,SAEG,WCzC6a,I,wBCQ9b1I,EAAY,eACd,EACAjE,EACAoB,GACA,EACA,KACA,WACA,MAIa,OAAA6C,E,kDCnBf,IAAIjE,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAIM,SAASC,OAAS,EAAGH,EAAG,uBAAuB,CAACM,MAAM,CAAC,SAAWV,EAAIc,QAAQ6L,OAAO,iBAAiB3M,EAAIY,aAAa,SAAWZ,EAAIM,SAAS,aAAa,GAAG,qBAAsB,oBAAuBN,EAAIuD,OAAW,KAAG,mBAAmBvD,EAAIc,QAAQG,0BAA0BjB,EAAIkB,MAC5XC,EAAkB,G,4DCoBtB,IAAqB,EAArB,cAA8C,OAA9C,c,oBAYY,KAAAb,SAAoC,GACpC,KAAAsM,SAAmB,EAEF,oBACrB,GAAuC,IAAnC3M,KAAKa,QAAQ+L,WAAWtM,OAA5B,CAEAN,KAAK2M,SAAU,EAEf,IACI,MAAMxL,QAAe,OAAI0L,QAAQC,eAAe9M,KAAKa,QAAQ+L,YAC7D5M,KAAKK,SAAWc,EAAOd,SAF3B,QAIIL,KAAK2M,SAAU,IAIf,UACJ3M,KAAK+M,gBAzBN,gBAHF,eAAK,CACFtJ,UAAU,EACVpB,KAAMS,U,8BAOP,gBAJF,eAAK,CACFW,UAAU,EACVpB,KAAMqB,QACNC,SAAS,K,mCATI,EAAgB,gBAHpC,eAAU,CACPE,WAAY,CAAEmD,gBAAA,KAAelD,uBAAA,SAEZ,WCrB0Z,I,YCO3aC,EAAY,eACd,EACAjE,EACAoB,GACA,EACA,KACA,KACA,MAIa,aAAA6C,E,oDClBf,IAAIjE,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAAC6D,YAAY,oCAAoC,CAAEjE,EAAIc,QAAQH,UAAYX,EAAIiN,KAAK1M,OAAQH,EAAG,gBAAgB,CAAC6D,YAAY,QAAQvD,MAAM,CAAC,MAAQV,EAAIY,aAAe,KAAO,KAAK,cAAcZ,EAAIY,eAAe,CAACZ,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIc,QAAQH,UAAU,OAAOX,EAAIkB,KAAKd,EAAG,SAAS,CAACI,MAAM,UAAYR,EAAIkN,GAAGxM,MAAM,CAAC,GAAKV,EAAIkN,GAAG,gBAAgBlN,EAAIkN,GAAG,QAAUlN,EAAImN,gBAAgBnN,EAAIwF,GAAIxF,EAAQ,MAAE,SAASiN,EAAKG,GAAO,OAAOhN,EAAG,cAAc,CAAC0C,IAAIsK,EAAMnJ,YAAY,gBAAgB,CAAC7D,EAAG,oBAAoB,CAACM,MAAM,CAAC,KAAOuM,MAAS,MAAK,GAAG7M,EAAG,SAAS,CAAC6D,YAAY,4CAA4CzD,MAAMR,EAAIqN,mBAAmB3M,MAAM,CAAC,KAAO,cAAc,KAAO,UAAU4M,KAAK,eAAe,CAAClN,EAAG,QAAQ,CAACM,MAAM,CAAC,KAAO,kBAAkB,MAAQ,KAAK,OAAS,SAAS,GAAGN,EAAG,SAAS,CAAC6D,YAAY,4CAA4CzD,MAAMR,EAAIuN,mBAAmB7M,MAAM,CAAC,KAAO,cAAc,KAAO,UAAU4M,KAAK,eAAe,CAAClN,EAAG,QAAQ,CAACM,MAAM,CAAC,KAAO,mBAAmB,MAAQ,KAAK,OAAS,SAAS,IAAI,IACvmCS,EAAkB,G,gDC8BtB,IAAqB,EAArB,cAA6C,OAYzB,WACZ,MAAO,CAAClB,KAAKa,QAAQ0M,aAAcvN,KAAKa,QAAQmM,MAGtC,SACV,MAAO,sBAAuB,IAAIQ,MAAOC,UAGf,yBAC1B,MAAO,6BAA+BzN,KAAKiN,GAGjB,yBAC1B,MAAO,6BAA+BjN,KAAKiN,GAGtB,oBACrB,MAAO,CACHS,aAAc,GACdC,cAAe,OACfC,eAAgB,EAChBC,MAAM,EACNC,wBAAwB,EACxBC,uBAAuB,EACvBC,eAAe,EACfC,gBAAgB,EAChBC,WAAY,CACRC,OAAQ,IAAMnO,KAAKsN,mBACnBc,OAAQ,IAAMpO,KAAKoN,oBAEvBiB,YAAY,EACZC,aAActO,KAAKiN,GACnBsB,UAAU,EACVC,gBAAgB,EAChBC,sBAAsB,KA1C3B,gBAHF,eAAK,CACFhL,UAAU,EACVpB,KAAMS,U,8BAOP,gBAJF,eAAK,CACFW,UAAU,EACVE,SAAS,EACTtB,KAAMqB,W,mCATO,EAAe,gBAHnC,eAAU,CACPG,WAAY,CAAE6K,oBAAA,KAAmB1H,gBAAA,SAEhB,WC/ByZ,I,wBCQ1ajD,EAAY,eACd,EACAjE,EACAoB,GACA,EACA,KACA,WACA,MAIa,aAAA6C,E,6ECnBf,IAAIjE,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAAC6D,YAAY,mCAAmC,CAAEjE,EAAIc,QAAa,MAAEV,EAAG,MAAM,CAAC6D,YAAY,yBAAyBzD,MAAM,CAAC,sBAAwBR,EAAIc,QAAQ8N,gBAAiB,YAAc5O,EAAIc,QAAQ8N,kBAAkB,CAACxO,EAAG,mBAAmB,CAACM,MAAM,CAAC,YAAYV,EAAIc,QAAQ+N,MAAM7J,IAAI,OAAShF,EAAI8O,YAAY,KAAO,OAAO,cAAc9O,EAAIc,QAAQ+N,MAAME,WAAW,IAAM,OAAO,GAAG/O,EAAIkB,KAAKd,EAAG,MAAM,CAACI,MAAM,CAAC,yBAA2BR,EAAIc,QAAQ+N,MAAO,WAAa7O,EAAIc,QAAQ8N,iBAAmB5O,EAAIc,QAAQ+N,MAAO,YAAc7O,EAAIc,QAAQ8N,iBAAmB5O,EAAIc,QAAQ+N,MAAO,UAAY7O,EAAIc,QAAQ+N,QAAQ,CAACzO,EAAG,MAAM,CAAC6D,YAAY,mDAAmD,CAAEjE,EAAIc,QAAgB,SAAEV,EAAG,iBAAiB,CAAC6D,YAAY,4CAA4CzD,MAAM,CAAC,iBAAmBR,EAAIc,QAAQkO,aAAa9K,MAAM,CAAE,MAAUlE,EAAIiP,eAAgBvO,MAAM,CAAC,MAAQV,EAAIY,aAAe,KAAO,OAAO,CAACZ,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIc,QAAQH,UAAU,OAAOX,EAAIkB,KAAMlB,EAAIc,QAAmB,YAAEV,EAAG,iBAAiB,CAAC6D,YAAY,mBAAmBzD,MAAM,CAAC,iBAAmBR,EAAIc,QAAQ+D,MAAMX,MAAM,CAAE,MAAUlE,EAAIkP,kBAAmBxO,MAAM,CAAC,MAAQV,EAAIY,aAAe,KAAO,OAAO,CAACZ,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIc,QAAQkO,aAAa,OAAOhP,EAAIkB,KAAMlB,EAAIc,QAAY,KAAEV,EAAG,MAAM,CAACqH,WAAW,CAAC,CAACjE,KAAK,sBAAsBkE,QAAQ,0BAA0BzD,YAAY,iEAAiEzD,MAAM,CAAC,iBAAmBR,EAAIc,QAAQ0I,cAActF,MAAM,CAAE,MAAUlE,EAAIsG,WAAY+C,SAAS,CAAC,UAAYrJ,EAAI4E,GAAG5E,EAAIc,QAAQ+D,SAAS7E,EAAIkB,KAAMlB,EAAIc,QAAoB,aAAEV,EAAG,iBAAiB,CAAC6D,YAAY,eAAevD,MAAM,CAAC,YAAYV,EAAIc,QAAQyI,kBAAkB,KAAOvJ,EAAIc,QAAQ0I,aAAahG,KAAK,KAAOxD,EAAIc,QAAQ0I,aAAaxE,IAAI,OAAShF,EAAIc,QAAQ0I,aAAarE,UAAUnF,EAAIkB,MAAM,QAC/4DC,EAAkB,G,gDC8CtB,IAAqB,EAArB,cAAgD,OAWnB,0BACrB,iBAAOlB,KAAKa,QAAQmO,qBAApB,QAAqC,KAGb,6BACxB,iBAAOhP,KAAKa,QAAQoO,wBAApB,QAAwC,KAGvB,sBACjB,iBAAOjP,KAAKa,QAAQwF,iBAApB,QAAiC,KAGd,wBACnB,OAAO,eAAyB,UAACrG,KAAKa,eAAN,aAAC,EAAc+N,SApBhD,gBAHF,eAAK,CACFnL,UAAU,EACVpB,KAAMS,U,8BAMP,gBAHF,eAAK,CACFW,UAAU,EACVpB,KAAMqB,W,mCARO,EAAkB,gBAHtC,eAAU,CACPG,WAAY,CAAEmD,gBAAA,SAEG,WC/C4Z,I,wBCQ7ajD,EAAY,eACd,EACAjE,EACAoB,GACA,EACA,KACA,KACA,MAIa,aAAA6C,E,6CCnBf,yBAAmkB,EAAG,G,yCCAtkB,IAAIjE,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAAC6D,YAAY,wBAAwBzD,MAAM,CAAE,eAAgBR,EAAImP,iBAAkB,6BAA8BnP,EAAIS,uBAAwByD,MAAOlE,EAAe,aAAG,CAAEA,EAAa,UAAEI,EAAG,MAAM,CAAC6D,YAAY,eAAeC,MAAOlE,EAAqB,kBAAEU,MAAM,CAAC,IAAMV,EAAIoP,UAAU,IAAM,MAAMpP,EAAIkB,KAAMlB,EAAc,WAAEI,EAAG,MAAM,CAAC6D,YAAY,eAAeC,MAAOlE,EAAsB,mBAAEU,MAAM,CAAC,IAAMV,EAAIqP,WAAW,IAAM,MAAMrP,EAAIkB,KAAKd,EAAG,MAAM,CAAC6D,YAAY,gBAAgBzD,MAAM,CAAE,cAAeR,EAAImP,iBAAkB,qBAAuBnP,EAAIY,aAAc0O,OAAQtP,EAAIuP,mBAAoB,CAACnP,EAAG,kBAAkB,CAACM,MAAM,CAAC,eAAeV,EAAI0L,iBAAiB,cAAc1L,EAAI2L,gBAAgB,WAAW3L,EAAI4L,aAAa,YAAY5L,EAAI6L,cAAc,gBAAgB7L,EAAIwP,uBAAuB1D,YAAY9L,EAAI+L,GAAG,CAAC,CAACjJ,IAAI,UAAUkJ,GAAG,SAAS5C,GAC76B,IAAI6C,EAAQ7C,EAAI6C,MAChB,MAAO,CAAEjM,EAA2B,wBAAEI,EAAG,sBAAsB,CAACM,MAAM,CAAC,QAAUV,EAAIyP,wBAAwB,qBAAqBzP,EAAIuP,iBAAiB,kBAAkB,IAAI,eAAevP,EAAI0P,YAAY,iBAAiB1P,EAAIY,aAAa,mCAAkC,EAAK,gBAAgBqL,GAAOlE,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAOhI,EAAI2P,kBAAkB3P,EAAIkB,aAAa,MACpXC,EAAkB,G,oFC2CtB,IAAqB,EAArB,cAAsD,OAAtD,c,oBACY,KAAAsO,wBAAkE,KAClE,KAAAF,kBAAmB,EACnB,KAAAC,sBAAsD,KAYrC,4BACrB,OAAOvP,KAAKa,QAAQL,wBAA0BR,KAAKW,aAG/C,UACJX,KAAK2P,aAAa3P,KAAKa,QAAQ0F,SAASC,wBAAwBC,UAG5D,cAGJmJ,WAAW,KACP,OAAaC,kBACd,KAGmB,mBAACpJ,GACvB,IACI,MAAM+I,QAAiE,OAAiBM,8BACpFrJ,EACAzG,KAAKsD,OAAOsD,UAChB4I,EAAwBO,oBAAsBP,EAAwBQ,aAElER,EAAwBS,qBAAuBT,EAAwBU,iBAAmBV,EAAwBjG,eAClHiG,EAAwBjG,kBAAenI,GAE3CpB,KAAKwP,wBAA0BA,EAE3BxP,KAAKW,cACL,OAAawP,WAAWnQ,KAAKwP,yBAG7BxP,KAAKwP,wBAAwBY,YAAcpQ,KAAKwP,wBAAwBa,aACxErQ,KAAKuP,sBAAwB,CACzBa,WAAYpQ,KAAKwP,wBAAwBY,WACzCC,WAAYrQ,KAAKwP,wBAAwBa,WACzCC,iBAAkB,4BAG5B,MACEtQ,KAAKsP,kBAAmB,GAIJ,uBACxB,OAAO,OAAaiB,kBAGD,kBACnB,OAAOvQ,KAAKkP,iBAAoB,KAAO,IAAQ,EAG5B,0BACnB,GAAI,UAAClP,KAAKwP,+BAAN,OAAC,EAA8BgB,YAEnC,MAAO,CACHnL,gBAAe,UAAErF,KAAKwP,+BAAP,aAAE,EAA8BgB,aAIlC,wBACjB,iBAAOxQ,KAAKwP,+BAAZ,iBAAO,EAA8BiB,iBAArC,aAAO,EAAyC1L,IAG1B,qBACtB,OAAO2L,KAAKC,MAAM,OAAcC,oBAAsB,GAG7B,8BACzB,GAAI,UAAC5Q,KAAKwP,+BAAN,OAAC,EAA8BiB,UAEnC,MAAO,CACHI,UAAW,0CAA0C7Q,KAAKwP,wBAAwBiB,UAAUjM,aAAaxE,KAAK8Q,sBAIhG,yBAClB,iBAAO9Q,KAAKwP,+BAAZ,iBAAO,EAA8BuB,kBAArC,aAAO,EAA0ChM,IAGvB,+BAC1B,GAAI,UAAC/E,KAAKwP,+BAAN,OAAC,EAA8BuB,WAEnC,MAAO,CACHF,UAAW,0CAA0C7Q,KAAKwP,wBAAwBuB,WAAWvM,aAAaxE,KAAK8Q,sBAI3F,6BACxB,iBAAO9Q,KAAKwP,+BAAZ,aAAO,EAA8B/D,iBAGjB,yBACpB,iBAAOzL,KAAKwP,+BAAZ,aAAO,EAA8B7D,aAGd,4BACvB,iBAAO3L,KAAKwP,+BAAZ,aAAO,EAA8B9D,gBAGhB,0BACrB,iBAAO1L,KAAKwP,+BAAZ,aAAO,EAA8B5D,gBA5GtC,gBAHF,eAAK,CACFnI,UAAU,EACVpB,KAAMS,U,8BAMP,gBAHF,eAAK,CACFW,UAAU,EACVpB,KAAMqB,W,mCAZO,EAAwB,gBAH5C,eAAU,CACPG,WAAY,CAAE4I,kBAAA,KAAiBuE,sBAAA,SAEd,WC9Cka,I,wBCQnbjN,EAAY,eACd,EACAjE,EACAoB,GACA,EACA,KACA,KACA,MAIa,aAAA6C,E,2CCnBf,yBAA4lB,EAAG,G,6DCA/lB,IAAIjE,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAa,UAAEI,EAAG,MAAM,CAACqH,WAAW,CAAC,CAACjE,KAAK,OAAOkE,QAAQ,SAASC,MAAO3H,EAAU,OAAE6H,WAAW,YAAY,CAAC7H,EAAIkR,GAAG,YAAY,GAAIlR,EAAU,OAAEI,EAAG,MAAM,CAACJ,EAAIkR,GAAG,YAAY,GAAGlR,EAAIkB,MAClRC,EAAkB,G,oCCgBtB,IAAqB,EAArB,cAAiC,OAAjC,c,oBAMY,KAAAgQ,OAAkBlR,KAAKmR,SAExB,OAAOD,GACVlR,KAAKkR,OAASA,EAEVA,GAAUlR,KAAKoR,MACX,OAAiBC,YAAcrR,KAAKoR,MACpC,OAAiBE,QAAQtR,KAAKoR,MAKvB,eACf,OAAOpR,KAAKkR,SAlBwB,gBAAvC,eAAK,CAAE7O,KAAMuB,OAAQH,UAAU,K,2BACR,gBAAvB,eAAK,CAAEpB,KAAMuB,U,2BAC2B,gBAAxC,eAAK,CAAEvB,KAAMqB,QAASC,SAAS,K,+BACS,gBAAxC,eAAK,CAAEtB,KAAMqB,QAASC,SAAS,K,gCAJf,EAAG,gBAHvB,eAAU,CACPJ,KAAM,SAEW,WCjB6Y,I,YCO9ZQ,EAAY,eACd,EACAjE,EACAoB,GACA,EACA,KACA,KACA,MAIa,OAAA6C,E,uDClBfnE,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,CAACM,MAAM,CAAC,eAAeV,EAAI0L,iBAAiB,cAAc1L,EAAI2L,gBAAgB,WAAW3L,EAAI4L,aAAa,YAAY5L,EAAI6L,cAAc,gBAAgB7L,EAAIwP,uBAAuB1D,YAAY9L,EAAI+L,GAAG,CAAC,CAACjJ,IAAI,UAAUkJ,GAAG,SAAS5C,GAC7W,IAAI6C,EAAQ7C,EAAI6C,MAChB,MAAO,CAAC7L,EAAG,sBAAsBJ,EAAIwR,GAAG,CAAC9Q,MAAM,CAAC,QAAUV,EAAIyP,wBAAwB,gBAAgBxD,EAAM,qBAAqBjM,EAAIuP,mBAAmB,sBAAsBvP,EAAIyR,QAAO,QAAY,MAAK,EAAM,cAAgBzR,EAAI0R,kBAAoB1R,EAAI2R,aAAevR,EAAG,yBAAyBJ,EAAIwR,GAAG,CAAC9Q,MAAM,CAAC,QAAUV,EAAIc,UAAU,yBAAyBd,EAAIyR,QAAO,IAASzR,EAAe,YAAEI,EAAG,YAAYJ,EAAIwR,GAAG,CAAC9Q,MAAM,CAAC,QAAUV,EAAIc,QAAQ,eAAed,EAAI4R,cAAc,YAAY5R,EAAIyR,QAAO,IAASzR,EAAkB,eAAEI,EAAG,eAAeJ,EAAIwR,GAAG,CAAC9Q,MAAM,CAAC,QAAUV,EAAIc,UAAU,eAAed,EAAIyR,QAAO,IAASzR,EAAc,WAAEI,EAAG,kBAAkBJ,EAAIwR,GAAG,CAAC9Q,MAAM,CAAC,QAAUV,EAAIc,UAAU,kBAAkBd,EAAIyR,QAAO,IAASzR,EAA2B,wBAAEI,EAAG,wBAAwBJ,EAAIwR,GAAG,CAAC9Q,MAAM,CAAC,QAAUV,EAAIc,UAAU,wBAAwBd,EAAIyR,QAAO,IAASzR,EAA6B,0BAAEI,EAAG,0BAA0BJ,EAAIwR,GAAG,CAACvN,YAAY,gBAAgBvD,MAAM,CAAC,QAAUV,EAAIc,QAAQ,mBAAmB,GAAG,gBAAgB,gBAAgB,eAAe,0BAA0B,0BAA0Bd,EAAIyR,QAAO,IAAQzR,EAAIkB,MACvnCC,EAAkB,G,wHC2CtB,MAAM0Q,EAA0B,IAAM,4CAEhCC,EAA6B,CAAC,aAAc,sBAAuB,iBAAkB,YAAa,eAAgB,MAAO,wBAAyB,2BAKxJ,IAAqB,EAArB,cAAmD,OAAnD,c,oBACY,KAAAvC,kBAAmB,EACnB,KAAAE,wBAA0D,KAC1D,KAAAD,sBAAsD,KActC,mBACpB,MAAsB,eAAfvP,KAAK8R,MAGW,sBACvB,MAAsB,wBAAf9R,KAAK8R,MAGY,uBACxB,MAAsB,mBAAf9R,KAAK8R,MAGO,kBACnB,MAAsB,cAAf9R,KAAK8R,MAGU,qBACtB,MAAsB,iBAAf9R,KAAK8R,MAGM,iBAClB,MAAsB,QAAf9R,KAAK8R,MAGmB,8BAC/B,MAAsB,0BAAf9R,KAAK8R,MAGqB,gCACjC,MAAsB,4BAAf9R,KAAK8R,MAGY,6BACxB,iBAAO9R,KAAKwP,+BAAZ,aAAO,EAA8B/D,iBAGjB,yBACpB,iBAAOzL,KAAKwP,+BAAZ,aAAO,EAA8B7D,aAGd,4BACvB,iBAAO3L,KAAKwP,+BAAZ,aAAO,EAA8B9D,gBAGhB,0BACrB,iBAAO1L,KAAKwP,+BAAZ,aAAO,EAA8B5D,cAGf,mBAACnF,GACvB,IACIzG,KAAKwP,8BAAgC,OAAiBM,8BAClDrJ,EACAzG,KAAKsD,OAAOsD,UAEZ5G,KAAKwP,wBAAwBY,YAAcpQ,KAAKwP,wBAAwBa,aACxErQ,KAAKuP,sBAAwB,CACzBa,WAAYpQ,KAAKwP,wBAAwBY,WACzCC,WAAYrQ,KAAKwP,wBAAwBa,WACzCC,iBAAkBtQ,KAAK2R,cAGjC,MACE3R,KAAKsP,kBAAmB,EACxBtP,KAAK+R,MAAM,qBAIX,UACA/R,KAAKgS,iBACLhS,KAAK2P,aAAc3P,KAAKa,QAA8C0F,SAASC,wBAAwBC,YAhF/G,gBADC,eAAK,CAAEhD,UAAU,EAAMpB,KAAMS,U,8BAI9B,gBADC,eAAK,CAAEW,UAAU,EAAMpB,KAAMuB,OAAQqO,UAAYvK,GAAkBmK,EAAcK,SAASxK,M,4BAI3F,gBADC,eAAK,CAAEjE,UAAU,EAAMpB,KAAMuB,U,kCAI9B,gBADC,eAAK,CAAEH,UAAU,EAAMpB,KAAMc,U,4BAdb,EAAqB,gBAHzC,eAAU,CACPU,WAAY,CAAE+N,0BAAyBZ,sBAAA,KAAqBmB,yBAAA,KAAwB1F,kBAAA,KAAiB2F,YAAA,WAAWC,eAAA,WAAcC,kBAAA,KAAiBC,wBAAA,eAE9H,WCrD+Z,I,YCOhbxO,EAAY,eACd,EACAjE,EACAoB,GACA,EACA,KACA,KACA,MAIa,OAAA6C,E,sEClBf,IAAIjE,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAQ,KAAEI,EAAG,UAAU,CAAC6D,YAAY,gBAAgB,CAAC7D,EAAG,MAAM,CAAC6D,YAAY,sBAAsB,CAAEjE,EAAIiN,KAAU,MAAE7M,EAAG,mBAAmB,CAACM,MAAM,CAAC,YAAYV,EAAIiN,KAAK4B,MAAM7J,IAAI,KAAO,OAAO,OAAShF,EAAIyS,gBAAgB,eAAe,MAAU,cAAczS,EAAIiN,KAAK4B,MAAME,WAAW,IAAM/O,EAAIiN,KAAK4B,MAAMrL,QAAQpD,EAAG,MAAM,CAAC6D,YAAY,0CAA0C,CAAC7D,EAAG,QAAQ,CAAC6D,YAAY,OAAOvD,MAAM,CAAC,KAAO,WAAW,GAAGN,EAAG,4BAA4B,CAAC6D,YAAY,YAAYvD,MAAM,CAAC,GAAKV,EAAIiN,KAAKjI,IAAIA,MAAM,CAAC5E,EAAG,iBAAiB,CAAC6D,YAAY,0BAA0BvD,MAAM,CAAC,KAAOV,EAAIkI,GAAG,IAAPlI,CAAY,iBAAiB,KAAO,SAAS,KAAOA,EAAIiN,KAAKjI,IAAIA,QAAQ,IAAI,GAAG5E,EAAG,MAAM,CAAC6D,YAAY,qCAAqC,CAAC7D,EAAG,IAAI,CAAC6D,YAAY,mBAAmB,CAACjE,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIiN,KAAKyF,MAAM,OAAOtS,EAAG,IAAI,CAAC6D,YAAY,mBAAmB,CAACjE,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIiN,KAAKN,QAAQ,OAAOvM,EAAG,kBAAkB,CAACM,MAAM,CAAC,QAAUV,EAAIiN,KAAK0F,OAAO,iBAAiB,IAAI,UAAU,OAAO,KAAK3S,EAAIkB,MACvkCC,EAAkB,G,gDC4CtB,IAAqB,EAArB,cAA+C,OAIhB,4BACvB,OAAO,eAAyB,UAAClB,KAAKgN,YAAN,aAAC,EAAW4B,SAHhD,gBADC,eAAK,CAAEnL,UAAU,K,2BADD,EAAiB,gBAHrC,eAAU,CACPI,WAAY,CAAE8O,iBAAA,SAEG,WC7C2Z,I,wBCQ5a5O,EAAY,eACd,EACAjE,EACAoB,GACA,EACA,KACA,WACA,MAIa,OAAA6C,E,2CCnBf,yBAA+lB,EAAG,G,oCCAlmB,yBAAimB,EAAG,G,oCCApmB,yBAA0lB,EAAG,G,2CCA7lB,IAAIjE,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAAC6D,YAAY,sBAAsBzD,MAAM,CAAE,6BAA8BR,EAAIS,uBAAwByD,MAAOlE,EAAS,OAAG,CAACI,EAAG,MAAM,CAAC6D,YAAY,QAAQ,CAAC7D,EAAG,MAAM,CAAC6D,YAAY,sBAAsB,CAAC7D,EAAG,QAAQ,CAAC6D,YAAY,kBAAkBvD,MAAM,CAAC,KAAO,QAAQ,OAAS,KAAK,MAAQ,QAAQN,EAAG,QAAQ,CAAC6D,YAAY,kBAAkBvD,MAAM,CAAC,KAAO,QAAQ,OAAS,KAAK,MAAQ,SAAS,GAAGN,EAAG,MAAM,CAAC6D,YAAY,uBAAuB,CAAC7D,EAAG,IAAI,CAACqH,WAAW,CAAC,CAACjE,KAAK,sBAAsBkE,QAAQ,0BAA0BzD,YAAY,0EAA0EoF,SAAS,CAAC,UAAYrJ,EAAI4E,GAAG5E,EAAIc,QAAQ+R,UAAUzS,EAAG,IAAI,CAAC6D,YAAY,cAAc,CAACjE,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIc,QAAQgS,QAAQ,cACh0B3R,EAAkB,G,qEC8BtB,IAAqB,EAArB,cAAwC,OAYH,4BAC7B,OAAOlB,KAAKa,QAAQL,wBAA0BR,KAAKW,aAG5B,sBACvB,OAAOX,KAAKa,QAAQ8E,sBACd3F,KAAKa,QAAQ8E,sBACb3F,KAAKa,QAAQwE,gBAAkB,IAAMrF,KAAKa,QAAQwE,qBAAkBjE,EAGzD,gBACjB,IAAKpB,KAAKqF,gBAAiB,OAC3B,MAAM,IAAEO,EAAF,MAAOC,EAAP,KAAcC,GAAS,eAAe9F,KAAKqF,iBAC3CU,EAAmB,eAAKH,EAAKC,EAAOC,IAAS,GACnD,OAAOC,EAAmB,IAASC,MAAMC,OAAOC,MAAQ,IAASF,MAAMC,OAAOE,MAGjE,YACb,MAAO,CACHd,gBAAiBrF,KAAKqF,gBACtBD,MAAOpF,KAAKqG,aA5BjB,gBAHF,eAAK,CACF5C,UAAU,EACVpB,KAAMS,U,8BAOP,gBAJF,eAAK,CACFW,UAAU,EACVE,SAAS,EACTtB,KAAMqB,W,mCATO,EAAU,gBAH9B,eAAU,CACPG,WAAY,CAAEmD,gBAAA,SAEG,WC/BoZ,I,YCOrajD,EAAY,eACd,EACAjE,EACAoB,GACA,EACA,KACA,KACA,MAIa,aAAA6C,E,kDClBf,IAAIjE,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,MAAM,CAAC,qBAAuBR,EAAIY,eAAe,CAACR,EAAG,yBAAyB,CAACM,MAAM,CAAC,QAAUV,EAAIc,QAAQ,kBAAkB,IAAI,eAAe,EAAS,kBAAiB,EAAK,iBAAiBd,EAAIY,iBAAiB,IAC5TO,EAAkB,G,gDCiBtB,IAAqB,EAArB,cAA6C,SAItC,gBAHF,eAAK,CACFuC,UAAU,EACVpB,KAAMS,U,8BAMP,gBAHF,eAAK,CACFW,UAAU,EACVpB,KAAMqB,W,mCARO,EAAe,gBAHnC,eAAU,CACPG,WAAY,CAAEmN,sBAAA,KAAqBmB,yBAAA,SAElB,WClByZ,I,YCO1apO,EAAY,eACd,EACAjE,EACAoB,GACA,EACA,KACA,KACA,MAIa,aAAA6C,E,kDClBf,IAAIjE,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAAEJ,EAAIc,QAAgB,SAAEV,EAAG,iBAAiB,CAAC6D,YAAY,QAAQvD,MAAM,CAAC,MAAQV,EAAIY,aAAe,KAAO,KAAK,cAAcZ,EAAIY,eAAe,CAACZ,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIc,QAAQH,UAAU,OAAOX,EAAIkB,KAAKd,EAAG,UAAU,CAACA,EAAG,SAAS,CAACgJ,IAAI,UAAU2J,YAAY,CAAC,MAAQ,MAAM,YAAY,OAAO,OAAS,QAAQrS,MAAM,CAAC,MAAQV,EAAIc,QAAQH,SAAS,kBAAoBX,EAAIc,QAAQkS,kBAAkB,gBAAkBhT,EAAIc,QAAQmS,gBAAgB,UAAYjT,EAAIc,QAAQoS,eAAiB,MAAQ,KAAK,MAAQ,kCAAkC,IAAMlT,EAAImT,WAAW,YAAc,UAAU,IAC3qBhS,EAAkB,G,oCC4BtB,IAAqB,EAArB,cAA0C,OAYhB,iBAClB,MAAO,4BAA4BlB,KAAKa,QAAQsS,UAO5C,UACJC,OAAOC,iBAAiB,UAAWrT,KAAKsT,qBAAqB,GAG1D,gBACHF,OAAOG,oBAAoB,UAAWvT,KAAKsT,qBAGvC,oBAAoB3Q,GACxB,GAAsB,kBAAXA,EAAE6Q,KAAqB,OAElC,MAAMC,EAASzT,KAAK2J,MAAM+J,QAC1B,IAAKD,EAAU,OAEf,MAAME,EAAOhR,EAAE6Q,KAAKI,MAAM,KAEpBC,EAAUT,OAEhB,OAAQO,EAAK,IACb,IAAK,iBACG3T,KAAKW,cAAgB8S,EAAOK,iBAChC,MACJ,IAAK,YACDL,EAAOxP,MAAMQ,OAAYkP,EAAK,GAAR,KACtB,MACJ,IAAK,oBACGF,EAAOM,aAAeX,OAAOY,cAC7BP,EAAOxP,MAAMQ,OAAY2O,OAAOY,YAAV,MAE1B,MACJ,IAAK,aACD,CACI,IAAIC,EAAMN,EAAK,GACXA,EAAKrT,OAAS,IACd2T,EAAMN,EAAK,GAAK,IAAMA,EAAK,IAE/B,MAAMO,EAASC,SAASC,cAAc,UACtCF,EAAOD,IAAMA,EACbC,EAAO7R,KAAO,kBACd8R,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,EAAajS,EAAEkS,OAAO1P,QAAQ,YAAc,EAClD,GAAIyP,GAAa,kBAAmBnB,GAAU,gBAAiBA,EAAOqB,cAAe,CACjF,MAAMC,EAAO,CAAEC,OAAQC,mBAAmBd,SAASe,KAAMC,SAAUF,mBAAmBd,SAASgB,WAC/F1B,EAAOqB,cAAcM,YAAYC,KAAKC,UAAU,CAAEjT,KAAM,OAAQqF,MAAOqN,IAAS,QArErF,gBAHF,eAAK,CACFtR,UAAU,EACVpB,KAAMS,U,8BAOP,gBAJF,eAAK,CACFW,UAAU,EACVpB,KAAMqB,QACNC,SAAS,K,mCATI,EAAY,gBAHhC,eAAU,CACPE,WAAY,CAAEmD,gBAAA,SAEG,WC7BsZ,I,YCOvajD,EAAY,eACd,EACAjE,EACAoB,GACA,EACA,KACA,KACA,MAIa,aAAA6C,E,2CClBf,IAAIjE,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAACA,EAAG,MAAM,CAAC6D,YAAY,4BAA4B,CAAC7D,EAAG,MAAM,CAAC6D,YAAY,0BAA0BzD,MAAMR,EAAIwV,aAAaxV,EAAIwF,GAAIxF,EAAQ,MAAE,SAASyV,GAAK,OAAOrV,EAAG,SAAS,CAAC0C,IAAI2S,EAAIjS,KAAKS,YAAY,4BAA4BzD,MAAM,CAAE,OAAUiV,EAAIjS,OAASxD,EAAI0V,UAAUlS,MAAO9C,MAAM,CAAC,KAAO,UAAUqH,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOhI,EAAI2V,OAAOF,EAAIjS,SAAS,CAACxD,EAAIkR,GAAG,UAAS,WAAW,MAAO,CAAClR,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG6Q,EAAIjS,MAAM,QAAO,CAAC,MAAQiS,EAAIjS,KAAK,OAASiS,EAAIjS,OAASxD,EAAI0V,UAAUlS,QAAQ,MAAK,KAAKxD,EAAIkR,GAAG,eAAe9Q,EAAG,MAAM,CAAC6D,YAAY,cAAczD,MAAMR,EAAI4V,cAAc,CAAC5V,EAAIkR,GAAG,YAAY,IAAI,IAC9sB/P,EAAkB,G,4DCoCtB,IAAqB,EAArB,cAA2C,OAA3C,c,oBACY,KAAAuU,UAAwB,KAExB,KAAAG,KAAc,GAKf,OAAOrS,GACNvD,KAAKyV,WAAazV,KAAKyV,UAAUlS,OAASA,GAC1CvD,KAAK+R,MAAM,UAAWxO,GAG1B,IAAK,MAAMiS,KAAOxV,KAAK4V,KACfJ,EAAIjS,OAASA,GACbvD,KAAKyV,UAAYD,EACjBA,EAAIE,QAAO,IAEXF,EAAIE,QAAO,GAGnBG,EAAA,KAAIC,KAAK,QAGL,QAEJ,GADA9V,KAAK4V,KAAO5V,KAAK+V,UAAU/S,OAAO4H,GAAyB,QAApBA,EAAEoL,SAASzS,MACzB,IAArBvD,KAAK4V,KAAKtV,OACV,OAGJ,MAAM8Q,EAAO,OAAiBC,UAC9B,GAAID,EAAM,CACN,MAAMqE,EAAYzV,KAAK4V,KAAKxS,KAAKwH,GAAKA,EAAEwG,OAASA,GAC7CqE,IACAzV,KAAKyV,UAAYA,EACjBA,EAAUC,QAAO,IAIzB,IAAK1V,KAAKyV,UAAW,CACjB,IAAK,MAAMD,KAAOxV,KAAK4V,KACnB,GAAIJ,EAAIS,SAAU,CACdjW,KAAKyV,UAAYD,EACjB,MAKR,IAAKxV,KAAKyV,UAAW,CACjB,MAAMA,EAAYzV,KAAK4V,KAAK,GAC5B5V,KAAKyV,UAAYA,EACjBA,EAAUC,QAAO,IAIzB1V,KAAK+R,MAAM,OAAQ/R,KAAKyV,UAAUlS,MAGtC,UACIvD,KAAKkW,UAtDK,gBAAb,eAAKtS,S,kCACQ,gBAAb,eAAKA,S,mCANW,EAAa,gBADjC,QACoB,WCrC8Y,I,YCO/ZG,EAAY,eACd,EACAjE,EACAoB,GACA,EACA,KACA,KACA,MAIa,OAAA6C,E,6EClBf,IAAIjE,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAACI,MAAM,CAAE,6BAA8BR,EAAIS,wBAAyB,CAACL,EAAG,MAAM,CAAC6D,YAAY,UAAU,CAAC7D,EAAG,MAAM,CAAC6D,YAAY,+BAA+BzD,MAAM,CAAE,aAAcR,EAAIoW,sBAAsB,CAAEpW,EAAc,WAAEI,EAAG,wBAAwB,CAAC6D,YAAY,0BAA0BvD,MAAM,CAAC,MAAQV,EAAIqW,WAAWtE,MAAM,QAAU/R,EAAIqW,WAAWvV,QAAQ,kBAAkB,GAAG,eAAe,EAAE,eAAed,EAAI+R,MAAM,MAAQ,KAAK/R,EAAIkB,MAAM,GAAGd,EAAG,MAAM,CAAC6D,YAAY,gCAAgC,CAAC7D,EAAG,UAAU,CAAC6D,YAAY,wBAAwB,CAAEjE,EAAsB,mBAAEI,EAAG,0BAA0B,CAAC6D,YAAY,4CAA4CvD,MAAM,CAAC,MAAQV,EAAIsW,mBAAmBvE,MAAM,QAAU/R,EAAIsW,mBAAmBxV,QAAQ,kBAAkB,GAAG,eAAe,EAAE,eAAed,EAAI+R,MAAM,MAAQ,EAAE,uBAAuB,CAAE,UAAW,EAAG,SAAU,OAAQ/R,EAAIkB,KAAMlB,EAAsB,mBAAEI,EAAG,0BAA0B,CAAC6D,YAAY,iBAAiBvD,MAAM,CAAC,MAAQV,EAAIuW,mBAAmBxE,MAAM,QAAU/R,EAAIuW,mBAAmBzV,QAAQ,kBAAkB,GAAG,eAAe,EAAE,eAAed,EAAI+R,MAAM,MAAQ,EAAE,uBAAuB,CAAE,UAAW,EAAG,SAAU,OAAQ/R,EAAIkB,MAAM,UACpxCC,EAAkB,G,iDC8CtB,IAAqB,EAArB,cAA8C,OAWjB,4BACrB,OAAOlB,KAAKa,QAAQL,wBAA0BR,KAAKW,aAGhC,0BACnB,OAAOX,KAAKa,QAAQ0V,2BAA6B,OAAoBC,KAG3D,yBACV,OAAQ,UAAAxW,KAAKa,eAAL,mBAAcuV,kBAAd,eAA0B9V,QAAS,GAAKN,KAAKa,QAAQuV,WAAW,IAAO,KAG7D,iCAClB,OAAQ,UAAApW,KAAKa,eAAL,mBAAc4V,uBAAd,eAA+BnW,QAAS,GAAKN,KAAKa,QAAQ4V,gBAAgB,IAAO,KAGvE,iCAClB,OAAQ,UAAAzW,KAAKa,eAAL,mBAAc4V,uBAAd,eAA+BnW,QAAS,GAAKN,KAAKa,QAAQ4V,gBAAgB,IAAO,OAxB1F,gBAHF,eAAK,CACFhT,UAAU,EACVpB,KAAMS,U,8BAGI,gBAAb,eAAKc,S,4BAGN,gBADC,eAAK,CAAEH,UAAU,EAAMpB,KAAMqB,W,mCARb,EAAgB,gBAHpC,eAAU,CACPG,WAAY,CAAE6S,wBAAA,SAEG,WC/C0Z,I,wBCQ3a3S,EAAY,eACd,EACAjE,EACAoB,GACA,EACA,KACA,KACA,MAIa,aAAA6C,E,2CCnBf,yBAAylB,EAAG,G,yDCA5lB,IAAIjE,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAAC6D,YAAY,0BAA0B,CAAC7D,EAAG,UAAU,CAAC6D,YAAY,WAAWC,MAAOlE,EAAsB,oBAAG,CAACI,EAAG,MAAM,CAAC6D,YAAY,oBAAoB,CAAC7D,EAAG,UAAU,CAACgJ,IAAI,MAAMnF,YAAY,gBAAgBvD,MAAM,CAAC,OAASV,EAAI4W,OAAO,KAAO5W,EAAI6W,YAAY,QAAU7W,EAAI8W,UAAU,CAAC9W,EAAIwF,GAAIxF,EAAW,SAAE,SAAS+W,EAAO3J,GAAO,OAAOhN,EAAG,aAAaJ,EAAIwR,GAAG,CAAC1O,IAAIsK,EAAM1M,MAAM,CAAC,MAAQqW,EAAOtD,KAAKuD,WAAWjP,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOhI,EAAIiX,cAAcF,MAAW,aAAaA,GAAO,OAAU3W,EAAG,iBAAiB,CAACM,MAAM,CAAC,QAAU,CAC7mBwW,YAAa,CAAEzS,MAAO,EAAGC,QAAS,KACpC,SAAW1E,EAAImX,WAAWC,SAAS,OAASpX,EAAImX,WAAWE,MAAMtP,GAAG,CAAC,WAAa,SAASC,GAAQ,OAAOhI,EAAIsX,oBAAoB,CAAEtX,EAAImX,WAAuB,aAAE/W,EAAG,MAAM,CAACqH,WAAW,CAAC,CAACjE,KAAK,gBAAgBkE,QAAQ,kBAAkBC,MAAO3H,EAAkB,eAAE6H,WAAW,mBAAmB5D,YAAY,0CAA0C,CAAC7D,EAAG,IAAI,CAAC6D,YAAY,kBAAkB,CAACjE,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAImX,WAAWI,aAAa9D,KAAKuD,WAAW,OAAO5W,EAAG,IAAI,CAAC6D,YAAY,QAAQ,CAACjE,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAImX,WAAWI,aAAa9D,KAAK+D,SAAS,OAAOpX,EAAG,IAAI,CAAC6D,YAAY,QAAQ,CAACjE,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAImX,WAAWI,aAAa9D,KAAKgE,mBAAmB,OAAOrX,EAAG,IAAI,CAAC6D,YAAY,QAAQ,CAACjE,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAImX,WAAWI,aAAa9D,KAAKiE,SAAS,OAAOtX,EAAG,IAAI,CAAC6D,YAAY,QAAQ,CAAC7D,EAAG,IAAI,CAACM,MAAM,CAAC,KAAQ,OAAUV,EAAImX,WAAWI,aAAa9D,KAAgB,cAAK,CAACzT,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAImX,WAAWI,aAAa9D,KAAKkE,aAAa,SAASvX,EAAG,IAAI,CAAC6D,YAAY,YAAYvD,MAAM,CAAC,KAAO,UAAYV,EAAImX,WAAWI,aAAa9D,KAAKmE,MAAM,OAAS,WAAW,CAAC5X,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAImX,WAAWI,aAAa9D,KAAKmE,OAAO,OAAQ5X,EAAImX,WAAWI,aAAa9D,KAAS,KAAErT,EAAG,4BAA4B,CAAC6D,YAAY,kEAAkEvD,MAAM,CAAC,GAAKV,EAAImX,WAAWI,aAAa9D,KAAKvO,KAAKF,IAAI,OAAShF,EAAImX,WAAWI,aAAa9D,KAAKvO,KAAKC,SAAS,CAAC/E,EAAG,OAAO,CAACJ,EAAI2E,GAAG3E,EAAI4E,GAAG5E,EAAImX,WAAWI,aAAa9D,KAAKvO,KAAK1B,SAASpD,EAAG,QAAQ,CAAC6D,YAAY,OAAOvD,MAAM,CAAC,KAAO,cAAc,OAAS,KAAK,MAAQ,SAAS,GAAGV,EAAIkB,MAAM,GAAGlB,EAAIkB,QAAQ,IAAI,QACtjDC,EAAkB,G,gDCEtB,MAAM0W,EAAoB,IAG1B,IAAqB,EAArB,cAAuD,OAgB7B,eAClB,OAAO,OAAgBC,mBAAmB,QAGjB,sBAEzB,OAAO7X,KAAK8X,SAAWF,EAAoB5X,KAAKyP,YAGrB,wBAE3B,OAAOzP,KAAK8X,SAAW,IAAM9X,KAAK+X,cAGlB,aAChB,IAAK/X,KAAKgY,mBAAoB,OAAO,EAErC,MAAMC,EAAcnV,OAAOC,KAAK/C,KAAKgY,oBAAoB5U,KAAK8U,GAAS,OAAgBL,mBAAmBK,IACpG/W,EAAS8W,EAAcjY,KAAKgY,mBAAmBC,GAAe,EACpE,OAAO9W,EAGqB,yBAC5B,MAAMgX,EAAc,EAAInY,KAAKoY,gBAAmB,IAChD,MAAQ,CACJhS,cAAe,QAAQ+R,QAAiBnY,KAAKqY,eArClD,gBAHF,eAAK,CACF5U,UAAU,EACVpB,KAAMc,U,oCAMP,gBAHF,eAAK,CACFM,UAAU,EACVpB,KAAMc,U,kCAMP,gBAHF,eAAK,CACFM,UAAU,EACVpB,KAAMS,U,yCAbO,EAAyB,gBAD7C,QACoB,OCRjB,EAAQ,EDQS,IERma,I,YDOpbiB,EAAY,eACd,EACA,EACA,GACA,EACA,KACA,KACA,MAIa,EAAAA,E,gCE6Gf,IAAqB,EAArB,cAA6C,EAA7C,c,oBAWY,KAAA4S,OAAmB,CAAE2B,IAAK,UAAWC,IAAK,WAC1C,KAAArB,WAIJ,CACAI,aAAc,KACdH,SAAU,KACVC,MAAM,GAGF,KAAAR,YAAsB,EA2CtB,KAAA4B,OACH,CACI,CACIC,YAAa,iBACbC,YAAa,MACbC,QAAS,CACL,CACIC,WAAY,SAIxB,CACIH,YAAa,YACbC,YAAa,MACbC,QAAS,CACL,CACIC,WAAY,MAEhB,CACIxT,MAAOpF,KAAK6Y,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,CACIvT,MAAO,cAlHpB,cAAc0R,GAClB9W,KAAKkX,WAAWI,aAAeR,EAC/B9W,KAAKkX,WAAWC,SAAWL,EAAOK,SAClCnX,KAAKkX,WAAWE,MAAO,EAGnB,iBACJpX,KAAKkX,WAAWE,MAAO,EACvBpX,KAAKkX,WAAWC,SAAW,KAC3BnX,KAAKkX,WAAWI,aAAe,KAGhB,cACf,MAAMwB,EAAe,EAAQ9Y,KAAK6Y,SAAW,OAA4C,QACnFE,EAAc,EAAQ/Y,KAAK6Y,SAAW,OAAwC,QACpF,OAAQ7Y,KAAKa,QAAQmY,aAChBC,IAAI,EAAGpY,aAAcA,GACrBoY,IAAIrO,IAAK,CACNsO,WAAW,EACXC,WAAW,EACXrU,KAAM,CACFC,IAAwB,WAAnB6F,EAAEwO,aACDN,EACAC,EACN9N,KAAM,CACFzG,MAAO,GACPC,OAAQ,IAEZ4U,WAAY,CACR7U,MAAO,GACPC,OAAQ,KAGhB0S,SAAU,CACNmB,IAAKgB,WAAW1O,EAAE2O,aAClBhB,IAAKe,WAAW1O,EAAE4O,eAEtBhG,KAAM5I,KAmFC,cACf,MAAO,CACH6O,QAASzZ,KAAKa,QAAQ4Y,QAAUzZ,KAAKa,QAAQ4Y,QAAU,EACvDC,QAAS1Z,KAAKa,QAAQ6Y,QAAU1Z,KAAKa,QAAQ6Y,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,OAAQxY,KAAKwY,QAIT,eACR,cAAO,aAAP,IAAO,YAAP,EAAO,OAAsBK,SAGb,eAChB,aAAa7Y,KAAK2J,MAAMsP,IAAIqB,YAGA,2BAC5B,MAAMrB,QAAYjZ,KAAKua,SAEvB,IAAIC,EAAS,IAAIpH,OAAOqH,OAAOC,KAAKC,aAEpC,IAAK,MAAM7D,KAAU9W,KAAK4a,QACtBJ,EAAOK,OAAO/D,EAAOK,UAGzB8B,EAAI6B,UAAUN,GACdvB,EAAI8B,YAAYP,GAGhB5K,WAAW,KACHqJ,EAAI+B,UAAYhb,KAAK4W,aACrBqC,EAAIgC,QAAQjb,KAAK4W,cAEtB,KAGiC,mCACpC,IAAKsE,UAAUC,YAAa,OAE5B,MAAMlC,QAAYjZ,KAAKua,SAEvBW,UAAUC,YAAYC,mBAAmB,EAAGC,aACxCpC,EAAIqC,UAAU,CACVhD,IAAK+C,EAAOE,SACZhD,IAAK8C,EAAOG,cAKX,sBACHxb,KAAKyb,sBAEPzb,KAAK4a,QAAQta,OACbN,KAAK0b,qBAEL1b,KAAK2b,+BA/MV,gBAHF,eAAK,CACFlY,UAAU,EACVpB,KAAMS,U,8BAMP,gBAHF,eAAK,CACFW,UAAU,EACVpB,KAAMqB,W,mCARO,EAAe,gBAHnC,eAAU,CACPG,WAAY,CAAE+X,QAAA,SAASC,WAAA,YAAYC,eAAA,oBAElB,WC/H2a,ICO5b,EAAY,eACd,EACAhc,EACAoB,GACA,EACA,KACA,KACA,MAIa,S,kDClBf,IAAIpB,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAAC6D,YAAY,kDAAkDzD,MAAM,CAAE,6BAA8BR,EAAIS,wBAAyB,CAAET,EAAY,SAAEI,EAAG,gBAAgB,CAAC6D,YAAY,uCAAuCvD,MAAM,CAAC,MAAQV,EAAIY,aAAe,KAAO,KAAK,cAAcZ,EAAIY,eAAe,CAACZ,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIW,UAAU,OAAOX,EAAIkB,KAAKd,EAAG,MAAM,CAAC6D,YAAY,YAAY,CAAEjE,EAAIgc,UAAYhc,EAAIoB,OAAQhB,EAAG,SAAS,CAACI,MAAM,UAAYR,EAAIkN,GAAGxM,MAAM,CAAC,GAAKV,EAAIkN,GAAG,gBAAgBlN,EAAIkN,GAAG,QAAUlN,EAAImN,gBAAgBnN,EAAIwF,GAAIxF,EAAIoB,OAA4B,uBAAE,SAAS6a,EAAS7O,GAAO,OAAOhN,EAAG,cAAc,CAAC0C,IAAIsK,EAAMnJ,YAAY,mCAAmC,CAAC7D,EAAG,cAAc,CAAC6D,YAAY,SAASvD,MAAM,CAAC,UAAY,KAAMqH,GAAG,CAAC,QAAU,SAASC,GAAQ,OAAOhI,EAAIkc,mBAAmBD,KAAYnQ,YAAY9L,EAAI+L,GAAG,CAAC,CAACjJ,IAAI,UAAUkJ,GAAG,SAAS5C,GACl8B,IAAI+S,EAAS/S,EAAI+S,OACjB,MAAO,CAAC,EAAS/b,EAAG,yBAAyB,CAAC6D,YAAY,sGAAsGvD,MAAM,CAAC,GAAKub,EAASjX,KAAKmH,SAAS,CAAC,MAAQ,SAASnE,GAAQ,OAAOhI,EAAIoc,oBAAoBH,MAAa,CAAC7b,EAAG,MAAM,CAAC6D,YAAY,4FAA4FjE,EAAIwF,GAAIyW,EAAe,QAAE,SAASpN,EAAMwN,GAAY,OAAOjc,EAAG,MAAM,CAAC0C,IAAIuZ,EAAWpY,YAAY,gGAAgGzD,MAAM,CAC7hB,SAAyB,IAAf6b,GAAmC,IAAfA,EAC9B,UAA0B,IAAfA,GAAmC,IAAfA,EAC/B,QAAwB,IAAfA,GAAmC,IAAfA,EAC7B,WAA2B,IAAfA,GAAmC,IAAfA,EAChC,4CAA4D,IAAfA,GAAmC,IAAfA,IAClE,CAACjc,EAAG,MAAM,CAACqH,WAAW,CAAC,CAACjE,KAAK,WAAWkE,QAAQ,eAAezD,YAAY,yBAAyBvD,MAAM,CAAC,IAAMV,EAAIsc,kBAAkBzN,EAAM0N,KAAKC,GAAG,OAAWxc,EAAIsc,kBAAkBzN,EAAM0N,KAAO,GAAI,QAAWvc,EAAIsc,kBAAkBzN,EAAM0N,KAAO,GAAI,MAAO,IAAMN,EAASQ,oBAAmB,GAAGrc,EAAG,MAAM,CAAC6D,YAAY,0DAA0D,CAACjE,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAGqX,EAASQ,aAAa,OAAOrc,EAAG,MAAM,CAAC6D,YAAY,gDAAgD,CAAC7D,EAAG,MAAM,CAAC6D,YAAY,qBAAqB,CAAC7D,EAAG,MAAM,CAAC6D,YAAY,aAAa,CAACjE,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIkI,GAAG,eAAPlI,CAAuBic,EAAS7Z,eAAe,OAAOhC,EAAG,MAAM,CAACJ,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIkI,GAAG,IAAPlI,CAAY,2CAA2C,SAASI,EAAG,MAAM,CAAC6D,YAAY,qBAAqB,CAAC7D,EAAG,MAAM,CAAC6D,YAAY,aAAa,CAACjE,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIkI,GAAG,eAAPlI,CAAuBic,EAASS,aAAa,OAAOtc,EAAG,MAAM,CAACJ,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIkI,GAAG,IAAPlI,CAAY,yCAAyC,aAAaA,EAAIkB,SAAS,MAAK,MAAS,MAAK,GAAGd,EAAG,MAAM,CAAC6D,YAAY,oCAAoC7D,EAAG,SAAS,CAAC6D,YAAY,uEAAuEzD,MAAMR,EAAIqN,mBAAmB3M,MAAM,CAAC,KAAO,cAAc,KAAO,UAAU4M,KAAK,eAAe,CAAClN,EAAG,QAAQ,CAACM,MAAM,CAAC,KAAO,kBAAkB,MAAQ,KAAK,OAAS,SAAS,GAAGN,EAAG,SAAS,CAAC6D,YAAY,uEAAuEzD,MAAMR,EAAIuN,mBAAmB7M,MAAM,CAAC,KAAO,cAAc,KAAO,UAAU4M,KAAK,eAAe,CAAClN,EAAG,QAAQ,CAACM,MAAM,CAAC,KAAO,mBAAmB,MAAQ,KAAK,OAAS,SAAS,IAAI,IAAI,IACjnDS,EAAkB,G,qHCgFtB,IAAqB,EAArB,cAA0D,OAA1D,c,oBAcI,KAAA6a,UAAoB,EACpB,KAAAW,iBAA2B,GACnB,KAAAvb,OAAgD,KAChD,KAAAwb,6BAA+B,IAAS3c,KAAK4c,sBAAuB,KACpE,KAAAC,iBAAmD,GAElC,oBACrB,MAAO,CACHnP,aAAc,GACdC,cAAe,OACfC,eAAgB,EAChBkP,oBAAoB,EACpBjP,MAAM,EACNC,wBAAwB,EACxBC,uBAAuB,EACvBC,eAAe,EACfC,gBAAgB,EAChBC,WAAY,CACRC,OAAQ,IAAMnO,KAAKsN,mBACnBc,OAAQ,IAAMpO,KAAKoN,oBAEvBiB,YAAY,EACZC,aAActO,KAAKiN,GACnBsB,UAAU,EACVC,gBAAgB,EAChBC,sBAAsB,GAIhB,SACV,OAAO,IAAIjB,MAAOC,UAGQ,yBAC1B,MAAO,6BAA+BzN,KAAKiN,GAGjB,yBAC1B,MAAO,6BAA+BjN,KAAKiN,GAG/C,yBACI,MAAM8P,EAAgB,OAAkBC,sBACpCD,IAAkB/c,KAAK0c,mBACvB1c,KAAK0c,iBAAmBK,EACxB/c,KAAK+b,UAAW,EAChB/b,KAAKid,UAAU,IAAMjd,KAAK+b,UAAW,IAIpB,4BACrB,OAAO/b,KAAKa,QAAQL,wBAA0BR,KAAKW,aAG1B,wBACzB,IACIX,KAAKmB,aAAe,OAAIE,gBAAgB6b,oBAAoB,CACxD3b,6BAA8BvB,KAAKa,QAAQU,6BAC3CC,6BAA8BxB,KAAKa,QAAQW,6BAC3C2b,kBAAmBnd,KAAKa,QAAQsc,kBAChC1b,oBAAqBzB,KAAKa,QAAQa,gBAClC0b,WAAYpd,KAAKa,QAAQe,SACzBC,eAAgB7B,KAAKa,QAAQiB,WAC7Bub,cAAerd,KAAKa,QAAQwc,gBAElC,MAAO1a,GACL,OAAeC,MAAMD,IAIT,qBAChB,iBAAO3C,KAAKa,eAAZ,aAAO,EAAcH,SAGzB,kBAAkBmI,GACd,MAAO,CACH0T,GAAI,OAA8Be,eAAezU,EAAM,OAA8B0U,2BAA2BC,KAChHC,GAAI,OAA8BH,eAAezU,EAAM,OAA8B0U,2BAA2BG,OAIhH,oBAAoB1B,GACxB,OAAW2B,mBAAmB,uBAAuB3B,EAASQ,YAAe,uBAAuBR,EAASja,YAGzG,mBAAmBia,GACvBhc,KAAK6c,iBAAiBe,KAAK,CAAEra,KAAM,uBAAuByY,EAASQ,YAAevP,GAAI,uBAAuB+O,EAASja,aACtH/B,KAAK2c,+BAGD,wBACJ,MAAMhW,EAAa,IAAI3G,KAAK6c,kBAC5B7c,KAAK6c,iBAAmB,GACxB,OAAWgB,kBAAkBlX,GAGzB,UACJ3G,KAAK8d,kBAGT,UACI9d,KAAK0c,iBAAmB,OAAkBM,sBAC1C,OAAkBe,YAAY/d,KAAKge,wBACnChe,KAAKid,UAAU,KACXjd,KAAK+b,UAAW,IAIxB,YACI,OAAkBkC,eAAeje,KAAKge,0BAtH1C,gBAJC,eAAK,CACFva,UAAU,EACVpB,KAAMS,U,8BASV,gBALC,eAAK,CACFW,UAAU,EACVpB,KAAMqB,QACNC,SAAS,K,mCAVI,EAA4B,gBAHhD,eAAU,CACPE,WAAY,CAAEmD,gBAAA,SAEG,WCzFsa,I,yBCQvbjD,EAAY,eACd,EACAjE,EACAoB,GACA,EACA,KACA,KACA,MAIa,aAAA6C,E,2CCnBf,IAAIjE,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAAC6D,YAAY,SAASzD,MAAM,CAAE,gBAAiBR,EAAIme,kBAAoBne,EAAIoe,eACrK,cAAepe,EAAIme,mBAAqBne,EAAIoe,eAC5C,mBAAoBpe,EAAIoe,iBAAkB,CAAEpe,EAAIqe,2BAA6Bre,EAAIc,QAAQwd,QAASle,EAAG,gBAAgB,CAAC6D,YAAY,2BAA2BvD,MAAM,CAAC,cAAcV,EAAIY,eAAe,CAAGZ,EAAIue,4BAA2E,CAACne,EAAG,iBAAiB,CAACM,MAAM,CAAC,QAAUV,EAAIc,QAAQwd,QAAQ,iBAAiB,OAA1H,CAACte,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIc,QAAQwd,SAAS,OAA0F,GAAGte,EAAIkB,KAAMlB,EAAW,QAAEI,EAAG,UAAU,CAACgJ,IAAI,UAAUnF,YAAY,WAAWzD,MAAM,CAAE,qBAAuBR,EAAIc,QAAQmP,cAAgBjQ,EAAIc,QAAQ0d,OAASxe,EAAIye,oBACpgB,uBAAwBze,EAAIme,kBAAoBne,EAAIoe,eACpD,KAAQpe,EAAI2R,cAAgB3R,EAAIoe,eAChC,SAAUpe,EAAIme,mBAAqBne,EAAIoe,eACvC,SAAUpe,EAAIoe,iBAAmBpe,EAAIye,oBACrC,YAAaze,EAAIye,qBAAuBze,EAAI0e,kCAAoC1e,EAAI2R,eAAiB3R,EAAIoe,gBACzG,4BAA6Bpe,EAAIye,uBAAyBze,EAAI2R,eAAiB3R,EAAIoe,gBACnF,YAAape,EAAIye,qBAAsBva,MAAOlE,EAA2B,yBAAG,CAAEA,EAAIc,QAAQmP,cAAgBjQ,EAAIc,QAAQ0d,MAAOpe,EAAG,MAAM,CAACI,MAAM,CACnJ,mBAAoBR,EAAI2e,+BACxB,wCAAyC3e,EAAIc,QAAQmP,cACvD/L,MAAOlE,EAAuB,qBAAG,CAAEA,EAAIc,QAAa,MAAEV,EAAG,QAAQ,CAACgJ,IAAI,aAAanF,YAAY,eAAezD,MAAM,CAAC,kCAAuD,IAArBR,EAAI4e,cAAwBle,MAAM,CAAC,UAAW,EAAM,SAAWV,EAAIc,QAAQkP,kBAAkB,KAAOhQ,EAAIc,QAAQkP,kBAAkB,OAAS,OAAO,MAAQ,QAAQ3G,SAAS,CAAC,MAAQrJ,EAAIc,QAAQkP,oBAAoB,CAAC5P,EAAG,SAAS,CAACM,MAAM,CAAC,IAAMV,EAAIc,QAAQ0d,MAAMxZ,IAAI,KAAO,SAAWhF,EAAIc,QAAQ0d,MAAMK,aAAa7e,EAAI2E,GAAG,oDAAqD3E,EAAIc,QAAoB,aAAEV,EAAG,MAAM,CAACgJ,IAAI,aAAanF,YAAY,QAAQzD,MAAM,CAAC,kCAAuD,IAArBR,EAAI4e,gBAA0B5e,EAAIkB,OAAOlB,EAAIkB,KAAMlB,EAAIoe,gBAAkBpe,EAAI2e,+BAAgCve,EAAG,UAAU,CAAC6D,YAAY,6DAA6DzD,MAAM,CAAE,eAAgBR,EAAI8e,uBAC/0B,QAAW9e,EAAI+e,UACf,UAAW/e,EAAI2R,cAAgB3R,EAAIoe,eACnC,yCAA0Cpe,EAAIgf,8BAC9C,oCAAqChf,EAAIgf,+BAAgC9a,MAAOlE,EAAuB,qBAAG,CAAEA,EAAY,SAAEI,EAAG,UAAU,CAAC6D,YAAY,uCAAuCC,MAAOlE,EAAa,YAAIA,EAAIkB,KAAMlB,EAAiB,cAAEI,EAAG,MAAM,CAAC6D,YAAY,+BAA+BzD,MAAM,CAAC,YAAaR,EAAIif,YAAa/a,MAAOlE,EAAiC,+BAAG,CAACI,EAAG,MAAM,CAAC6D,YAAY,4BAA4BzD,MAAMR,EAAI4V,aAAa1R,MAAOlE,EAA+B,6BAAG,CAACI,EAAG,MAAM,CAAEJ,EAAIc,QAAe,QAAEV,EAAG,gBAAgB,CAAC6D,YAAY,oBAAoBzD,MAAM,CACnjB,QAASR,EAAIc,QAAQ6L,QAAU3M,EAAIc,QAAQoe,UAC3C,YAAalf,EAAIc,QAAQ6L,QAAU3M,EAAIc,QAAQoe,aAAelf,EAAIgf,+BAAgC9a,MAAOlE,EAAImf,WAAWnf,EAAIc,QAAQse,cAAe1e,MAAM,CAAC,MAAQV,EAAIY,aAAe,KAAO,OAAO,CAAGZ,EAAIue,4BAA2E,CAACne,EAAG,iBAAiB,CAACM,MAAM,CAAC,QAAUV,EAAIc,QAAQwd,QAAQ,iBAAiB,OAA1H,CAACte,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIc,QAAQwd,SAAS,OAA0F,GAAGte,EAAIkB,KAAMlB,EAAIc,QAAc,OAAEV,EAAG,gBAAgB,CAACqH,WAAW,CAAC,CAACjE,KAAK,oBAAoBkE,QAAQ,sBAAsBC,MAAO3H,EAAsB,mBAAE6H,WAAW,uBAAuBrH,MAAM,CAAE,QAASR,EAAIc,QAAQoe,UAAW,WAAYlf,EAAIc,QAAQoe,YAAclf,EAAIgf,+BAAgC9a,MAAOlE,EAAImf,WAAWnf,EAAIc,QAAQue,aAAc3e,MAAM,CAAC,MAAQV,EAAIsf,oBAAoB,eAAc,IAAO,CAAGtf,EAAIue,4BAA0E,CAACne,EAAG,iBAAiB,CAACM,MAAM,CAAC,QAAUV,EAAIc,QAAQ6L,OAAO,iBAAiB,OAAxH,CAAC3M,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIc,QAAQ6L,QAAQ,OAAyF,GAAG3M,EAAIkB,KAAMlB,EAAIc,QAAiB,UAAEV,EAAG,IAAI,CAAC6D,YAAY,qCAAqCzD,MAAMR,EAAIuf,mBAAmBrb,MAAOlE,EAAImf,WAAWnf,EAAIc,QAAQ0e,iBAAkB,CAAGxf,EAAIue,4BAA+F,CAACne,EAAG,iBAAiB,CAACM,MAAM,CAAC,QAAUV,EAAIc,QAAQoe,UAAU,iBAAiB,QAAhJ9e,EAAG,OAAO,CAACiJ,SAAS,CAAC,UAAYrJ,EAAI4E,GAAG5E,EAAIc,QAAQoe,eAAqG,GAAGlf,EAAIkB,KAAMlB,EAA0B,uBAAEI,EAAG,eAAe,CAAC6D,YAAY,eAAezD,MAAM,CAAE,QAASR,EAAIgf,8BAA+B,SAAUhf,EAAIgf,+BAAgCte,MAAM,CAAC,YAAYV,EAAIyf,SAAS,KAAOzf,EAAIc,QAAQ0I,aAAahG,KAAK,KAAOxD,EAAIc,QAAQ0I,aAAaxE,IAAI,OAAShF,EAAIc,QAAQ0I,aAAarE,OAAO,iBAAiBnF,EAAIue,4BAA8B,IAAM,EAAE,iBAAiBve,EAAI0f,gBAAiB1f,EAAsC,mCAAEI,EAAG,eAAe,CAAC6D,YAAY,eAAezD,MAAM,CAAE,QAASR,EAAIgf,8BAA+B,SAAUhf,EAAIgf,+BAAgCte,MAAM,CAAC,YAAYV,EAAIyf,SAAS,KAAOzf,EAAIc,QAAQqP,gBAAgB,iBAAiBnQ,EAAIue,4BAA8B,IAAM,EAAE,iBAAiBve,EAAI0f,cAAc3X,GAAG,CAAC,MAAQ/H,EAAI2f,yBAAyB3f,EAAIkB,MAAM,OAAOlB,EAAIkB,KAAMlB,EAA0B,uBAAEI,EAAG,MAAM,CAAC6D,YAAY,yCAAyCzD,MAAM,CAAE,QAASR,EAAI4f,gBAAiB,CAACxf,EAAG,SAAS,CAAC6D,YAAY,WAAW8D,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOhI,EAAI6f,sBAAsB,CAAG7f,EAAI+e,UAAmJ,CAAC3e,EAAG,QAAQ,CAAC6D,YAAY,QAAQvD,MAAM,CAAC,KAAO,QAAQ,MAAQ,KAAK,OAAS,QAAQN,EAAG,OAAO,CAAC6D,YAAY,WAAW,CAACjE,EAAI2E,GAAG,YAAvQ,CAACvE,EAAG,QAAQ,CAAC6D,YAAY,OAAOvD,MAAM,CAAC,KAAO,OAAO,MAAQ,KAAK,OAAS,QAAQN,EAAG,OAAO,CAAC6D,YAAY,WAAW,CAACjE,EAAI2E,GAAG,YAAuJ,KAAK3E,EAAIkB,KAAMlB,EAAgB,aAAEI,EAAG,MAAM,CAAC6D,YAAY,oBAAoB,CAAC7D,EAAG,iBAAiB,CAACM,MAAM,CAAC,KAAO,OAAO,GAAGV,EAAIkB,OAAOlB,EAAIkB,KAAMlB,EAAyB,sBAAEI,EAAG,yBAAyB,CAAC6D,YAAY,mBAAmBvD,MAAM,CAAC,GAAKV,EAAIc,QAAQ0I,aAAaxE,IAAI,OAAShF,EAAIc,QAAQ0I,aAAarE,QAAQgH,SAAS,CAAC,MAAQ,SAASnE,GAAQ,OAAOhI,EAAI0f,mBAAmB1f,EAAIkB,MAAM,GAAGd,EAAG,UAAU,CAAC6D,YAAY,WAAWC,MAAOlE,EAAsB,oBAAG,CAACI,EAAG,MAAM,CAAC6D,YAAY,oBAAoB,CAAC7D,EAAG,iBAAiB,CAACM,MAAM,CAAC,MAAQV,EAAIuP,qBAAqB,MAAM,IACpsGpO,EAAkB,G,qNCsKtB,MAAM0W,EAAoB,IACpBiI,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,KAAAnE,UAAoB,EAVA,uBACxB,OAAO/b,KAAKmgB,aAAengB,KAAK8X,SAWK,oCACrC,OAAO9X,KAAKyP,aAAesQ,EAGX,eAChB,OAAO,OAAgBlI,mBAAmB,QAGpB,mCACtB,SAAU,UAAA7X,KAAKa,eAAL,SAAc6L,QAAd,UAAwB1M,KAAKa,eAA7B,OAAwB,EAAcoe,WAAtC,UAAmDjf,KAAKa,eAAxD,OAAmD,EAAcwd,SAAjE,UAA4Ere,KAAKa,eAAjF,iBAA4E,EAAc0I,oBAA1F,OAA4E,EAA4BxE,KAG5E,2CACtC,MAAiD,WAA1C,UAAA/E,KAAKa,eAAL,eAAcuf,yBAGU,sCAC/B,MAAMC,EAAwC,GAC9C,aAAIrgB,KAAKa,eAAT,OAAI,EAAcyf,gBAAiB,CAC/B,MAAMF,EAAkCpgB,KAAKa,QAAQuf,wBACrD,IAAIG,EAAyB,QACzB9Q,EAA6BzP,KAAK8X,SAAW9X,KAAKa,QAAQyf,gBAAgB9b,MAAQxE,KAAKa,QAAQyf,gBAAgB7b,OAAS,KAE5F,UAA5B2b,EACA3Q,EAAc,KACqB,aAA5B2Q,GACPpgB,KAAKa,QAAQyf,gBAAgBxR,WAAW0R,IAAM,EAC9CD,EAAiB,WACkB,WAA5BH,IACPG,EAAiB,WAGrB,IAAIE,EAAqBzgB,KAAKa,QAAQyf,gBAAgB9b,MAClDkc,EAAsB1gB,KAAKa,QAAQyf,gBAAgB7b,OAGvD,GAAkC,OAA9BzE,KAAKkgB,qBAA+B,CACpC,MAAMS,EAAe,IACfC,EAAW5gB,KAAKa,QAAQyf,gBAAgB9b,MAAQxE,KAAKkgB,qBACrDW,EAAoD,UAA5BT,GAAuCpgB,KAAKa,QAAQyf,gBAAgB9b,MAAQxE,KAAKkgB,qBAAuBS,EAElIE,GAAgBD,IAChBH,EAAqB/P,KAAKoQ,MAAM9gB,KAAKkgB,qBAAuBS,GAC5DD,EAAsBhQ,KAAKoQ,MAAM9gB,KAAKa,QAAQyf,gBAAgB7b,OAASzE,KAAKa,QAAQyf,gBAAgB9b,MAAQxE,KAAKkgB,qBAAuBS,IAIhJ,MAAMI,EAAqB/gB,KAAKsd,eAAetd,KAAKa,QAAQyf,gBAAiBG,EAAoBC,EAAqB,IACtHL,EAAQW,KAAO,IACfX,EAAQE,eAAiBA,EACzBF,EAAQY,mBAAqB,GAAG,IAAMjhB,KAAKa,QAAQyf,gBAAgBxR,WAAWoS,SAAS,IAAMlhB,KAAKa,QAAQyf,gBAAgBxR,WAAW0R,OACrIH,EAAQc,iBAAmB,YAC3Bd,EAAQhb,gBAAkBrF,KAAKqE,qBAAqBgB,gBAEpDgb,EAAQ5Q,YAAcA,EAClBzP,KAAK+b,WACLsE,EAAQC,gBAAkB,OAAOS,MAGzC,GAAI,UAAA/gB,KAAKa,eAAL,SAAcmP,cAA+C,OAA/BhQ,KAAKigB,sBAEnCI,EAAQ5Q,YAAczP,KAAKigB,sBAAsBzb,MAAQxE,KAAKigB,sBAAsBxb,YACjF,GAAIzE,KAAK0R,cAAgB1R,KAAKa,QACjC,IAAKb,KAAKme,gBAAkBne,KAAKa,QAAQyf,gBAGrCD,EAAQ5Q,YAAczP,KAAKa,QAAQyf,gBAAgB9b,MAAQxE,KAAKa,QAAQyf,gBAAgB7b,YACrF,GAAIzE,KAAKa,QAAQoe,UAAU3e,OAAS,GAAI,CAE3C,MAAM6X,EAAc,EAAInY,KAAKoY,gBAAmB,IAEhDiI,EAAQ5Q,YAAc,QAAQ0I,QAAiBnY,KAAKqY,YAG5D,OAAOgI,EAGH,eAAezR,EAAcpK,EAAeC,EAAgB2c,GAChE,MAAMvZ,EAAW+G,EAAM7J,IACjB+J,EAAaF,EAAME,WACnBuS,EAAkBxZ,IAAuC,IAA3BA,EAAS1C,QAAQ,KAAoB,IAAN,IAC7Dmc,EAAQxS,EAAa,WAAWA,EAAW0R,OAAO1R,EAAWoS,OAAS,GACtEK,EAAmBH,EAAU,YAAYA,EAAY,GACrDI,EAAS5S,EAAMgQ,UAAY,WAAWhQ,EAAMgQ,UAAc,GAChE,MAAO,GAAG5e,KAAKyhB,iBAAiB5Z,KAAYwZ,UAAuB7c,YAAgBC,IAAS+c,IAASF,IAAQC,IAGzG,iBAAiB1Z,GACrB,OAAO,OAAuB6Z,aAAe7Z,EAGvB,4BACtB,OAAI7H,KAAKke,iBAAyB,EAC9B,UAAAle,KAAKa,eAAL,SAAcyf,iBAA4D,UAAzCtgB,KAAKa,QAAQuf,wBACvCpgB,KAAKa,QAAQyf,gBAAgB9b,MAAQxE,KAAKa,QAAQyf,gBAAgB7b,QAExEzE,KAAK8X,UAAY9X,KAAK2hB,sBAA8B3hB,KAAK2hB,sBAGvD3hB,KAAK8X,SAAWF,EAAoB5X,KAAKigB,sBAAyBjgB,KAAKigB,sBAAsBzb,MAAQxE,KAAKigB,sBAAsBxb,OAAUzE,KAAKyP,YAG7H,wBAEzB,OAAOzP,KAAK8X,SAAW,IAAM9X,KAAK+X,cAGpB,aACd,IAAK/X,KAAKgY,mBAAoB,OAAO,EAErC,MAAMC,EAAcnV,OAAOC,KAAK/C,KAAKgY,oBAAoB5U,KAAK8U,GAAS,OAAgBL,mBAAmBK,IACpG/W,EAAS8W,EAAcjY,KAAKgY,mBAAmBC,GAAe,EACpE,OAAO9W,EAGmB,yBAC1B,GAAInB,KAAKke,iBAAkB,MAAO,GAElC,MAAM/F,EAAc,EAAInY,KAAKoY,gBAAmB,IAChD,MAAQ,CACJhS,cAAe,QAAQ+R,QAAiBnY,KAAKqY,aAI5B,gCACrB,OAAQrY,KAAK2e,eAAiB3e,KAAKoe,4BACJ,MAA1B,UAAApe,KAAKa,eAAL,eAAcwd,UAA2C,MAAzB,UAAAre,KAAKa,eAAL,eAAc6L,SAA6C,MAA5B,UAAA1M,KAAKa,eAAL,eAAcoe,YAAmD,QAA/B,UAAAjf,KAAKa,eAAL,eAAc0I,eAGnG,wBACjBvJ,KAAK2e,gBAAkB,UAAA3e,KAAKa,eAAL,SAAc0d,OAAd,UAAuBve,KAAKa,eAA5B,OAAuB,EAAcmP,cACvDhQ,KAAKa,UACVb,KAAK+b,UAAW,EACZ/b,KAAKa,QAAQyf,kBACbtgB,KAAKkgB,qBAAuBlgB,KAAK4hB,IAAIxX,aAEzCpK,KAAK6hB,YACL7hB,KAAKid,UAAU,IAAMjd,KAAK+b,UAAW,IAGzC,YAAS,QACL,aAAI/b,KAAKa,eAAT,OAAI,EAAc0d,MACdve,KAAK2e,cAAe,EACpB3e,KAAKue,MAAQve,KAAK2J,MAAMmY,WAExB9hB,KAAKue,MAAMwD,aAAe,KACtB/hB,KAAK2e,cAAe,QAErB,aAAI3e,KAAKa,eAAT,OAAI,EAAcmP,aAAc,CACnChQ,KAAK2e,cAAe,EACpB3e,KAAKigB,sBAAwB,KAC7BjgB,KAAKue,MAAQ,KACb,MAAM1H,EAAU,CACZ5J,GAAI+U,EAAShiB,KAAKa,QAAQmP,cAC1BiS,SAAUjiB,KAAKa,QAAQkP,kBACvBlC,KAAM7N,KAAKa,QAAQkP,kBACnBmS,MAAOliB,KAAKa,QAAQkP,kBACpBoS,SAAUniB,KAAKa,QAAQuhB,kBACvBC,OAAO,EACPC,QAAQ,EACRC,UAAU,EACVnd,QAASpF,KAAK6Y,SAAW,IAAS7S,MAAMC,OAAOuc,aAAa,OAAS,IAASxc,MAAMC,OAAOH,KAAK,SAAW,IAAIwC,QAAQ,IAAK,IAC5Hma,WAAYziB,KAAKa,QAAQkP,mBAE7B/P,KAAKid,UAAU,KAEXjd,KAAKue,MAAQ,IAAI,OAAYve,KAAK2J,MAAMmY,WAA2BjL,GAEnE7W,KAAKue,MAAMzW,GAAG,QAAS,KACnB9H,KAAK8e,WAAY,IAGrB9e,KAAKue,MAAMzW,GAAG,QAAUnF,IACpB+f,QAAQC,IAAI,oBAAqBhgB,KAErC3C,KAAKue,MAAMzW,GAAG,SAAU,KACpB9H,KAAK4iB,+BAKjB,SAASZ,EAASa,GACd,MAAMC,EAAUD,EAAQjP,MAAM,WAC9B,IAAI3G,EAAK4V,EAIT,OAHIC,EAAQxiB,OAAS,IACjB2M,EAAK6V,EAAQA,EAAQxiB,OAAS,IAE3ByiB,SAAS9V,EAAI,KAOpB,gBAAgBpM,GAAwC,UACvDA,IAELA,EAAQmiB,qBAAR,UAA+BniB,EAAQmiB,4BAAvC,QAA+D,OAAoBxM,KACnF3V,EAAQoiB,kBAAR,UAA4BpiB,EAAQoiB,yBAApC,QAA0DjjB,KAAK0R,aAAe,OAAawR,SAAW,OAAaC,UACnHtiB,EAAQuiB,uBAAR,UAAiCviB,EAAQuiB,8BAAzC,QAAoEpjB,KAAK0R,aAAe,OAAkB2R,MAAQ,OAAkBC,QAGlG,iCAClC1T,WAAW,KACP5P,KAAKujB,0BACLvjB,KAAK2e,cAAe,GACrB,KAG8B,gCACjC,GAAI3e,KAAKue,MAAO,CACZ,MAAM/Z,QAAcxE,KAAKue,MAAMiF,gBACzB/e,QAAezE,KAAKue,MAAMkF,iBAChCzjB,KAAKigB,sBAAwB,CAAEzb,MAAOA,EAAOC,OAAQA,IAIjD,eACR,cAAO,aAAP,IAAO,YAAP,EAAO,OAAsBoU,SAGH,yBAE1B,MAAM6K,EAAiC,UAAvB1jB,KAAK2jB,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,UAAA7jB,KAAKa,eAAL,SAAcmP,cAAd,UAA8BhQ,KAAKa,eAAnC,OAA8B,EAAc0d,SACf,IAAtBve,KAAK2e,cAAyD,OAA/B3e,KAAKigB,uBAAkCjgB,KAAK+b,SAKlF,mBACJ,GAAK/b,KAAKue,MAAV,CAEA,GAAIve,KAAK8e,UACL,IACI9e,KAAKue,MAAMuF,QACb,MAAOnhB,GACL,OAAeC,MAAMD,QAGzB,IACI3C,KAAKue,MAAMwF,OACb,MAAOphB,GACL,OAAeC,MAAMD,GAI7B3C,KAAK8e,WAAa9e,KAAK8e,WAGnB,oBAAoBkF,EAAaC,GACrC,OAAK,eAAgBD,GACd,eAASA,EAAKC,GADa,IAASje,MAAMC,OAAOE,MAI5B,2BAC5B,IAAIhF,EAAS,cAMb,OAJInB,KAAKa,SAAWb,KAAKsF,eAAetF,KAAKa,QAAQwE,mBACjDlE,EAASnB,KAAKkkB,oBAAoBlkB,KAAKa,QAAQwE,kBAG3C,CACJA,gBAAiBlE,GAIM,0BAC3B,IAAIA,EAAS,cAMb,OAJInB,KAAKa,UAAYb,KAAKa,QAAQyf,iBAAmBtgB,KAAKsF,eAAetF,KAAKa,QAAQwE,mBAClFlE,EAASnB,KAAKkkB,oBAAoBlkB,KAAKa,QAAQwE,kBAG3C,CACJA,gBAAiBlE,GAIc,kCACnC,IAAKnB,KAAKa,SAAWb,KAAK2e,aAAc,MAAO,GAE/C,MAAMtZ,EAAkBrF,KAAKa,QAAQmf,uBAC/BmE,EAAkBnkB,KAAKa,QAAQujB,iCAErC,IAAIjjB,EAAS,cAQb,OANInB,KAAKqkB,6BAA+BrkB,KAAKsF,eAAeD,KACxDlE,EAASnB,KAAKkkB,oBAAoB7e,EAAiB8e,EAAkBtE,OAA6Bze,IAGtGpB,KAAKggB,uBAAyB7e,EAEtB,CACJkE,gBAAiBlE,GAQgB,oCAGrC,MAAMmjB,EAAatkB,KAAKkP,mBAAqBlP,KAAK8X,SAAW,IAAM,EAEnE,MAAQ,CACJjH,UAAW,cAAcyT,QAIb,qBAChB,OAAO,UAAAtkB,KAAKa,eAAL,eAAcyI,oBAAqB,KAGf,0CAC3B,IAAIib,EAUJ,OALIA,GAHAvkB,KAAKW,cAAgB,UAACX,KAAKa,eAAN,OAAC,EAAcwd,SAApC,UAA+Cre,KAAKa,eAApD,QAA+C,EAAc6L,OAErD1M,KAAKW,cAAL,UAAqBX,KAAKa,eAA1B,OAAqB,EAAcwd,SAAnC,UAA8Cre,KAAKa,eAAnD,OAA8C,EAAc6L,SAAa1M,KAAKW,eAAgB,UAACX,KAAKa,eAAN,QAAC,EAAcwd,UAArC,UAAgDre,KAAKa,eAArD,OAAgD,EAAc6L,OACtI,KAEA,KAJA,KAOL6X,EAGX,eAAenf,GAAa,MACxB,iBAAyB,KAAb,OAALA,QAAK,IAALA,OAAA,EAAAA,EAAO9E,eAAd,SAGI,WAAWkkB,GACf,MAAMC,EAAW,IAASze,MAAMC,OAAOE,MACvC,MAAQ,CACJf,MAAuC,UAAhCpF,KAAKggB,uBAAqCyE,EAAWD,EAAWxkB,KAAKkkB,oBAAoBM,GAAYC,GAI9F,uBAClB,OAAO,UAAAzkB,KAAKa,eAAL,eAAcmiB,wBAAyB,OAAoB0B,MAG9C,mBACpB,IAAK1kB,KAAKa,QAAS,MAAO,GAE1B,IAAI8jB,EAAW,SACf,IAAK3kB,KAAK8X,SACN,OAAQ9X,KAAKa,QAAQoiB,mBACrB,KAAK,OAAa2B,SACdD,EAAW,QACX,MACJ,KAAK,OAAazB,SACdyB,EAAW,QACX,MACJ,KAAK,OAAaxB,UACdwB,EAAW,SACX,MAGR,MAAO,GAAGA,EAGgB,yBAC1B,OAAK3kB,KAAK2jB,cAEoB,UAAvB3jB,KAAK2jB,cAA4B,UAAY3jB,KAAKue,MAAQ,UAAY,UAF7C,GAKX,oBACrB,GAAKve,KAAKa,QAEV,OAAI,OAAgBgX,mBAAmB,SAIhC7X,KAAKa,QAAQuiB,yBAA2B,OAAkBE,OAHtD,QAGyE,QAG7D,sBACvB,MAAMuB,EAAY7kB,KAAKa,QAA2CikB,iBAClE,OAAKD,GAAgC,IAApBA,EAASvkB,OAKnBukB,EACF7hB,OAAO+hB,GAAOC,EAA2BD,EAAK/kB,KAAKoY,kBAL7C,GAOX,SAAS4M,EAA2BpW,EAAgBa,GAEhD,MAAMwV,EAA6B,IAAdxV,EACrB,OAAOiB,KAAKwU,IAAItW,EAAMpK,MAAQoK,EAAMnK,OAASgL,IAAgBwV,GAI7C,mBACpB,GAAoC,IAAhCjlB,KAAKmlB,gBAAgB7kB,OACrB,OAAO,KAIX,MAAM8kB,EAASplB,KAAKmlB,gBACflM,IAAI8L,GAAO,GAAGA,EAAIhgB,OAAOggB,EAAIvgB,UAC7B6gB,KAAK,MAGJpR,EAAMjU,KAAKmlB,gBACZG,KAAK,CAACC,EAAQC,IAAWD,EAAO/gB,MAAQghB,EAAOhhB,OAAOxE,KAAKmlB,gBAAgB7kB,OAAS,GAAGyE,IAGtF0gB,EAAWzlB,KAAK0lB,kBAAR,KAEd,MAAO,CACHN,SACAnR,MACAwR,SAIa,sBACjB,MAAO,CAAEpgB,gBAAe,UAAErF,KAAKa,eAAP,aAAE,EAAc8kB,UAAWC,QAAS,OAGnB,wCACzC,OAAO5lB,KAAKoY,gBAAkB0H,EAGH,0BAC3B,OAAK9f,KAAKa,QACNb,KAAKa,QAAQmP,aAAqB,GAE/BhQ,KAAK6lB,kCAAqC,CAC7CrhB,MAAO,OACPC,OAAQ,OACRyc,KAAM,MACNrQ,UAAW,oBACT,MACK7Q,KAAKa,QAAQmP,cAAiB,CAAEvL,OAAQ,IAAMqb,EAAmB,KACxEtb,MAAO,OACPgc,IAAK,MACL3P,UAAW,oBAZW,GAgBS,4CACnC,OAAO7Q,KAAKwe,yBAA2B,UAAAxe,KAAKa,eAAL,mBAAiDikB,wBAAjD,eAAmExkB,QAAS,MAAO,UAACN,KAAKa,eAAN,QAAC,EAAcmP,cAG3G,6BAC9B,OAAOhQ,KAAKa,UAAiC,IAAtBb,KAAK2e,cAA0B3e,KAAKue,QAA4C,IAAnCve,KAAKa,QAAQkP,oBAAkE,IAAnC/P,KAAKa,QAAQuhB,kBAG5F,sCACjC,MAAyC,SAAlC,UAAApiB,KAAKa,eAAL,eAAcilB,iBAGM,oCAC3B,QAAQ,oBAAE9lB,KAAKa,eAAP,iBAAE,EAAcyf,uBAAhB,aAAE,EAA+Bvb,WAAjC,WAGQ,qBAChB,QAAQ,UAAC/E,KAAKa,eAAN,QAAC,EAAc8kB,eAAgB3lB,KAAKa,QAAQmP,gBAAkBhQ,KAAKa,QAAQ0d,OAASve,KAAKwe,uBAAyBxe,KAAK+lB,cAGjG,uCAE9B,QAAQ,oBAAE/lB,KAAKa,eAAP,iBAAE,EAAc0I,oBAAhB,aAAE,EAA4BhG,YAA9B,WAGqB,sCAC7B,OAAQvD,KAAKgmB,wBAAN,YAAkC,UAAChmB,KAAKa,eAAN,iBAAC,EAAc0I,oBAAf,QAAC,EAA4BxE,YAA/D,SAGmC,iDAC1C,QAAU,UAAA/E,KAAKa,eAAL,UAAcoP,qBAAd,UAAqCjQ,KAAKa,eAA1C,QAAqC,EAAcqP,iBAGrC,uBACxB,OAAOlQ,KAAKW,cAAgB,OAAa4P,kBAGV,oCAC/B,UAAIvQ,KAAKa,eAAT,OAAI,EAAcoP,sBACVjQ,KAAKue,OAELve,KAAKue,MAAMuF,cAET,OAA8BmC,KAAKjmB,KAAKa,QAAQoP,qBAAqB,GACvEjQ,KAAKue,OAELve,KAAKue,MAAMwF,UAnjBpB,gBAFF,eAAK,CACF1hB,KAAMS,U,8BAMP,gBAHF,eAAK,CACFT,KAAMqB,QACNC,SAAS,K,mCAMV,gBAHF,eAAK,CACFtB,KAAMqB,QACNC,SAAS,K,uCAMV,gBAHF,eAAK,CACFtB,KAAM6jB,SACNviB,QAAS,U,mCAMV,gBAHF,eAAK,CACFtB,KAAMqB,QACNC,SAAS,K,mCAMV,gBAHF,eAAK,CACFtB,KAAMqB,QACNC,SAAS,K,iCAMV,gBAHF,eAAK,CACFtB,KAAMqB,QACNC,SAAS,K,kDAMV,gBAHF,eAAK,CACFF,UAAU,EACVpB,KAAMc,U,oCAMP,gBAHF,eAAK,CACFM,UAAU,EACVpB,KAAMc,U,kCAIV,gBADC,kB,4CAME,gBAHF,eAAK,CACFM,UAAU,EACVpB,KAAMS,U,yCAiNV,gBAHC,eAAM,UAAW,CACdqjB,WAAW,K,8BAQd,MA5QgB,EAAsB,gBAH1C,eAAU,CACPtiB,WAAY,CAAE8O,iBAAA,KAAgByT,iBAAA,KAAgBC,eAAA,KAAcrf,gBAAA,SAE3C,WC/Mga,I,wBCQjbjD,EAAY,eACd,EACAjE,EACAoB,GACA,EACA,KACA,WACA,MAIa,OAAA6C,E,kDCnBf,IAAIjE,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAAC6D,YAAY,SAASzD,MAAM,CAAE,6BAA8BR,EAAIS,sBAAuB,qBAAsBT,EAAI4R,cAAe,CAACxR,EAAG,MAAM,CAACI,MAAM,CAAE,6BAA8BR,EAAIsF,gBAAiB,iBAAkBtF,EAAIsF,iBAAkBpB,MAAOlE,EAAS,OAAG,CAACI,EAAG,MAAM,CAAC6D,YAAY,sBAAsB,CAAEjE,EAAIc,QAAgB,SAAEV,EAAG,iBAAiB,CAAC6D,YAAY,QAAQvD,MAAM,CAAC,MAAQV,EAAIY,aAAe,KAAO,KAAK,cAAcZ,EAAIY,eAAe,CAACZ,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIc,QAAQH,UAAU,OAAOX,EAAIkB,KAAKd,EAAG,UAAU,CAACqH,WAAW,CAAC,CAACjE,KAAK,sBAAsBkE,QAAQ,0BAA0B0B,IAAI,cAAcnF,YAAY,qBAAqBoF,SAAS,CAAC,UAAYrJ,EAAI4E,GAAG5E,EAAIsJ,SAAStJ,EAAIc,QAAQwI,cAAetJ,EAAIc,QAAoB,aAAEV,EAAG,iBAAiB,CAAC6D,YAAY,qBAAqBvD,MAAM,CAAC,YAAYV,EAAIc,QAAQyI,kBAAkB,KAAOvJ,EAAIc,QAAQ0I,aAAahG,KAAK,KAAOxD,EAAIc,QAAQ0I,aAAaxE,IAAI,OAAShF,EAAIc,QAAQ0I,aAAarE,UAAUnF,EAAIkB,MAAM,QAChjCC,EAAkB,G,iFC6BtB,IAAqB,EAArB,cAAgD,OAgBjB,sBACvB,OAAOlB,KAAKa,QAAQ8E,sBACd3F,KAAKa,QAAQ8E,sBACb3F,KAAKa,QAAQwE,gBAAkB,IAAMrF,KAAKa,QAAQwE,qBAAkBjE,EAGzD,gBACjB,IAAKpB,KAAKqF,gBAAiB,OAC3B,MAAM,IAAEO,EAAF,MAAOC,EAAP,KAAcC,GAAS,eAAe9F,KAAKqF,iBAC3CU,EAAmB,eAAKH,EAAKC,EAAOC,IAAS,GACnD,OAAOC,EAAmB,IAASC,MAAMC,OAAOC,MAAQ,IAASF,MAAMC,OAAOE,MAGjE,YACb,MAAO,CACHd,gBAAiBrF,KAAKqF,gBACtBD,MAAOpF,KAAKqG,WAIa,4BAC7B,OAAOrG,KAAKa,QAAQL,wBAA0BR,KAAKW,aAG/C,SAAS6I,GACb,OAAO,OAAiBC,qBAAqBD,GAOzC,UACJ,OAAiBE,sBAAsB1J,KAAK2J,MAAMC,aAG9C,gBACJ,OAAiBC,wBAAwB7J,KAAK2J,MAAMC,eAjDrD,gBAHF,eAAK,CACFnG,UAAU,EACVpB,KAAMS,U,8BAMP,gBAHF,eAAK,CACFW,UAAU,EACVpB,KAAMqB,W,mCAMP,gBAHF,eAAK,CACFD,UAAU,EACVpB,KAAMuB,U,kCAbO,EAAkB,gBAHtC,eAAU,CACPC,WAAY,CAAEmD,gBAAA,SAEG,WC9B4Z,I,YCO7ajD,EAAY,eACd,EACAjE,EACAoB,GACA,EACA,KACA,KACA,MAIa,aAAA6C,E,kDClBf,IAAIjE,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAAC6D,YAAY,oCAAoC,CAAEjE,EAAIc,QAAQH,UAAYX,EAAIumB,UAAUhmB,OAAQH,EAAG,gBAAgB,CAAC6D,YAAY,QAAQvD,MAAM,CAAC,MAAQV,EAAIY,aAAe,KAAO,KAAK,cAAcZ,EAAIY,eAAe,CAACZ,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIc,QAAQH,UAAU,OAAOX,EAAIkB,KAAKd,EAAG,SAAS,CAACI,MAAM,UAAYR,EAAIkN,GAAGxM,MAAM,CAAC,GAAKV,EAAIkN,GAAG,gBAAgBlN,EAAIkN,GAAG,QAAUlN,EAAImN,gBAAgBnN,EAAIwF,GAAIxF,EAAa,WAAE,SAASwmB,EAASpZ,GAAO,OAAOhN,EAAG,cAAc,CAAC0C,IAAIsK,EAAMnJ,YAAY,8BAA8B,CAAC7D,EAAG,iBAAiB,CAACM,MAAM,CAAC,QAAU8lB,EAAS,iBAAgB,EAAK,oBAAoBxmB,EAAIymB,+BAA+B,MAAK,GAAGrmB,EAAG,SAAS,CAAC6D,YAAY,4CAA4CzD,MAAMR,EAAIqN,mBAAmB3M,MAAM,CAAC,KAAO,cAAc,KAAO,UAAU4M,KAAK,eAAe,CAAClN,EAAG,QAAQ,CAACM,MAAM,CAAC,KAAO,kBAAkB,MAAQ,KAAK,OAAS,SAAS,GAAGN,EAAG,SAAS,CAAC6D,YAAY,4CAA4CzD,MAAMR,EAAIuN,mBAAmB7M,MAAM,CAAC,KAAO,cAAc,KAAO,UAAU4M,KAAK,eAAe,CAAClN,EAAG,QAAQ,CAACM,MAAM,CAAC,KAAO,mBAAmB,MAAQ,KAAK,OAAS,SAAS,IAAI,IAC/sCS,EAAkB,G,gDC8BtB,IAAqB,EAArB,cAAkD,OAYzB,gBACjB,OAAKlB,KAAKa,QAAQ4lB,cAGX,CAACzmB,KAAKa,QAAQ4lB,iBAAkBzmB,KAAKa,QAAQylB,WAFzC,IAAItmB,KAAKa,QAAQylB,WAKM,iCAClC,QAAStmB,KAAKsmB,UAAUljB,KAAKsjB,IAAC,aAAI,UAAAA,EAAE9X,aAAF,eAAS7J,MAAQ2hB,EAAEC,UAAYD,EAAEniB,UAGzD,SACV,MAAO,2BAA4B,IAAIiJ,MAAOC,UAGpB,yBAC1B,MAAO,6BAA+BzN,KAAKiN,GAGjB,yBAC1B,MAAO,6BAA+BjN,KAAKiN,GAGtB,oBACrB,MAAO,CACHS,aAAc,GACdC,cAAe,OACfC,eAAgB,EAChBC,MAAM,EACNC,wBAAwB,EACxBC,uBAAuB,EACvBC,eAAe,EACfC,gBAAgB,EAChB2Y,YAAY,EACZ1Y,WAAY,CACRC,OAAQ,IAAMnO,KAAKsN,mBACnBc,OAAQ,IAAMpO,KAAKoN,oBAEvBiB,YAAY,EACZC,aAActO,KAAKiN,GACnBsB,UAAU,EACVC,gBAAgB,EAChBC,sBAAsB,KAlD3B,gBAHF,eAAK,CACFhL,UAAU,EACVpB,KAAMS,U,8BAOP,gBAJF,eAAK,CACFW,UAAU,EACVE,SAAS,EACTtB,KAAMqB,W,mCATO,EAAoB,gBAHxC,eAAU,CACPG,WAAY,CAAEgjB,iBAAA,KAAgB7f,gBAAA,SAEb,WC/B8Z,I,wBCQ/ajD,EAAY,eACd,EACAjE,EACAoB,GACA,EACA,KACA,WACA,MAIa,aAAA6C,E,kDCnBf,IAAIjE,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAAC6D,YAAY,kBAAkB,CAAC7D,EAAG,OAAO,CAACM,MAAM,CAAC,eAAe,UAAUV,EAAIwF,GAAIxF,EAAIc,QAAY,MAAE,SAAS2U,EAAIrI,GAAO,OAAOhN,EAAG,MAAM,CAAC0C,IAAIsK,EAAM1M,MAAM,CAAC,KAAO+U,EAAI3U,QAAQH,SAAS,aAAa8U,EAAI3U,QAAQimB,YAAY,CAAC3mB,EAAG,aAAa,CAACM,MAAM,CAAC,OAAS+U,EAAI3U,QAAQkmB,OAAO,oBAAmB,MAAU,MAAK,IAAI,IACha7lB,EAAkB,G,gDCkBtB,IAAqB,EAArB,cAAgD,SAE5C,gBADC,eAAK,CAAEuC,UAAU,EAAMpB,KAAMS,U,8BADb,EAAkB,gBAHtC,eAAU,CACPe,WAAY,CAAEmjB,OAAA,KAAMC,MAAA,SAEH,WCnB4Z,I,YCO7aljB,EAAY,eACd,EACAjE,EACAoB,GACA,EACA,KACA,KACA,MAIa,aAAA6C,E,2CClBf,yBAA4kB,EAAG,G,kCCA/kB,IAAIjE,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAAEJ,EAAY,SAAEI,EAAG,gBAAgB,CAAC6D,YAAY,oEAAoEzD,MAAM,CAAE,QAASR,EAAIY,cAAeF,MAAM,CAAC,MAAQV,EAAIY,aAAe,KAAO,KAAK,cAAcZ,EAAIY,eAAe,CAACZ,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIW,UAAU,OAAOX,EAAIkB,KAAKd,EAAG,qBAAqB,CAAC6D,YAAY,kBAAkBvD,MAAM,CAAC,SAAWV,EAAIM,SAAS,YAAYN,EAAIa,kBAAkBiL,YAAY9L,EAAI+L,GAAG,CAAC,CAACjJ,IAAI,UAAUkJ,GAAG,SAAS5C,GACxiB,IAAI+d,EAAoB/d,EAAI+d,kBACxBC,EAAehe,EAAIge,aACvB,MAAO,CAAEpnB,EAAa,UAAE,CAAEA,EAAY,SAAEI,EAAG,SAAS,CAACI,MAAM,UAAYR,EAAIkN,GAAGxM,MAAM,CAAC,GAAKV,EAAIkN,GAAG,gBAAgBlN,EAAIkN,GAAG,QAAUlN,EAAImN,gBAAgBnN,EAAIwF,GAAIxF,EAAY,UAAE,SAAS8M,EAAQM,GAAO,OAAOhN,EAAG,cAAc,CAAC0C,IAAIsK,EAAMnJ,YAAY,gCAAgC,CAAC7D,EAAG,cAAc,CAACM,MAAM,CAAC,UAAY,IAAKoL,YAAY9L,EAAI+L,GAAG,CAAC,CAACjJ,IAAI,UAAUkJ,GAAG,SAAS5C,GAC7W,IAAI+S,EAAS/S,EAAI+S,OACjB,MAAO,CAAC,EAAS/b,EAAG,cAAc,CAACI,MAAMR,EAAIqnB,aAAa3mB,MAAM,CAAC,KAAO,WAAW,QAAUoM,EAAQ,yBAAyB,EAAE,gBAAgBsa,EAAa,qBAAqBpnB,EAAIa,iBAAiB,gBAAgBb,EAAIsnB,cAAcvf,GAAG,CAAC,kBAAoBof,KAAqBnnB,EAAIkB,SAAS,MAAK,MAAS,MAAK,GAAGlB,EAAIkB,KAAKd,EAAG,SAAS,CAAC6D,YAAY,4CAA4CzD,MAAMR,EAAIqN,mBAAmB3M,MAAM,CAAC,KAAO,cAAc,KAAO,UAAU4M,KAAK,eAAe,CAAClN,EAAG,QAAQ,CAACM,MAAM,CAAC,KAAO,kBAAkB,MAAQ,KAAK,OAAS,SAAS,GAAGN,EAAG,SAAS,CAAC6D,YAAY,4CAA4CzD,MAAMR,EAAIuN,mBAAmB7M,MAAM,CAAC,KAAO,cAAc,KAAO,UAAU4M,KAAK,eAAe,CAAClN,EAAG,QAAQ,CAACM,MAAM,CAAC,KAAO,mBAAmB,MAAQ,KAAK,OAAS,SAAS,IAAIN,EAAG,MAAM,CAACJ,EAAIwF,GAAIxF,EAAoB,kBAAE,SAAS8M,EAAQM,GAAO,OAAOhN,EAAG,MAAM,CAAC0C,IAAIsK,EAAQ,IAAMN,EAAQya,OAAOtjB,YAAY,QAAQzD,MAAMR,EAAIqnB,cAAc,CAACjnB,EAAG,cAAc,CAACM,MAAM,CAAC,QAAUoM,EAAQ,OAAS,GAAG,yBAAyB,EAAE,KAAO,kBAAkB,gBAAgBsa,EAAa,gBAAgBpnB,EAAIsnB,aAAa,qBAAqBtnB,EAAIa,kBAAkBkH,GAAG,CAAC,kBAAoBof,MAAsB,WAA+B9lB,IAAzBrB,EAAIgB,kBAAkChB,EAAIM,SAASC,OAASP,EAAIwnB,KAAOxnB,EAAIgB,iBAAkBZ,EAAG,MAAM,CAAC6D,YAAY,QAAQ,CAAC7D,EAAG,eAAe,CAAC6D,YAAY,iCAAiCvD,MAAM,CAAC,KAAOV,EAAIkI,GAAG,IAAPlI,CAAY,8BAA8B,KAAO,YAAY+H,GAAG,CAAC,MAAQ/H,EAAIynB,mBAAmB,GAAGznB,EAAIkB,MAAM,WAAW,IAC7gDC,EAAkB,G,gGCuEtB,IAAqB,EAArB,cAAkD,OAAlD,c,oBA6CI,KAAAqmB,KAAe,EACf,KAAA5Z,cAA4B,EAC5B,KAAAoO,UAAoB,EACpB,KAAAW,iBAA2B,GAEC,uBACxB,OAAO1c,KAAKK,SAAS2C,OAAO,CAACykB,EAAGta,SAAoC/L,IAA1BpB,KAAKe,kBAAkCoM,EAAQnN,KAAKunB,KAAOvnB,KAAKe,kBAG9G,iBACIf,KAAKunB,OAGe,mBACpB,IAAKvnB,KAAK0nB,eAAgB,MAAO,GAEjC,OAAQ1nB,KAAK0nB,eAAeC,eAC5B,IAAK,QACD,MAAO,WACX,IAAK,OACD,MAAO,eAID,SACV,OAAO,IAAIna,MAAOC,UAGQ,yBAC1B,MAAO,6BAA+BzN,KAAKiN,GAGjB,yBAC1B,MAAO,6BAA+BjN,KAAKiN,GAG/C,yBACI,MAAM8P,EAAgB,OAAkBC,sBACpCD,IAAkB/c,KAAK0c,mBACvB1c,KAAK0c,iBAAmBK,EACxB/c,KAAK+b,UAAW,EAChB/b,KAAK4nB,mBACL5nB,KAAKid,UAAU,IAAMjd,KAAK+b,UAAW,IAI7C,UACI/b,KAAK0c,iBAAmB,OAAkBM,sBAC1C,OAAkBe,YAAY/d,KAAKge,wBACnChe,KAAK4nB,mBACL5nB,KAAKid,UAAU,KACXjd,KAAK+b,UAAW,IAIxB,YACI,OAAkBkC,eAAeje,KAAKge,wBAG1C,mBACIhe,KAAK2N,cAAgB,OAAgBkK,mBAAmB,QAAU,EAAI,OAGjD,oBACrB,MAAO,CACHnK,aAAc,GACdC,cAAe3N,KAAK2N,cACpBC,eAAgB,EAChBC,MAAM,EACNC,wBAAwB,EACxBC,uBAAuB,EACvBC,eAAe,EACfC,gBAAgB,EAChBC,WAAY,CACRC,OAAQ,IAAMnO,KAAKsN,mBACnBc,OAAQ,IAAMpO,KAAKoN,oBAEvBiB,YAAY,EACZC,aAActO,KAAKiN,GACnBsB,UAAU,EACVC,gBAAgB,EAChBC,sBAAsB,KAzH9B,gBAJC,eAAK,CACFhL,UAAU,EACVpB,KAAMwlB,S,+BAOP,gBAHF,eAAK,CACFpkB,UAAU,EACVpB,KAAMuB,U,uCAOP,gBAJF,eAAK,CACFH,UAAU,EACVpB,KAAMuB,OACND,QAAS,Q,+BAOV,gBAJF,eAAK,CACFF,UAAU,EACVpB,KAAMqB,QACNC,SAAS,K,mCAOV,gBAJF,eAAK,CACFF,UAAU,EACVpB,KAAMuB,OACND,QAAS,Q,qCAOV,gBAJF,eAAK,CACFF,UAAU,EACVpB,KAAMuB,OACND,QAAS,Q,mCAMV,gBAHF,eAAK,CACFtB,KAAMqB,QACNC,SAAS,K,gCAKV,gBAFF,eAAK,CACFtB,KAAMc,U,uCA1CO,EAAoB,gBAHxC,eAAU,CACPU,WAAY,CAAEikB,qBAAA,KAAoB9gB,gBAAA,SAEjB,WC7E8Z,I,wBCQ/ajD,EAAY,eACd,EACAjE,EACAoB,GACA,EACA,KACA,WACA,MAIa,OAAA6C,E,2CCnBf,IAAIjE,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAIgoB,SAASznB,OAAS,EAAGH,EAAG,MAAM,CAACJ,EAAIkR,GAAG,WAAU,WAAW,MAAO,CAAC9Q,EAAG,KAAK,CAAC6D,YAAY,+CAA+CjE,EAAIwF,GAAIxF,EAAY,UAAE,SAASioB,EAAQviB,GAAI,OAAOtF,EAAG,KAAK,CAAC0C,IAAI4C,EAAGzB,YAAY,SAAS,CAACjE,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIkoB,WAAWD,EAAQA,UAAU,KAAMjoB,EAAW,QAAE,CAACA,EAAI2E,GAAG,MAAM3E,EAAI4E,GAAG5E,EAAImoB,SAAS,OAAOnoB,EAAIkB,MAAM,MAAK,MAAK,CAAC,SAAWlB,EAAIgoB,YAAY,GAAGhoB,EAAIkB,MACteC,EAAkB,G,oFCwBtB,IAAqB,EAArB,cAA2C,aAA3C,c,oBACY,KAAA6mB,SAA4B,GAC5B,KAAAG,QAAkB,GAMlB,UACJrS,EAAA,KAAI/N,GAAG,OAAyB9H,KAAKmoB,YAGjC,WAAWC,GACXA,EAAqBC,aAAeroB,KAAKiN,KACzCjN,KAAK+nB,SAAWK,EAAqBL,SACrC/nB,KAAKkoB,QAAUE,EAAqBF,QACpCE,EAAqBE,WAIrB,WAAWC,GACf,OAAI,OAAkBC,OAAOD,GAClB,OAAkBE,IAAIF,GAE1BA,EAGH,YACJ1S,EAAA,KAAI6S,IAAI,OAAyB1oB,KAAKmoB,cAtB1C,gBAHC,eAAK,CACF1kB,UAAU,K,yBAJG,EAAa,gBADjC,QACoB,WCzBqY,I,YCOtZM,EAAY,eACd,EACAjE,EACAoB,GACA,EACA,KACA,KACA,MAIa,OAAA6C,E,yEClBf,IAAIjE,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAAC6D,YAAY,QAAQzD,MAAM,CAAE,6BAA8BR,EAAIS,wBAAyB,CAACL,EAAG,MAAM,CAAC6D,YAAY,SAASzD,MAAM,CAAE,eAAe,IAASR,EAAIwF,GAAIxF,EAAkB,gBAAE,SAAS4oB,EAAMxb,GAAO,OAAOhN,EAAG,UAAU,CAAC0C,IAAI8lB,EAAMC,KAAK5kB,YAAY,sCAAsC,CAAC7D,EAAG,wBAAwB,CAACM,MAAM,CAAC,MAAQ0M,EAAM,MAAQwb,EAAM7W,MAAM,QAAU6W,EAAM9nB,QAAQ,kBAAkB,GAAG,eAAe,IAAI,IAAI,eAAed,EAAI+R,MAAM,iBAAiB/R,EAAIY,aAAa,eAAeZ,EAAI8oB,oBAAoB1b,IAAQrF,GAAG,CAAC,iBAAmB,SAASC,GAAQ,OAAOhI,EAAIuP,iBAAiBqZ,EAAMC,WAAW,MAAK,MACvtB1nB,EAAkB,G,6DC+BtB,IAAqB,EAArB,cAA6C,aAA7C,c,oBACY,KAAA4nB,cAA0B,GAc1B,oBAAoB3b,GAAa,MACrC,MAAM4b,EAAe5b,EAAQ,IAAM,EAAIA,EAAQ,EAAIA,EAAQ,EACrD6b,EAAO,UAAGhpB,KAAK+mB,OAAOgC,UAAf,aAAG,EAA2BloB,QAC3C,OAAOmoB,KAAaA,EAAQhZ,aAGP,4BACrB,OAAOhQ,KAAKa,QAAQL,wBAA0BR,KAAKW,aAGrC,uBACd,2BAAOX,KAAKa,eAAZ,iBAAO,EAAckmB,cAArB,aAAO,EAAsB9N,IAAI,CAACgQ,EAAGxjB,KACzB,IACDwjB,EACHL,KAAMnjB,YAHd,QAKM,GAGgB,qBACtB,OAAOzF,KAAK+mB,OAAO/jB,OAAOimB,IAAMjpB,KAAK8oB,cAAc5W,SAAS+W,EAAEL,OAG1D,iBAAiBM,GACrBlpB,KAAK8oB,cAAclL,KAAKsL,KAjCzB,gBAHF,eAAK,CACFzlB,UAAU,EACVpB,KAAMS,U,8BAGI,gBAAb,eAAKc,S,4BAGN,gBADC,eAAK,CAAEH,UAAU,EAAMpB,KAAMqB,W,mCAVb,EAAe,gBAHnC,eAAU,CACPG,WAAY,CAAE6S,wBAAA,SAEG,WChCyZ,I,YCO1a3S,EAAY,eACd,EACAjE,EACAoB,GACA,EACA,KACA,KACA,MAIa,aAAA6C,E,kEClBf,yBAA8jB,EAAG,G,qBCAjkBnE,EAAOC,QAAU,IAA0B,qC,gECA3C,IAAIC,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,MAAM,CAAE,6BAA8BR,EAAIS,wBAAyB,CAACL,EAAG,MAAM,CAAC6D,YAAY,gBAAgBzD,MAAM,CAAC,CAAE,YAAaR,EAAIsF,gBAAiB,wBAA8C,IAAtBtF,EAAIopB,eAA2BppB,EAAIc,QAAQH,SAAU,gBAAsC,IAAtBX,EAAIopB,eAA0BppB,EAAIc,QAAQH,UAAYX,EAAIqpB,cAAcnlB,MAAOlE,EAAS,OAAG,CAACI,EAAG,MAAM,CAAEJ,EAAIc,QAAgB,SAAEV,EAAG,gBAAgB,CAAC6D,YAAY,6BAA6BzD,MAAM,CAAC,4BAA6BR,EAAIopB,cAAe,2BAA4BppB,EAAIopB,eAAe1oB,MAAM,CAAC,MAAQV,EAAIY,aAAe,KAAO,KAAK,cAAcZ,EAAIY,eAAe,CAACZ,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIc,QAAQH,UAAU,OAAOX,EAAIkB,MAAM,GAAGd,EAAG,MAAM,CAAC6D,YAAY,WAAW,CAAC7D,EAAG,MAAM,CAAC6D,YAAY,gCAAgCzD,MAAMR,EAAIspB,aAAatpB,EAAIwF,GAAIxF,EAAIc,QAA+B,yBAAE,SAAS2E,EAAKC,GAAI,OAAOtF,EAAG,yBAAyB,CAAC0C,IAAI4C,EAAGlF,MAAM,CAACR,EAAIupB,YAAa,CAAC,wBAAyBvpB,EAAIopB,cAAe,cAAeppB,EAAIopB,gBAAgB1oB,MAAM,CAAC,QAAU+E,EAAK3E,QAAQ,aAAad,EAAIwpB,oBAAmB,UACvoCroB,EAAkB,G,iFCmCtB,IAAqB,EAArB,cAAqD,OAkBhB,4BAC7B,OAAOlB,KAAKa,QAAQL,wBAA0BR,KAAKW,aAG5B,sBACvB,OAAOX,KAAKa,QAAQ8E,sBACd3F,KAAKa,QAAQ8E,sBACb3F,KAAKa,QAAQwE,gBAAkB,IAAMrF,KAAKa,QAAQwE,qBAAkBjE,EAGzD,gBACjB,IAAKpB,KAAKqF,gBAAiB,OAC3B,MAAM,IAAEO,EAAF,MAAOC,EAAP,KAAcC,GAAS,eAAe9F,KAAKqF,iBAC3CU,EAAmB,eAAKH,EAAKC,EAAOC,IAAS,GACnD,OAAOC,EAAmB,IAASC,MAAMC,OAAOC,MAAQ,IAASF,MAAMC,OAAOE,MAGzD,oBACrB,OAAOnG,KAAKqG,UAAY,CAAEjB,MAAOpF,KAAKqG,gBAAcjF,EAGvC,YACb,MAAO,CACHiE,gBAAiBrF,KAAKqF,gBACtBD,MAAOpF,KAAKqG,WAIG,kBACnB,IAAImjB,EAAkB,GActB,OAXQA,EAFJxpB,KAAKmpB,cACDnpB,KAAKa,QAAQ4oB,wBAAwBnpB,OAAS,IAAM,EAC1C,QAEA,iBAEPN,KAAKa,QAAQ4oB,wBAAwBnpB,OAAS,IAAM,EACjD,6BACHN,KAAKa,QAAQ4oB,wBAAwBnpB,OAAS,IAAM,EACjD,oBAEA,oBAEPkpB,IAzDR,gBAHF,eAAK,CACF/lB,UAAU,EACVpB,KAAMS,U,8BAIV,gBADC,eAAK,CAAEW,UAAU,EAAMpB,KAAMqB,W,mCAI9B,gBADC,eAAK,CAAErB,KAAMqB,W,oCAId,gBADC,eAAK,CAAErB,KAAMuB,U,mCAId,gBADC,eAAK,CAAEvB,KAAMuB,U,kCAfG,EAAuB,gBAH3C,eAAU,CACPC,WAAY,CAAEmD,gBAAA,KAAe0iB,yBAAA,eAEZ,WCpCia,I,YCOlb3lB,EAAY,eACd,EACAjE,EACAoB,GACA,EACA,KACA,KACA,MAIa,aAAA6C,E,kDClBf,IAAIjE,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,aAAa,CAACM,MAAM,CAAC,KAAO,SAAS,IAAM,MAAM,qBAAqB,iCAAiC,qBAAqB,oCAAoC,CAAGV,EAAI4pB,QAEkexpB,EAAG,UAAU,CAAC0C,IAAI,UAAUtC,MAAM,CAAE,6BAA8BR,EAAIS,wBAAyB,CAACL,EAAG,iBAAiB,CAAC6D,YAAY,qBAAqBvD,MAAM,CAAC,MAAQV,EAAIY,aAAe,KAAO,KAAK,cAAcZ,EAAIY,eAAe,CAACZ,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIkI,GAAG,IAAPlI,CAAY,6CAA6C,OAAOI,EAAG,IAAI,CAAC6D,YAAY,2CAA2C,CAACjE,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIkI,GAAG,IAAPlI,CAAY,gDAAgD,QAAQ,GAFv6BI,EAAG,UAAU,CAAC0C,IAAI,cAActC,MAAM,CAAE,6BAA8BR,EAAIS,wBAAyB,CAACL,EAAG,iBAAiB,CAAC6D,YAAY,qBAAqBvD,MAAM,CAAC,MAAQV,EAAIY,aAAe,KAAO,KAAK,cAAcZ,EAAIY,eAAe,CAACZ,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIc,QAAQH,UAAU,OAAOP,EAAG,IAAI,CAAC6D,YAAY,SAAS,CAAEjE,EAAIc,QAAgB,SAAE,CAACd,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIc,QAAQ+oB,UAAU,MAAM,CAAC7pB,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIkI,GAAG,IAAPlI,CAAY,0CAA0C,OAAO,GAAGI,EAAG,qBAAqB,CAACM,MAAM,CAAC,IAAM,WAAWoL,YAAY9L,EAAI+L,GAAG,CAAC,CAACjJ,IAAI,UAAUkJ,GAAG,SAAS5C,GACn0B,IAAI0gB,EAAe1gB,EAAI0gB,aACvB,MAAO,CAAC1pB,EAAG,OAAO,CAAC6D,YAAY,6BAA6B8D,GAAG,CAAC,OAAS,SAASC,GAAgC,OAAxBA,EAAO+hB,iBAAwBD,EAAa9pB,EAAIgqB,WAAW,CAAC5pB,EAAG,IAAI,CAAC6D,YAAY,qBAAqB,CAACjE,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIkI,GAAG,IAAPlI,CAAY,uCAAuC,OAAOI,EAAG,aAAa,CAAC6D,YAAY,QAAQvD,MAAM,CAAC,KAAO,QAAQ,KAAO,OAAO,MAAQV,EAAIkI,GAAG,IAAPlI,CAAY,sCAAsC,MAAQ,kBAAkBiqB,MAAM,CAACtiB,MAAO3H,EAAS,MAAEkqB,SAAS,SAAUC,GAAMnqB,EAAI4X,MAAMuS,GAAKtiB,WAAW,WAAWzH,EAAG,kBAAkB,CAACM,MAAM,CAAC,GAAK,yBAAyBN,EAAG,iBAAiB,CAAC6D,YAAY,QAAQvD,MAAM,CAAC,SAAWV,EAAI4M,QAAQ,KAAO5M,EAAIkI,GAAG,IAAPlI,CAAY,+BAA+B,KAAO,aAAa,OAAO,MAAK,EAAM,eAAe,MACruBmB,EAAkB,G,wEC2DtB,IAAqB,EAArB,cAAmD,OAAnD,c,oBAeY,KAAAyL,SAAmB,EACnB,KAAAgd,SAAmB,EACnB,KAAAhS,MAAgB,GANC,4BACrB,OAAO3X,KAAKa,QAAQL,wBAA0BR,KAAKW,aAO/C,QACJX,KAAK2X,MAAQ,GAGG,eAChB3X,KAAK2M,SAAU,EAEf,UACU,OAAIwd,WAAWC,YAAYpqB,KAAK2X,MAAO,uBAC7C3X,KAAK2pB,SAAU,EACjB,MAAOhnB,GACL,OAAeC,MAAMD,GAJzB,QAMI3C,KAAK2M,SAAU,KA5BpB,gBAHF,eAAK,CACFlJ,UAAU,EACVpB,KAAMS,U,8BAMP,gBAHF,eAAK,CACFW,UAAU,EACVpB,KAAMqB,W,mCARO,EAAqB,gBAHzC,eAAU,CACPG,WAAY,CAAEmD,gBAAA,KAAeqjB,gBAAA,SAEZ,WC9Dib,I,YCOlctmB,EAAY,eACd,EACAjE,EACAoB,GACA,EACA,KACA,KACA,MAIa,aAAA6C,E,8BClBfnE,EAAOC,QAAU,IAA0B,qC,kCCA3C,IAAIC,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAW,QAAEI,EAAG,UAAU,CAAC6D,YAAY,yBAAyB,CAAC7D,EAAG,MAAM,CAAC6D,YAAY,gDAAgD,CAAC7D,EAAG,MAAM,CAAC6D,YAAY,QAAQzD,MAAM,CAAE,sBAAuBR,EAAIuqB,mBAAqBvqB,EAAIc,QAAQ+N,OAAS7O,EAAIc,QAAQ+N,MAAM7J,OAAQ,CAAEhF,EAAIuqB,iBAAmBvqB,EAAIc,QAAQ+N,OAAS7O,EAAIc,QAAQ+N,MAAM7J,IAAK5E,EAAG,kBAAkB,CAACM,MAAM,CAAC,YAAYV,EAAIc,QAAQ+N,OAAS7O,EAAIc,QAAQ+N,MAAM7J,KAAO,GAAG,cAAchF,EAAIc,QAAQ+N,OAAS7O,EAAIc,QAAQ+N,MAAME,WAAW,eAAe,IAAI,IAAI,kBAAkB,CAAEyb,GAAI,GAAGC,GAAI,GAAIC,GAAI,OAAO1qB,EAAIkB,MAAM,GAAGd,EAAG,MAAM,CAAC6D,YAAY,qBAAqBzD,MAAM,CAAC,oBAAqBR,EAAI2qB,YAAa,eAAgB3qB,EAAI2qB,cAAc,CAAE3qB,EAAIc,QAAQ8lB,UAAY5mB,EAAIc,QAAQ0D,QAASpE,EAAG,MAAM,CAAC6D,YAAY,wBAAwB,CAAC7D,EAAG,QAAQ,CAAC6D,YAAY,YAAYvD,MAAM,CAAC,KAAOV,EAAI4qB,oBAAoB,MAAO,EAAK,UAAW,KAAQxqB,EAAG,MAAM,CAAC6D,YAAY,8EAA8E,CAAEjE,EAAIc,QAAe,QAAEV,EAAG,MAAM,CAACqH,WAAW,CAAC,CAACjE,KAAK,WAAWkE,QAAQ,eAAehH,MAAM,CAAC,IAAMV,EAAIc,QAAQ0D,QAAQ,IAAM,mBAAmBxE,EAAIkB,QAAQ,GAAGlB,EAAIkB,OAAOd,EAAG,yBAAyB,CAAC6D,YAAY,0CAA0CvD,MAAM,CAAC,GAAKV,EAAIc,QAAQyL,cAAc,CAACvM,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIc,QAAQ+pB,cAAc,OAAQ7qB,EAAIc,QAAoB,aAAEV,EAAG,yBAAyB,CAAC6D,YAAY,QAAQvD,MAAM,CAAC,GAAKV,EAAIc,QAAQyL,cAAc,CAACnM,EAAG,gBAAgB,CAACM,MAAM,CAAC,MAAQ,OAAO,CAACV,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIc,QAAQ+pB,cAAc,QAAQ,GAAG7qB,EAAIkB,KAAKd,EAAG,IAAI,CAAC6D,YAAY,cAAcoF,SAAS,CAAC,UAAYrJ,EAAI4E,GAAG5E,EAAIc,QAAQ6R,WAAWvS,EAAG,IAAI,CAAC6D,YAAY,uBAAuB,CAAEjE,EAAIc,QAAe,QAAE,CAACd,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIkI,GAAG,IAAPlI,CAAY,oBAAoBA,EAAIc,QAAQgqB,UAAU,MAAM9qB,EAAIkB,MAAM,GAAGd,EAAG,MAAM,CAAC6D,YAAY,sBAAsB,CAAC7D,EAAG,eAAe,CAAC6D,YAAY,SAASvD,MAAM,CAAC,KAAOV,EAAIc,QAAQyL,YAAY,KAAOvM,EAAI+qB,eAAe,IAAI,KAAK/qB,EAAIkB,MAC1gEC,EAAkB,G,gDC+CtB,IAAqB,EAArB,cAA4C,OAK1B,iBACV,OAAOlB,KAAKa,QAAQiqB,YAAc,OAAkBrC,IAAI,+BAG7B,0BAC3B,OAAOzoB,KAAKa,QAAQ0D,QAAU,0BAA4B,oBATtB,gBAAvC,eAAK,CAAEd,UAAU,EAAMpB,KAAMS,U,8BACW,gBAAxC,eAAK,CAAET,KAAMqB,QAASC,SAAS,K,kCACS,gBAAxC,eAAK,CAAEtB,KAAMqB,QAASC,SAAS,K,sCAHf,EAAc,gBAHlC,eAAU,CACPE,WAAY,CAAEmD,gBAAA,SAEG,WChDwZ,I,wBCQzajD,EAAY,eACd,EACAjE,EACAoB,GACA,EACA,KACA,WACA,MAIa,OAAA6C,E,kDCnBf,IAAIjE,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAAC6D,YAAY,kDAAkDzD,MAAM,CAAE,6BAA8BR,EAAIS,wBAAyB,CAAET,EAAY,SAAEI,EAAG,gBAAgB,CAAC6D,YAAY,uCAAuCvD,MAAM,CAAC,MAAQV,EAAIY,aAAe,KAAO,KAAK,cAAcZ,EAAIY,eAAe,CAACZ,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIW,UAAU,OAAOX,EAAIkB,KAAKd,EAAG,MAAM,CAAC6D,YAAY,YAAY,CAAEjE,EAAIgrB,kBAAkBzqB,QAAUP,EAAIgc,SAAU,CAAEhc,EAAIc,QAAoB,aAAE,CAAEd,EAAIc,QAAoB,aAAEV,EAAG,MAAM,CAAC6D,YAAY,sEAAsEjE,EAAIwF,GAAIxF,EAAqB,mBAAE,SAASqH,EAAM+F,GAAO,OAAOhN,EAAG,MAAM,CAAC0C,IAAIsK,EAAMnJ,YAAY,uCAAuC,CAAC7D,EAAG,cAAc,CAAC6D,YAAY,cAAcvD,MAAM,CAAC,UAAY,KAAMqH,GAAG,CAAC,QAAU,SAASC,GAAQ,OAAOhI,EAAIkc,mBAAmB7U,KAASyE,YAAY9L,EAAI+L,GAAG,CAAC,CAACjJ,IAAI,UAAUkJ,GAAG,SAAS5C,GAC1+B,IAAI+S,EAAS/S,EAAI+S,OACjB,MAAO,CAAC,EAAS/b,EAAG,yBAAyB,CAAC6D,YAAY,6BAA6BvD,MAAM,CAAC,GAAKV,EAAIirB,YAAY5jB,IAAQ8E,SAAS,CAAC,MAAQ,SAASnE,GAAQ,OAAOhI,EAAIkrB,iBAAiB7jB,MAAU,CAACjH,EAAG,MAAM,CAACqH,WAAW,CAAC,CAACjE,KAAK,OAAOkE,QAAQ,SAASC,OAAQN,EAAMO,gBAAiBC,WAAW,2BAA2B5D,YAAY,uBAAuBvD,MAAM,CAAC,IAAM2G,EAAM8jB,UAAU5O,IAAI,IAAMlV,EAAMG,WAAWO,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOhI,EAAIiI,eAAeZ,OAAWjH,EAAG,OAAO,CAACqH,WAAW,CAAC,CAACjE,KAAK,OAAOkE,QAAQ,SAASC,MAAON,EAAqB,gBAAEQ,WAAW,0BAA0B5D,YAAY,oCAAoC,CAACjE,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAGyC,EAAMG,WAAW,SAASxH,EAAIkB,SAAS,MAAK,MAAS,MAAK,GAAGlB,EAAIkB,MAAM,CAACd,EAAG,SAAS,CAACI,MAAM,UAAYR,EAAIkN,GAAGxM,MAAM,CAAC,GAAKV,EAAIkN,GAAG,gBAAgBlN,EAAIkN,GAAG,QAAUlN,EAAImN,gBAAgBnN,EAAIwF,GAAIxF,EAAqB,mBAAE,SAASqH,EAAM+F,GAAO,OAAOhN,EAAG,cAAc,CAAC0C,IAAIsK,EAAMnJ,YAAY,gCAAgC,CAAC7D,EAAG,cAAc,CAAC6D,YAAY,SAASvD,MAAM,CAAC,UAAY,KAAMqH,GAAG,CAAC,QAAU,SAASC,GAAQ,OAAOhI,EAAIkc,mBAAmB7U,KAASyE,YAAY9L,EAAI+L,GAAG,CAAC,CAACjJ,IAAI,UAAUkJ,GAAG,SAAS5C,GACtoC,IAAI+S,EAAS/S,EAAI+S,OACjB,MAAO,CAAC,EAAS/b,EAAG,yBAAyB,CAAC6D,YAAY,sGAAsGvD,MAAM,CAAC,GAAKV,EAAIirB,YAAY5jB,IAAQ8E,SAAS,CAAC,MAAQ,SAASnE,GAAQ,OAAOhI,EAAIkrB,iBAAiB7jB,MAAU,CAACjH,EAAG,MAAM,CAAC6D,YAAY,mCAAmC,CAAC7D,EAAG,MAAM,CAACqH,WAAW,CAAC,CAACjE,KAAK,WAAWkE,QAAQ,eAAezD,YAAY,+BAA+BvD,MAAM,CAAC,IAAM2G,EAAM8jB,UAAU5O,IAAI,IAAMlV,EAAMG,eAAepH,EAAG,MAAM,CAAC6D,YAAY,0DAA0D,CAACjE,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAGyC,EAAMG,WAAW,OAAOpH,EAAG,MAAM,CAAC6D,YAAY,gDAAgD,CAAC7D,EAAG,MAAM,CAAC6D,YAAY,qBAAqB,CAAC7D,EAAG,MAAM,CAAC6D,YAAY,aAAa,CAACjE,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIkI,GAAG,eAAPlI,CAAuBqH,EAAMjF,eAAe,OAAOhC,EAAG,MAAM,CAACJ,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIkI,GAAG,IAAPlI,CAAY,uCAAuC,SAASI,EAAG,MAAM,CAAC6D,YAAY,qBAAqB,CAAC7D,EAAG,MAAM,CAAC6D,YAAY,aAAa,CAACjE,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIkI,GAAG,eAAPlI,CAAuBqH,EAAMiW,gBAAgB,OAAOld,EAAG,MAAM,CAACJ,EAAI2E,GAAG,IAAI3E,EAAI4E,GAAG5E,EAAIkI,GAAG,IAAPlI,CAAY,wCAAwC,aAAaA,EAAIkB,SAAS,MAAK,MAAS,MAAK,GAAGd,EAAG,SAAS,CAAC6D,YAAY,uEAAuEzD,MAAMR,EAAIqN,mBAAmB3M,MAAM,CAAC,KAAO,cAAc,KAAO,UAAU4M,KAAK,eAAe,CAAClN,EAAG,QAAQ,CAACM,MAAM,CAAC,KAAO,kBAAkB,MAAQ,KAAK,OAAS,SAAS,GAAGN,EAAG,SAAS,CAAC6D,YAAY,uEAAuEzD,MAAMR,EAAIuN,mBAAmB7M,MAAM,CAAC,KAAO,cAAc,KAAO,UAAU4M,KAAK,eAAe,CAAClN,EAAG,QAAQ,CAACM,MAAM,CAAC,KAAO,mBAAmB,MAAQ,KAAK,OAAS,SAAS,KAAKN,EAAG,MAAM,CAACI,MAAM,CAAC,gCAA6D,IAA7BR,EAAIc,QAAQsqB,aAAwB,4CAAyE,IAA7BprB,EAAIc,QAAQsqB,iBAA0B,IAAI,IACt3DjqB,EAAkB,G,iICyGtB,IAAqB,EAArB,cAAuD,OAAvD,c,oBAcI,KAAA6a,UAAoB,EACpB,KAAAW,iBAA2B,GACnB,KAAAvb,OAA4C,KAC5C,KAAAiqB,0BAA4B,IAASprB,KAAKqrB,mBAAoB,KAC9D,KAAAC,aAAkE,GAEjD,oBACrB,MAAO,CACH5d,aAAc,GACdC,cAAe,OACfC,eAAgB,EAChBkP,oBAAoB,EACpBjP,MAAM,EACNC,wBAAwB,EACxBC,uBAAuB,EACvBC,eAAe,EACfC,gBAAgB,EAChBC,WAAY,CACRC,OAAQ,IAAMnO,KAAKsN,mBACnBc,OAAQ,IAAMpO,KAAKoN,oBAEvBiB,YAAY,EACZC,aAActO,KAAKiN,GACnBsB,UAAU,EACVC,gBAAgB,EAChBC,sBAAsB,GAIhB,SACV,OAAO,IAAIjB,MAAOC,UAGQ,yBAC1B,MAAO,6BAA+BzN,KAAKiN,GAGjB,yBAC1B,MAAO,6BAA+BjN,KAAKiN,GAG/C,yBACI,MAAM8P,EAAgB,OAAkBC,sBACpCD,IAAkB/c,KAAK0c,mBACvB1c,KAAK0c,iBAAmBK,EACxB/c,KAAK+b,UAAW,EAChB/b,KAAKid,UAAU,IAAMjd,KAAK+b,UAAW,IAIpB,4BACrB,OAAO/b,KAAKa,QAAQL,wBAA0BR,KAAKW,aAG7B,qBACtB,IACIX,KAAKmB,aAAe,OAAIE,gBAAgBkqB,uBAAuB,CAC3DhqB,6BAA8BvB,KAAKa,QAAQU,6BAC3CC,6BAA8BxB,KAAKa,QAAQW,6BAC3C2b,kBAAmBnd,KAAKa,QAAQsc,kBAChC1b,oBAAqBzB,KAAKa,QAAQa,gBAClC0b,WAAYpd,KAAKa,QAAQe,SACzBC,eAAgB7B,KAAKa,QAAQiB,WAC7B2a,WAAYzc,KAAKa,QAAQ4b,aAE/B,MAAO9Z,GACL,OAAeC,MAAMD,IAIrB,YAAYyE,GAChB,MAAO,WAAWA,EAAMG,UAAUogB,cAGlB,qBAChB,iBAAO3nB,KAAKa,eAAZ,aAAO,EAAcH,SAGI,8BACzB,OAAO,UAAAV,KAAKmB,cAAL,eAAa4pB,oBAAqB,GAG7C,kBAAkBliB,GACd,OAAO,OAA8ByU,eAAezU,EAAM,OAA8B0U,2BAA2BC,KAG/G,iBAAiBpW,GACrB,OAAWuW,mBAAmBvW,EAAMG,UAAWH,EAAMG,eAAWnG,GAG5D,mBAAmBgG,GACvBpH,KAAKsrB,aAAa1N,KAAK,CAAEra,KAAM6D,EAAMG,UAAW0F,GAAI7F,EAAMG,UAAWikB,cAAUpqB,IAC/EpB,KAAKorB,4BAGD,qBACJ,MAAMnkB,EAAS,IAAIjH,KAAKsrB,cACxBtrB,KAAKsrB,aAAe,GACpB,OAAWzN,kBAAkB5W,GAGzB,eAAeG,GACnBA,EAAMO,iBAAkB,EACxB3H,KAAKiJ,eAGT,UACIjJ,KAAKyrB,eACLzrB,KAAK0c,iBAAmB,OAAkBM,sBAC1C,OAAkBe,YAAY/d,KAAKge,wBACnChe,KAAKid,UAAU,KACXjd,KAAK+b,UAAW,IAIxB,YACI,OAAkBkC,eAAeje,KAAKge,0BA7H1C,gBAJC,eAAK,CACFva,UAAU,EACVpB,KAAMS,U,8BASV,gBALC,eAAK,CACFW,UAAU,EACVpB,KAAMqB,QACNC,SAAS,K,mCAVI,EAAyB,gBAH7C,eAAU,CACPE,WAAY,CAAE6nB,iBAAA,KAAgB1kB,gBAAA,SAEb,WC9Gma,I,wBCQpbjD,EAAY,eACd,EACAjE,EACAoB,GACA,EACA,KACA,KACA,MAIa,aAAA6C,E","file":"js/basic-blocks.6b7fa6ad.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 (_vm.products.length > 0)?_c('CondensedProductList',{class:{ '-is-appended-to-prev-block': _vm.appendToPreviousBlock },attrs:{\"headline\":_vm.headline,\"is-first-block\":_vm.isFirstBlock,\"products\":_vm.products,\"tracking-list-name\":_vm.trackingListName,\"use-swiper\":!_vm.content.useListView,\"list-view-page-size\":_vm.listViewPageSize,\"product-bg-color\":_vm.content.productBackgroundColor}}):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport { ProductRecommendationsBlockViewModel } from '@/types/contentServerContract';\r\nimport { ProductRecommendationType, ProductTileViewModel, ProductTileViewObject } from '@/types/apiServerContract';\r\nimport loggingService from '@/core/logging.service';\r\nimport Api from '@/project/http/Api.service';\r\nimport CondensedProductList from '@/project/product/condensed/CondensedProductList.vue';\r\nimport urlHelperService, { UrlQueryKey } from '@/core/urlHelper.service';\r\n\r\n@Component({\r\n components: { CondensedProductList }\r\n})\r\nexport default class ProductRecommendationsBlock extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Object\r\n })\r\n private content!: ProductRecommendationsBlockViewModel;\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 get appendToPreviousBlock() {\r\n return this.content.appendToPreviousBlock && !this.isFirstBlock;\r\n }\r\n\r\n @Prop({\r\n required: false,\r\n type: String\r\n })\r\n private productId!: string | undefined;\r\n\r\n private result: ProductTileViewModel | null = null;\r\n\r\n private get products(): ProductTileViewObject[] {\r\n return this.result ? this.result.products : [];\r\n }\r\n\r\n private get listViewPageSize(): undefined | number {\r\n return this.content.useListView ? 4 : undefined;\r\n }\r\n\r\n private async getProductData() {\r\n try {\r\n this.result = await Api.recommendations.recommend({\r\n categoryIdFilterPositiveList: this.content.categoryIdFilterPositiveList,\r\n categoryIdFilterNegativeList: this.content.categoryIdFilterNegativeList,\r\n displayedAtLocation: this.content.displayLocation,\r\n intervalDays: this.content.interval,\r\n popularityType: this.content.popularity,\r\n categoryId: this.content.categoryId,\r\n productId: this.productId || urlHelperService.getQueryParam(UrlQueryKey.wid),\r\n productCount: this.content.productCount,\r\n recommendationType: this.content.type,\r\n allowFillIfNecessary: this.content.allowFillIfNecessary,\r\n brandId: this.content.brandId,\r\n hasImages: this.content.hasImages,\r\n stockFilter: this.content.stockFilter,\r\n showFeedProducts: this.content.showFeedProducts\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 private get trackingListName():string {\r\n const key = Object.keys(ProductRecommendationType).filter((v) => isNaN(Number(v))).find(k => ProductRecommendationType[k] === this.content.type) || 'recommendation';\r\n // format: recommendation/relation - page type - recommendation type\r\n return `recommendations-${this.$route.name}-${key}`;\r\n }\r\n\r\n private created() {\r\n this.getProductData();\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!./ProductRecommendationsBlock.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!./ProductRecommendationsBlock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductRecommendationsBlock.vue?vue&type=template&id=829aa3e8&\"\nimport script from \"./ProductRecommendationsBlock.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductRecommendationsBlock.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:\"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!./CondensedProductList.vue?vue&type=style&index=0&id=093739fe&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!./CondensedProductList.vue?vue&type=style&index=0&id=093739fe&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!./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=06b95b6c&\"\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","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=a6fa5012&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=a6fa5012&lang=less&scoped=true&\"","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=a6fa5012&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=a6fa5012&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 \"a6fa5012\",\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 _c('div',[(_vm.headline)?_c('SmartHeadline',{staticClass:\"mb-10 only-xs:ml-20 only-xs:mb-20 text-18 md:text-36 font-regular\",class:{ 'mt-20': _vm.isFirstBlock },attrs:{\"level\":_vm.isFirstBlock ? 'h1' : 'h2',\"style-as-h1\":_vm.isFirstBlock}},[_vm._v(\" \"+_vm._s(_vm.headline)+\" \")]):_vm._e(),_c('ProductListTracker',{staticClass:\"relative w-full\",attrs:{\"products\":_vm.products,\"list-name\":_vm.trackingListName},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar productImpression = ref.productImpression;\nvar productClick = ref.productClick;\nreturn [(_vm.useSwiper)?[(_vm.rendered)?_c('Swiper',{class:'swiper-' + _vm.id,attrs:{\"id\":_vm.id,\"instance-name\":_vm.id,\"options\":_vm.sliderOptions}},_vm._l((_vm.products),function(product,index){return _c('SwiperSlide',{key:index,staticClass:\"condensed-product-tile-outer\"},[_c('Interceptor',{attrs:{\"threshold\":0.5},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar viewed = ref.viewed;\nreturn [(viewed)?_c('ProductTile',{class:_vm.productColor,attrs:{\"mode\":\"vertical\",\"product\":product,\"number-of-stock-labels\":1,\"product-click\":productClick,\"tracking-list-name\":_vm.trackingListName,\"relation-type\":_vm.relationType},on:{\"productImpression\":productImpression}}):_vm._e()]}}],null,true)})],1)}),1):_vm._e(),_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)]:_c('div',[_vm._l((_vm.listViewProducts),function(product,index){return _c('div',{key:index + ':' + product.itemId,staticClass:\"mb-10\",class:_vm.productColor},[_c('ProductTile',{attrs:{\"product\":product,\"nested\":\"\",\"number-of-stock-labels\":1,\"mode\":\"horizontal-tiny\",\"product-click\":productClick,\"relation-type\":_vm.relationType,\"tracking-list-name\":_vm.trackingListName},on:{\"productImpression\":productImpression}})],1)}),(_vm.listViewPageSize !== undefined && _vm.products.length > _vm.page * _vm.listViewPageSize)?_c('div',{staticClass:\"flex\"},[_c('CallToAction',{staticClass:\"cta--link cta-icon--16 mx-auto\",attrs:{\"text\":_vm._f(\"t\")('Product.Relations.ShowMore'),\"icon\":\"plus-big\"},on:{\"click\":_vm.handleNextPage}})],1):_vm._e()],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\r\nimport Component from 'vue-class-component';\r\nimport { Prop, Vue } from 'vue-property-decorator';\r\nimport ProductListTracker from '@/project/tracking/gtm/ProductListTracker.vue';\r\nimport { ProductTileViewObject } from '@/types/apiServerContract';\r\nimport SmartHeadline from '@/core/ui-components/SmartHeadline.vue';\r\nimport { ProductRelationType } from './constants';\r\nimport breakpointState from '@/core/responsive/breakpoints/breakpointsState.observable';\r\nimport { MIN_LG } from '@/core/config/breakpointConfig';\r\nimport breakpointService from '@/core/responsive/breakpoints/breakpoints.service';\r\n\r\n@Component({\r\n components: { ProductListTracker, SmartHeadline }\r\n})\r\nexport default class CondensedProductList extends Vue {\r\n @Prop({\r\n required: true,\r\n type: Array\r\n })\r\n products!: ProductTileViewObject[];\r\n\r\n @Prop({\r\n required: true,\r\n type: String\r\n }) trackingListName!: string;\r\n\r\n @Prop({\r\n required: false,\r\n type: String,\r\n default: null\r\n }) headline!: string | null;\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 @Prop({\r\n required: false,\r\n type: String,\r\n default: null\r\n }) productBgColor!: string | null;\r\n\r\n @Prop({\r\n required: false,\r\n type: String,\r\n default: null\r\n }) relationType!: ProductRelationType | null;\r\n\r\n @Prop({\r\n type: Boolean,\r\n default: false\r\n }) useSwiper!: boolean;\r\n\r\n @Prop({\r\n type: Number\r\n }) listViewPageSize!: number | undefined;\r\n\r\n page: number = 1;\r\n slidesPerView: 6 | 'auto' = 6; // Desktop (LG and XL) 6, else 'auto'\r\n rendered: boolean = false;\r\n activeBreakpoint: string = '';\r\n\r\n private get listViewProducts() {\r\n return this.products.filter((p, index) => this.listViewPageSize === undefined || index < this.page * this.listViewPageSize);\r\n }\r\n\r\n handleNextPage() {\r\n this.page++;\r\n }\r\n\r\n private get productColor() {\r\n if (!this.productBgColor) return '';\r\n\r\n switch (this.productBgColor.toLowerCase()) {\r\n case 'white':\r\n return 'bg-white';\r\n case 'gray':\r\n return 'bg-gray-300';\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.setSlidesPerView();\r\n this.$nextTick(() => this.rendered = true);\r\n }\r\n }\r\n\r\n mounted() {\r\n this.activeBreakpoint = breakpointService.getActiveBreakpoint();\r\n breakpointService.addListener(this.handleBreakpointChange);\r\n this.setSlidesPerView();\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 setSlidesPerView() {\r\n this.slidesPerView = breakpointState.isBreakpointActive(MIN_LG) ? 6 : 'auto';\r\n }\r\n\r\n private get sliderOptions() {\r\n return {\r\n spaceBetween: 10,\r\n slidesPerView: this.slidesPerView,\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!./CondensedProductList.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!./CondensedProductList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CondensedProductList.vue?vue&type=template&id=093739fe&scoped=true&\"\nimport script from \"./CondensedProductList.vue?vue&type=script&lang=ts&\"\nexport * from \"./CondensedProductList.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CondensedProductList.vue?vue&type=style&index=0&id=093739fe&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 \"093739fe\",\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.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\";","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-35 mb-10\"},_vm._l((_vm.recommendedBrands),function(brand,index){return _c('div',{key:index,staticClass:\"c-recommendation-brand-simple--item\"},[_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 px-10 md:px-15 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\"}],staticClass:\"m-auto h-35 min-w-15\",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-90': _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\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=6211b498&\"\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":""}