{"version":3,"sources":["webpack:///./src/project/product/product-details/BrandCategoriesLinks.vue?2d74","webpack:///./src/project/product/product-details/BrandCategoriesLinks.vue","webpack:///./src/project/product/product-details/BrandCategoriesLinks.vue?1a3b","webpack:///./src/project/product/product-details/BrandCategoriesLinks.vue?fd1d","webpack:///./src/project/app/blocks/ProductRecommendationsBlock.vue?fd9b","webpack:///./src/project/app/blocks/ProductRecommendationsBlock.vue","webpack:///./src/project/app/blocks/ProductRecommendationsBlock.vue?4754","webpack:///./src/project/app/blocks/ProductRecommendationsBlock.vue?9ba8","webpack:///./node_modules/core-js/internals/html.js","webpack:///./src/project/video/ProductVideoRender.vue?0f0f","webpack:///./src/project/product/product-details/ProductDetails.vue?20ea","webpack:///./node_modules/core-js/modules/es.array.at.js","webpack:///./node_modules/core-js/internals/object-define-properties.js","webpack:///./node_modules/core-js/internals/add-to-unscopables.js","webpack:///./src/project/product/product-details/ProductDetailsRelatedModels.vue?45ff","webpack:///./src/project/product/product-details/ProductDetailsRecommendations.vue?72f4","webpack:///./src/project/form/Dropdown.vue?7d47","webpack:///./src/project/form/Dropdown.vue","webpack:///./src/project/form/Dropdown.vue?1c07","webpack:///./src/project/form/Dropdown.vue?e61e","webpack:///./src/project/form/Dropdown.vue?b328","webpack:///./src/project/app/client-pages/product-details/ProductDetailsPage.vue?2181","webpack:///./src/project/product/product-details/ProductDetails.vue?cd47","webpack:///./src/project/product/services/productDelivery.service.ts","webpack:///./src/project/product/product-details/ProductDetailsSlider.vue?8930","webpack:///./src/project/modals/overlays/ProductDetailsMediaOverlay.service.ts","webpack:///./src/project/product/product-details/ProductDetailsSlider.vue","webpack:///./src/project/product/product-details/ProductDetailsSlider.vue?5106","webpack:///./src/project/product/product-details/ProductDetailsSlider.vue?0589","webpack:///./src/project/product/product-details/ProductDetailsSpecifications.vue?5aec","webpack:///./src/project/product/product-details/ProductDetailsSpecifications.vue","webpack:///./src/project/product/product-details/ProductDetailsSpecifications.vue?5343","webpack:///./src/project/product/product-details/ProductDetailsSpecifications.vue?5ad7","webpack:///./src/project/product/product-details/ProductDetailsRelatedModels.vue?f589","webpack:///./src/project/product/product-details/ProductDetailsRelatedModels.vue","webpack:///./src/project/product/product-details/ProductDetailsRelatedModels.vue?048d","webpack:///./src/project/product/product-details/ProductDetailsRelatedModels.vue?512a","webpack:///./src/project/product/product-details/ProductDetailsReasonsToBuy.vue?8824","webpack:///./src/project/product/product-details/ProductDetailsReasonsToBuy.vue","webpack:///./src/project/product/product-details/ProductDetailsReasonsToBuy.vue?1a5c","webpack:///./src/project/product/product-details/ProductDetailsReasonsToBuy.vue?95c7","webpack:///./src/project/product/product-details/ProductDetailsCart.vue?a7ce","webpack:///./src/project/product/product-details/ProductDetailsCart.vue","webpack:///./src/project/product/product-details/ProductDetailsCart.vue?6ad4","webpack:///./src/project/product/product-details/ProductDetailsCart.vue?02ab","webpack:///./src/project/product/product-details/ProductDetailsRelations.vue?6dd1","webpack:///./src/project/product/product-details/ProductDetailsRelations.vue","webpack:///./src/project/product/product-details/ProductDetailsRelations.vue?808f","webpack:///./src/project/product/product-details/ProductDetailsRelations.vue?ff20","webpack:///./src/project/product/product-details/ProductDetailsPartnerLogos.vue?e5be","webpack:///./src/core/formatters/emailAsHtml.service.ts","webpack:///./src/project/product/product-details/ProductDetailsPartnerLogos.vue","webpack:///./src/project/product/product-details/ProductDetailsPartnerLogos.vue?536d","webpack:///./src/project/product/product-details/ProductDetailsPartnerLogos.vue?5651","webpack:///./src/project/product/product-details/ProductDetailsRecommendations.vue?5b4b","webpack:///./src/project/product/product-details/ProductDetailsRecommendations.vue","webpack:///./src/project/product/product-details/ProductDetailsRecommendations.vue?2a47","webpack:///./src/project/product/product-details/ProductDetailsRecommendations.vue?fc82","webpack:///./src/project/modals/overlays/productFeedbackOverlay.service.ts","webpack:///./src/project/product/product-details/ProductDetailsBidTile.vue?0ae9","webpack:///./src/project/product/product-details/ProductDetailsBidTile.vue","webpack:///./src/project/product/product-details/ProductDetailsBidTile.vue?4438","webpack:///./src/project/product/product-details/ProductDetailsBidTile.vue?18e3","webpack:///./src/project/product/product-details/ProductDetailsSeries.vue?7ffd","webpack:///./src/project/product/product-details/ProductDetailsSeries.vue","webpack:///./src/project/product/product-details/ProductDetailsSeries.vue?e8e8","webpack:///./src/project/product/product-details/ProductDetailsSeries.vue?025a","webpack:///./src/project/product/product-details/ProductDetails.vue","webpack:///./src/project/product/product-details/ProductDetails.vue?de8a","webpack:///./src/project/product/product-details/ProductDetails.vue?fb98","webpack:///./src/project/app/client-pages/product-details/productDetailsUrl.service.ts","webpack:///./src/project/app/client-pages/product-details/ProductDetailsPage.vue","webpack:///./src/project/app/client-pages/product-details/ProductDetailsPage.vue?7554","webpack:///./src/project/app/client-pages/product-details/ProductDetailsPage.vue?0be2","webpack:///./node_modules/core-js/internals/object-create.js","webpack:///./src/project/product/product-details/ProductDetailsSlider.vue?1452","webpack:///./src/project/product/product-details/ProductDetailsReasonsToBuy.vue?ca13","webpack:///./src/project/product/product-details/ProductDetailsSeries.vue?9264","webpack:///./src/project/product/product-details/ProductDetailsImageVideo.vue?104c","webpack:///./src/project/product/product-details/ProductDetailsImageVideo.vue","webpack:///./src/project/product/product-details/ProductDetailsImageVideo.vue?db1a","webpack:///./src/project/product/product-details/ProductDetailsImageVideo.vue?4fd8","webpack:///./src/project/product/product-details/ProductDetailsRelations.vue?7830","webpack:///./src/project/product/product-details/ProductDetailsBidTile.vue?cbdf","webpack:///./node_modules/core-js/internals/object-keys.js","webpack:///./node_modules/core-js/modules/es.string.at-alternative.js","webpack:///./src/project/video/ProductVideoRender.vue?96e1","webpack:///./src/project/video/ProductNativeVideo.vue?07c3","webpack:///./src/project/video/ProductNativeVideo.vue","webpack:///./src/project/video/ProductNativeVideo.vue?7681","webpack:///./src/project/video/ProductNativeVideo.vue?ea9f","webpack:///./src/project/video/ProductVimeoVideo.vue?e1b2","webpack:///./src/project/video/ProductVimeoVideo.vue","webpack:///./src/project/video/ProductVimeoVideo.vue?7342","webpack:///./src/project/video/ProductVimeoVideo.vue?a1fa","webpack:///./src/project/video/ProductYoutubeVideo.vue?79c5","webpack:///./src/project/video/ProductYoutubeVideo.vue","webpack:///./src/project/video/constants.ts","webpack:///./src/project/video/ProductYoutubeVideo.vue?ed6c","webpack:///./src/project/video/ProductYoutubeVideo.vue?af96","webpack:///./src/project/video/ProductVideoRender.vue","webpack:///./src/project/video/ProductVideoRender.vue?4235","webpack:///./src/project/video/ProductVideoRender.vue?69fe","webpack:///./src/project/product/product-details/ProductDetailsPartnerLogos.vue?8525"],"names":["render","_vm","this","_h","$createElement","_c","_self","loading","brandLinks","length","staticClass","_v","_s","labelHeading","_l","brand","key","url","attrs","displayName","_e","staticRenderFns","brandLinksData","categoryDisplayNames","Map","brandName","brandSearchPages","categoryIds","categories","navigation","names","Object","keys","forEach","categoryId","set","brandLinksFiltered","cat","firstCategoryId","concat","uniqueCategories","filter","e","i","a","indexOf","loadCategoryNamesByIds","map","link","index","toString","name","get","links","activeBrandCategory","c","endsWith","newBrandName","oldBrandName","loadBrandLinks","loadCategoryNames","immediate","component","products","class","appendToPreviousBlock","headline","isFirstBlock","trackingListName","content","useListView","listViewPageSize","productBackgroundColor","result","undefined","recommendations","recommend","categoryIdFilterPositiveList","categoryIdFilterNegativeList","displayedAtLocation","displayLocation","intervalDays","interval","popularityType","popularity","productId","getQueryParam","wid","productCount","recommendationType","type","allowFillIfNecessary","brandId","hasImages","stockFilter","showFeedProducts","error","v","isNaN","Number","find","k","$route","getProductData","required","Boolean","default","String","components","CondensedProductList","getBuiltIn","module","exports","$","toObject","lengthOfArrayLike","toIntegerOrInfinity","addToUnscopables","target","proto","at","O","len","relativeIndex","DESCRIPTORS","V8_PROTOTYPE_DEFINE_BUG","definePropertyModule","anObject","toIndexedObject","objectKeys","f","defineProperties","Properties","props","wellKnownSymbol","create","defineProperty","UNSCOPABLES","ArrayPrototype","Array","prototype","configurable","value","dropdownActive","_b","iconIsAfter","buttonClass","on","handleClick","$attrs","icon","_t","directives","rawName","expression","style","closeDropdown","$event","positionStyle","rect","$el","getBoundingClientRect","parentRect","parentElement","parentParentRect","minWidth","width","top","Math","abs","direction","positionRight","setPositionStyle","$emit","openDropdown","details","trackPage","hasActiveCampaign","isNew","isDesignedFor","campaign","campaignIconUrl","description","_f","getClassificationCodeDictionary","mpn","itemId","ean","oem","isUserLoggedIn","productSeries","hasBids","hasQuantityDiscounts","loaded","stockLoaded","data","stockData","simpleData","isLimitedItem","pricesLoaded","priceData","trackAddToBasketChange","myAccountBidsPage","bidsData","scopedSlots","_u","fn","ref","productImpression","productClick","bid","bidIndex","partnerLogos","hasUserLoggedInBefore","descriptionTranslated","toggleDescriptionTranslation","labelForTranslateDescription","gotoDescription","bullet","domProps","specifications","gotoSpecifications","isStaff","preventDefault","openReportOverlay","apply","arguments","conditions","condition","conditionIndex","productDetailsPage","shortDescription","slot","documents","document","documentIndex","uri","thumbnailUrl","extension","languages","lang","siteLanguageLabel","reasonsToBuy","productSchemaJson","productSchemaQuestionJson","ProductDeliveryCodes","Local","Remote","InComing","stock","isLocal","some","x","locationType","isRemote","isIncoming","stockType","productDeliveryCode","Error","brandLogos","imageLoaded","imageMode","brandPage","params","assetCount","renderMainSlider","sliderOptions","showOverlay","mainSliderActive","prevButtonSelector","proxy","nextButtonSelector","image","productName","video","fallbackImage","isMobile","sliderThumnailOptions","AbstractModalService","images","videos","aspectRatio","thumbs","activeIndex","showModal","componentAttrs","options","contentAutoScroll","contentMaxHeight","disableBodyScroll","placement","showCloseButton","usePanelWrapper","wide","THUMBNAIL_SLIDES_PER_VIEW","isBot","uaIsPrerender","uaIsBot","overlayActive","padding","activeAspectRatio","toFixed","paddingTop","productImages","productVideos","activeBpDef","bpDef","isBreakpointActive","showThumbNails","$refs","speed","initialSlide","slidesPerView","slidesPerGroup","loop","loopedSlides","loopFillGroupWithBlank","watchSlidesVisibility","watchOverflow","setWrapperSize","pagination","el","clickable","nextEl","prevEl","grabCursor","allowTouchMove","breakpoints","720","simulateTouch","swiper","spaceBetween","height","keyboard","enabled","onlyInViewPort","slider","$swiper","show","videoes","BRAND","imageDimensions","brandLogoUrl125px","img","Image","src","onload","categoryFallbackImage","categoryFallbackImageMap","item","isDefaultFallback","ProductDetailsImageVideo","$reactiveRefs","spec","specIdx","feature","featureIdx","getUnit","unit","values","join","readmore","open","close","translate","ReadMore","relatedModelGroups","group","groupIdx","model","modelIdx","brandSeries","relation","relationIdx","path","productGuideSpecificGuidePage","query","series","modelName","relations","overflow","hasFetchedFullSection","getRelatedModelsSection","isLoadingSection","relatedModelsLoaded","fetched","settings","product","relatedModels","freeze","push","relatedModelsSection","section","models","splice","getRelatedModels","SpinnerOverlay","reason","title","imageUrl","bodyText","isLoggedIn","isServiceAvailable","isPriceAvailable","formattedPrice","price","discount","quantity","amount","cultureFormatted","suggestedRetailPrice","$permission","canPlaceOrder","showLoginOverlay","discounts","trackLogInToViewPricesClick","AddToBasket","hasAccessories","hasExactAlternatives","hasSimilarAlternatives","tabsChanged","tabsInit","getMessage","activeTab","labelAccessoriesText","handleRelationLoaded","ProductRelationType","exactAlternatives","similarAlternatives","msgOrLabel","exists","bodyTextKey","relationType","tabName","trackProductDetailsTabChange","Tabs","Tab","ProductRecommendationsBlock","ProductAccessoriesSearchControl","subtitle","partner","renderedPixelUrl","visiblePixelUrl","viewPixelUrl","clickPixelUrl","click","imageCssClass","formatEmailAsHtml","label","regex","RegExp","rawTextString","formattedTextString","replace","isTall","isSquare","AdnuntiusPixels","recommendationsResult","changed","idx","relationsType","recommendationsBlockContent","recommendationsProductDataPromises","Promise","all","sort","b","indexA","indexB","recommendation","getRecommendationsContent","productDetailsUrl","nativeOn","arg","bidNo","showMenu","isERPServiceAvailable","cancellationCallbacks","encodeURI","alternatives","accessories","isExternalProductGuide","Complete","ErpNotAvailable","NoErpResponseYet","NotLoggedIn","getPriceData","getStockData","trackImpression","now","before","request","requestData","cancel","promise","stockInformation","force","constructTrackingProduct","deltaQuantity","bus","emit","trackProductQuantityChange","stockInfo","trackingState","getTrackingState","Function","ProductTileBid","ProductTileCart","seriesItem","seriesIndex","refInFor","handleCloseInDropdown","handleClickInDropdown","facetDisplayName","alternativeSeriesDisplayName","getDisplayValue","selectedSeries","displayValue","filteredAlternativeSeriesData","alternativeSeriesIndex","alternativeOption","alternativeOptionIndex","productDetailsUrlTarget","handleClickProductSeriesItem","getStockByItemId","seriesOption","seriesOptionIndex","isActive","productUrl","handleClickSeries","isSelected","handleClickSeriesInvalidOption","labelForUnavailableCombination","alternativeSeries","alternativeSeriesFacetId","alternativeSeriesClearOnClose","loadProductSeries","seriesValue","resetStockData","ser","facet","getStockItem","s","selectedSeriesValue","hasUrl","isNotCurrentUrl","router","currentRoute","isValidUrl","trackClickProductLink","stockArray","m","combinationNames","n","cIndex","seriesFacetId","facetId","toLowerCase","productSeriesProducts","p","obj","facetValues","alternativeItems","objWithFacets","dropdown0","dropdown1","$nextTick","items","altSeries","itemCopy","facets","theOtherFacetId","trackClickSeriesDropdown","variant","pushToDataLayer","event","variantAttribute","seriesClassificationId","variantValue","productAlternative","externalProductLinkTarget","Dropdown","ProductTileStock","conditionsLoaded","bidsLoaded","hasLoggedInBefore","designedFor","languageCode","languageLabel","languageTargetString","getLanguageCode","isFeatureEnabled","GoogleTranslatePdp","buttonTarget","translation","translateDescription","siteInfo","translatedData","scrollToElement","readMoreDescription","longDescription","longSummaryDescription","bulletPoints","slice","campaigns","showCampaignIcon","getProductClassificationCodeDictionary","conditionCode","getProductDeliveryCodeDictionary","MY_ACCOUNT_BIDS","priceOrStockLoaded","updateMetaData","productBids","pageUrl","warn","getContent","createTrackingProduct","bullets","faqs","frequentlyAskedQuestions","mainFeatureBulletsMarkup","labelValues","productBaseLabelValues","mainFeaturesCount","labelQuestionKey","questionLabelMainFeature","getWithNamedValues","labelKeyAnswerPrefix","answerPrefixLabelMainFeature","labelKeyAnswerPostfix","answerPostfixLabelMainFeature","schemaBase","schema","mainEntity","acceptedAnswer","text","faq","question","answer","schemaImages","sku","logo","brandLogoUrl250px","review","gtin8","gtin13","gtin","conditionType","offers","window","location","href","priceCurrency","currency","invariantCultureFormatted","itemCondition","availability","schemaAvailability","seller","schemaType","status","stockStatus","defaultImageUrl","category","breadCrumb","subLine","stockStatusLabel","displayNameAndItemId","categoryValues","breadcrumbs","catIndex","titleLabelKey","titleLabel","titleLabelTranslated","titleKeys","seoTitles","titleKeysTranslated","getWithNamedValuesUntilString","descriptionLabelKey","descriptionLabel","descriptionLabelTranslated","descriptionKey","seoDescription","descriptionKeyTranslated","setTitle","setDescription","setCanonicalUrl","servercontext","culture","canonical","setOpenGraphImage","expectedProductUrl","setPrerenderRedirectUrlsIfLocationIsWrong","blocking","personalization","id","pph","productGroup","split","shift","fullPath","getContactKey","getCustomerKey","getConditions","getBidsData","getProductDetailsPage","getPartnerLogos","cancelOutstandingXHRRequests","current","previous","ProductDetailsSeries","ProductListTracker","ProductDetailsSlider","ProductDetailsSpecifications","ProductDetailsRelatedModels","ProductDetailsReasonsToBuy","ProductDetailsCart","ProductDetailsRelations","ProductDetailsRecommendations","SmartParagraph","ProductTileFavorite","ProductDetailsPartnerLogos","CopyText","ProductDetailsBidTile","BrandCategoriesLinks","productDetailsRegEx","getProductWidFromUrl","match","matchingRegEx","hasTrackedPage","setup","to","from","trackProductDetailsPage","productWid","setBreadcrumb","logMessage","handleErrorCodes","alternativeUrls","setHreflang","ProductDetails","beforeRouteEnter","next","activeXDocument","definePropertiesModule","enumBugKeys","hiddenKeys","html","documentCreateElement","sharedKey","GT","LT","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","NullProtoObjectViaActiveX","write","temp","parentWindow","NullProtoObjectViaIFrame","iframeDocument","iframe","JS","display","appendChild","contentWindow","F","NullProtoObject","ActiveXObject","domain","productMediaSize","mediaMode","imageName","validator","includes","ResponsiveProductImage","VideoRender","internalObjectKeys","uncurryThis","requireObjectCoercible","fails","charAt","FORCED","forced","S","cssClasses","videoUrl","screenMode","allowControls","startVideo","iconWidth","iconHeight","fullscreenMode","videoPlayMount","playOptions","controls","autoplay","videoMount","posterOptions","background","mode","youtubeUrl","videoImage","youtubeRegex","videoId","imageResolution","VideoType","supportedSizes","videoType","Vimeo","Youtube","Native","videoWrapper","visibleState","isScrolledIntoView","parent","closest","isVisible","bottom","left","right","valuesToCheck","every","val","NativeVideo","VimeoVideo","YoutubeVideo"],"mappings":"gHAAA,IAAIA,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAASF,EAAIM,SAAWN,EAAIO,YAAcP,EAAIO,WAAWC,OAAS,EAAGJ,EAAG,MAAM,CAACK,YAAY,8BAA8B,CAACL,EAAG,KAAK,CAACK,YAAY,6BAA6B,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIY,cAAc,OAAOZ,EAAIa,GAAIb,EAAc,YAAE,SAASc,GAAO,OAAOV,EAAG,yBAAyB,CAACW,IAAID,EAAME,IAAIP,YAAY,gEAAgEQ,MAAM,CAAC,GAAKH,EAAME,MAAM,CAAChB,EAAIU,GAAG,IAAIV,EAAIW,GAAGG,EAAMI,aAAa,WAAU,GAAGlB,EAAImB,MACliBC,EAAkB,G,gDCiBtB,IAAqB,EAArB,cAAkD,OAAlD,c,oBAOI,KAAAd,SAAmB,EACnB,KAAAe,eAA0C,KAC1C,KAAAC,qBAAuB,IAAIC,IAEC,uBACpBtB,KAAKuB,UACLvB,KAAKoB,qBAAuB,OAAIP,MAAMW,iBAAiBxB,KAAKuB,WAE5DvB,KAAKoB,eAAiB,KAIM,6BAACK,GACjC,MAAMC,QAAmB,OAAIC,WAAWD,WAAWD,GACnD,OAAIC,QAAJ,IAAIA,KAAYE,OACZC,OAAOC,KAAKJ,EAAWE,OAAOG,QAASC,IACnChC,KAAKqB,qBAAqBY,IAAID,EAAYN,EAAWE,MAAMI,MAKxC,gCAC3B,IAAIN,EAAuB,GAW3B,GAVA,UAAI1B,KAAKkC,0BAAT,OAAI,EAAyB3B,QACzBP,KAAKkC,mBAAmBH,QAAQI,IAC5B,GAAIA,EAAIlB,YAAa,CACjB,MAAMmB,EAAkBD,EAAIV,YAAY,GACxCzB,KAAKqB,qBAAqBY,IAAIG,EAAiBD,EAAIlB,kBAEnDS,EAAaA,EAAWW,OAAOF,EAAIV,eAI3CC,EAAWnB,OAAQ,CACnB,MAAM+B,EAAmBZ,EAAWa,OAAO,CAACC,EAAGC,EAAGC,IAAMA,EAAEC,QAAQH,KAAOC,SACnEzC,KAAK4C,uBAAuBN,IAIpB,uBAClB,OAAStC,KAAKK,UAAN,UAAiBL,KAAKkC,0BAAtB,aAAiB,EAAyBW,IAAIC,IAAO,MACzD,GAAI,UAACA,EAAKrB,mBAAN,QAAC,EAAkBlB,OAAQ,OAAO,KACtC,MAAMwC,EAAQD,EAAKrB,YAAY,GAAGuB,WAC5BC,EAAOjD,KAAKqB,qBAAqB6B,IAAIH,GAC3C,MAAO,IACAD,EACH7B,YAAagC,OAEd,KAGmB,+BAC1B,OAAI,UAAAjD,KAAKoB,sBAAL,SAAqB+B,OAASnD,KAAKoB,eAAe+B,MAAM5C,OAAS,EACzDP,KAAKoD,oBAAsBpD,KAAKoB,eAAe+B,MAAMZ,OAAOc,IAAMA,EAAEtC,IAAIuC,SAAStD,KAAKoD,sBAAwBpD,KAAKoB,eAAe+B,MAEvI,KAGa,yBACpB,OAAO,OAAkBD,IAAIlD,KAAKoD,oBAAsB,sDAAwD,sCAAuC,EAAC,UAAApD,KAAKoB,sBAAL,eAAqBG,YAAa,KAIvK,wBAACgC,EAAsBC,GAC1CxD,KAAKK,SAAU,QACTL,KAAKyD,uBACLzD,KAAK0D,oBACX1D,KAAKK,SAAU,IAxEnB,gBADC,kB,gCAID,gBADC,kB,0CAkED,gBADC,eAAM,YAAa,CAAEsD,WAAW,K,gCAMhC,MA3EgB,EAAoB,gBADxC,QACoB,WClB8Z,I,YCO/aC,EAAY,eACd,EACA9D,EACAqB,GACA,EACA,KACA,KACA,MAIa,OAAAyC,E,yEClBf,IAAI9D,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAI8D,SAAStD,OAAS,EAAGJ,EAAG,uBAAuB,CAAC2D,MAAM,CAAE,6BAA8B/D,EAAIgE,uBAAwB/C,MAAM,CAAC,SAAWjB,EAAIiE,SAAS,iBAAiBjE,EAAIkE,aAAa,SAAWlE,EAAI8D,SAAS,qBAAqB9D,EAAImE,iBAAiB,cAAcnE,EAAIoE,QAAQC,YAAY,sBAAsBrE,EAAIsE,iBAAiB,mBAAmBtE,EAAIoE,QAAQG,0BAA0BvE,EAAImB,MACpeC,EAAkB,G,oFCuBtB,IAAqB,EAArB,cAAyD,OAAzD,c,oBAwBY,KAAAoD,OAAsC,KAVrB,4BACrB,OAAOvE,KAAKmE,QAAQJ,wBAA0B/D,KAAKiE,aAWnC,eAChB,OAAOjE,KAAKuE,OAASvE,KAAKuE,OAAOV,SAAW,GAGpB,uBACxB,OAAO7D,KAAKmE,QAAQC,YAAc,OAAII,EAGd,uBACxB,IACIxE,KAAKuE,aAAe,OAAIE,gBAAgBC,UAAU,CAC9CC,6BAA8B3E,KAAKmE,QAAQQ,6BAC3CC,6BAA8B5E,KAAKmE,QAAQS,6BAC3CC,oBAAqB7E,KAAKmE,QAAQW,gBAClCC,aAAc/E,KAAKmE,QAAQa,SAC3BC,eAAgBjF,KAAKmE,QAAQe,WAC7BlD,WAAYhC,KAAKmE,QAAQnC,WACzBmD,UAAWnF,KAAKmF,WAAa,OAAiBC,cAAc,OAAYC,KACxEC,aAActF,KAAKmE,QAAQmB,aAC3BC,mBAAoBvF,KAAKmE,QAAQqB,KACjCC,qBAAsBzF,KAAKmE,QAAQsB,qBACnCC,QAAS1F,KAAKmE,QAAQuB,QACtBC,UAAW3F,KAAKmE,QAAQwB,UACxBC,YAAa5F,KAAKmE,QAAQyB,YAC1BC,iBAAkB7F,KAAKmE,QAAQ0B,mBAErC,MAAOrD,GACL,OAAesD,MAAMtD,IAIT,qBAChB,iBAAOxC,KAAKmE,eAAZ,aAAO,EAAcH,SAGG,uBACxB,MAAMlD,EAAMe,OAAOC,KAAK,QAA2BS,OAAQwD,GAAMC,MAAMC,OAAOF,KAAKG,KAAKC,GAAK,OAA0BA,KAAOnG,KAAKmE,QAAQqB,OAAS,iBAEpJ,MAAO,mBAAmBxF,KAAKoG,OAAOnD,QAAQnC,IAG1C,UACJd,KAAKqG,mBA/DT,gBAJC,eAAK,CACFC,UAAU,EACVd,KAAM3D,U,8BASV,gBALC,eAAK,CACFyE,UAAU,EACVd,KAAMe,QACNC,SAAS,K,mCAYb,gBAJC,eAAK,CACFF,UAAU,EACVd,KAAMiB,U,gCApBO,EAA2B,gBAH/C,eAAU,CACPC,WAAY,CAAEC,uBAAA,SAEG,WCxBqa,I,YCOtb/C,EAAY,eACd,EACA9D,EACAqB,GACA,EACA,KACA,KACA,MAIa,aAAAyC,E,gCClBf,IAAIgD,EAAa,EAAQ,QAEzBC,EAAOC,QAAUF,EAAW,WAAY,oB,kCCFxC,yBAAwkB,EAAG,G,2DCA3kB,yBAAylB,EAAG,G,oCCC5lB,IAAIG,EAAI,EAAQ,QACZC,EAAW,EAAQ,QACnBC,EAAoB,EAAQ,QAC5BC,EAAsB,EAAQ,QAC9BC,EAAmB,EAAQ,QAI/BJ,EAAE,CAAEK,OAAQ,QAASC,OAAO,GAAQ,CAClCC,GAAI,SAAYvE,GACd,IAAIwE,EAAIP,EAAShH,MACbwH,EAAMP,EAAkBM,GACxBE,EAAgBP,EAAoBnE,GACpCoD,EAAIsB,GAAiB,EAAIA,EAAgBD,EAAMC,EACnD,OAAQtB,EAAI,GAAKA,GAAKqB,OAAOhD,EAAY+C,EAAEpB,MAI/CgB,EAAiB,O,uBCnBjB,IAAIO,EAAc,EAAQ,QACtBC,EAA0B,EAAQ,QAClCC,EAAuB,EAAQ,QAC/BC,EAAW,EAAQ,QACnBC,EAAkB,EAAQ,QAC1BC,EAAa,EAAQ,QAKzBjB,EAAQkB,EAAIN,IAAgBC,EAA0B9F,OAAOoG,iBAAmB,SAA0BV,EAAGW,GAC3GL,EAASN,GACT,IAIIzG,EAJAqH,EAAQL,EAAgBI,GACxBpG,EAAOiG,EAAWG,GAClB3H,EAASuB,EAAKvB,OACdwC,EAAQ,EAEZ,MAAOxC,EAASwC,EAAO6E,EAAqBI,EAAET,EAAGzG,EAAMgB,EAAKiB,KAAUoF,EAAMrH,IAC5E,OAAOyG,I,uBClBT,IAAIa,EAAkB,EAAQ,QAC1BC,EAAS,EAAQ,QACjBC,EAAiB,EAAQ,QAAuCN,EAEhEO,EAAcH,EAAgB,eAC9BI,EAAiBC,MAAMC,eAIQlE,GAA/BgE,EAAeD,IACjBD,EAAeE,EAAgBD,EAAa,CAC1CI,cAAc,EACdC,MAAOP,EAAO,QAKlBxB,EAAOC,QAAU,SAAUhG,GACzB0H,EAAeD,GAAazH,IAAO,I,kCClBrC,yBAAsmB,EAAG,G,yDCAzmB,yBAAwmB,EAAG,G,oCCA3mB,IAAIhB,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACK,YAAY,aAAasD,MAAM,CAAC,qBAAsB/D,EAAI8I,iBAAkB,CAAC1I,EAAG,SAASJ,EAAI+I,GAAG,CAACtI,YAAY,qBAAqBsD,MAAM,CAAC,CAAE,yBAA2B/D,EAAIgJ,aAAchJ,EAAIiJ,aAAahI,MAAM,CAAC,KAAO,UAAUiI,GAAG,CAAC,MAAQlJ,EAAImJ,cAAc,SAASnJ,EAAIoJ,QAAO,GAAO,CAAEpJ,EAAiB,cAAEI,EAAG,SAAS,CAACK,YAAY,kCAAkCQ,MAAM,CAAC,KAAOjB,EAAIqJ,QAAQrJ,EAAImB,KAAKf,EAAG,OAAO,CAACK,YAAY,oDAAoD,CAACT,EAAIsJ,GAAG,YAAY,GAAItJ,EAAgB,aAAEI,EAAG,SAAS,CAACK,YAAY,kCAAkCQ,MAAM,CAAC,KAAOjB,EAAIqJ,QAAQrJ,EAAImB,MAAM,GAAGf,EAAG,aAAa,CAACa,MAAM,CAAC,OAAS,GAAG,qBAAqB,0CAA0C,qBAAqB,6CAA6C,CAAEjB,EAAkB,eAAEI,EAAG,MAAM,CAACmJ,WAAW,CAAC,CAACrG,KAAK,gBAAgBsG,QAAQ,kBAAkBX,MAAO7I,EAAiB,cAAEyJ,WAAW,kBAAkBhJ,YAAY,gCAAgCiJ,MAAO1J,EAAiB,eAAG,CAACI,EAAG,SAAS,CAACK,YAAY,uEAAuEQ,MAAM,CAAC,KAAO,UAAUiI,GAAG,CAAC,MAAQlJ,EAAI2J,gBAAgB,CAACvJ,EAAG,OAAO,CAACK,YAAY,sGAAsG,CAACT,EAAIsJ,GAAG,eAAe,GAAGlJ,EAAG,SAAS,CAACK,YAAY,0CAA0CQ,MAAM,CAAC,KAAO,QAAQ,MAAQ,KAAK,OAAS,SAAS,GAAGjB,EAAIsJ,GAAG,aAAa,GAAGtJ,EAAImB,OAAQnB,EAAkB,eAAEI,EAAG,aAAa,CAACa,MAAM,CAAC,OAAS,GAAG,qBAAqB,iCAAiC,qBAAqB,oCAAoC,CAACb,EAAG,MAAM,CAACK,YAAY,qBAAqByI,GAAG,CAAC,MAAQ,SAASU,GAAQ,OAAO5J,EAAI2J,sBAAsB3J,EAAImB,MAAM,IACnzDC,EAAkB,G,wBCuCtB,IAAqB,EAArB,cAAsC,OAAtC,c,oBAaY,KAAA0H,gBAA0B,EAE1B,KAAAe,cAAqD,KACrD,mBACJ,MAAMC,EAAO7J,KAAK8J,IAAIC,wBAChBC,EAAahK,KAAK8J,IAAIG,cAAeF,wBACrCG,EAAmBlK,KAAK8J,IAAIG,cAAeA,cAAeF,wBAC1DI,EAAuC,GAAzBD,EAAiBE,MAApB,KACXC,EAAMC,KAAKC,IAAIP,EAAWK,IAAMR,EAAKQ,KAErCG,EAAYxK,KAAKyK,cAAgB,QAAU,OAEjDzK,KAAK4J,cAAgB,CACjBS,IAAKA,EAAM,KACX,CAACG,GAAY,IACbL,YAID,eACHnK,KAAK0K,mBACL1K,KAAK6I,gBAAiB,EAGnB,gBACH7I,KAAK6I,gBAAiB,EACtB7I,KAAK2K,MAAM,SAGE,oBACb,MAAqB,KAAd3K,KAAKoJ,OAAgBpJ,KAAK+I,YAGrB,mBACZ,MAAqB,KAAd/I,KAAKoJ,MAAepJ,KAAK+I,YAG5B,cACJ/I,KAAK2K,MAAM,SAEN3K,KAAK6I,gBACN7I,KAAK4K,iBApDb,gBADC,eAAK,CAAEpF,KAAMiB,OAAQH,UAAU,K,kCAIhC,gBADC,eAAK,CAAEd,KAAMiB,OAAQH,UAAU,EAAOE,QAAS,M,2BAIhD,gBADC,eAAK,CAAEhB,KAAMe,QAASD,UAAU,EAAOE,SAAS,K,kCAIjD,gBADC,eAAK,CAAEhB,KAAMe,QAASD,UAAU,EAAOE,SAAS,K,oCAVhC,EAAQ,gBAD5B,QACoB,WCxCgY,I,wBCQjZ5C,EAAY,eACd,EACA9D,EACAqB,GACA,EACA,KACA,WACA,MAIa,OAAAyC,E,6CCnBf,yBAA8jB,EAAG,G,kHCAjkB,IAAI9D,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAW,QAAEI,EAAG,iBAAiB,CAACW,IAAIf,EAAI8K,QAAQxF,IAAIrE,MAAM,CAAC,QAAUjB,EAAI8K,SAAS5B,GAAG,CAAC,gBAAkBlJ,EAAI+K,aAAc/K,EAAW,QAAEI,EAAG,MAAM,CAACK,YAAY,iCAAiC,CAACL,EAAG,iBAAiB,CAACa,MAAM,CAAC,KAAO,GAAG,MAAQ,QAAQ,GAAGjB,EAAImB,MAC3VC,EAAkB,G,oCCDlB,EAAS,WAAa,IAAIpB,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAW,QAAEI,EAAG,UAAU,CAACW,IAAIf,EAAI8K,QAAQxF,IAAI7E,YAAY,iBAAiB,CAACL,EAAG,MAAM,CAACK,YAAY,YAAY,CAACL,EAAG,MAAM,CAACK,YAAY,4BAA4B,CAACL,EAAG,UAAU,CAACK,YAAY,gDAAgD,CAACL,EAAG,MAAM,CAACK,YAAY,2CAA2C,CAACL,EAAG,MAAM,CAACK,YAAY,mCAAmC,CAACL,EAAG,KAAK,CAACK,YAAY,kDAAkD,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAI8K,QAAQ5J,aAAa,OAAOd,EAAG,uBAAuB,CAACK,YAAY,cAAcQ,MAAM,CAAC,QAAUjB,EAAI8K,QAAQ,eAAe,QAAQ,GAAG1K,EAAG,MAAM,CAACK,YAAY,4CAA4C,CAACL,EAAG,MAAM,CAACK,YAAY,sCAAsC,CAAET,EAAIgL,mBAAqBhL,EAAI8K,QAAQG,OAASjL,EAAIkL,cAAe9K,EAAG,UAAU,CAACK,YAAY,uBAAuB,CAAET,EAAqB,kBAAEA,EAAIa,GAAIb,EAAI8K,QAAiB,WAAE,SAASK,EAASnI,GAAO,OAAO5C,EAAG,yBAAyB,CAACW,IAAIiC,EAAMvC,YAAY,2FAA2FQ,MAAM,CAAC,GAAM,cAAiBkK,EAAqB,eAAK,CAAEA,EAAyB,iBAAE,CAAC/K,EAAG,OAAO,CAACK,YAAY,SAAS,CAAG0K,EAASC,gBAAoGhL,EAAG,MAAM,CAACK,YAAY,kBAAkB,CAACL,EAAG,MAAM,CAACmJ,WAAW,CAAC,CAACrG,KAAK,WAAWsG,QAAQ,eAAevI,MAAM,CAAC,IAAMkK,EAASC,gBAAgB,IAAM,qBAAtOhL,EAAG,SAAS,CAACa,MAAM,CAAC,KAAO,SAAS,UAAW,EAAM,MAAQ,KAAK,OAAS,SAAiL,GAAGb,EAAG,OAAO,CAACJ,EAAIU,GAAG,IAAIV,EAAIW,GAAGwK,EAASE,aAAa,QAAQrL,EAAImB,MAAM,MAAKnB,EAAImB,KAAMnB,EAAI8K,QAAa,MAAE1K,EAAG,MAAM,CAACK,YAAY,mHAAmH,CAACL,EAAG,SAAS,CAACa,MAAM,CAAC,KAAO,aAAa,UAAW,EAAM,MAAQ,KAAK,OAAS,QAAQb,EAAG,OAAO,CAACK,YAAY,SAAS,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,gCAAgC,QAAQ,GAAGA,EAAImB,MAAM,GAAGnB,EAAImB,KAAKf,EAAG,KAAK,CAACK,YAAY,4CAA4C,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAI8K,QAAQ5J,aAAa,OAAQlB,EAAI8K,QAAqB,cAAE1K,EAAG,MAAM,CAACK,YAAY,8CAA8C,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIuL,iCAAgC,IAAO,OAAOvL,EAAImB,KAAKf,EAAG,MAAM,CAACK,YAAY,kBAAkB,CAACL,EAAG,MAAM,CAACK,YAAY,2CAA2C,CAAET,EAAO,IAAEI,EAAG,IAAI,CAACK,YAAY,oEAAoE,CAACL,EAAG,IAAI,CAACK,YAAY,oDAAoD,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,qBAAqB,OAAOI,EAAG,WAAW,CAACK,YAAY,kCAAkC,CAACL,EAAG,OAAO,CAACK,YAAY,aAAa,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIwL,KAAK,UAAU,GAAGxL,EAAImB,KAAMnB,EAAU,OAAEI,EAAG,IAAI,CAACK,YAAY,+DAA+D,CAACL,EAAG,IAAI,CAACK,YAAY,oDAAoD,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,4BAA4B,OAAOI,EAAG,WAAW,CAACK,YAAY,kCAAkC,CAACL,EAAG,OAAO,CAACK,YAAY,aAAa,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIyL,QAAQ,UAAU,GAAGzL,EAAImB,KAAMnB,EAAI8K,QAAW,IAAE1K,EAAG,IAAI,CAACK,YAAY,2CAA2C,CAACL,EAAG,IAAI,CAACK,YAAY,oDAAoD,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,wBAAwB,OAAOI,EAAG,OAAO,CAACK,YAAY,mCAAmC,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAI8K,QAAQY,KAAK,SAAS1L,EAAImB,KAAMnB,EAAI8K,QAAW,IAAE1K,EAAG,IAAI,CAACK,YAAY,2CAA2C,CAACL,EAAG,IAAI,CAACK,YAAY,oDAAoD,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,2BAA2B,OAAOI,EAAG,OAAO,CAACK,YAAY,mCAAmC,CAACL,EAAG,OAAO,CAACJ,EAAIU,GAAGV,EAAIW,GAAGX,EAAI8K,QAAQa,YAAY3L,EAAImB,OAAOf,EAAG,MAAM,CAACK,YAAY,uDAAuD,CAACL,EAAG,sBAAsB,CAACK,YAAY,2CAA2CQ,MAAM,CAAC,QAAUjB,EAAI8K,QAAQ,eAAe9K,EAAI4L,iBAAiB,CAACxL,EAAG,OAAO,CAACK,YAAY,WAAW,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,0BAA0B,UAAU,OAAQA,EAAoB,iBAAEI,EAAG,uBAAuB,CAACa,MAAM,CAAC,IAAMjB,EAAI8K,QAAQxF,IAAI,UAAUtF,EAAI8K,QAAQW,OAAO,iBAAiBzL,EAAI8K,QAAQe,iBAAiB7L,EAAImB,KAAKf,EAAG,MAAM,CAACK,YAAY,oCAAoCsD,MAAM,CAAE,kBAAmB/D,EAAI8L,QAAS,QAAS9L,EAAI8L,UAAW,CAAE9L,EAAwB,qBAAEI,EAAG,MAAM,CAACK,YAAY,oCAAoC,CAAET,EAAwB,qBAAEI,EAAG,MAAM,CAACK,YAAY,2EAA2E,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,mCAAmC,OAAOA,EAAImB,OAAOnB,EAAImB,KAAKf,EAAG,MAAM,CAACK,YAAY,OAAOsD,MAAM,CAAE,QAAS/D,EAAI+L,uBAAwB,CAAC3L,EAAG,MAAM,CAACK,YAAY,6BAA6B,CAACL,EAAG,MAAM,CAACK,YAAY,8BAA8B,CAACL,EAAG,MAAM,CAACK,YAAY,+CAA+C,CAAET,EAAe,YAAEI,EAAG,IAAI,CAACK,YAAY,gCAAgC,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,+BAA+B,OAAOA,EAAImB,KAAKf,EAAG,mBAAmB,CAACa,MAAM,CAAC,UAAUjB,EAAI8K,QAAQW,OAAO,MAAQ,CAAEO,OAAQhM,EAAIiM,YAAaC,KAAMlM,EAAImM,UAAWC,WAAY,MAAO,kBAAkBpM,EAAIqM,cAAc,eAAerM,EAAI4L,eAAe,sBAAsB,OAAO,KAAKxL,EAAG,qBAAqB,CAACK,YAAY,oDAAoDQ,MAAM,CAAC,IAAMjB,EAAI8K,QAAQxF,IAAI,MAAQ,CAAE0G,OAAQhM,EAAIsM,aAAcJ,KAAMlM,EAAIuM,WAAY,eAAevM,EAAI4L,gBAAgB1C,GAAG,CAAC,kBAAoBlJ,EAAIwM,2BAA2B,OAAQxM,EAAW,QAAEI,EAAG,MAAM,CAACK,YAAY,wCAAwC,CAACL,EAAG,MAAM,CAACK,YAAY,iFAAiF,CAACL,EAAG,SAAS,CAACK,YAAY,OAAOQ,MAAM,CAAC,KAAO,MAAM,OAAS,SAAS,MAAQ,YAAYjB,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,mCAAmC,KAAKI,EAAG,MAAM,CAACK,YAAY,qBAAqB,CAACL,EAAG,yBAAyB,CAACK,YAAY,0CAA0CQ,MAAM,CAAC,GAAK,CAAEiC,KAAMlD,EAAIyM,qBAAsB,CAACrM,EAAG,SAAS,CAACK,YAAY,YAAYQ,MAAM,CAAC,KAAO,cAAc,MAAQ,KAAK,OAAS,KAAK,cAAc,UAAUb,EAAG,OAAO,CAACK,YAAY,mBAAmB,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,gCAAgC,QAAQ,IAAI,IAAI,GAAGI,EAAG,qBAAqB,CAACa,MAAM,CAAC,SAAWjB,EAAI0M,SAAS,YAAY,QAAQC,YAAY3M,EAAI4M,GAAG,CAAC,CAAC7L,IAAI,UAAU8L,GAAG,SAASC,GAC55M,IAAIC,EAAoBD,EAAIC,kBACxBC,EAAeF,EAAIE,aACvB,OAAOhN,EAAIa,GAAIb,EAAY,UAAE,SAASiN,EAAIC,GAAU,OAAO9M,EAAG,wBAAwB,CAACW,IAAImM,EAASzM,YAAY,oBAAoBQ,MAAM,CAAC,QAAUgM,EAAI,gBAAgBD,GAAc9D,GAAG,CAAC,kBAAoB6D,WAA0B,MAAK,EAAM,eAAe,GAAG/M,EAAImB,KAAMnB,EAAImN,aAAa3M,OAAS,IAAMR,EAAIoN,sBAAuBhN,EAAG,6BAA6B,CAACK,YAAY,QAAQQ,MAAM,CAAC,SAAWjB,EAAImN,gBAAgBnN,EAAImB,KAAMnB,EAAe,YAAEI,EAAG,MAAM,CAACK,YAAY,oCAAoC,CAAET,EAAwB,qBAAEI,EAAG,SAAS,CAACK,YAAY,oDAAoDsD,MAAM/D,EAAIqN,uBAAyB,uCAAuCpM,MAAM,CAAC,KAAO,UAAUiI,GAAG,CAAC,MAAQlJ,EAAIsN,+BAA+B,CAAClN,EAAG,SAAS,CAACa,MAAM,CAAC,KAAO,iBAAiBb,EAAG,OAAO,CAACK,YAAY,qCAAqC,CAACT,EAAIU,GAAGV,EAAIW,GAAGX,EAAIuN,kCAAkC,GAAGvN,EAAImB,KAAKf,EAAG,iBAAiB,CAACa,MAAM,CAAC,QAAUjB,EAAIqL,YAAY,iBAAiB,IAAI,UAAU,KAAK,CAACjL,EAAG,IAAI,CAACK,YAAY,4EAA4EQ,MAAM,CAAC,KAAO,gBAAgBiI,GAAG,CAAC,MAAQlJ,EAAIwN,kBAAkB,CAACxN,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,wCAAwC,UAAU,GAAGA,EAAImB,KAAMnB,EAAgB,aAAEI,EAAG,MAAM,CAACK,YAAY,wBAAwB,CAACL,EAAG,KAAK,CAACK,YAAY,aAAaT,EAAIa,GAAIb,EAAgB,cAAE,SAASyN,EAAOzK,GAAO,OAAO5C,EAAG,KAAK,CAACW,IAAIiC,GAAO,CAAC5C,EAAG,IAAI,CAACsN,SAAS,CAAC,UAAY1N,EAAIW,GAAG8M,WAAe,KAAKzN,EAAImB,KAAKf,EAAG,MAAM,CAACK,YAAY,kDAAkD,CAAET,EAAI8K,QAAQ6C,eAAenN,OAAS,EAAGJ,EAAG,IAAI,CAACK,YAAY,gDAAgDQ,MAAM,CAAC,KAAO,mBAAmBiI,GAAG,CAAC,MAAQlJ,EAAI4N,qBAAqB,CAAC5N,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,4CAA4C,KAAKI,EAAG,SAAS,CAACK,YAAY,YAAYQ,MAAM,CAAC,KAAO,iBAAiB,GAAGjB,EAAImB,KAAMnB,EAAI4L,gBAAkB5L,EAAI6N,QAASzN,EAAG,IAAI,CAACK,YAAY,iEAAiEQ,MAAM,CAAC,KAAO,IAAIiI,GAAG,CAAC,MAAQ,SAASU,GAAgC,OAAxBA,EAAOkE,iBAAwB9N,EAAI+N,kBAAkBC,MAAM,KAAMC,cAAc,CAACjO,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,yCAAyC,KAAKI,EAAG,SAAS,CAACK,YAAY,YAAYQ,MAAM,CAAC,KAAO,kBAAkB,GAAGjB,EAAImB,QAAQ,KAAMnB,EAAIkO,WAAW1N,OAAS,EAAGJ,EAAG,UAAU,CAACK,YAAY,SAAS,CAACL,EAAG,KAAK,CAACK,YAAY,sDAAsD,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,+BAA+B,OAAOI,EAAG,qBAAqB,CAACa,MAAM,CAAC,SAAWjB,EAAIkO,WAAW,YAAY,cAAcvB,YAAY3M,EAAI4M,GAAG,CAAC,CAAC7L,IAAI,UAAU8L,GAAG,SAASC,GACrnF,IAAIC,EAAoBD,EAAIC,kBACxBC,EAAeF,EAAIE,aACvB,OAAOhN,EAAIa,GAAIb,EAAc,YAAE,SAASmO,EAAUC,GAAgB,OAAOhO,EAAG,MAAM,CAACW,IAAIqN,EAAe3N,YAAY,SAAS,CAACL,EAAG,cAAc,CAACK,YAAY,cAAcQ,MAAM,CAAC,QAAUkN,EAAU,OAAS,GAAG,gBAAgBnB,GAAc9D,GAAG,CAAC,kBAAoB6D,MAAsB,SAAQ,MAAK,EAAM,eAAe,GAAG/M,EAAImB,WAAWf,EAAG,MAAM,CAACA,EAAG,MAAM,CAACK,YAAY,4BAA4B,CAACL,EAAG,UAAU,CAACK,YAAY,uBAAuB,CAACL,EAAG,0BAA0B,CAACK,YAAY,QAAQQ,MAAM,CAAC,QAAUjB,EAAI8K,WAAW1K,EAAG,8BAA8B,CAACK,YAAY,QAAQQ,MAAM,CAAC,UAAUjB,EAAI8K,QAAQW,UAAWzL,EAAI8K,QAAQ6C,eAAenN,OAAS,EAAGJ,EAAG,+BAA+B,CAAC0M,IAAI,iBAAiBrM,YAAY,QAAQQ,MAAM,CAAC,eAAiBjB,EAAI8K,QAAQ6C,kBAAkB3N,EAAImB,KAAMnB,EAAsB,mBAAEI,EAAG,gCAAgC,CAACK,YAAY,QAAQQ,MAAM,CAAC,aAAajB,EAAI8K,QAAQxF,IAAI,uBAAuBtF,EAAIqO,sBAAsBrO,EAAImB,KAAMnB,EAAe,YAAEI,EAAG,UAAU,CAAC0M,IAAI,cAAcrM,YAAY,QAAQQ,MAAM,CAAC,GAAK,gBAAgB,CAACb,EAAG,KAAK,CAACK,YAAY,0CAA0C,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,gCAAgC,OAAOI,EAAG,WAAW,CAAC0M,IAAI,sBAAsBrM,YAAY,WAAWQ,MAAM,CAAC,aAAa,IAAI,iBAAiB,IAAI,eAAe,SAAS,YAAY,KAAK,CAACb,EAAG,MAAM,CAACK,YAAY,gCAAgC,CAACL,EAAG,KAAK,CAACK,YAAY,uBAAuB,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsO,kBAAkB,OAAOlO,EAAG,IAAI,CAACK,YAAY,iBAAiBiN,SAAS,CAAC,UAAY1N,EAAIW,GAAGX,EAAIqL,kBAAkBjL,EAAG,MAAM,CAACa,MAAM,CAAC,KAAO,YAAYsN,KAAK,YAAY,CAACnO,EAAG,MAAM,CAACK,YAAY,0GAA0G,CAACL,EAAG,SAAS,CAACK,YAAY,QAAQQ,MAAM,CAAC,OAAS,KAAK,MAAQ,KAAK,KAAO,eAAejB,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,6BAA6B,MAAM,KAAKI,EAAG,MAAM,CAACa,MAAM,CAAC,KAAO,UAAUsN,KAAK,UAAU,CAACnO,EAAG,MAAM,CAACK,YAAY,0GAA0G,CAACL,EAAG,SAAS,CAACK,YAAY,QAAQQ,MAAM,CAAC,OAAS,KAAK,MAAQ,KAAK,KAAO,cAAcjB,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,6BAA6B,MAAM,QAAQ,GAAGA,EAAImB,KAAMnB,EAAI8K,QAAQ0D,UAAgB,OAAEpO,EAAG,UAAU,CAACK,YAAY,SAAS,CAACL,EAAG,KAAK,CAACK,YAAY,0CAA0C,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,0CAA0C,OAAOI,EAAG,WAAW,CAACK,YAAY,iDAAiDQ,MAAM,CAAC,YAAY,EAAE,iBAAiB,IAAI,eAAe,SAAS,YAAY,KAAK,CAACjB,EAAIa,GAAIb,EAAI8K,QAAiB,WAAE,SAAS2D,EAASC,GAAe,OAAOtO,EAAG,MAAM,CAACW,IAAI2N,EAAcjO,YAAY,SAAS,CAACL,EAAG,IAAI,CAACK,YAAY,mCAAmCQ,MAAM,CAAC,KAAOwN,EAASE,IAAI,OAAS,SAAS,SAAW,KAAK,CAAGF,EAASG,aAA6ExO,EAAG,MAAM,CAACK,YAAY,uBAAuB,CAACL,EAAG,MAAM,CAACa,MAAM,CAAC,IAAMwN,EAASG,aAAa,IAAMH,EAASI,eAAzKzO,EAAG,SAAS,CAACa,MAAM,CAAC,KAAO,MAAM,OAAS,KAAK,MAAQ,QAAiIb,EAAG,IAAI,CAACK,YAAY,yCAAyC,CAACL,EAAG,OAAO,CAACK,YAAY,aAAa,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAG8N,EAASvL,MAAM,KAAMuL,EAASK,UAAUtO,OAAS,EAAGJ,EAAG,OAAO,CAACA,EAAG,OAAO,CAACJ,EAAIU,GAAG,OAAOV,EAAIa,GAAI4N,EAAkB,WAAE,SAASM,EAAK/L,GAAO,MAAO,CAAC5C,EAAG,OAAO,CAACW,IAAIgO,GAAM,CAAC/O,EAAIU,GAAGV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAYA,EAAIgP,kBAAkBD,MAAU/L,EAAQyL,EAASK,UAAUtO,OAAS,EAAG,CAACR,EAAIU,GAAG,OAAOV,EAAImB,MAAM,OAAMf,EAAG,OAAO,CAACJ,EAAIU,GAAG,QAAQ,GAAGV,EAAImB,OAAOf,EAAG,OAAO,CAACK,YAAY,uBAAuB,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAG8N,EAASpD,aAAa,UAAU,QAAOjL,EAAG,MAAM,CAACa,MAAM,CAAC,KAAO,YAAYsN,KAAK,YAAY,CAACnO,EAAG,MAAM,CAACK,YAAY,0GAA0G,CAACL,EAAG,SAAS,CAACK,YAAY,QAAQQ,MAAM,CAAC,OAAS,KAAK,MAAQ,KAAK,KAAO,eAAejB,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,6BAA6B,MAAM,KAAKI,EAAG,MAAM,CAACa,MAAM,CAAC,KAAO,UAAUsN,KAAK,UAAU,CAACnO,EAAG,MAAM,CAACK,YAAY,0GAA0G,CAACL,EAAG,SAAS,CAACK,YAAY,QAAQQ,MAAM,CAAC,OAAS,KAAK,MAAQ,KAAK,KAAO,cAAcjB,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,6BAA6B,MAAM,MAAM,IAAI,GAAGA,EAAImB,KAAMnB,EAAI8K,QAAQmE,aAAazO,OAAS,EAAGJ,EAAG,6BAA6B,CAACK,YAAY,QAAQQ,MAAM,CAAC,iBAAiBjB,EAAI8K,QAAQmE,gBAAgBjP,EAAImB,KAAKf,EAAG,IAAI,CAACK,YAAY,mDAAmD,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,mCAAmC,QAAQ,GAAGI,EAAG,uBAAuB,CAACa,MAAM,CAAC,aAAajB,EAAI8K,QAAQhK,UAAU,KAAMd,EAAqB,kBAAEI,EAAG,SAAS,CAACa,MAAM,CAAC,KAAO,uBAAuByM,SAAS,CAAC,UAAY1N,EAAIW,GAAGX,EAAIkP,sBAAsBlP,EAAImB,KAAMnB,EAA6B,0BAAEI,EAAG,SAAS,CAACa,MAAM,CAAC,KAAO,uBAAuByM,SAAS,CAAC,UAAY1N,EAAIW,GAAGX,EAAImP,8BAA8BnP,EAAImB,OAAOnB,EAAImB,MACh6J,EAAkB,G,8FCJtB,MAAMiO,EAAuB,IAAI7N,IAC7B,CACI,CAAC,OAA4B8N,MAAO,0BACpC,CAAC,OAA4BC,OAAQ,2BACrC,CAAC,OAA4BC,SAAU,+BAI/C,MAAM,EACK,iCAAiCC,GACpC,IAAKA,GAA0B,IAAjBA,EAAMhP,OAAc,OAAO,KAEzC,MAAMiP,EAAUD,EAAME,KAAKC,GAAKA,EAAEC,eAAiB,OAA4BP,OACzEQ,EAAWL,EAAME,KAAKC,GAAKA,EAAEC,eAAiB,OAA4BN,QAC1EQ,EAAaN,EAAME,KAAKC,GAAKA,EAAEC,eAAiB,OAA4BL,UAElF,IAAKE,IAAYI,IAAaC,EAC1B,OAAO,KAGX,MAAMC,EAAYN,EAAU,OAA4BJ,MAAQQ,EAAW,OAA4BP,OAASQ,EAAa,OAA4BP,SAAW,KACpK,GAAiB,MAAbQ,EACA,OAAO,KAGX,MAAMC,EAAsBZ,EAAqBjM,IAAI4M,GACrD,IAAKC,EAAuB,MAAM,IAAIC,MAAM,mCAAmCF,MAE/E,OAAO,OAAkB5M,IAAI6M,IAItB,UAAI,E,wBCnCf,EAAS,WAAa,IAAIhQ,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,MAAM,CAACK,YAAY,mCAAmCiJ,MAAO1J,EAAS,OAAG,CAACI,EAAG,MAAM,CAACK,YAAY,0BAA0B,CAAET,EAAI8K,SAAW9K,EAAI8K,QAAQoF,YAAclQ,EAAImQ,YAAa/P,EAAG,yBAAyB,CAACK,YAAY,YAAYsD,MAAM,CAAC,kBAAsC,SAAlB/D,EAAIoQ,UAAsB,oBAAwC,WAAlBpQ,EAAIoQ,UAAwB,kBAAsC,SAAlBpQ,EAAIoQ,WAAsBnP,MAAM,CAAC,GAAK,CAAEiC,KAAMlD,EAAIqQ,UAAWC,OAAQ,CAAE9O,UAAWxB,EAAI8K,QAAQhK,UAAY,CAACV,EAAG,MAAM,CAACa,MAAM,CAAC,OAAWjB,EAAI8K,QAAQoF,WAA4B,kBAAI,QAAWlQ,EAAI8K,QAAQoF,WAA4B,kBAAI,MAAO,IAAMlQ,EAAI8K,QAAQhK,WAAWd,EAAImB,KAAMnB,EAAIuQ,WAAa,GAAKvQ,EAAIwQ,kBAAoBxQ,EAAIyQ,cAAerQ,EAAG,SAAS,CAAC0M,IAAI,SAASrM,YAAY,gBAAgBQ,MAAM,CAAC,QAAUjB,EAAIyQ,eAAevH,GAAG,CAAC,MAAQlJ,EAAI0Q,YAAY,MAAQ,SAAS9G,GAAQ5J,EAAI2Q,kBAAmB,IAAOhE,YAAY3M,EAAI4M,GAAG,CAAC,CAAC7L,IAAI,cAAc8L,GAAG,WAAW,MAAO,CAACzM,EAAG,SAAS,CAACK,YAAY,gEAAgEsD,MAAM/D,EAAI4Q,mBAAmB3P,MAAM,CAAC,KAAO,SAAS,aAAajB,EAAIsL,GAAG,IAAPtL,CAAY,kBAAkB,CAACI,EAAG,SAAS,CAACa,MAAM,CAAC,KAAO,kBAAkB,MAAQ,KAAK,OAAS,SAAS,KAAK4P,OAAM,GAAM,CAAC9P,IAAI,cAAc8L,GAAG,WAAW,MAAO,CAACzM,EAAG,SAAS,CAACK,YAAY,gEAAgEsD,MAAM/D,EAAI8Q,mBAAmB7P,MAAM,CAAC,KAAO,SAAS,aAAajB,EAAIsL,GAAG,IAAPtL,CAAY,kBAAkB,CAACI,EAAG,SAAS,CAACa,MAAM,CAAC,KAAO,mBAAmB,MAAQ,KAAK,OAAS,SAAS,KAAK4P,OAAM,GAAM,CAAC9P,IAAI,aAAa8L,GAAG,WAAW,MAAO,CAACzM,EAAG,MAAM,CAACK,YAAY,yDAAyDoQ,OAAM,IAAO,MAAK,EAAM,aAAa,CAAC7Q,EAAIa,GAAIb,EAAiB,eAAE,SAAS+Q,GAAO,OAAO3Q,EAAG,cAAc,CAACW,IAAIgQ,EAAMpC,IAAIlO,YAAY,kBAAkB,CAACL,EAAG,MAAM,CAACK,YAAY,+BAA+B,CAACL,EAAG,2BAA2B,CAACa,MAAM,CAAC,MAAQ,kBAAkB,IAAM8P,EAAMpC,IAAI,aAAa3O,EAAIgR,YAAY,aAAa,UAAU,QAAOhR,EAAIa,GAAIb,EAAiB,eAAE,SAASiR,GAAO,OAAO7Q,EAAG,cAAc,CAACW,IAAIkQ,EAAMtC,IAAIlO,YAAY,kBAAkB,CAACL,EAAG,MAAM,CAACK,YAAY,+BAA+B,CAACL,EAAG,2BAA2B,CAACa,MAAM,CAAC,IAAMgQ,EAAMtC,IAAI,WAAW,GAAG,aAAa,UAAU,SAAQ,GAAI3O,EAAiB,cAAEI,EAAG,MAAM,CAACK,YAAY,8DAA8D,CAACL,EAAG,MAAM,CAACK,YAAY,iBAAiBQ,MAAM,CAAC,IAAM,0BAA0B,IAAMjB,EAAIkR,cAAcvC,SAAS3O,EAAImB,MAAM,KAAOnB,EAAImR,SAAmuCnR,EAAImB,KAA7tCf,EAAG,MAAM,CAAEJ,EAAkB,eAAEI,EAAG,MAAM,CAACK,YAAY,0CAA0C,CAACL,EAAG,SAAS,CAAC0M,IAAI,SAASrM,YAAY,mBAAmBQ,MAAM,CAAC,QAAUjB,EAAIoR,uBAAuBlI,GAAG,CAAC,MAAQ,SAASU,GAAQ5J,EAAIwQ,kBAAmB,KAAQ,CAACxQ,EAAIa,GAAIb,EAAiB,eAAE,SAAS+Q,GAAO,OAAO3Q,EAAG,cAAc,CAACW,IAAIgQ,EAAMpC,IAAIlO,YAAY,qDAAqD,CAACL,EAAG,2BAA2B,CAACa,MAAM,CAAC,IAAM8P,EAAMpC,IAAI,aAAa3O,EAAIgR,YAAY,aAAa,gBAAgB,MAAKhR,EAAIa,GAAIb,EAAiB,eAAE,SAASiR,GAAO,OAAO7Q,EAAG,cAAc,CAACW,IAAIkQ,EAAMtC,IAAIlO,YAAY,2EAA2E,CAACL,EAAG,MAAM,CAACK,YAAY,wCAAwCL,EAAG,2BAA2B,CAACa,MAAM,CAAC,IAAMgQ,EAAMtC,IAAI,aAAa,YAAY,WAAW,OAAO,OAAM,GAAGvO,EAAG,SAAS,CAACK,YAAY,4BAA4BsD,MAAM/D,EAAI4Q,mBAAmB3P,MAAM,CAAC,KAAO,WAAW,CAACb,EAAG,SAAS,CAACa,MAAM,CAAC,KAAO,aAAa,MAAQ,KAAK,OAAS,SAAS,GAAGb,EAAG,SAAS,CAACK,YAAY,4BAA4BsD,MAAM/D,EAAI8Q,mBAAmB7P,MAAM,CAAC,KAAO,WAAW,CAACb,EAAG,SAAS,CAACa,MAAM,CAAC,KAAO,cAAc,MAAQ,KAAK,OAAS,SAAS,IAAI,GAAGjB,EAAImB,UAC7wH,EAAkB,G,4DCEtB,MAAM,UAA0CkQ,EAAA,KACrC,KACHC,EACAC,EACArB,EACA1O,EACAgQ,EACAR,EACAS,EACAC,GACA,OAAOzR,KAAK0R,UAAU,CAClB9N,UAAW,IAAM,gDAGjB+N,eAAgB,CACZN,SACAC,SACArB,aACA1O,YACAgQ,cACAR,cACAS,SACAC,eAEJG,QAAS,CACLC,mBAAmB,EACnBC,kBAAkB,EAClBC,mBAAmB,EACnBC,UAAW,SACXC,iBAAiB,EACjBC,iBAAiB,EACjBC,MAAM,MAMP,UAAI,E,YCsDnB,MAAMC,EAA4B,EAC5BC,KAAqB,OAAWC,kBAAmB,OAAWC,WAMpE,IAAqB,EAArB,cAAkD,OAAlD,c,oBAcY,KAAAhC,kBAA4B,EAC5B,KAAAG,kBAA4B,EAC5B,KAAA8B,eAAyB,EA2JzB,KAAArC,UAAwC,OACxC,KAAAD,YAAuBmC,EA1Jd,YACb,MAAMI,GAAc,IAAMzS,KAAK0S,mBAAmBC,QAAQ,GAA1C,IAChB,MAAO,CAAEC,WAAYH,GAGF,kBACnB,OAAOzS,KAAK6K,QAAQ5J,YAAc,MAAQjB,KAAK6K,QAAQxF,IAGrC,iBAClB,OAAQrF,KAAK6S,cAActS,OAASP,KAAK8S,cAAcvS,OAG9B,wBACzB,GAAgC,kBAArBP,KAAKuR,YACZ,OAAOvR,KAAKuR,YAMhB,MAAMwB,EAAclR,OAAOC,KAAK9B,KAAKuR,aAAarL,KAAK8M,GAAS,OAAiBC,mBAAmBD,IAE9FzO,EAASwO,EAAc/S,KAAKuR,YAAYwB,GAAe/S,KAAKuR,YAAY/K,QAC9E,IAAKjC,EACD,MAAM,IAAIyL,MAAM,8DAEpB,OAAOzL,EAGmB,yBAC1B,MAAO,6BAA+BvE,KAAK6K,QAAQxF,IAGzB,yBAC1B,MAAO,6BAA+BrF,KAAK6K,QAAQxF,IAGjC,eAClB,OAAO,OAAiB4N,mBAAmB,QAGrB,qBACtB,OAAQjT,KAAKkR,UAAYlR,KAAKsQ,WAAa,EAGtB,oBACrB,OAAItQ,KAAKkT,iBAAmBlT,KAAKmT,MAAM3B,OAC5B,KAGH,CACJ4B,MAAO,EACPC,aAAc,EACdC,cAAe,EACfC,eAAgB,EAChBC,MAAM,EACNC,aAAc,EACdC,wBAAwB,EACxBC,uBAAuB,EACvBC,eAAe,EACfC,gBAAgB,EAChBC,WAAY,CACRC,GAAI,qBACJC,WAAW,GAEfrS,WAAY,CACRsS,OAAQ,IAAMjU,KAAK6Q,mBACnBqD,OAAQ,IAAMlU,KAAK2Q,oBAEvBwD,YAAY,EACZC,gBAAgB,EAChBC,YAAa,CACTC,IAAK,CACDH,YAAY,EACZC,gBAAgB,EAChBG,eAAe,IAGvB/C,OAAQ,CACJgD,OAAQxU,KAAKkT,gBAAkBlT,KAAKmT,MAAM3B,QAAUxR,KAAKmT,MAAM3B,OAAO1H,IAAI0K,SAKrD,4BAC7B,MAAO,CACHnB,aAAc,EACdC,cAAelB,EACfmB,eAAgB,EAChBkB,aAAc,GACdN,YAAY,EACZX,MAAM,EACNE,wBAAwB,EACxBC,uBAAuB,EACvBC,eAAe,EACfC,gBAAgB,EAChBlS,WAAY,CACRsS,OAAQ,IAAMjU,KAAK6Q,mBACnBqD,OAAQ,IAAMlU,KAAK2Q,oBAEvB+D,OAAQ,QACRC,SAAU,CACNC,SAAS,EACTC,gBAAgB,IAU5B,cACI,GAAI7U,KAAKkR,SAAU,OAEnB,MAAMnO,EAAQ/C,KAAKmT,MAAM2B,OAAOC,QAAQtD,YAExC,EAAkCuD,KAC9BhV,KAAK6S,cACL7S,KAAK8S,cACL9S,KAAK6K,QAAQoF,WACbjQ,KAAK6K,QAAQhK,MACb,GAAK,EACLb,KAAK+Q,YACL/Q,KAAKmT,MAAM2B,OACX/R,GAGS,4BACb,2BAAO/C,KAAK6K,eAAZ,aAAO,EAAcwG,cAArB,QAA+B,GAGlB,4BACb,2BAAOrR,KAAK6K,eAAZ,aAAO,EAAcoK,eAArB,QAAgC,GAGf,gBACjB,OAAO,OAASC,MAGZ,UACAlV,KAAK6K,QAAQoF,YAGbjQ,KAAKmV,gBAAgBnV,KAAK6K,QAAQoF,WAAWmF,mBAIjDpV,KAAKuQ,kBAAoBvQ,KAAKkT,eAM1B,gBAAgBnS,GACpB,MAAMsU,EAAM,IAAIC,MAEhBD,EAAIE,IAAMxU,EAEVsU,EAAIG,OAAS,KACLH,EAAIjL,QAAUiL,EAAIX,OAClB1U,KAAKmQ,UAAY,SACVkF,EAAIjL,MAAQiL,EAAIX,OACvB1U,KAAKmQ,UAAY,OAEjBnQ,KAAKmQ,UAAY,OAGrBnQ,KAAKkQ,aAAc,GAIF,0BACrB,IAAIuF,EAA2D,KAU/D,OATIzV,KAAK6K,QAAQ6K,0BACb7T,OAAOC,KAAK9B,KAAK6K,QAAQ6K,0BAA0B3T,QAAQ,CAACgB,EAAOjC,KAC/D,MAAM6U,EAAO3V,KAAK6K,QAAQ6K,yBAAyB3S,IAC9C0S,GAAyBE,EAAKC,oBAC/BH,EAAwBE,KAK7BF,IAAqB,UAAIzV,KAAK6K,eAAT,aAAI,EAAc4K,wBAAyB,OA1MjD,gBAAzB,eAAK,CAAEnP,UAAU,K,8BAUlB,gBADC,eAAK,CAAEd,KAAM,CAACS,OAAQpE,QAAS2E,QAAS,GAAK,K,kCAV7B,EAAoB,gBAJxC,eAAU,CACPE,WAAY,CAAEmP,2BAAA,MACdC,cAAe,CAAC,SAAU,aAET,WCrG8Z,I,wBCQ/alS,EAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIa,EAAAA,E,QCnBX,EAAS,WAAa,IAAI7D,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAACa,MAAM,CAAC,GAAK,mBAAmB,CAACb,EAAG,KAAK,CAACK,YAAY,0CAA0C,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,mCAAmC,OAAOI,EAAG,WAAW,CAAC0M,IAAI,WAAWrM,YAAY,4BAA4BQ,MAAM,CAAC,aAAa,IAAI,iBAAiB,IAAI,eAAe,SAAS,YAAY,KAAK,CAACjB,EAAIa,GAAIb,EAAkB,gBAAE,SAASgW,EAAKC,GAAS,OAAO7V,EAAG,MAAM,CAACW,IAAIkV,EAAQxV,YAAY,mCAAmC,CAACL,EAAG,KAAK,CAACK,YAAY,sFAAsF,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGqV,EAAK9U,aAAa,OAAOd,EAAG,MAAM,CAACK,YAAY,UAAUT,EAAIa,GAAImV,EAAa,UAAE,SAASE,EAAQC,GAAY,OAAO/V,EAAG,MAAM,CAACW,IAAIoV,EAAW1V,YAAY,4CAA4C,CAACL,EAAG,KAAK,CAACK,YAAY,0FAA0F,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGuV,EAAQhV,aAAa,OAAOd,EAAG,MAAM,CAACK,YAAY,sEAAsE,CAACL,EAAG,yBAAyB,CAAC2D,MAAM,CAAE,yEAA0EmS,EAAQlV,KAAMC,MAAM,CAAC,GAAKiV,EAAQlV,MAAM,CAAEkV,EAAa,MAAE9V,EAAG,IAAI,CAACJ,EAAIU,GAAG,IAAIV,EAAIW,GAAGuV,EAAQrN,OAAO,IAAI7I,EAAIW,GAAGX,EAAIoW,QAAQF,EAAQG,OAAO,OAAOrW,EAAImB,KAAM+U,EAAQI,QAAUJ,EAAQI,OAAO9V,OAAQJ,EAAG,IAAI,CAACJ,EAAIU,GAAG,IAAIV,EAAIW,GAAGuV,EAAQI,OAAOC,KAAK,OAAO,OAAOvW,EAAImB,QAAQ,QAAO,QAAOf,EAAG,MAAM,CAACa,MAAM,CAAC,KAAO,YAAYsN,KAAK,YAAY,CAACnO,EAAG,MAAM,CAACK,YAAY,0GAA0G,CAACL,EAAG,SAAS,CAACK,YAAY,QAAQQ,MAAM,CAAC,OAAS,KAAK,MAAQ,KAAK,KAAO,eAAejB,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,6BAA6B,MAAM,KAAKI,EAAG,MAAM,CAACa,MAAM,CAAC,KAAO,UAAUsN,KAAK,UAAU,CAACnO,EAAG,MAAM,CAACK,YAAY,0GAA0G,CAACL,EAAG,SAAS,CAACK,YAAY,QAAQQ,MAAM,CAAC,OAAS,KAAK,MAAQ,KAAK,KAAO,cAAcjB,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,6BAA6B,MAAM,MAAM,IAAI,IACjqE,EAAkB,G,YCkEtB,IAAqB,EAArB,cAA0D,OAI/C,OACHC,KAAKmT,MAAMoD,SAASC,OAGjB,QACHxW,KAAKmT,MAAMoD,SAASE,QAGxB,QAAQL,GACJ,OAAO,OAAkBM,UAAUN,KAXvC,gBADC,eAAK,CAAE9P,UAAU,EAAMd,KAAMiD,S,qCADb,EAA4B,gBAHhD,eAAU,CACP/B,WAAY,CAAEiQ,WAAA,SAEG,WCnEsa,ICOvb,EAAY,eACd,EACA,EACA,GACA,EACA,KACA,KACA,MAIa,I,QClBX,EAAS,WAAa,IAAI5W,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAI6W,mBAAmBrW,OAAS,EAAGJ,EAAG,UAAU,CAACa,MAAM,CAAC,GAAK,kBAAkB,CAACb,EAAG,KAAK,CAACK,YAAY,0CAA0C,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,mCAAmC,OAAOI,EAAG,WAAW,CAACK,YAAY,sBAAsBQ,MAAM,CAAC,aAAa,IAAI,iBAAiB,IAAI,qBAAqB,EAAE,eAAe,SAAS,YAAY,KAAK,CAACjB,EAAIa,GAAIb,EAAsB,oBAAE,SAAS8W,EAAMC,GAAU,OAAO3W,EAAG,MAAM,CAACW,IAAIgW,GAAU,CAAC3W,EAAG,KAAK,CAACK,YAAY,sDAAsD,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGmW,EAAMtV,WAAW,OAAOxB,EAAIa,GAAIiW,EAAmB,eAAE,SAASE,EAAMC,GAAU,OAAO7W,EAAG,MAAM,CAACW,IAAIkW,EAASxW,YAAY,2CAA2C,CAACL,EAAG,KAAK,CAACK,YAAY,2EAA2E,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGqW,EAAME,aAAa,OAAO9W,EAAG,MAAM,CAACK,YAAY,6DAA6D,CAACT,EAAIa,GAAImW,EAAe,WAAE,SAASG,EAASC,GAAa,MAAO,CAAChX,EAAG,yBAAyB,CAACW,IAAIqW,EAAY3W,YAAY,oDAAoDQ,MAAM,CAAC,GAAK,CACzpCoW,KAAMrX,EAAIsX,8BACVC,MAAO,CACH,UAAW,eACXzW,MAAOgW,EAAMtV,UACbgW,OAAQR,EAAME,YACdF,MAAOG,EAASM,cAEpB,CAACzX,EAAIU,GAAG,IAAIV,EAAIW,GAAGwW,EAASM,WAAW,OAAQL,EAAcJ,EAAMU,UAAUlX,OAAS,EAAGJ,EAAG,OAAO,CAACW,IAAKqW,EAAc,SAAU3W,YAAY,QAAQ,CAACT,EAAIU,GAAG,QAAQV,EAAImB,SAAS6V,EAAMW,WAAa3X,EAAI4X,sBAAsBd,EAAMtV,UAAWwV,EAAME,aAAc9W,EAAG,MAAM,CAACK,YAAY,8HAA8HyI,GAAG,CAAC,MAAQ,SAASU,GAAQ,OAAO5J,EAAI6X,wBAAwBf,EAAMtV,UAAWwV,EAAME,gBAAgB,CAAElX,EAAI8X,iBAAiBhB,EAAMtV,UAAWwV,EAAME,aAAc9W,EAAG,MAAM,CAACA,EAAG,kBAAkB,CAACa,MAAM,CAAC,KAAO,GAAG,MAAQ,KAAKb,EAAG,OAAO,CAACK,YAAY,iCAAiC,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,6BAA6B,QAAQ,GAAG,CAACI,EAAG,SAAS,CAACK,YAAY,QAAQQ,MAAM,CAAC,OAAS,KAAK,MAAQ,KAAK,KAAO,cAAcjB,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,6BAA6B,OAAO,GAAGA,EAAImB,MAAM,SAAQ,MAAKf,EAAG,MAAM,CAACa,MAAM,CAAC,KAAO,YAAYsN,KAAK,YAAY,CAACnO,EAAG,MAAM,CAACK,YAAY,0GAA0G,CAACL,EAAG,SAAS,CAACK,YAAY,QAAQQ,MAAM,CAAC,OAAS,KAAK,MAAQ,KAAK,KAAO,eAAejB,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,6BAA6B,MAAM,KAAKI,EAAG,MAAM,CAACa,MAAM,CAAC,KAAO,UAAUsN,KAAK,UAAU,CAACnO,EAAG,MAAM,CAACK,YAAY,0GAA0G,CAACL,EAAG,SAAS,CAACK,YAAY,QAAQQ,MAAM,CAAC,OAAS,KAAK,MAAQ,KAAK,KAAO,cAAcjB,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,6BAA6B,MAAM,MAAM,IAAI,GAAGA,EAAImB,MAChpD,EAAkB,G,wBCkFtB,IAAqB,EAArB,cAAyD,OAAzD,c,oBAIY,KAAA0V,mBAA8D,GAC9D,KAAAkB,qBAA+B,EAE/B,KAAAC,QAAoB,GACpB,KAAA1X,QAAoB,GAEpB,sBAAsBkB,EAAmB0V,GAC7C,MAAMnW,EAAM,GAAGS,KAAa0V,IAC5B,OAAOjX,KAAK+X,QAAQpV,QAAQ7B,IAAQ,EAGhC,iBAAiBS,EAAmB0V,GACxC,MAAMnW,EAAM,GAAGS,KAAa0V,IAC5B,OAAOjX,KAAKK,QAAQsC,QAAQ7B,IAAQ,EAGC,0CACrC,cAAO,aAAP,IAAO,QAAP,UAAO,OAAsBkX,gBAA7B,aAAO,EAAgCX,8BAGb,yBAC1B,IACI,MAAM9S,QAAe,OAAI0T,QAAQC,cAAclY,KAAKwL,QACpDxL,KAAK4W,mBAAqB/U,OAAOsW,OAAO5T,EAAOqS,oBACjD,OAHF,QAKI5W,KAAK8X,qBAAsB,GAIE,8BAACvW,EAAmB0V,GACrD,MAAMnW,EAAM,GAAGS,KAAa0V,IAC5B,KAAIjX,KAAK+X,QAAQpV,QAAQ7B,IAAQ,GAAjC,CAEAd,KAAKK,QAAQ+X,KAAKtX,GAElB,IACI,MAAMyD,QAAe,OAAI0T,QAAQI,qBAAqBrY,KAAKwL,OAAQjK,EAAW0V,GACxEqB,EAAUtY,KAAK4W,mBAAmB1Q,KAAKwJ,GAAKA,EAAEnO,YAAcA,GAClE,GAAI+W,EAAS,CACT,MAAMC,EAASD,EAAQJ,cAAchS,KAAKwJ,GAAKA,EAAEuH,cAAgBA,GAC7DsB,IACAA,EAAOd,UAAYlT,GAI3BvE,KAAK4W,mBAAqB/U,OAAOsW,OAAO,IAAInY,KAAK4W,qBACjD5W,KAAK+X,QAAQK,KAAKtX,GAXtB,QAaId,KAAK8X,qBAAsB,EAC3B9X,KAAKK,QAAQmY,OAAOxY,KAAKK,QAAQsC,QAAQ7B,MAIjD,UACId,KAAKyY,qBAzDT,gBADC,eAAK,CAAEnS,UAAU,EAAMd,KAAMiB,U,6BADb,EAA2B,gBAH/C,eAAU,CACPC,WAAY,CAAEiQ,WAAA,KAAU+B,iBAAA,SAEP,WC3Fqa,ICQtb,G,UAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,OAIa,K,QCnBX,GAAS,WAAa,IAAI3Y,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAACK,YAAY,iBAAiB,CAACL,EAAG,KAAK,CAACK,YAAY,sDAAsD,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,iCAAiC,OAAOI,EAAG,YAAY,CAACK,YAAY,uBAAuBQ,MAAM,CAAC,YAAY,EAAE,iBAAiB,IAAI,eAAe,SAAS,YAAY,KAAK,CAACjB,EAAIa,GAAIb,EAAgB,cAAE,SAAS4Y,GAAQ,OAAOxY,EAAG,UAAU,CAACW,IAAI6X,EAAOC,MAAMpY,YAAY,+DAA+D,CAACL,EAAG,MAAM,CAACK,YAAY,8DAA8D,CAACL,EAAG,MAAM,CAACmJ,WAAW,CAAC,CAACrG,KAAK,WAAWsG,QAAQ,eAAevI,MAAM,CAAC,IAAM2X,EAAOE,SAAS,IAAMF,EAAOC,WAAWzY,EAAG,MAAM,CAACK,YAAY,+DAA+D,CAACL,EAAG,KAAK,CAACK,YAAY,qCAAqC,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGiY,EAAOC,OAAO,OAAOzY,EAAG,IAAI,CAACK,YAAY,qBAAqBiN,SAAS,CAAC,UAAY1N,EAAIW,GAAGiY,EAAOG,oBAAmB3Y,EAAG,MAAM,CAACa,MAAM,CAAC,KAAO,YAAYsN,KAAK,YAAY,CAACnO,EAAG,MAAM,CAACK,YAAY,0GAA0G,CAACL,EAAG,SAAS,CAACK,YAAY,QAAQQ,MAAM,CAAC,OAAS,KAAK,MAAQ,KAAK,KAAO,eAAejB,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,6BAA6B,MAAM,KAAKI,EAAG,MAAM,CAACa,MAAM,CAAC,KAAO,UAAUsN,KAAK,UAAU,CAACnO,EAAG,MAAM,CAACK,YAAY,0GAA0G,CAACL,EAAG,SAAS,CAACK,YAAY,QAAQQ,MAAM,CAAC,OAAS,KAAK,MAAQ,KAAK,KAAO,cAAcjB,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,6BAA6B,MAAM,MAAM,IAAI,IAC1sD,GAAkB,GCkDtB,IAAqB,GAArB,cAAwD,SACf,gBAAtC,eAAK,CAAEuG,UAAU,EAAMd,KAAMiD,S,oCADX,GAA0B,gBAH9C,eAAU,CACP/B,WAAY,CAAEiQ,WAAA,SAEG,cCnDoa,MCQrb,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAI5W,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAAGJ,EAAIgM,OAA8IhM,EAAIgZ,WAAqRhZ,EAAIiZ,oBAAuBjZ,EAAIkZ,kBAA8pClZ,EAAIiZ,oBAAwBjZ,EAAIkZ,kBAAqBlZ,EAAImZ,eAAqL/Y,EAAG,MAAM,CAACK,YAAY,gGAAgG,CAAGT,EAAI+L,qBAAgc/L,EAAwB,qBAAEI,EAAG,MAAM,CAACK,YAAY,yDAAyD,CAACL,EAAG,IAAI,CAACA,EAAG,OAAO,CAACK,YAAY,mDAAmD,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,mCAAmC,OAAOI,EAAG,OAAO,CAACK,YAAY,wEAAwE,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,KAAPtL,CAAaA,EAAIoZ,MAAM,OAAQ,QAAS,qBAAqB,SAASpZ,EAAIa,GAAIb,EAAIoZ,MAAMlN,KAAc,WAAE,SAASmN,EAASrW,GAAO,OAAO5C,EAAG,IAAI,CAACW,IAAIiC,GAAO,CAAC5C,EAAG,OAAO,CAACK,YAAY,mDAAmD,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,qCAAqCqZ,EAASC,SAASrW,aAAa,OAAO7C,EAAG,OAAO,CAACK,YAAY,wEAAwE,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAG0Y,EAASE,OAAOC,kBAAkB,aAAY,GAAGxZ,EAAImB,KAAxxCf,EAAG,IAAI,CAACK,YAAY,+EAA+E,CAACL,EAAG,OAAO,CAACK,YAAY,6DAA6D,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,KAAPtL,CAAaA,EAAIoZ,MAAM,OAAQ,gBAAiB,qBAAqB,OAAOhZ,EAAG,OAAO,CAACK,YAAY,kCAAkC,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,KAAPtL,CAAaA,EAAIoZ,MAAM,OAAQ,QAAS,qBAAqB,SAA63BhZ,EAAG,IAAI,CAACK,YAAY,iFAAiF,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,+BAA+B,OAAQA,EAAwB,qBAAEI,EAAG,MAAM,CAACK,YAAY,+DAA+D,CAACL,EAAG,IAAI,CAACK,YAAY,sBAAsB,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,sCAAsC,IAAIA,EAAIW,GAAGX,EAAIyZ,qBAAqBD,kBAAkB,SAASxZ,EAAImB,KAAMnB,EAAI0Z,YAAYC,gBAAiBvZ,EAAG,gBAAgB,CAACK,YAAY,QAAQQ,MAAM,CAAC,aAAa,WAAW,cAAcjB,EAAIsF,IAAI,eAAe,IAAI4D,GAAG,CAAC,kBAAkB,SAASU,GAAQ,OAAO5J,EAAI4K,MAAM,oBAAqBhB,OAAY5J,EAAImB,MAAM,GAA3xEf,EAAG,IAAI,CAACK,YAAY,sEAAsE,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,oCAAoC,OAAn3CI,EAAG,MAAM,CAACK,YAAY,yFAAyF,CAACL,EAAG,MAAM,CAACK,YAAY,kEAAkE,CAACL,EAAG,MAAM,CAACK,YAAY,+EAA+E,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,0CAA0C,KAAKI,EAAG,YAAY,CAACK,YAAY,4BAA4BQ,MAAM,CAAC,QAAU,QAAQ,YAAY,GAAG,OAAS,KAAK,UAAY,QAAQ,CAACb,EAAG,OAAO,CAACK,YAAY,4BAA4B,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,uCAAuC,OAAOI,EAAG,WAAW,CAACmO,KAAK,WAAW,CAACnO,EAAG,MAAM,CAACK,YAAY,2BAA2B,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,8CAA8C,OAAOI,EAAG,MAAM,CAACK,YAAY,WAAW,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,gDAAgD,UAAU,IAAI,KAAMA,EAAI0Z,YAAYC,gBAAiBvZ,EAAG,gBAAgB,CAACa,MAAM,CAAC,aAAa,WAAW,cAAcjB,EAAIsF,IAAI,eAAe,IAAI4D,GAAG,CAAC,kBAAkB,SAASU,GAAQ,OAAO5J,EAAI4K,MAAM,oBAAqBhB,OAAY5J,EAAImB,MAAM,GAAl8Cf,EAAG,MAAM,CAACK,YAAY,iEAAiE,CAACL,EAAG,iBAAiB,CAACK,YAAY,mCAAmCyI,GAAG,CAAC,MAAQlJ,EAAI4Z,mBAAmB,CAAC5Z,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,8BAA8B,QAAQ,GAA1ZI,EAAG,MAAM,CAACK,YAAY,gCAAgC,CAACL,EAAG,kBAAkB,CAACK,YAAY,iBAAiBQ,MAAM,CAAC,MAAO,MAAS,MACrP,GAAkB,G,uCCsGtB,IAAqB,GAArB,cAAgD,OAK1B,mBACd,iBAAOhB,KAAKmZ,aAAZ,aAAO,EAAYpN,OAGO,iCAC1B,2BAAO/L,KAAKmZ,MAAMlN,YAAlB,aAAO,EAAiB+M,0BAAxB,SAGwB,uBACxB,OAA2B,OAApBhZ,KAAKmZ,MAAMlN,MAA2C,OAA1BjM,KAAKmZ,MAAMlN,KAAKkN,MAGvB,iCAC5B,OAAOnZ,KAAKmZ,MAAMlN,MAAQjM,KAAKmZ,MAAMlN,KAAK2N,YAAa,UAAA5Z,KAAKmZ,MAAMlN,YAAX,eAAiB2N,UAAUrZ,QAAS,EAG/D,mCAC5B,OAAO,UAAAP,KAAKmZ,MAAMlN,YAAX,eAAiBuN,qBAAqBD,oBAAtC,UAA0DvZ,KAAKmZ,MAAMlN,YAArE,aAA0D,EAAiBuN,sBAG5D,6BACtB,iBAAOxZ,KAAKmZ,MAAMlN,YAAlB,iBAAO,EAAiBkN,aAAxB,aAAO,EAAwBI,iBAG3B,mBACJ,QAAWM,8BACX,QAAwB7E,KAAK,WA9BO,gBAAvC,eAAK,CAAE1O,UAAU,EAAMd,KAAMiB,U,2BACJ,gBAAzB,eAAK,CAAEH,UAAU,K,6BACyB,gBAA1C,eAAK,CAAEA,UAAU,EAAOE,SAAS,K,kCAHjB,GAAkB,gBAHtC,eAAU,CACPE,WAAY,CAAEoT,eAAA,KAAapB,iBAAA,SAEV,cCvG4Z,MCO7a,GAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIa,M,QClBX,GAAS,WAAa,IAAI3Y,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAIkY,QAAQ8B,gBAAkBha,EAAIkY,QAAQ+B,sBAAwBja,EAAIkY,QAAQgC,uBAAwB9Z,EAAG,MAAM,CAACK,YAAY,gBAAgB,CAAC,CAACL,EAAG,OAAO,CAACa,MAAM,CAAC,eAAe,sBAAsB,gBAAgB,iBAAiBiI,GAAG,CAAC,QAAUlJ,EAAIma,YAAY,KAAOna,EAAIoa,UAAUzN,YAAY3M,EAAI4M,GAAG,CAAC,CAAC7L,IAAI,SAAS8L,GAAG,SAASC,GACxa,IAAI+L,EAAQ/L,EAAI+L,MAChB,MAAO,CAACzY,EAAG,OAAO,CAACJ,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIqa,WAAWxB,IAAQ,WAAW,MAAK,EAAM,aAAa,CAAE7Y,EAAIkY,QAAsB,eAAE9X,EAAG,MAAM,CAACa,MAAM,CAAC,KAAO,gCAAgC,SAA6B,kCAAlBjB,EAAIsa,UAA8C,aAAa,KAAK,CAAEta,EAAwB,qBAAEI,EAAG,IAAI,CAACK,YAAY,4BAA4B,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIua,sBAAsB,OAAOva,EAAImB,KAAKf,EAAG,kCAAkC,CAACa,MAAM,CAAC,aAAajB,EAAIkY,QAAQ5S,KAAK4D,GAAG,CAAC,OAASlJ,EAAIwa,sBAAsB7N,YAAY3M,EAAI4M,GAAG,CAAC,CAAC7L,IAAI,UAAU8L,GAAG,SAASC,GAC9iB,IAAIhJ,EAAWgJ,EAAIhJ,SACnB,MAAO,CAAC1D,EAAG,uBAAuB,CAACa,MAAM,CAAC,SAAW6C,EAAS,2BAAsBW,EAAU,qBAAsB,aAAgBzE,EAAIqG,OAAW,KAAI,eAAgB,mBAAmB,eAAe,MAAK,EAAM,eAAe,GAAGrG,EAAImB,KAAMnB,EAAIkY,QAAQ+B,sBAAwBja,EAAIkY,QAAQgC,uBAAwB9Z,EAAG,MAAM,CAACa,MAAM,CAAC,KAAO,wCAAwC,SAA6B,0CAAlBjB,EAAIsa,UAAsD,aAAa,KAAK,CAAEta,EAAIkY,QAA4B,qBAAE9X,EAAG,MAAM,CAACA,EAAG,MAAM,CAACK,YAAY,qCAAqC,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,iDAAiD,OAAOI,EAAG,kCAAkC,CAACa,MAAM,CAAC,aAAajB,EAAIkY,QAAQ5S,IAAI,gBAAgBtF,EAAIya,oBAAoBC,mBAAmBxR,GAAG,CAAC,OAASlJ,EAAIwa,sBAAsB7N,YAAY3M,EAAI4M,GAAG,CAAC,CAAC7L,IAAI,UAAU8L,GAAG,SAASC,GAC12B,IAAIhJ,EAAWgJ,EAAIhJ,SACnB,MAAO,CAAC1D,EAAG,uBAAuB,CAACa,MAAM,CAAC,SAAW6C,EAAS,qBAAsB,aAAgB9D,EAAIqG,OAAW,KAAI,IAAOrG,EAAIya,oBAAqC,kBAAG,mBAAmB,eAAe,MAAK,EAAM,eAAe,GAAGza,EAAImB,KAAMnB,EAAIkY,QAA8B,uBAAE9X,EAAG,MAAM,CAACA,EAAG,MAAM,CAACK,YAAY,qCAAqC,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,mDAAmD,OAAOI,EAAG,kCAAkC,CAACa,MAAM,CAAC,aAAajB,EAAIkY,QAAQ5S,IAAI,gBAAgBtF,EAAIya,oBAAoBE,qBAAqBzR,GAAG,CAAC,OAASlJ,EAAIwa,sBAAsB7N,YAAY3M,EAAI4M,GAAG,CAAC,CAAC7L,IAAI,UAAU8L,GAAG,SAASC,GAClpB,IAAIhJ,EAAWgJ,EAAIhJ,SACnB,MAAO,CAAC1D,EAAG,uBAAuB,CAACa,MAAM,CAAC,SAAW6C,EAAS,qBAAsB,aAAgB9D,EAAIqG,OAAW,KAAI,IAAOrG,EAAIya,oBAAuC,oBAAG,mBAAmB,eAAe,MAAK,EAAM,cAAc,GAAGza,EAAImB,OAAOnB,EAAImB,MAAM,KAAK,GAAGnB,EAAImB,MACvQ,GAAkB,G,iEC4EtB,IAAqB,GAArB,cAAqD,OAArD,c,oBAGY,KAAA6K,QAAkB,EAClB,KAAAsO,UAAoB,GAEpB,WAAWM,GACf,OAAI,OAAkBC,OAAOD,GAClB,OAAkBzX,IAAIyX,GAE1BA,EAGa,2BACpB,MAAME,EAAc,2DACpB,OAAO,OAAkBD,OAAOC,GAAe,OAAkB3X,IAAI2X,GAAe,KAGhF,qBAAqBC,GACzB9a,KAAK+L,QAAS,EAGV,YAAYgP,GAChB/a,KAAKqa,UAAYU,EACjB,QAAWC,6BAA6BD,GAGpC,SAASA,GACb/a,KAAKqa,UAAYU,EAGE,0BACnB,OAAO,UA/Be,gBAAzB,eAAK,CAAEzU,UAAU,K,+BADD,GAAuB,gBAH3C,eAAU,CACPI,WAAY,CAAEuU,QAAA,KAAMC,OAAA,KAAKxC,iBAAA,KAAgB/R,wBAAA,KAAsBwU,+BAAA,WAA6BC,gCAAA,YAE3E,cCrFia,MCQlb,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,mGCnBX,GAAS,WAAa,IAAIrb,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAASF,EAAI4L,eAEsR5L,EAAImB,KAF1Qf,EAAG,UAAU,CAACK,YAAY,2BAA2B,CAACL,EAAG,KAAK,CAACK,YAAY,+BAA+B,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,mCAAmC,OAAOI,EAAG,IAAI,CAACK,YAAY,UAAUiN,SAAS,CAAC,UAAY1N,EAAIW,GAAGX,EAAIsb,aAAalb,EAAG,MAAM,CAACK,YAAY,2CAA2CT,EAAIa,GAAIb,EAAY,UAAE,SAASub,GAAS,OAAOnb,EAAG,MAAM,CAACW,IAAIwa,EAAQA,QAAQ9a,YAAY,yBAAyB,CAACL,EAAG,mBAAmB,CAACK,YAAY,6BAA6BQ,MAAM,CAAC,eAAesa,EAAQC,iBAAiB,cAAcD,EAAQE,gBAAgB,WAAWF,EAAQG,aAAa,YAAYH,EAAQI,cAAc,iBAAiB,IAAIhP,YAAY3M,EAAI4M,GAAG,CAAC,CAAC7L,IAAI,UAAU8L,GAAG,SAASC,GACp0B,IAAI8O,EAAQ9O,EAAI8O,MAChB,MAAO,CAACxb,EAAG,IAAI,CAACK,YAAY,aAAaQ,MAAM,CAAC,KAAOsa,EAAQva,IAAI,OAAS,UAAUkI,GAAG,CAAC,MAAQ0S,IAAQ,CAACxb,EAAG,MAAM,CAACK,YAAY,aAAasD,MAAM/D,EAAI6b,cAAcN,GAASta,MAAM,CAAC,IAAMsa,EAAQxK,MAAM/P,IAAI,IAAM,MAAMZ,EAAG,OAAO,CAACK,YAAY,WAAW,CAACT,EAAIU,GAAGV,EAAIW,GAAGX,EAAIsL,GAAG,IAAPtL,CAAY,2CAA2C,IAAIA,EAAIW,GAAG4a,EAAQrY,eAAe,MAAK,MAAS,MAAK,MACnX,GAAkB,G,aCFR,SAAU4Y,GAAkBC,GACtC,MAAMC,EAAQ,IAAIC,OAAO,kDAAmD,MACtEC,EAAgBH,EAEhBI,EAAsBD,EAAcE,QAAQJ,EAAO,sFAEzD,OAAOG,EC+BX,IAAqB,GAArB,cAAwD,OAI5C,cAAcZ,GAClB,MAAMc,EAASd,EAAQxK,MAAM1G,MAAQkR,EAAQxK,MAAM4D,OAC7C2H,EAAWf,EAAQxK,MAAM1G,QAAUkR,EAAQxK,MAAM4D,OAEvD,OAAO0H,GAAUC,EAAW,mBAAqB,mBAG3B,qBACtB,OAAO,OAAYtD,aAGH,eAChB,OAAO8C,GAAkB,OAAkB3Y,IAAI,wCAdnD,gBADC,eAAK,CAAEoD,UAAU,EAAMd,KAAMiD,S,gCADb,GAA0B,gBAH9C,eAAU,CACP/B,WAAY,CAAE4V,mBAAA,SAEG,cCtCoa,MCQrb,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,kCCnBX,GAAS,WAAa,IAAIvc,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAIgM,QAAUhM,EAAIwc,sBAAsBhc,OAAS,EAAGJ,EAAG,UAAU,CAACK,YAAY,gBAAgB,CAACL,EAAG,OAAO,CAACa,MAAM,CAAC,eAAe,2FAA2F,gBAAgB,iBAAiBiI,GAAG,CAAC,QAAUlJ,EAAIyc,SAAS9P,YAAY3M,EAAI4M,GAAG,CAAC,CAAC7L,IAAI,SAAS8L,GAAG,SAASC,GACta,IAAI+L,EAAQ/L,EAAI+L,MAChB,MAAO,CAACzY,EAAG,OAAO,CAACK,YAAY,mCAAmC,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGkY,GAAO,WAAW,MAAK,EAAM,aAAa7Y,EAAIa,GAAIb,EAAyB,uBAAE,SAASwE,EAAOkY,GAAK,OAAOtc,EAAG,MAAM,CAACW,IAAI2b,EAAIzb,MAAM,CAAC,KAAOuD,EAAOJ,QAAQH,SAAS,aAAa,KAAK,CAAC7D,EAAG,uBAAuB,CAACa,MAAM,CAAC,SAAWuD,EAAOV,SAAS,qBAAqB9D,EAAImE,iBAAiBK,EAAOJ,SAAS,cAAcI,EAAOJ,QAAQC,YAAY,mBAAmBG,EAAOJ,QAAQG,2BAA2B,MAAK,IAAI,GAAGvE,EAAImB,MAClf,GAAkB,G,aCuCtB,IAAqB,GAArB,cAA2D,OAA3D,c,oBAOW,KAAAqb,sBAAiD,GAChD,KAAAxQ,QAAkB,EAElB,QAAQ2Q,GACZ,QAAW1B,6BAA6B0B,GAGL,kCACnC,IACI,MAAMnY,EAASvE,KAAKoO,mBACduO,EAA8BpY,EAAOE,gBAAgB5B,IAAI6M,GAAKA,EAAEvL,SAChEyY,EAAqCD,EAA4B9Z,IAAI6M,GAAK1P,KAAKqG,eAAeqJ,UAE9FmN,QAAQC,IAAIF,GAElB5c,KAAKuc,sBAAsBQ,KAAK,CAACra,EAAGsa,KAChC,MAAMC,EAASN,EAA4Bha,QAAQD,EAAEyB,SAC/C+Y,EAASP,EAA4Bha,QAAQqa,EAAE7Y,SACrD,OAAO8Y,EAASC,IAEtB,MAAO1a,IAZT,QAeIxC,KAAK+L,QAAS,GAIM,qBAAC5H,GACzB,IAAI,MACA,MAAMI,QAAe,OAAIE,gBAAgBC,UAAU,CAC/CC,6BAA8BR,EAAQQ,6BACtCC,6BAA8BT,EAAQS,6BACtCC,oBAAqBV,EAAQW,gBAC7BC,aAAcZ,EAAQa,SACtBC,eAAgBd,EAAQe,WACxBlD,WAAYmC,EAAQnC,WACpBmD,UAAWnF,KAAKmF,UAChBG,aAAcnB,EAAQmB,aACtBC,mBAAoBpB,EAAQqB,KAC5BC,qBAAsBtB,EAAQsB,qBAC9BC,QAASvB,EAAQuB,QACjBC,UAAWxB,EAAQwB,UACnBC,YAAazB,EAAQyB,YACrBC,iBAAkB1B,EAAQ0B,oBAGpB,OAANtB,QAAM,IAANA,GAAA,UAAAA,EAAQV,gBAAR,eAAkBtD,QAAS,GAC3BP,KAAKuc,sBAAsBnE,KAAK,CAC5BjU,QAASA,EACTN,SAAUU,EAAOV,WAG3B,MAAOrB,GACL,QAAesD,MAAMtD,IAI7B,iBAAiB2a,GACb,MAAMrc,EAAMe,OAAOC,KAAK,QAA2BS,OAAQwD,GAAMC,MAAMC,OAAOF,KAAKG,KAAKC,GAAK,OAA0BA,KAAOgX,EAAe3X,OAAS,iBAEtJ,MAAO,mBAAmBxF,KAAKoG,OAAOnD,QAAQnC,IAGlD,UACId,KAAKod,8BArET,gBADC,eAAK,CAAE9W,UAAU,EAAMd,KAAMiB,U,iCAI9B,gBADC,kB,0CAJgB,GAA6B,gBAHjD,eAAU,CACPC,WAAY,CAAEuU,QAAA,KAAMC,OAAA,KAAKvU,wBAAA,SAER,cC1Cua,MCQxb,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,qBCdf,MAAM,WAAsCyK,EAAA,KACjC,KAAK6G,EAAkCrG,GAC1C,OAAO5R,KAAK0R,UAAU,CAClB9N,UAAW,IAAM,gDAEjB+N,eAAgB,CACZsG,WAEJrG,aAKG,WAAI,G,aClBf,GAAS,WAAa,IAAI7R,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAAEJ,EAAW,QAAEI,EAAG,MAAM,CAACK,YAAY,6DAA6D,CAACL,EAAG,MAAM,CAACK,YAAY,sCAAsC,CAACL,EAAG,yBAAyB,CAACK,YAAY,gCAAgCQ,MAAM,CAAC,GAAKjB,EAAIsd,mBAAmBC,SAAS,CAAC,MAAQ,SAAS3T,GAAQ,OAAO5J,EAAIgN,kBAAkB,CAAC5M,EAAG,MAAM,CAACmJ,WAAW,CAAC,CAACrG,KAAK,aAAasG,QAAQ,kBAAkBX,MAAM,EAAIY,WAAW,IAAI+T,IAAI,OAAO/c,YAAY,oDAAoD,CAACL,EAAG,OAAO,CAACK,YAAY,SAAS,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIiN,IAAI5B,YAAc,MAAQrL,EAAIiN,IAAIwQ,OAAO,WAAWrd,EAAG,iBAAiB,CAACa,MAAM,CAAC,IAAMjB,EAAIiN,IAAI,gBAAgB,OAAO,GAAG7M,EAAG,kBAAkB,CAACK,YAAY,wBAAwBQ,MAAM,CAAC,KAAO,aAAa,QAAUjB,EAAIkY,QAAQ,IAAMlY,EAAIiN,IAAI,MAAQ,CAAEjB,OAAQhM,EAAIsM,aAAcJ,KAAMlM,EAAIuM,WAAY,eAAevM,EAAI4L,eAAe,iBAAgB,GAAM1C,GAAG,CAAC,uBAAuBlJ,EAAIwM,2BAA2B,GAAGxM,EAAImB,QACrjC,GAAkB,G,oDCkDtB,IAAqB,GAArB,cAAmD,OAAnD,c,oBAIY,KAAAoL,UAA4C,KAC5C,KAAAJ,UAA0D,KAC1D,KAAAO,SAAoD,KACpD,KAAAgR,UAAoB,EACpB,KAAAC,uBAAwB,EAExB,KAAArR,cAAwB,EACxB,KAAAL,aAAuB,EAEvB,KAAA2R,sBAAwC,GAEzC,UACH,OAAO3d,KAAKiY,QAAQjL,IAGK,wBACzB,OAAO4Q,UAAU5d,KAAKiY,QAAQlX,KAGf,cACf,OAAOf,KAAKyM,UAAYzM,KAAKyM,SAASlM,OAAS,EAGhC,sBACf,OAAOP,KAAKiY,QAAQ4F,aAAatd,OAAS,EAG5B,qBACd,OAAOP,KAAKiY,QAAQ6F,YAAYvd,OAAS,EAG3B,qBACd,OAAO,OAAYwY,aAGG,6BACtB,OAAO,OAAqBgF,uBAGZ,uBAChB,OAAK/d,KAAK2L,eAIL3L,KAAKqM,cAAiBrM,KAAKgM,YAIzBhM,KAAK0d,sBAAwB,QAAqBM,SAAW,QAAqBC,gBAH9E,QAAqBC,iBAJrB,QAAqBC,YAUpC,UACIne,KAAKoe,eACLpe,KAAKqe,eAGT,UACIre,KAAKse,iBAAgB,GAGT,mBACZte,KAAKyd,UAAYzd,KAAKyd,SAI1B,mBAAmBc,EAAcC,GACzBD,IAAQC,IACRxe,KAAKoe,eACLpe,KAAKqe,gBAIK,qBACd,GAAIre,KAAK+d,uBACL/d,KAAKqM,cAAe,MADxB,CAKArM,KAAKqM,cAAe,EAEpB,IACI,IAAKrM,KAAK2L,eACN,OAGJ,MAAM8S,EAAU,QAAwBC,YAAY1e,KAAKiY,QAAQzM,QAEjExL,KAAK2d,sBAAsBvF,KAAKqG,EAAQE,QAExC,MAAMpa,QAAeka,EAAQG,QAE7B5e,KAAKsM,UAAYzK,OAAOsW,OAAO5T,GAC/BvE,KAAK0d,sBAAwB1d,KAAK0d,uBAAyBnZ,EAAOyU,mBACpE,OAbF,QAeIhZ,KAAKqM,cAAe,EACpBrM,KAAKse,oBAIK,qBACdte,KAAKgM,aAAc,EAEnB,IACI,MAAMyS,EAAU,OAAkBC,YAAY1e,KAAKiY,QAAQzM,QAE3DxL,KAAK2d,sBAAsBvF,KAAKqG,EAAQE,QAExC,MAAMpa,QAAeka,EAAQG,QAE7B5e,KAAKkM,UAAYrK,OAAOsW,OAAO5T,EAAOsa,kBACtC7e,KAAK0d,sBAAwB1d,KAAK0d,uBAAyBnZ,EAAOyU,mBACpE,OATF,QAWIhZ,KAAKgM,aAAc,EACnBhM,KAAKse,mBAIb,gBAAgBQ,GAAiB,IACvBA,GAAW9e,KAAKqM,cAAiBrM,KAAKgM,eAAiBhM,KAAK+d,wBAIlE/d,KAAK2K,MAAM,oBAAqB,CAAEsN,QAASjY,KAAK+e,2BAA4BhL,GAAI/T,KAAK8J,MAGzF,uBAAuBkV,GACnBC,GAAA,KAAIC,KAAK,SACT,QAAWC,2BAA2Bnf,KAAK+e,2BAA4BC,EAAe,QAAQhf,KAAKoG,OAAOnD,YAGtG,2BAAwB,MAC5B,MAAO,IACAjD,KAAKiY,QACRkB,MAAK,UAAEnZ,KAAKsM,iBAAP,aAAE,EAAgBgN,OACvB8F,UAAWpf,KAAKkM,UAChBmT,cAAerf,KAAKsf,kBAI5B,kBACItf,KAAK+M,aAAa/M,KAAK+e,8BAjJD,gBAAzB,eAAK,CAAEzY,UAAU,K,+BACwB,gBAAzC,eAAK,CAAEA,UAAU,EAAMd,KAAM+Z,Y,oCAmE9B,gBADC,eAAM,mB,kCAMN,MA1EgB,GAAqB,gBANzC,eAAU,CACP7Y,WAAY,CACR8Y,kBAAA,KACAC,mBAAA,SAGa,cCnD+Z,MCQhb,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAI1f,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAI6L,eAAiB7L,EAAIgM,QAAUhM,EAAIwX,OAAQpX,EAAG,MAAM,CAACW,IAAIf,EAAIsF,IAAI7E,YAAY,iBAAiB,CAACL,EAAG,MAAM,CAACK,YAAY,yBAAyBT,EAAIa,GAAIb,EAAIwX,OAAa,QAAE,SAASmI,EAAWC,GAAa,OAAOxf,EAAG,MAAM,CAACW,IAAI6e,EAAYnf,YAAY,+BAA+B,CAACL,EAAG,WAAW,CAAC0M,IAAK,WAAa8S,EAAaC,UAAS,EAAK5e,MAAM,CAAC,iBAAgB,EAAK,kBAAkB2e,EAAc,GAAK,IAAM,EAAE,KAAO,aAAa,eAAe,uBAAuB1W,GAAG,CAAC,MAAQlJ,EAAI8f,sBAAsB,MAAQ,SAASlW,GAAQ,OAAO5J,EAAI+f,sBAAsBJ,EAAY3f,EAAI6L,cAAe7L,EAAIwX,UAAU7K,YAAY3M,EAAI4M,GAAG,CAAC,CAAC7L,IAAI,UAAU8L,GAAG,WAAW,MAAO,CAACzM,EAAG,MAAM,CAACA,EAAG,OAAO,CAACK,YAAY,aAAa,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGgf,EAAWK,kBAAkB,QAAShgB,EAAgC,6BAAEI,EAAG,OAAO,CAACJ,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIigB,8BAA8B,OAAO7f,EAAG,OAAO,CAACJ,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIkgB,gBAAgBP,EAAWQ,eAAeC,eAAe,WAAWvP,OAAM,GAAM,CAAC9P,IAAI,aAAa8L,GAAG,WAAW,MAAO,CAACzM,EAAG,OAAO,CAACK,YAAY,aAAa,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGgf,EAAWK,kBAAkB,OAAQhgB,EAAgC,6BAAEI,EAAG,OAAO,CAACK,YAAY,QAAQ,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIigB,8BAA8B,OAAOjgB,EAAImB,OAAO0P,OAAM,GAAM,CAAC9P,IAAI,WAAW8L,GAAG,WAAW,MAAO,CAAE7M,EAAIqgB,+BAAiCrgB,EAAIsgB,yBAA2BV,EAAaxf,EAAG,KAAK,CAACK,YAAY,gBAAgBT,EAAIa,GAAIb,EAAiC,+BAAE,SAASugB,EAAkBC,GAAwB,OAAOpgB,EAAG,KAAK,CAACW,IAAIwf,EAAkBrI,QAAQ5S,KAAK,CAAClF,EAAG,yBAAyB,CAACK,YAAY,0CAA0CsD,MAAM,CAC7rD,8BAA+Byc,EAAyB,IAAM,GAChEvf,MAAM,CAAC,GAAKjB,EAAIsd,kBAAkBiD,EAAkBrI,SAAS,OAASlY,EAAIygB,yBAAyBlD,SAAS,CAAC,MAAQ,SAAS3T,GAAQ,OAAO5J,EAAI0gB,6BAA6Bf,EAAYY,MAAsB,CAACngB,EAAG,MAAM,CAACK,YAAY,wDAAwD,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAG4f,EAAkBrf,aAAa,OAAOd,EAAG,mBAAmB,CAACK,YAAY,yBAAyBQ,MAAM,CAAC,yBAAyB,EAAE,eAAc,EAAK,uBAAsB,EAAM,UAAUsf,EAAkBrI,QAAQzM,OAAO,MAAQ,CAAEO,OAAQhM,EAAIiM,YAAaG,WAAYpM,EAAI2gB,iBAAiBJ,EAAkBrI,QAAQzM,QAASS,KAAM,MAAO,eAAelM,EAAI4L,eAAe,mBAAmB,OAAO,IAAI,MAAK,GAAGxL,EAAG,KAAK,CAACK,YAAY,gBAAgBT,EAAIa,GAAI8e,EAAiB,QAAE,SAASiB,EAAaC,GAAmB,OAAOzgB,EAAG,KAAK,CAACW,IAAI8f,GAAmB,CAAED,EAAqB,SAAExgB,EAAG,yBAAyB,CAACK,YAAY,0CAA0CsD,MAAM,CACx7B,mCAA6D,IAA1B6c,EAAaE,SAChD,8BAA+BD,EAAoB,IAAM,GAC3D5f,MAAM,CAAC,GAAKjB,EAAIsd,kBAAkBsD,EAAaG,YAAY,OAAS/gB,EAAIygB,yBAAyBlD,SAAS,CAAC,MAAQ,SAAS3T,GAAQ,OAAO5J,EAAIghB,kBAAkBJ,EAAcC,EAAmBlB,MAAe,CAACvf,EAAG,MAAM,CAACK,YAAY,uDAAuDsD,MAAM,CAClT,iBAA2C,IAA1B6c,EAAaE,SAC9B,aAAyC,IAA5BF,EAAaK,aAC3B,CAACjhB,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIkgB,gBAAgBU,EAAaR,eAAe,OAAQQ,EAAqB,SAAExgB,EAAG,mBAAmB,CAACK,YAAY,yBAAyBQ,MAAM,CAAC,yBAAyB,EAAE,eAAc,EAAK,uBAAsB,EAAM,UAAU2f,EAAanV,OAAO,MAAQ,CAAEO,OAAQhM,EAAIiM,YAAaG,WAAYpM,EAAI2gB,iBAAiBC,EAAanV,QAASS,KAAM,MAAO,eAAelM,EAAI4L,eAAe,mBAAmB,MAAM5L,EAAImB,MAAM,GAAGf,EAAG,SAAS,CAACK,YAAY,iDAAiDsD,MAAM,CAC5gB,mCAA6D,IAA1B6c,EAAaE,SAChD,8BAA+BD,EAAoB,IAAM,GAC3D5f,MAAM,CAAC,KAAO,UAAUiI,GAAG,CAAC,MAAQ,WAAc,OAAOlJ,EAAIkhB,+BAA+BvB,EAAYiB,EAAchB,MAAkB,CAACxf,EAAG,MAAM,CAACK,YAAY,wCAAwCsD,MAAM,CAC1M,iBAA2C,IAA1B6c,EAAaE,SAC9B,aAAyC,IAA5BF,EAAaK,aAC3B,CAACjhB,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAIkgB,gBAAgBU,EAAaR,eAAe,OAAOhgB,EAAG,MAAM,CAACK,YAAY,0EAA0E,CAACT,EAAIU,GAAG,IAAIV,EAAIW,GAAGX,EAAImhB,+BAA+BxB,IAAa,UAAU,MAAK,KAAK9O,OAAM,IAAO,MAAK,MAAS,MAAK,KAAK7Q,EAAImB,MAC9U,GAAkB,G,oDC2ItB,IAAqB,GAArB,cAAkD,OAAlD,c,oBAIY,KAAAqW,OAAqC,KACrC,KAAArL,UAAuC,GACvC,KAAAH,QAAkB,EAClB,KAAAC,aAAuB,EACvB,KAAA0R,uBAAwB,EAExB,KAAAyD,kBAAwD,KACxD,KAAAd,uBAAwC,KACxC,KAAAL,6BAA8C,KAC9C,KAAAoB,yBAA0C,KAC1C,KAAAC,+BAAyC,EAEzC,KAAA1D,sBAAwC,GAQhD,UACQ3d,KAAKqF,KAAOrF,KAAK4L,eACjB5L,KAAKshB,oBAIkB,0BAC3BthB,KAAKuX,OAAS,KACd,IACI,MAAMhT,QAAe,OAAI0T,QAAQV,OAAOvX,KAAKqF,IAAKrF,KAAK4L,eACvD5L,KAAKuX,OAAS1V,OAAOsW,OAAO5T,GAC5BvE,KAAKuX,OAAOlB,OAAOxT,IAAI0U,IACnBA,EAAOlB,OAAOxT,IAAI0e,IACVA,EAAYP,aACZzJ,EAAO2I,eAAiBqB,OAIpCvhB,KAAKqe,eACP,OAXF,QAaIre,KAAK+L,QAAS,GAId,iBACJ/L,KAAKkM,UAAY,GAGH,qBACdlM,KAAKgM,aAAc,EACnBhM,KAAKwhB,iBACL,IAAI,MAEA,UAAAxhB,KAAKuX,cAAL,SAAalB,OAAOxT,IAAI4e,GAAOA,EAAIpL,OAAOxT,IAAI6e,IACtCA,EAAMlW,QACNxL,KAAK2hB,aAAaD,EAAMlW,WAGlC,OAPF,QASIxL,KAAKgM,aAAc,GAIT,mBAACR,GAAc,MAC7B,MAAMiT,EAAU,OAAkBC,YAAYlT,GAC9CxL,KAAK2d,sBAAsBvF,KAAKqG,EAAQE,QACxC,MAAMpa,QAAeka,EAAQG,QACxB5e,KAAKkM,UAAUhG,KAAK0b,GAAKA,GAAKA,EAAEpW,SAAWA,IAC5CxL,KAAKkM,UAAUkM,KAAKvW,OAAOsW,OAAO5T,IAGtCvE,KAAK0d,sBAAwB1d,KAAK0d,uBAAL,iBAA+BnZ,QAA/B,IAA+BA,OAA/B,EAA+BA,EAAQyU,0BAAvC,SAGzB,kBAAkB6I,EAAuDlC,EAAqBD,GAAoC,MACtI,MAAMoC,GAA4B,OAAnBD,QAAmB,IAAnBA,GAAA,UAAAA,EAAqBf,kBAArB,eAAiCvgB,QAAS,EACnDwhB,EAAkBF,EAAoBf,aAAekB,GAAA,KAAOC,aAAa7K,KACzE8K,EAAaJ,GAAUC,EAC7B/hB,KAAKmiB,sBAAsBzC,EAAYmC,GACnCK,IACAxC,EAAWQ,eAAiB2B,EAC5B,gBAAaA,EAAoBf,aAIjC,iBAAiBtV,GACrB,MAAM4W,EAAapiB,KAAKkM,UAAU3J,OAAOqf,GAAKpW,GAAUoW,EAAEpW,SAAWA,GAAQ3I,IAAIwf,GAAKA,EAAExD,kBACxF,OAAOuD,EAAW7hB,OAAS6hB,EAAW,GAAK,GAGrB,qBACtB,OAAO,OAAYrJ,aAGf,gBAAgBnQ,GACpB,OAAO,OAAkB8N,UAAU9N,GAG/B,+BAA+B8W,GAAU,MAC7C,MAAM4C,EAAgB,UAAGtiB,KAAKuX,cAAR,aAAG,EAAalB,OAAO9T,OAAOwD,GAAKA,EAAEga,mBAAqBL,EAAWK,kBAAkBld,IAAI+e,IAAC,uBAAIA,EAAE1B,sBAAN,aAAI,EAAkBC,eACxI,OAAImC,EACO,OAAkBpf,IAAI,8BAA+B,CAACof,EAAiBzf,IAAI,CAAC0f,EAAGC,KAClF,MAAMnf,EAAI,OAAkBqT,UAAU6L,GAAK,IAC3C,OAAIC,IAAYF,EAAiB/hB,OAAS,EAC/B,OAAkB2C,IAAI,2CAA4C,CAACG,IACnEmf,IAAYF,EAAiB/hB,OAAS,EACtC8C,EAEGA,EAAH,OAEZiT,KAAK,MAEL,GAGH,+BAA+BoJ,EAAyCiB,EAAiD5d,GAAa,MAC1I,MAAM0f,EAAgB/C,EAAWgD,QAAQC,cACnCxB,EAAiD,GACjDtd,EAAQ,UAAG7D,KAAKuX,cAAR,aAAG,EAAaqL,sBAAsBrgB,OAAOsgB,IACvD,MAAMC,EAAMjhB,OAAOC,KAAK+gB,EAAEE,aACpBC,EAA8C,GAC9CC,EAAgBH,EAAIvgB,OAAQmgB,IAC9BM,EAAiB5K,KAAK,CAClBH,QAAS4K,EACT5hB,YAAa4hB,EAAEE,YAAYL,GAC3BA,QAASA,EAAQC,gBAEdD,IAAYD,GAAiBI,EAAEE,YAAYL,KAAa/B,EAAaR,eAGhF,OADAgB,EAAkB/I,KAAK4K,GAChBC,EAAc1iB,SAEX,IAAVwC,GACA/C,KAAKqgB,uBAAyB,EAC9BrgB,KAAKmT,MAAM+P,UAAW,GAAIxZ,gBAC1B1J,KAAKmT,MAAMgQ,UAAW,GAAIvY,iBAE1B5K,KAAKqgB,uBAAyB,EAC9BrgB,KAAKmT,MAAMgQ,UAAW,GAAIzZ,gBAC1B1J,KAAKmT,MAAM+P,UAAW,GAAItY,gBAE9B5K,KAAKmhB,kBAAoBA,EACzBnhB,KAAKggB,6BAA+B,OAAkBtJ,UAAUiK,EAAaR,cAC7EngB,KAAKohB,yBAA2BqB,EAChC5e,EAAU9B,QAAQ8gB,IACd7iB,KAAK2hB,aAAakB,EAAErX,UAExBxL,KAAKmiB,sBAAsBzC,EAAY,CAAEK,iBAAkB/f,KAAKigB,gBAAgBU,EAAaR,cAAeuC,QAASD,IACrHziB,KAAKojB,UAAU,KACXpjB,KAAKqhB,+BAAgC,IAIZ,oCAC7B,GAAIrhB,KAAKmhB,kBAAmB,CACxB,MAAMkC,EAAkC,GAgBxC,OAfArjB,KAAKmhB,kBAAmBpf,QAAQuhB,IAC5BA,EAAUvhB,QAAQ4T,IACd,GAAIA,EAAK+M,UAAY1iB,KAAKohB,0BAA4BphB,KAAKggB,+BAAiCrK,EAAKsC,QAAQ8K,YAAYpN,EAAK+M,SAAU,CAChI,MAAMa,EAAW,IAAK5N,GAChB6N,EAAS3hB,OAAOC,KAAK6T,EAAKsC,QAAQ8K,aAClCU,EAAkBD,EAAOtd,KAAK,CAACwc,EAAS3f,IACnC2f,IAAY/M,EAAK+M,SAExBe,IACAF,EAAStiB,YAAc0U,EAAKsC,QAAQ8K,YAAYU,IAEpDJ,EAAMjL,KAAKmL,QAIhBF,GAAS,KAEpB,OAAO,KAGH,wBACArjB,KAAKqhB,gCACLrhB,KAAKmhB,kBAAoB,KACzBnhB,KAAKohB,yBAA2B,KAChCphB,KAAKggB,6BAA+B,KACpChgB,KAAKqgB,uBAAyB,KAC9BrgB,KAAKqhB,+BAAgC,GAIrC,sBAAsB3B,GAC1B1f,KAAK0jB,yBAAyBhE,GAG1B,6BAA6BA,EAAYiE,GAC7C3jB,KAAKmiB,sBAAsBzC,EAAYiE,GAGnC,yBAAyBjE,GAC7B,QAAUkE,gBAAgB,CACtBC,MAAO,eACPC,iBAAkBpE,EAAWK,iBAC7BgE,uBAAwBrE,EAAWgD,UAInC,sBAAsBhD,EAAYiE,GACtC,QAAUC,gBAAgB,CACtBC,MAAO,gBACPC,iBAAkBpE,EAAWK,kBAAoBL,EAAWS,aAC5D6D,aAAcL,EAAQ5D,kBAAoB4D,EAAQxD,cAAgBwD,EAAQ1iB,YAC1E8iB,uBAAwBrE,EAAWgD,UAInC,kBAAkBuB,GACtB,MAAMhM,EAAyD,CAC3DzM,OAAQyY,EAAmBzY,OAC3BzK,IAAKkjB,EAAmBnD,YAE5B,OAAO,OAAqBA,WAAW7I,GAGR,8BAC/B,OAAO,OAAqBiM,4BAjOQ,gBAAvC,eAAK,CAAE5d,UAAU,EAAMd,KAAMiB,U,2BACU,gBAAvC,eAAK,CAAEH,UAAU,EAAMd,KAAMiB,U,8BACU,gBAAvC,eAAK,CAAEH,UAAU,EAAMd,KAAMiB,U,qCAHb,GAAoB,gBAHxC,eAAU,CACPC,WAAY,CAAEyd,YAAA,KAAUC,oBAAA,SAEP,cC1J8Z,MCQ/a,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,OAIa,M,kCCgef,IAAqB,GAArB,cAA4C,OAA5C,c,oBAGY,KAAA9X,UAA8C,KAC9C,KAAAJ,UAA0D,KAC1D,KAAA+B,WAA+C,GAC/C,KAAAxB,SAA6C,GAC7C,KAAAS,aAAgD,GAChD,KAAAkB,mBAAyD,KACzD,KAAAiW,kBAA4B,EAC5B,KAAA3G,uBAAwB,EAExB,KAAArR,cAAwB,EACxB,KAAAL,aAAuB,EACvB,KAAAsY,YAAsB,EACtB,KAAAlX,sBAAuC,KAEvC,KAAAuQ,sBAAwC,GAQtB,qBACtB,OAAO,OAAY5E,aAGJ,cACf,OAAO,QAAkBnL,UAGI,4BAC7B,OAAO,OAAY2W,oBAGS,2BAC5B,SAAOvkB,KAAKsM,YAAatM,KAAKsM,UAAUsN,YAAY5Z,KAAKsM,UAAUsN,UAAUrZ,OAAS,EAGjE,oBACrB,QAASP,KAAK6K,QAAQ2Z,YAGlB,kBAAkBC,GACtB,OAAO,QAAYC,cAAcD,GAGG,yCACpC,MAAME,EAAuB,OAAkBzhB,IAAI,QAAYwhB,cAAZ,UAA0B,QAAYE,yBAAtC,aAA0B,EAA+BjC,gBAC5G,OAAO3iB,KAAKoN,sBACN,OAAkBlK,IAAI,0CACtB,OAAkBA,IAAI,4BAA6B,CAACyhB,IAG9B,2BAC5B,OAAO,OAAcE,iBAAiB,OAAQC,qBAAuB9kB,KAAK2L,eAGpC,qCAKtC,GAJA,QAAUiY,gBAAgB,CACtBC,MAAO,eACPkB,aAAc/kB,KAAKoN,sBAAwB,qBAAuB,iBAElEpN,KAAKoN,sBACLpN,KAAKoN,sBAAwB,SAC1B,CACH,MAAM4X,QAAoB,OAAItO,UAAUuO,qBAAqBjlB,KAAK6K,QAAQxF,IAAK,OAAc6f,SAAST,cACtGzkB,KAAKoN,uBAAmC,OAAX4X,QAAW,IAAXA,OAAA,EAAAA,EAAaG,iBAAkB,MAI5D,kBACJ,OAAcC,gBAAgBplB,KAAKmT,MAAM/H,aAAc,KACvDpL,KAAKmT,MAAMkS,oBAAoB7O,OAG3B,qBACJ,OAAc4O,gBAAgBplB,KAAKmT,MAAMzF,eAAe5D,KAAqB,KAC7E9J,KAAKmT,MAAMzF,eAAe8I,OAGF,uBACxB,OAAOxW,KAAK6K,QAAQwD,iBACdrO,KAAK6K,QAAQwD,iBAAmB,KAGnB,kBACnB,OAAOrO,KAAKoN,sBACNpN,KAAKoN,sBAAwBpN,KAAK6K,QAAQya,gBACtCtlB,KAAK6K,QAAQya,gBAAkBtlB,KAAK6K,QAAQ0a,uBACxCvlB,KAAK6K,QAAQ0a,uBAAyB,KAGhC,mBACpB,OAAOvlB,KAAK6K,QAAQ2a,aAAexlB,KAAK6K,QAAQ2a,aAAaC,MAAM,EAAG,IAAM,KAG7D,cACf,OAAOzlB,KAAKyM,SAASlM,OAAS,EAGL,wBACzB,OAAOP,KAAK6K,QAAQ6a,UAAUnlB,OAAS,KAAOP,KAAK6K,QAAQ6a,UAAUxf,KAAK7C,GAAKA,EAAEsiB,kBAG7E,gCAAgC9a,GAAmB,GACvD,OAAO,OAAwB+a,uCAC3B5lB,KAAK6K,QAAQgb,cACbhb,GAIoB,6BACxB,QAAQ,UAAC7K,KAAK6K,eAAN,QAAC,EAAce,eAGM,4BAC7B,OAAO5L,KAAKkM,UACN,EAAuB4Z,iCAAiC9lB,KAAKkM,WAC7D,KAGW,wBACjB,OAAO,OAAS6Z,gBAGM,qBAGtB,GAFA/lB,KAAKsM,UAAY,KAEZtM,KAAK2L,eAAV,CAKA3L,KAAKqM,cAAe,EAEpB,IACI,MAAMoS,EAAU,OAA0BC,YAAY1e,KAAK6K,QAAQW,QACnExL,KAAK2d,sBAAsBvF,KAAKqG,EAAQE,QAExC,MAAMpa,QAAeka,EAAQG,QAC7B5e,KAAKsM,UAAYzK,OAAOsW,OAAO5T,GAC/BvE,KAAK0d,sBAAwB1d,KAAK0d,uBAAyBnZ,EAAOyU,mBACpE,OAPF,QASIhZ,KAAKqM,cAAe,EACpBrM,KAAKgmB,2BAhBLhmB,KAAKqM,cAAe,EAoBF,qBACtBrM,KAAKkM,UAAY,KACjBlM,KAAKgM,aAAc,EAEnB,IACI,MAAMyS,EAAU,OAAkBC,YAAY1e,KAAK6K,QAAQW,QAC3DxL,KAAK2d,sBAAsBvF,KAAKqG,EAAQE,QAExC,MAAMpa,QAAeka,EAAQG,QAC7B5e,KAAKkM,UAAYrK,OAAOsW,OAAO5T,EAAOsa,kBACtC7e,KAAK0d,sBAAwB1d,KAAK0d,uBAAyBnZ,EAAOyU,mBACpE,OAPF,QASIhZ,KAAKgM,aAAc,EACnBhM,KAAKgmB,qBACLhmB,KAAKimB,kBAIc,sBAGvB,GAFAjmB,KAAKiO,WAAa,IAEdjO,KAAK6K,QAAQgb,cAEjB,IACI,MAAMthB,QAAe,OAAI0T,QAAQhK,WAAWjO,KAAK6K,QAAQxF,KACzDrF,KAAKiO,WAAapM,OAAOsW,OAAO5T,EAAOV,UACzC,OAHF,QAKI7D,KAAKqkB,kBAAmB,GAIP,oBAGrB,GAFArkB,KAAKyM,SAAW,GAEXzM,KAAK2L,eAAV,CAKA3L,KAAKskB,YAAa,EAElB,IACI,MAAM7F,EAAU,QAAwBC,YAAY1e,KAAK6K,QAAQxF,KACjErF,KAAK2d,sBAAsBvF,KAAKqG,EAAQE,QAExC,MAAMpa,QAAeka,EAAQG,QAC7B5e,KAAKyM,SAAW5K,OAAOsW,OAAO5T,EAAO2hB,aACvC,OANF,QAQIlmB,KAAKskB,YAAa,QAdlBtkB,KAAKskB,YAAa,EAkBS,8BAC/BtkB,KAAKoO,mBAAqB,KAE1B,IACI,MAAM+X,EAAU,OAAcnO,SAAW,GAAG,OAAcA,SAAS5J,mBAAuB,KAC1F,IAAK+X,EAED,YADA,QAAeC,KAAK,+EAIxBpmB,KAAKoO,yBAA2B,QAAkBiY,WAAwCF,GAC5F,OARF,QAUInmB,KAAKimB,kBAIL,uBAAuBjH,GAC3B,QAAWG,2BAA2Bnf,KAAKsmB,wBAAyBtH,GAG5C,uBACxB,OAAKhf,KAAK2L,eACL3L,KAAKqM,cAAiBrM,KAAKgM,YACzBhM,KAAK0d,sBAAwB,QAAqBM,SAAW,QAAqBC,gBADrC,QAAqBC,iBADxC,QAAqBC,YAKrB,gCACjC,MAAMoI,EAAUvmB,KAAK6K,QAAQ2a,cAAgB,GACvCgB,EAA4CxmB,KAAK6K,QAAQ4b,0BAA4B,GAE3F,GAAIF,EAAQhmB,OAASimB,EAAKjmB,OAAS,EAAG,OAAO,KAC7C,MAAMmmB,EAA2BH,EAAQ1jB,IAAIma,GAAK,OAAOA,UAAU1G,KAAK,IAElEqQ,EAAc,IACb3mB,KAAK4mB,uBACRC,kBAAmBN,EAAQhmB,QAEzBumB,EAAmB,+BACnBC,EAA2B,OAAkBnM,OAAOkM,GAAoB,OAAkBE,mBAAmBF,EAAkBH,GAAa,GAAQ,GACpJM,EAAuB,4CACvBC,EAA+B,OAAkBtM,OAAOqM,GAAwB,OAAkBD,mBAAmBC,EAAsBN,GAAa,GAAQ,GAChKQ,EAAwB,6CACxBC,EAAgC,OAAkBxM,OAAOuM,GAAyB,OAAkBH,mBAAmBG,EAAuBR,GAAa,GAAQ,GAEnKU,EAAa,sBACbC,EAAc,CAChB,WAAYD,EACZ,QAAS,UACTE,WAAY,IAsBhB,OApBIhB,EAAQhmB,QACR+mB,EAAOC,WAAWnP,KAAK,CACnB,QAAS,WACTnV,KAAM8jB,EACNS,eAAgB,CACZ,QAAS,SACTC,KAAM,GAAGP,QAAmCR,SAAgCU,OAIxFZ,EAAKzkB,QAAS2lB,IACVJ,EAAOC,WAAWnP,KAAK,CACnB,QAAS,WACTnV,KAAMykB,EAAIC,SACVH,eAAgB,CACZ,QAAS,SACTC,KAAMC,EAAIE,YAIfN,EAGkB,8BACzB,MAAMD,EAAa,sBACbC,EAAc,CAChB,WAAYD,EACZ,QAAS,UACTpkB,KAAMjD,KAAK6K,QAAQ5J,YACnBmK,YAAa,OAAkBlI,IAAI,6BAA8B,CAAClD,KAAK6K,QAAQ5J,cAC/E6P,MAAO9Q,KAAK6nB,eACZC,IAAK9nB,KAAK6K,QAAQW,OAClBD,IAAKvL,KAAK6K,QAAQU,IAClB1K,MAAO,CACH,QAAS,QACToC,KAAMjD,KAAK6K,QAAQhK,MACnBknB,KAAI,UAAE/nB,KAAK6K,QAAQoF,kBAAf,aAAE,EAAyB+X,mBAEnCC,OAAQ,IAeZ,GAXIjoB,KAAK6K,QAAQY,MACmB,IAA5BzL,KAAK6K,QAAQY,IAAIlL,OACjB+mB,EAAOY,MAAQloB,KAAK6K,QAAQY,IACO,KAA5BzL,KAAK6K,QAAQY,IAAIlL,OACxB+mB,EAAOa,OAASnoB,KAAK6K,QAAQY,IAE7B6b,EAAOc,KAAOpoB,KAAK6K,QAAQY,KAK/BzL,KAAK2L,eAAgB,SACrB,IAAI0c,EAAgBhB,EAEe,IAA/BrnB,KAAK6K,QAAQgb,cACbwC,GAAiB,uBAEjBA,GAAiB,eAGrBf,EAAOgB,OAAS,CACZ,QAAS,QACTvnB,IAAKwnB,OAAOC,SAASC,KACrBC,cAAa,UAAE1oB,KAAKsM,iBAAP,aAAE,EAAgB6M,MAAMwP,SACrCxP,MAAK,UAAEnZ,KAAKsM,iBAAP,aAAE,EAAgB6M,MAAMyP,0BAC7BC,cAAeR,EACfS,aAAc9oB,KAAK+oB,qBACnBC,OAAQ,CACJ,QAAS,eACT/lB,KAAM,OAAkBC,IAAI,oCAIpCokB,EAAOgB,OAAS,GAGpB,OAAOhB,EAGH,qBACJ,IAAI2B,EAAa,sBACjB,MAAMC,EAASlpB,KAAKmpB,cAUpB,OAPIF,QADWzkB,IAAX0kB,EACc,eACI,IAAXA,EACO,WAEA,UAGXD,EAGH,eAAY,MAChB,iBAAOjpB,KAAK6K,eAAZ,aAAO,EAAcwG,OAAOxO,IAAIiO,GAAS,QAA8BsY,gBAAgBtY,EAAMpC,MAGzF,qBACC1O,KAAKqM,cAAiBrM,KAAKgM,aAChChM,KAAK2K,MAAM,kBAAmB3K,KAAKsmB,yBAG/B,wBAAqB,MACzB,MAAO,IACAtmB,KAAK6K,QACRsO,MAAK,UAAEnZ,KAAKsM,iBAAP,aAAE,EAAgB6M,MACvBiG,UAAWpf,KAAKkM,UAChBmT,cAAerf,KAAKsf,kBAIM,mCAC9B,MAAMqH,EAAkC,CACpC9lB,MAAOb,KAAK6K,QAAQhK,MACpBoX,QAASjY,KAAK6K,QAAQ5J,YACtBuK,OAAQxL,KAAK6K,QAAQW,OACrBC,IAAKzL,KAAK6K,QAAQY,UAAOjH,EACzB+G,IAAKvL,KAAK6K,QAAQU,IAClB8d,UAAU,UAAArpB,KAAK6K,QAAQye,WAAWhiB,IAAI,UAA5B,eAAgCrE,YAAQuB,EAClD+kB,QAASvpB,KAAK6K,QAAQ0e,cAAW/kB,GAErC,OAAOmiB,EAGH,iBAAc,cAClB,MAAMuC,EAASlpB,KAAKmpB,cACpB,IAAIK,EAEAA,EADA,OAAWjX,WAAa,OAAWD,gBAChB,UACD9N,IAAX0kB,EACY,OAAkBhmB,IAAI,mCACvB,IAAXgmB,EACY,OAAkBhmB,IAAI,+BAEtB,OAAkBA,IAAI,8BAG7C,MAAMumB,EAAuB,GAAGzpB,KAAK6K,QAAQ5J,gBAAgBjB,KAAK6K,QAAQW,SAEpEke,EAAiB,GACjBC,EAAc3pB,KAAK6K,QAAQye,WAAW7D,MAAM,EAAGzlB,KAAK6K,QAAQye,WAAW/oB,OAAS,GACtFopB,EAAY9mB,IAAI,CAACV,EAAKynB,IAAaF,EAAe,iBAAgBE,EAAW,IAAOznB,EAAIc,MAExF,MAAM0jB,EAAkC,IACjC3mB,KAAK4mB,uBACRsC,OAAQM,KACLE,GAEDG,EAAgB,oBAChBC,EAAa,OAAkB5mB,IAAI2mB,EAAe,CAACJ,IACnDM,EAAuBF,GAAiB,OAAkB7C,mBAAmB6C,EAAelD,GAAa,GAEzGqD,EAAS,UAAGhqB,KAAKoO,0BAAR,aAAG,EAAyB6b,UACrCC,EAAsBF,GAAa,OAAkBG,8BAA8BH,EAAWrD,GAE9FyD,EAAsB,0BACtBC,EAAmB,OAAkBnnB,IAAIknB,EAAqB,CAACpqB,KAAK6K,QAAQ5J,YAAauoB,EAAkBxpB,KAAK6K,QAAQY,UAAOjH,EAAWxE,KAAK6K,QAAQU,MACvJ+e,EAA6BF,GAAuB,OAAkBpD,mBAAmBoD,EAAqBzD,GAAa,GAE3H4D,EAAc,UAAGvqB,KAAKoO,0BAAR,aAAG,EAAyBoc,eAC1CC,EAA2BF,GAAkB,OAAkBvD,mBAAmBuD,EAAgB5D,GAAa,GAAM,GAE3H,QAAW+D,SAASR,GAAuBH,GAAwBD,GACnE,QAAWa,eAAeF,GAA4BH,GAA8BD,GACpF,QAAWO,gBAAgBrC,OAAOsC,cAAcC,QAAU9qB,KAAK6K,QAAQkgB,WAAW,GAClF,QAAWC,kBAAkB,UAAAhrB,KAAK6K,eAAL,mBAAcwG,cAAd,SAAsB9Q,OAAS,CAAEQ,IAAK,QAA8BqoB,gBAAgBppB,KAAK6K,QAAQwG,OAAO,GAAG3C,KAAMzL,KAAM,GAAGjD,KAAK6K,QAAQ5J,eAAejB,KAAK6K,QAAQwG,OAAO,GAAGpO,QAAoB,MAE9N,MAAMgoB,EAAqB,UAAAjrB,KAAK6K,eAAL,SAAckgB,UAAY,GAAG,OAAc7F,SAASnkB,MAAMf,KAAK6K,QAAQkgB,YAAc,KAChH,OAAWG,0CAA0CD,GAGjD,cACJ,GAAKjrB,KAAKkM,WAAuC,IAA1BlM,KAAKkM,UAAU3L,OAEtC,OAAOP,KAAKkM,UAAU,GAAGyD,aAGJ,oBACrB,OAAiC,IAA1B3P,KAAK6K,QAAQsgB,SAGK,4CACzB,GAAInrB,KAAK2L,gBAAkB3L,KAAKmN,sBAAuB,OAEvD,MAAM5I,QAAe,OAAI6mB,gBAAgBle,aAApB,UACjBlN,KAAK6K,QAAQhK,aADI,QACK,GADL,UAEjBb,KAAKsL,yCAFY,QAEyB,GAC1CtL,KAAK6K,QAAQye,WAAW,GAAG+B,GAHV,UAIjBrrB,KAAK6K,QAAQU,WAJI,QAIG,GAJH,UAKjBvL,KAAK6K,QAAQW,cALI,QAKM,GALN,UAMjBxL,KAAK6K,QAAQygB,WANI,QAMG,GANH,UAOjBtrB,KAAK6K,QAAQ7I,kBAPI,QAOU,IAPV,oBAQjBhC,KAAK6K,QAAQ0gB,oBARI,aAQjB,EAA2BC,MAAM,KAAKC,eARrB,QAQgC,GACjDzrB,KAAKoG,OAAOslB,SACZ,QAAiBC,gBACjB,QAAiBC,kBAErB5rB,KAAKkN,aAAerL,OAAOsW,OAAO5T,GAG5B,aACN,OAAI,OAAcwZ,uBAA+B,KACzC/d,KAAK6K,QAAQU,MAAQvL,KAAK6K,QAAQW,QAAUxL,KAAK6K,QAAQW,QAAW,KAGzE,UACH,OAAOxL,KAAK6K,QAAQU,KAAO,KAGvB,UACJvL,KAAKoe,eACLpe,KAAKqe,eACLre,KAAK6rB,gBACL7rB,KAAK8rB,cACL9rB,KAAK+rB,wBACL/rB,KAAKgsB,kBAGD,+BACJhsB,KAAK2d,sBAAsB5b,QAAQ2N,GAAKA,GAAKA,KAGzC,YACJ1P,KAAKisB,+BAIT,gBACIC,EACAC,GAEID,EAAQ7mB,OAAR,OAAgB8mB,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAU9mB,OAC1BrF,KAAKoe,eACLpe,KAAKqe,eACLre,KAAK6rB,gBACL7rB,KAAK8rB,eAKb,mBAAmBvN,EAAcC,GACzBD,IAAQC,IACRxe,KAAKoe,eACLpe,KAAK8rB,cACL9rB,KAAKqe,gBAIb,oBACI,GAA8BrJ,KAAKhV,KAAK6K,WA7fJ,gBAAvC,eAAK,CAAEvE,UAAU,EAAMd,KAAM3D,U,+BAue9B,gBADC,eAAM,Y,+BAWN,MAGD,gBADC,eAAM,mB,kCAON,MA3fgB,GAAc,gBArBlC,eAAU,CACP6E,WAAY,CACR0lB,qBAAA,GACAC,sBAAA,KACAC,qBAAA,EACAC,6BAAA,EACAC,4BAAA,GACAC,2BAAA,GACAC,mBAAA,GACAC,wBAAA,GACAC,8BAAA,GACAxI,oBAAA,KACAzN,WAAA,KACAkW,kBAAA,KACAC,uBAAA,KACAC,2BAAA,GACAC,YAAA,KACAC,sBAAA,GACAC,wBAAA,SAGa,cCnfwZ,MCQza,I,UAAY,eACd,GACA,EACA,GACA,EACA,KACA,WACA,OAIa,M,QCnBf,MAAMC,GAAsB,wBAE5B,SAASC,GAAqBrsB,GAC1B,MAAMssB,EAAQtsB,EAAIssB,MAAMF,IACxB,GAAc,OAAVE,GAAmC,IAAjBA,EAAM9sB,OAAc,OAAO,KACjD,MAAM4E,EAAYkoB,EAAM,GACxB,OAAOloB,EAGX,SAASmoB,KACL,OAAOH,GAGI,QACXC,wBACAE,kB,uCCYJ,IAAqB,GAArB,cAAgD,OAAhD,c,oBACY,KAAAziB,QAA0C,KAC1C,KAAA0iB,gBAAiB,EACjB,KAAAltB,SAAmB,EAE3B,UACIL,KAAKwtB,QAIT,cAAcC,EAAWC,GACjBD,EAAGrW,OAASsW,EAAKtW,MACrBpX,KAAKwtB,QAGU,qBACVxtB,KAAKutB,gBAAkBvtB,KAAK6K,SAC7B,QAAW8iB,wBAAwB,IAC5B3tB,KAAK6K,QACRuU,UAAW,KACXjG,WAAO3U,EACP6a,cAAe,QAAqBnB,mBAI5Cle,KAAKutB,gBAAiB,EACtB,MAAMK,EAAa,GAAyBR,qBAAqBptB,KAAKoG,OAAOgR,MAC7E,GAAKwW,EAAL,CAEA5tB,KAAKK,SAAU,EAEf,IACI,MAAMkE,QAAe,OAAI0T,QAAQpN,QAAQ+iB,GACzC5tB,KAAK6K,QAAUhJ,OAAOsW,OAAO5T,GAC7B,QAASspB,cAActpB,EAAO+kB,YAChC,MAAOxjB,GACL,QAAS+nB,cAAc,IACvB,MAAMC,EAAa,6EAA6EF,EAChG,QAAiBG,iBAAiB,gBAAWD,EAAYF,GAP7D,QASI5tB,KAAKK,SAAU,EAGgB,MAAnC,aAAIL,KAAK6K,eAAT,OAAI,EAAcmjB,gBACd,QAAWC,YAAX,UAAuBjuB,KAAK6K,eAA5B,aAAuB,EAAcmjB,kBAIrC,UAAU/V,GAEd,QAAW0V,wBAAwB1V,GACnCjY,KAAKutB,gBAAiB,IAzC1B,gBADC,eAAM,W,6BAIN,MAbgB,GAAkB,gBANtC,eAAU,CACP7mB,WAAY,CAAEwnB,eAAA,GAAgBxV,iBAAA,MAC9ByV,iBAAkB,CAACV,EAAWC,EAAaU,KACvCA,QAGa,cC3B8a,MCO/b,GAAY,eACd,GACAtuB,EACAqB,GACA,EACA,KACA,KACA,MAIa,gB,gCCjBf,IAmDIktB,EAnDAxmB,EAAW,EAAQ,QACnBymB,EAAyB,EAAQ,QACjCC,EAAc,EAAQ,QACtBC,EAAa,EAAQ,QACrBC,EAAO,EAAQ,QACfC,EAAwB,EAAQ,QAChCC,EAAY,EAAQ,QAEpBC,EAAK,IACLC,EAAK,IACLC,EAAY,YACZC,EAAS,SACTC,EAAWL,EAAU,YAErBM,EAAmB,aAEnBC,EAAY,SAAU/qB,GACxB,OAAO0qB,EAAKE,EAASH,EAAKzqB,EAAU0qB,EAAK,IAAME,EAASH,GAItDO,EAA4B,SAAUd,GACxCA,EAAgBe,MAAMF,EAAU,KAChCb,EAAgB5X,QAChB,IAAI4Y,EAAOhB,EAAgBiB,aAAaztB,OAExC,OADAwsB,EAAkB,KACXgB,GAILE,EAA2B,WAE7B,IAEIC,EAFAC,EAASf,EAAsB,UAC/BgB,EAAK,OAASX,EAAS,IAU3B,OARAU,EAAOhmB,MAAMkmB,QAAU,OACvBlB,EAAKmB,YAAYH,GAEjBA,EAAOla,IAAM9O,OAAOipB,GACpBF,EAAiBC,EAAOI,cAAcrhB,SACtCghB,EAAehZ,OACfgZ,EAAeJ,MAAMF,EAAU,sBAC/BM,EAAe/Y,QACR+Y,EAAeM,GASpBC,EAAkB,WACpB,IACE1B,EAAkB,IAAI2B,cAAc,YACpC,MAAOlqB,IACTiqB,EAAqC,oBAAZvhB,SACrBA,SAASyhB,QAAU5B,EACjBc,EAA0Bd,GAC1BkB,IACFJ,EAA0Bd,GAC9B,IAAI9tB,EAASguB,EAAYhuB,OACzB,MAAOA,WAAiBwvB,EAAgBjB,GAAWP,EAAYhuB,IAC/D,OAAOwvB,KAGTvB,EAAWQ,IAAY,EAKvBnoB,EAAOC,QAAUjF,OAAOwG,QAAU,SAAgBd,EAAGW,GACnD,IAAI3D,EAQJ,OAPU,OAANgD,GACF0nB,EAAiBH,GAAajnB,EAASN,GACvChD,EAAS,IAAI0qB,EACbA,EAAiBH,GAAa,KAE9BvqB,EAAOyqB,GAAYznB,GACdhD,EAASwrB,SACMvrB,IAAf0D,EAA2B3D,EAAS+pB,EAAuBtmB,EAAEzD,EAAQ2D,K,oCCjF9E,yBAA+lB,EAAG,G,sFCAlmB,yBAAqmB,EAAG,G,2DCAxmB,yBAAukB,EAAG,G,kCCA1kB,IAAIpI,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAW,QAAEI,EAAG,UAAU,CAACK,YAAY,0CAA0C,CAACL,EAAG,eAAe,CAACa,MAAM,CAAC,YAAYjB,EAAIgB,IAAI,KAAOhB,EAAImwB,iBAAiB,KAAOnwB,EAAIowB,cAAc,GAAGhwB,EAAG,2BAA2B,CAACa,MAAM,CAAC,YAAYjB,EAAIgB,IAAI,KAAOhB,EAAImwB,iBAAiB,IAAMnwB,EAAIqwB,cACrXjvB,EAAkB,G,wECetB,IAAqB,EAArB,cAAsD,OAsBtB,uBACxB,OAAQnB,KAAKmwB,WACb,IAAK,YACD,MAAO,MACX,IAAK,MACD,MAAO,MACX,IAAK,aACD,MAAO,CACH,CAAC,QAAK,MACN,CAAC,QAAK,MACN,CAAC,QAAK,MACN,CAAC,QAAS,QAGlB,MAAM,IAAIngB,MAAM,uBAAyBhQ,KAAKmwB,aAhC/C,gBAHF,eAAK,CACF7pB,UAAU,EACVd,KAAMiB,U,0BAOV,gBAJC,eAAK,CACFjB,KAAMiB,OACN4pB,UAAYznB,QAAwCpE,IAAVoE,GAAuB,CAAC,YAAa,MAAO,cAAc0nB,SAAS1nB,M,gCAO9G,gBAHF,eAAK,CACFpD,KAAMe,QACNC,SAAS,K,8BAMV,gBAHF,eAAK,CACFhB,KAAMiB,OACND,QAAS,M,gCAnBI,EAAwB,gBAH5C,eAAU,CACPE,WAAY,CAAE6pB,yBAAA,KAAwBC,YAAA,WAErB,WChBka,I,YCOnb5sB,EAAY,eACd,EACA9D,EACAqB,GACA,EACA,KACA,KACA,MAIa,OAAAyC,E,kEClBf,yBAAkmB,EAAG,G,yDCArmB,yBAAgmB,EAAG,G,qBCAnmB,IAAI6sB,EAAqB,EAAQ,QAC7BlC,EAAc,EAAQ,QAK1B1nB,EAAOC,QAAUjF,OAAOC,MAAQ,SAAcyF,GAC5C,OAAOkpB,EAAmBlpB,EAAGgnB,K,kCCN/B,IAAIxnB,EAAI,EAAQ,QACZ2pB,EAAc,EAAQ,QACtBC,EAAyB,EAAQ,QACjCzpB,EAAsB,EAAQ,QAC9BlE,EAAW,EAAQ,QACnB4tB,EAAQ,EAAQ,QAEhBC,EAASH,EAAY,GAAGG,QAExBC,EAASF,GAAM,WAEjB,MAAuB,WAAhB,KAAKtpB,IAAI,MAKlBP,EAAE,CAAEK,OAAQ,SAAUC,OAAO,EAAM0pB,OAAQD,GAAU,CACnDxpB,GAAI,SAAYvE,GACd,IAAIiuB,EAAIhuB,EAAS2tB,EAAuB3wB,OACpCwH,EAAMwpB,EAAEzwB,OACRkH,EAAgBP,EAAoBnE,GACpCoD,EAAIsB,GAAiB,EAAIA,EAAgBD,EAAMC,EACnD,OAAQtB,EAAI,GAAKA,GAAKqB,OAAOhD,EAAYqsB,EAAOG,EAAG7qB,O,kCCvBvD,IAAIrG,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAAC0M,IAAI,eAAerM,YAAY,iBAAiBsD,MAAM/D,EAAIkxB,YAAY,CAAElxB,EAAgB,aAAEI,EAAG,cAAc,CAACK,YAAY,eAAeQ,MAAM,CAAC,IAAMjB,EAAImxB,SAAS,KAAOnxB,EAAIoxB,WAAW,iBAAiBpxB,EAAIqxB,cAAc,cAAcrxB,EAAIsxB,cAAetxB,EAAkB,eAAEI,EAAG,gBAAgB,CAACK,YAAY,eAAeQ,MAAM,CAAC,IAAMjB,EAAImxB,SAAS,KAAOnxB,EAAIoxB,WAAW,iBAAiBpxB,EAAIqxB,cAAc,cAAcrxB,EAAIsxB,cAAclxB,EAAG,eAAe,CAACK,YAAY,eAAeQ,MAAM,CAAC,IAAMjB,EAAImxB,SAAS,iBAAiBnxB,EAAIqxB,cAAc,cAAcrxB,EAAIsxB,cAAkC,eAAnBtxB,EAAIoxB,WAA6BhxB,EAAG,OAAO,CAACK,YAAY,gCAAgC,CAACL,EAAG,SAAS,CAACa,MAAM,CAAC,KAAO,OAAO,MAAQjB,EAAIuxB,UAAU,OAASvxB,EAAIwxB,cAAcpxB,EAAG,OAAO,CAACK,YAAY,WAAW,CAACT,EAAIU,GAAG,WAAW,GAAGV,EAAImB,MAAM,IACj5BC,EAAkB,G,gDCDlB,EAAS,WAAa,IAAIpB,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,QAAQ,CAACa,MAAM,CAAC,IAAMjB,EAAIgB,IAAI,QAAU,WAAW,SAAWhB,EAAIqxB,cAAc,SAAWrxB,EAAIsxB,eAC9L,EAAkB,GCStB,IAAqB,EAArB,cAAyC,SAErC,gBADC,eAAK,CAAE7rB,KAAMiB,OAAQH,UAAU,K,0BAM7B,gBAHF,eAAK,CACFA,UAAU,EACVd,KAAMe,W,iCAMP,gBAHF,eAAK,CACFD,UAAU,EACVd,KAAMe,W,oCAXO,EAAW,gBAF/B,QAEoB,WCV0Y,I,YCO3Z3C,EAAY,eACd,EACA,EACA,GACA,EACA,KACA,KACA,MAIa,EAAAA,E,QClBX,EAAS,WAAa,IAAI7D,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,MAAM,CAACmJ,WAAW,CAAC,CAACrG,KAAK,OAAOsG,QAAQ,SAASX,OAAQ7I,EAAIyxB,eAAgBhoB,WAAW,qBAAqB,CAACrJ,EAAG,MAAM,CAAC0M,IAAI,iBAAiB1M,EAAG,MAAM,CAACmJ,WAAW,CAAC,CAACrG,KAAK,OAAOsG,QAAQ,SAASX,MAAO7I,EAAkB,eAAEyJ,WAAW,oBAAoB,CAACrJ,EAAG,MAAM,CAAC0M,IAAI,iBAAiBrM,YAAY,mCAChZ,EAAkB,G,YCgBtB,IAAqB,EAArB,cAA+C,OAmBnC,UAEJR,KAAKojB,UAAU,KACX,GAAIpjB,KAAKwxB,gBACL,GAAIxxB,KAAKmT,MAAMse,eAAgB,CAC3B,MAAMC,EAAc,CAChB3wB,IAAKf,KAAKe,IACV4wB,UAAU,EACVC,SAAU5xB,KAAKqxB,YAInB,IAAI,OAAYrxB,KAAKmT,MAAMse,eAAgBC,SAG/C,GAAI1xB,KAAKmT,MAAM0e,WAAY,CACvB,MAAMC,EAAgB,CAClB/wB,IAAKf,KAAKe,IACV4wB,UAAU,EACVI,YAAY,EACZ3nB,MAAO,KAIX,IAAI,OAAYpK,KAAKmT,MAAM0e,WAAYC,MAM7B,qBACtB,MAAqB,eAAd9xB,KAAKgyB,OAhDhB,gBADC,eAAK,CAAExsB,KAAMiB,OAAQH,UAAU,K,0BAM7B,gBAHF,eAAK,CACFA,UAAU,EACVd,KAAMiB,U,2BAMP,gBAHF,eAAK,CACFH,UAAU,EACVd,KAAMe,W,iCAXO,EAAiB,gBADrC,QACoB,WCjByY,ICO1Z,EAAY,eACd,EACA,EACA,GACA,EACA,KACA,KACA,MAIa,I,QClBX,EAAS,WAAa,IAAIxG,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAiB,cAAEI,EAAG,MAAM,CAACA,EAAG,SAAS,CAACa,MAAM,CAAC,IAAMjB,EAAIkyB,WAAW,YAAc,IAAI,gBAAkB,QAAQ9xB,EAAG,MAAM,CAACa,MAAM,CAAC,IAAMjB,EAAImyB,WAAW,IAAM,OAC3P,EAAkB,GCctB,IAAqB,EAArB,cAAiD,OAmB1B,cACf,MAAMC,EAAe,wFACf9E,EAAQrtB,KAAKe,IAAIssB,MAAM8E,GAE7B,OAAQ9E,GAASA,EAAM,GAAG9sB,QAAU,GAAM8sB,EAAM,GAAG5H,MAAM,EAAG,IAAM,UAIhD,iBAClB,MAAO,6BAA6BzlB,KAAKoyB,oBAAoBpyB,KAAKqxB,WAAa,EAAI,IAGjE,iBAClB,MAAO,0BAA0BrxB,KAAKoyB,WAAWpyB,KAAKqyB,sBAG/B,sBACvB,MAAqB,cAAdryB,KAAKgyB,KAAuB,YAAc,kBAlCrD,gBADC,eAAK,CAAExsB,KAAMiB,OAAQH,UAAU,K,0BAM7B,gBAHF,eAAK,CACFA,UAAU,EACVd,KAAMiB,U,2BAMP,gBAHF,eAAK,CACFH,UAAU,EACVd,KAAMe,W,iCAMP,gBAHF,eAAK,CACFD,UAAU,EACVd,KAAMe,W,oCAhBO,EAAmB,gBAFvC,QAEoB,OCfT+rB,EDeS,IEf2Y,ICO5Z,EAAY,eACd,EACA,EACA,GACA,EACA,KACA,KACA,MAIa,I,SFlBf,SAAYA,GACR,mBACA,qBACA,sBAHJ,CAAYA,MAAS,KAMd,MAAMC,EAAiB,CAAC,MAAO,MAAO,MAAO,Q,4BG0BpD,IAAqB,EAArB,cAAgD,OAAhD,c,oBA+EY,KAAAX,UAA2B,EA5Dd,gBACjB,IAAIY,EAUJ,OAPIA,GAD4C,IAA5CxyB,KAAKkxB,SAASvuB,QAAQ2vB,EAAUG,OACpBH,EAAUG,OAC+B,IAA9CzyB,KAAKkxB,SAASvuB,QAAQ2vB,EAAUI,SAC3BJ,EAAUI,QAEVJ,EAAUK,OAGnBH,EAGe,qBACtB,OAAOxyB,KAAKwyB,YAAcF,EAAUI,QAGhB,mBACpB,OAAO1yB,KAAKwyB,YAAcF,EAAUG,MAGlB,iBAClB,GAAIzyB,KAAKkR,SAAU,MAAO,aAE1B,OAAQlR,KAAKgyB,MACb,IAAK,YACD,MAAO,YACX,IAAK,MACD,MAAO,MACX,IAAK,aACD,MAAO,aAEX,MAAM,IAAIhiB,MAAM,wBAA0BhQ,KAAKgyB,MAG7B,eAClB,OAAO,OAAgB/e,mBAAmB,QAGxB,iBAClB,MAAO,GAAGjT,KAAKmxB,cAAcnxB,KAAKwyB,YAGjB,gBACjB,MAA2B,cAApBxyB,KAAKmxB,WAA6B,KAAO,KAG9B,iBAClB,MAA2B,cAApBnxB,KAAKmxB,WAA6B,KAAO,KAG3B,oBACrB,MAA2B,eAApBnxB,KAAKmxB,YAA+BnxB,KAAKkR,SAS5C,UACJ,MAAM0hB,EAAe5yB,KAAKmT,MAAMyf,aAC1BC,EAAe7yB,KAAK8yB,mBAAmBF,GAC7C5yB,KAAK4xB,SAAWiB,EAGZ,mBAAmB9e,GACvB,MAAMgf,EAAShf,EAAGif,QAAQ,qBAC1B,IAAKD,EAAQ,OAAO,EACpB,MAAMlpB,EAAOkK,EAAGhK,wBACVC,EAAa+oB,EAAOhpB,wBACpBkpB,EAAappB,EAAKQ,KAAOL,EAAWK,KAASR,EAAKqpB,QAAUlpB,EAAWkpB,QAAYrpB,EAAKspB,MAAQnpB,EAAWmpB,MAAUtpB,EAAKupB,OAASppB,EAAWopB,MACpJ,OAAOH,EAGW,iBAClB,MAA2B,eAApBjzB,KAAKmxB,YAA+BnxB,KAAK4xB,WA/FpD,gBADC,eAAK,CAAEpsB,KAAMiB,OAAQH,UAAU,K,+BAM7B,gBAHF,eAAK,CACFA,UAAU,EACVd,KAAMiB,U,2BAWV,gBARC,eAAK,CACFjB,KAAM,CAACiB,OAAQ5E,QACfyE,UAAU,EACV+pB,UAAYznB,IACR,MAAMyqB,EAAiC,kBAAVzqB,EAAqB,CAACA,GAAS/G,OAAOwU,OAAOzN,GAC1E,OAAOyqB,EAAcC,MAAMC,GAAOhB,EAAejC,SAASiD,Q,2BAdjD,EAAkB,gBAJtC,eAAU,CACP7sB,WAAY,CAAE8sB,YAAA,EAAaC,WAAA,EAAYC,aAAA,MAGtB,WChC0Y,ICQ3Z,G,UAAY,eACd,EACA5zB,EACAqB,GACA,EACA,KACA,WACA,OAIa,S,2CCnBf,yBAAqmB,EAAG,I","file":"js/chunk-281586b1.29a2dbfe.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading && _vm.brandLinks && _vm.brandLinks.length > 0)?_c('div',{staticClass:\"bg-white p-20 pb-5 text-13\"},[_c('h3',{staticClass:\"font-medium text-16 mb-15\"},[_vm._v(\" \"+_vm._s(_vm.labelHeading)+\" \")]),_vm._l((_vm.brandLinks),function(brand){return _c('CultureAwareRouterLink',{key:brand.url,staticClass:\"theme-text-linkcolor underline hover:no-underline mr-40 mb-15\",attrs:{\"to\":brand.url}},[_vm._v(\" \"+_vm._s(brand.displayName)+\" \")])})],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Prop, Component, Watch } from 'vue-property-decorator';\r\nimport Api from '@/project/http/Api.service';\r\nimport { BrandSearchPages } from '@/project/http/controllers/brandController';\r\nimport dictionaryService from '@/core/translation/dictionary.service';\r\n\r\n@Component\r\nexport default class BrandCategoriesLinks extends Vue {\r\n @Prop()\r\n brandName!: string | null;\r\n\r\n @Prop()\r\n activeBrandCategory!: string;\r\n\r\n loading: boolean = true;\r\n brandLinksData: BrandSearchPages | null = null;\r\n categoryDisplayNames = new Map();\r\n\r\n private async loadBrandLinks() {\r\n if (this.brandName) {\r\n this.brandLinksData = await Api.brand.brandSearchPages(this.brandName);\r\n } else {\r\n this.brandLinksData = null;\r\n }\r\n }\r\n\r\n private async loadCategoryNamesByIds(categoryIds: string[]) {\r\n const categories = await Api.navigation.categories(categoryIds);\r\n if (categories?.names) {\r\n Object.keys(categories.names).forEach((categoryId) => {\r\n this.categoryDisplayNames.set(categoryId, categories.names[categoryId]);\r\n });\r\n }\r\n }\r\n\r\n private async loadCategoryNames() {\r\n let categories: string[] = [];\r\n if (this.brandLinksFiltered?.length) {\r\n this.brandLinksFiltered.forEach(cat => {\r\n if (cat.displayName) {\r\n const firstCategoryId = cat.categoryIds[0];\r\n this.categoryDisplayNames.set(firstCategoryId, cat.displayName);\r\n } else {\r\n categories = categories.concat(cat.categoryIds);\r\n }\r\n });\r\n }\r\n if (categories.length) {\r\n const uniqueCategories = categories.filter((e, i, a) => a.indexOf(e) === i);\r\n await this.loadCategoryNamesByIds(uniqueCategories);\r\n }\r\n }\r\n\r\n private get brandLinks() {\r\n return (!this.loading && this.brandLinksFiltered?.map(link => {\r\n if (!link.categoryIds?.length) return null;\r\n const index = link.categoryIds[0].toString();\r\n const name = this.categoryDisplayNames.get(index);\r\n return {\r\n ...link,\r\n displayName: name\r\n };\r\n })) || null;\r\n }\r\n\r\n private get brandLinksFiltered() {\r\n if (this.brandLinksData?.links && this.brandLinksData.links.length > 0) {\r\n return (this.activeBrandCategory ? this.brandLinksData.links.filter(c => !c.url.endsWith(this.activeBrandCategory)) : this.brandLinksData.links);\r\n }\r\n return null;\r\n }\r\n\r\n private get labelHeading():string {\r\n return dictionaryService.get(this.activeBrandCategory ? 'Brand.BrandOverview.BrandCategories.OtherCategories' : 'Brand.BrandOverview.BrandCategories', [this.brandLinksData?.brandName || '']);\r\n }\r\n\r\n @Watch('brandName', { immediate: true })\r\n async onBrandNameChange(newBrandName: string, oldBrandName: string) {\r\n this.loading = true;\r\n await this.loadBrandLinks();\r\n await this.loadCategoryNames();\r\n this.loading = false;\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!./BrandCategoriesLinks.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!./BrandCategoriesLinks.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BrandCategoriesLinks.vue?vue&type=template&id=2d784060&\"\nimport script from \"./BrandCategoriesLinks.vue?vue&type=script&lang=ts&\"\nexport * from \"./BrandCategoriesLinks.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.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 getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","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!./ProductVideoRender.vue?vue&type=style&index=0&id=0eafe25d&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!./ProductVideoRender.vue?vue&type=style&index=0&id=0eafe25d&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!./ProductDetails.vue?vue&type=style&index=0&id=6a64c629&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!./ProductDetails.vue?vue&type=style&index=0&id=6a64c629&lang=less&scoped=true&\"","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.at` method\n// https://github.com/tc39/proposal-relative-indexing-method\n$({ target: 'Array', proto: true }, {\n at: function at(index) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var relativeIndex = toIntegerOrInfinity(index);\n var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n return (k < 0 || k >= len) ? undefined : O[k];\n }\n});\n\naddToUnscopables('at');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es-x/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n defineProperty(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","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!./ProductDetailsRelatedModels.vue?vue&type=style&index=0&id=2a74a866&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!./ProductDetailsRelatedModels.vue?vue&type=style&index=0&id=2a74a866&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!./ProductDetailsRecommendations.vue?vue&type=style&index=0&id=2e2c522b&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!./ProductDetailsRecommendations.vue?vue&type=style&index=0&id=2e2c522b&lang=less&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"c-dropdown\",class:{'c-dropdown__active': _vm.dropdownActive }},[_c('button',_vm._b({staticClass:\"c-dropdown--button\",class:[{ 'c-dropdown--icon-after' : _vm.iconIsAfter}, _vm.buttonClass],attrs:{\"type\":\"button\"},on:{\"click\":_vm.handleClick}},'button',_vm.$attrs,false),[(_vm.hasIconBefore)?_c('c-icon',{staticClass:\"select-none pointer-events-none\",attrs:{\"name\":_vm.icon}}):_vm._e(),_c('span',{staticClass:\"c-dropdown--text select-none pointer-events-none\"},[_vm._t(\"default\")],2),(_vm.hasIconAfter)?_c('c-icon',{staticClass:\"select-none pointer-events-none\",attrs:{\"name\":_vm.icon}}):_vm._e()],1),_c('transition',{attrs:{\"appear\":\"\",\"enter-active-class\":\"animated dropdownSlideIn u-anim-dur-200\",\"leave-active-class\":\"animated dropdownSlideOut u-anim-dur-200\"}},[(_vm.dropdownActive)?_c('div',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.closeDropdown),expression:\"closeDropdown\"}],staticClass:\"c-dropdown--dropdown bg-white\",style:(_vm.positionStyle)},[_c('button',{staticClass:\"c-dropdown--active-head h-36 lg:h-40 w-full pr-20 flex items-stretch\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.closeDropdown}},[_c('span',{staticClass:\"c-dropdown--active-head-text flex-grow flex items-center text-left select-none pointer-events-none\"},[_vm._t(\"activeHead\")],2),_c('c-icon',{staticClass:\"my-auto select-none pointer-events-none\",attrs:{\"name\":\"close\",\"width\":\"12\",\"height\":\"12\"}})],1),_vm._t(\"dropdown\")],2):_vm._e()]),(_vm.dropdownActive)?_c('transition',{attrs:{\"appear\":\"\",\"enter-active-class\":\"animated fadeIn u-anim-dur-200\",\"leave-active-class\":\"animated fadeOut u-anim-dur-200\"}},[_c('div',{staticClass:\"c-dropdown--shadow\",on:{\"click\":function($event){return _vm.closeDropdown()}}})]):_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\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport IDropdown from '@/project/form/IDropdown';\r\n\r\n@Component\r\nexport default class Dropdown extends Vue implements IDropdown {\r\n @Prop({ type: String, required: false })\r\n private buttonClass!: string;\r\n\r\n @Prop({ type: String, required: false, default: '' })\r\n private icon!: string;\r\n\r\n @Prop({ type: Boolean, required: false, default: false })\r\n private iconIsAfter!: boolean;\r\n\r\n @Prop({ type: Boolean, required: false, default: false })\r\n private positionRight!: boolean;\r\n\r\n private dropdownActive: boolean = false;\r\n\r\n private positionStyle: Partial | null = null;\r\n private setPositionStyle() {\r\n const rect = this.$el.getBoundingClientRect();\r\n const parentRect = this.$el.parentElement!.getBoundingClientRect();\r\n const parentParentRect = this.$el.parentElement!.parentElement!.getBoundingClientRect();\r\n const minWidth = `${parentParentRect.width * 0.6}px`;\r\n const top = Math.abs(parentRect.top - rect.top);\r\n\r\n const direction = this.positionRight ? 'right' : 'left';\r\n\r\n this.positionStyle = {\r\n top: top + 'px',\r\n [direction]: '0',\r\n minWidth\r\n };\r\n }\r\n\r\n public openDropdown() {\r\n this.setPositionStyle();\r\n this.dropdownActive = true;\r\n }\r\n\r\n public closeDropdown() {\r\n this.dropdownActive = false;\r\n this.$emit('close');\r\n }\r\n\r\n get hasIconBefore(): boolean {\r\n return this.icon !== '' && !this.iconIsAfter;\r\n }\r\n\r\n get hasIconAfter(): boolean {\r\n return this.icon !== '' && this.iconIsAfter;\r\n }\r\n\r\n private handleClick() {\r\n this.$emit('click');\r\n\r\n if (!this.dropdownActive) {\r\n this.openDropdown();\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!./Dropdown.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!./Dropdown.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Dropdown.vue?vue&type=template&id=429cd432&scoped=true&\"\nimport script from \"./Dropdown.vue?vue&type=script&lang=ts&\"\nexport * from \"./Dropdown.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Dropdown.vue?vue&type=style&index=0&id=429cd432&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 \"429cd432\",\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!./Dropdown.vue?vue&type=style&index=0&id=429cd432&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!./Dropdown.vue?vue&type=style&index=0&id=429cd432&lang=less&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.details)?_c('ProductDetails',{key:_vm.details.wid,attrs:{\"details\":_vm.details},on:{\"productComplete\":_vm.trackPage}}):(_vm.loading)?_c('div',{staticClass:\"flex-1 relative w-full h-full\"},[_c('SpinnerOverlay',{attrs:{\"show\":\"\",\"delay\":200}})],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.details)?_c('article',{key:_vm.details.wid,staticClass:\"flex flex-col\"},[_c('div',{staticClass:\"bg-white\"},[_c('div',{staticClass:\"o-container only-md:px-0\"},[_c('section',{staticClass:\"md:mb-20 md:pt-30 md:pb-20 md:px-20 bg-white\"},[_c('div',{staticClass:\"flex flex-col md:flex-row mb-20 md:mb-0\"},[_c('div',{staticClass:\"w-full md:p-0 md:pr-20 md:w-1/2\"},[_c('h1',{staticClass:\"text-18 p-20 font-medium pb-15 block md:hidden\"},[_vm._v(\" \"+_vm._s(_vm.details.displayName)+\" \")]),_c('ProductDetailsSlider',{staticClass:\"p-10 md:p-0\",attrs:{\"details\":_vm.details,\"aspect-ratio\":3/2}})],1),_c('div',{staticClass:\"product-details w-full md:pl-20 md:w-1/2\"},[_c('div',{staticClass:\"flex flex-col p-20 md:p-0 md:mb-15\"},[(_vm.hasActiveCampaign || _vm.details.isNew || _vm.isDesignedFor)?_c('section',{staticClass:\"flex flex-row mb-20\"},[(_vm.hasActiveCampaign)?_vm._l((_vm.details.campaigns),function(campaign,index){return _c('CultureAwareRouterLink',{key:index,staticClass:\"flex flex-row items-center bg-yellow-600 px-10 py-2 text-12 text-white font-medium mr-10\",attrs:{\"to\":(\"/campaigns/\" + (campaign.campaignCode))}},[(campaign.showCampaignIcon)?[_c('span',{staticClass:\"mr-10\"},[(!campaign.campaignIconUrl)?_c('c-icon',{attrs:{\"name\":\"tilbud\",\"original\":false,\"width\":\"15\",\"height\":\"15\"}}):_c('div',{staticClass:\"campaign-image\"},[_c('img',{directives:[{name:\"on-error\",rawName:\"v-on-error\"}],attrs:{\"src\":campaign.campaignIconUrl,\"alt\":\"campaign-icon\"}})])],1),_c('span',[_vm._v(\" \"+_vm._s(campaign.description)+\" \")])]:_vm._e()],2)}):_vm._e(),(_vm.details.isNew)?_c('div',{staticClass:\"flex flex-row items-center bg-blue-500 oprema:bg-opremablue-300 px-10 py-2 text-12 text-white font-medium mr-10\"},[_c('c-icon',{attrs:{\"name\":\"newproduct\",\"original\":false,\"width\":\"15\",\"height\":\"15\"}}),_c('span',{staticClass:\"ml-10\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Campaign.NewProduct'))+\" \")])],1):_vm._e()],2):_vm._e(),_c('h1',{staticClass:\"text-18 md:text-34 mb-15 hidden md:block\"},[_vm._v(\" \"+_vm._s(_vm.details.displayName)+\" \")]),(_vm.details.conditionCode)?_c('div',{staticClass:\"p-20 text-13 font-medium bg-blue-400 mb-20\"},[_vm._v(\" \"+_vm._s(_vm.getClassificationCodeDictionary(true))+\" \")]):_vm._e(),_c('div',{staticClass:\"flex flex-wrap\"},[_c('div',{staticClass:\"flex-grow flex-shrink-0 w-full lg:w-2/3\"},[(_vm.mpn)?_c('p',{staticClass:\"flex flex-row items-center text-13 mt-5 relative overflow-hidden\"},[_c('b',{staticClass:\"w-1/3 min-w-min-content md:w-3/12 font-semi-bold\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Info.MPN'))+\" \")]),_c('CopyText',{staticClass:\"w-2/3 md:w-9/12 flex-grow ml-5\"},[_c('span',{staticClass:\"copy-text\"},[_vm._v(\" \"+_vm._s(_vm.mpn)+\" \")])])],1):_vm._e(),(_vm.itemId)?_c('p',{staticClass:\"flex flex-row items-center text-13 relative overflow-hidden\"},[_c('b',{staticClass:\"w-1/3 min-w-min-content md:w-3/12 font-semi-bold\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Info.ItemNumber'))+\" \")]),_c('CopyText',{staticClass:\"w-2/3 md:w-9/12 flex-grow ml-5\"},[_c('span',{staticClass:\"copy-text\"},[_vm._v(\" \"+_vm._s(_vm.itemId)+\" \")])])],1):_vm._e(),(_vm.details.ean)?_c('p',{staticClass:\"flex flex-row items-center text-13 mt-5\"},[_c('b',{staticClass:\"w-1/3 min-w-min-content md:w-3/12 font-semi-bold\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Details.EAN'))+\" \")]),_c('span',{staticClass:\"w-2/3 md:w-9/12 flex-grow ml-10\"},[_vm._v(\" \"+_vm._s(_vm.details.ean)+\" \")])]):_vm._e(),(_vm.details.oem)?_c('p',{staticClass:\"flex flex-row items-center text-13 mt-5\"},[_c('b',{staticClass:\"w-1/3 min-w-min-content md:w-3/12 font-semi-bold\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Info.OemNumber'))+\" \")]),_c('span',{staticClass:\"w-2/3 md:w-9/12 flex-grow ml-10\"},[_c('span',[_vm._v(_vm._s(_vm.details.oem))])])]):_vm._e()]),_c('div',{staticClass:\"flex flex-shrink-0 self-end lg:w-1/3 leading-normal\"},[_c('ProductTileFavorite',{staticClass:\"flex items-center justify-end lg:ml-auto\",attrs:{\"product\":_vm.details,\"is-logged-in\":_vm.isUserLoggedIn}},[_c('span',{staticClass:\"text-13\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.AddToFavorite'))+\" \")])])],1)])]),(_vm.hasProductSeries)?_c('ProductDetailsSeries',{attrs:{\"wid\":_vm.details.wid,\"item-id\":_vm.details.itemId,\"product-series\":_vm.details.productSeries}}):_vm._e(),_c('div',{staticClass:\"bg-gray-300 text-13 leading-large\",class:{ 'mb-15 md:mb-30': !_vm.hasBids, 'mb-15': _vm.hasBids }},[(_vm.hasQuantityDiscounts)?_c('div',{staticClass:\"flex flex-row w-full justify-end\"},[(_vm.hasQuantityDiscounts)?_c('div',{staticClass:\"bg-blue-450 text-11 py-4 px-10 text-white font-medium flex items-center\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Discount.Details.Title'))+\" \")]):_vm._e()]):_vm._e(),_c('div',{staticClass:\"p-20\",class:{ 'pt-10': _vm.hasQuantityDiscounts }},[_c('div',{staticClass:\"flex flex-col md:flex-row\"},[_c('div',{staticClass:\"w-full md:w-1/2 flex mr-10\"},[_c('div',{staticClass:\"flex flex-row md:flex-col lg:flex-row mb-15\"},[(_vm.stockLoaded)?_c('p',{staticClass:\"mr-15 font-semi-bold md:mb-5\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Details.StockLevel'))+\" \")]):_vm._e(),_c('ProductTileStock',{attrs:{\"item-id\":_vm.details.itemId,\"stock\":{ loaded: _vm.stockLoaded, data: _vm.stockData, simpleData: null },\"is-limited-item\":_vm.isLimitedItem,\"is-logged-in\":_vm.isUserLoggedIn,\"show-detailed-stock\":\"\"}})],1)]),_c('ProductDetailsCart',{staticClass:\"flex flex-1 flex-col justify-center mt-20 md:mt-0\",attrs:{\"wid\":_vm.details.wid,\"price\":{ loaded: _vm.pricesLoaded, data: _vm.priceData },\"is-logged-in\":_vm.isUserLoggedIn},on:{\"addToBasketChange\":_vm.trackAddToBasketChange}})],1)])]),(_vm.hasBids)?_c('div',{staticClass:\"text-13 mb-15 md:mb-30 leading-large\"},[_c('div',{staticClass:\"bg-blue-500 oprema:bg-opremablue-300 text-white px-15 py-10 flex items-center\"},[_c('c-icon',{staticClass:\"mr-5\",attrs:{\"name\":\"bid\",\"height\":\"1.3rem\",\"width\":\"1.3rem\"}}),_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Details.Bids.Available'))+\" \"),_c('div',{staticClass:\"flex-1 text-right\"},[_c('CultureAwareRouterLink',{staticClass:\"text-white underline hover:no-underline\",attrs:{\"to\":{ name: _vm.myAccountBidsPage }}},[_c('c-icon',{staticClass:\"sm:hidden\",attrs:{\"name\":\"arrow-right\",\"width\":\"15\",\"height\":\"15\",\"aria-hidden\":\"true\"}}),_c('span',{staticClass:\"hidden sm:block\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Details.Bids.SeeAll'))+\" \")])],1)],1)],1),_c('ProductListTracker',{attrs:{\"products\":_vm.bidsData,\"list-name\":\"bids\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar productImpression = ref.productImpression;\nvar productClick = ref.productClick;\nreturn _vm._l((_vm.bidsData),function(bid,bidIndex){return _c('ProductDetailsBidTile',{key:bidIndex,staticClass:\"bg-gray-300 mb-10\",attrs:{\"product\":bid,\"product-click\":productClick},on:{\"productImpression\":productImpression}})})}}],null,false,1522747274)})],1):_vm._e(),(_vm.partnerLogos.length > 0 && !_vm.hasUserLoggedInBefore)?_c('ProductDetailsPartnerLogos',{staticClass:\"mb-20\",attrs:{\"partners\":_vm.partnerLogos}}):_vm._e(),(_vm.description)?_c('div',{staticClass:\"pim-text mb-20 px-20 pb-5 md:p-0\"},[(_vm.isTranslationEnabled)?_c('button',{staticClass:\"c-product-details--translate theme-text-linkcolor\",class:_vm.descriptionTranslated && 'c-product-details--translate--active',attrs:{\"type\":\"button\"},on:{\"click\":_vm.toggleDescriptionTranslation}},[_c('c-icon',{attrs:{\"name\":\"g-translate\"}}),_c('span',{staticClass:\"c-product-details--translate-text\"},[_vm._v(_vm._s(_vm.labelForTranslateDescription))])],1):_vm._e(),_c('SmartParagraph',{attrs:{\"content\":_vm.description,\"max-characters\":500,\"as-html\":\"\"}},[_c('a',{staticClass:\"cursor-pointer bg-white theme-text-linkcolor no-underline hover:underline\",attrs:{\"href\":\"#description\"},on:{\"click\":_vm.gotoDescription}},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Details.ReadFullDescription'))+\" \")])])],1):_vm._e(),(_vm.bulletPoints)?_c('div',{staticClass:\"ml-35 md:ml-20 mb-20\"},[_c('ul',{staticClass:\"list-disc\"},_vm._l((_vm.bulletPoints),function(bullet,index){return _c('li',{key:index},[_c('p',{domProps:{\"innerHTML\":_vm._s(bullet)}})])}),0)]):_vm._e(),_c('div',{staticClass:\"flex items-center justify-between px-20 md:p-0\"},[(_vm.details.specifications.length > 0)?_c('a',{staticClass:\"theme-text-linkcolor underline cursor-pointer\",attrs:{\"href\":\"#specifications\"},on:{\"click\":_vm.gotoSpecifications}},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Details.Specifications.Navigate'))+\" \"),_c('c-icon',{staticClass:\"w-10 h-10\",attrs:{\"name\":\"arrow-down\"}})],1):_vm._e(),(_vm.isUserLoggedIn && _vm.isStaff)?_c('a',{staticClass:\"theme-text-linkcolor underline cursor-pointer justify-self-end\",attrs:{\"href\":\"\"},on:{\"click\":function($event){$event.preventDefault();return _vm.openReportOverlay.apply(null, arguments)}}},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Details.Report.ReportMistake'))+\" \"),_c('c-icon',{staticClass:\"w-10 h-10\",attrs:{\"name\":\"arrow-right\"}})],1):_vm._e()])],1)]),(_vm.conditions.length > 0)?_c('article',{staticClass:\"mt-20\"},[_c('h2',{staticClass:\"text-16 md:text-24 font-medium pb-20 only-md:px-20\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Details.Conditions'))+\" \")]),_c('ProductListTracker',{attrs:{\"products\":_vm.conditions,\"list-name\":\"conditions\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar productImpression = ref.productImpression;\nvar productClick = ref.productClick;\nreturn _vm._l((_vm.conditions),function(condition,conditionIndex){return _c('div',{key:conditionIndex,staticClass:\"pb-15\"},[_c('ProductTile',{staticClass:\"bg-gray-300\",attrs:{\"product\":condition,\"nested\":\"\",\"product-click\":productClick},on:{\"productImpression\":productImpression}})],1)})}}],null,false,1558168479)})],1):_vm._e()])])]),_c('div',[_c('div',{staticClass:\"o-container only-md:px-0\"},[_c('section',{staticClass:\"flex flex-col mt-20\"},[_c('ProductDetailsRelations',{staticClass:\"mb-20\",attrs:{\"product\":_vm.details}}),_c('ProductDetailsRelatedModels',{staticClass:\"mb-20\",attrs:{\"item-id\":_vm.details.itemId}}),(_vm.details.specifications.length > 0)?_c('ProductDetailsSpecifications',{ref:\"specifications\",staticClass:\"mb-20\",attrs:{\"specifications\":_vm.details.specifications}}):_vm._e(),(_vm.productDetailsPage)?_c('ProductDetailsRecommendations',{staticClass:\"mb-20\",attrs:{\"product-id\":_vm.details.wid,\"product-details-page\":_vm.productDetailsPage}}):_vm._e(),(_vm.description)?_c('article',{ref:\"description\",staticClass:\"mb-20\",attrs:{\"id\":\"description\"}},[_c('h2',{staticClass:\"text-16 md:text-24 pb-20 only-md:px-20\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Details.Description'))+\" \")]),_c('ReadMore',{ref:\"readMoreDescription\",staticClass:\"bg-white\",attrs:{\"min-height\":300,\"animation-time\":150,\"button-class\":\"w-full\",\"with-fade\":\"\"}},[_c('div',{staticClass:\"flex flex-col flex-wrap p-20\"},[_c('h3',{staticClass:\"font-medium text-16\"},[_vm._v(\" \"+_vm._s(_vm.shortDescription)+\" \")]),_c('p',{staticClass:\"pim-text mt-15\",domProps:{\"innerHTML\":_vm._s(_vm.description)}})]),_c('div',{attrs:{\"slot\":\"collapse\"},slot:\"collapse\"},[_c('div',{staticClass:\"cursor-pointer font-medium text-15 bg-white theme-text-linkcolor p-12 flex items-center justify-center\"},[_c('c-icon',{staticClass:\"mr-10\",attrs:{\"height\":\"16\",\"width\":\"16\",\"name\":\"minus-big\"}}),_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Details.ShowLess'))+\" \")],1)]),_c('div',{attrs:{\"slot\":\"expand\"},slot:\"expand\"},[_c('div',{staticClass:\"cursor-pointer font-medium text-15 bg-white theme-text-linkcolor p-12 flex items-center justify-center\"},[_c('c-icon',{staticClass:\"mr-10\",attrs:{\"height\":\"16\",\"width\":\"16\",\"name\":\"plus-big\"}}),_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Details.ShowMore'))+\" \")],1)])])],1):_vm._e(),(_vm.details.documents.length)?_c('article',{staticClass:\"mb-20\"},[_c('h2',{staticClass:\"text-16 md:text-24 pb-20 only-md:px-20\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Details.Description.Documents'))+\" \")]),_c('ReadMore',{staticClass:\"flex flex-col flex-wrap truncate bg-white p-20\",attrs:{\"min-items\":5,\"animation-time\":150,\"button-class\":\"w-full\",\"with-fade\":\"\"}},[_vm._l((_vm.details.documents),function(document,documentIndex){return _c('div',{key:documentIndex,staticClass:\"py-15\"},[_c('a',{staticClass:\"flex flex-row items-center mb-10\",attrs:{\"href\":document.uri,\"target\":\"_blank\",\"download\":\"\"}},[(!document.thumbnailUrl)?_c('c-icon',{attrs:{\"name\":\"pdf\",\"height\":\"32\",\"width\":\"32\"}}):_c('div',{staticClass:\"product-details-pdf\"},[_c('img',{attrs:{\"src\":document.thumbnailUrl,\"alt\":document.extension}})]),_c('p',{staticClass:\"ml-15 capitalize theme-text-linkcolor\"},[_c('span',{staticClass:\"underline\"},[_vm._v(\" \"+_vm._s(document.name)+\" \"),(document.languages.length > 0)?_c('span',[_c('span',[_vm._v(\"(\")]),_vm._l((document.languages),function(lang,index){return [_c('span',{key:lang},[_vm._v(_vm._s(_vm._f(\"t\")(_vm.siteLanguageLabel(lang)))),(index < document.languages.length - 1)?[_vm._v(\", \")]:_vm._e()],2)]}),_c('span',[_vm._v(\")\")])],2):_vm._e()]),_c('span',{staticClass:\"text-gray-800 ml-15\"},[_vm._v(\" \"+_vm._s(document.description)+\" \")])])],1)])}),_c('div',{attrs:{\"slot\":\"collapse\"},slot:\"collapse\"},[_c('div',{staticClass:\"cursor-pointer font-medium text-15 bg-white theme-text-linkcolor p-12 flex items-center justify-center\"},[_c('c-icon',{staticClass:\"mr-10\",attrs:{\"height\":\"16\",\"width\":\"16\",\"name\":\"minus-big\"}}),_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Details.ShowLess'))+\" \")],1)]),_c('div',{attrs:{\"slot\":\"expand\"},slot:\"expand\"},[_c('div',{staticClass:\"cursor-pointer font-medium text-15 bg-white theme-text-linkcolor p-12 flex items-center justify-center\"},[_c('c-icon',{staticClass:\"mr-10\",attrs:{\"height\":\"16\",\"width\":\"16\",\"name\":\"plus-big\"}}),_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Details.ShowMore'))+\" \")],1)])],2)],1):_vm._e(),(_vm.details.reasonsToBuy.length > 0)?_c('ProductDetailsReasonsToBuy',{staticClass:\"mb-20\",attrs:{\"reasons-to-buy\":_vm.details.reasonsToBuy}}):_vm._e(),_c('p',{staticClass:\"text-13 mb-20 whitespace-pre-wrap only-md:px-20\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Details.IsOriginIceCat'))+\" \")])],1),_c('BrandCategoriesLinks',{attrs:{\"brand-name\":_vm.details.brand}})],1)]),(_vm.productSchemaJson)?_c('script',{attrs:{\"type\":\"application/ld+json\"},domProps:{\"innerHTML\":_vm._s(_vm.productSchemaJson)}}):_vm._e(),(_vm.productSchemaQuestionJson)?_c('script',{attrs:{\"type\":\"application/ld+json\"},domProps:{\"innerHTML\":_vm._s(_vm.productSchemaQuestionJson)}}):_vm._e()]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { StockInformationViewObject, StockLocationTypeViewObject } from '@/types/apiServerContract';\r\nimport dictionaryService from '@/core/translation/dictionary.service';\r\n\r\nconst ProductDeliveryCodes = new Map(\r\n [\r\n [StockLocationTypeViewObject.Local, 'Product.Delivery.Local'],\r\n [StockLocationTypeViewObject.Remote, 'Product.Delivery.Remote'],\r\n [StockLocationTypeViewObject.InComing, 'Product.Delivery.InComing']\r\n ]\r\n);\r\n\r\nclass ProductDeliveryService {\r\n public getProductDeliveryCodeDictionary(stock: readonly StockInformationViewObject[]): string | null {\r\n if (!stock || stock.length === 0) return null;\r\n\r\n const isLocal = stock.some(x => x.locationType === StockLocationTypeViewObject.Local);\r\n const isRemote = stock.some(x => x.locationType === StockLocationTypeViewObject.Remote);\r\n const isIncoming = stock.some(x => x.locationType === StockLocationTypeViewObject.InComing);\r\n\r\n if (!isLocal && !isRemote && !isIncoming) {\r\n return null;\r\n }\r\n\r\n const stockType = isLocal ? StockLocationTypeViewObject.Local : isRemote ? StockLocationTypeViewObject.Remote : isIncoming ? StockLocationTypeViewObject.InComing : null;\r\n if (stockType == null) {\r\n return null;\r\n }\r\n\r\n const productDeliveryCode = ProductDeliveryCodes.get(stockType);\r\n if (!productDeliveryCode) { throw new Error(`Unknown delivery for stock type ${stockType}!`); }\r\n\r\n return dictionaryService.get(productDeliveryCode);\r\n }\r\n}\r\n\r\nexport default new ProductDeliveryService();\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"relative h-0 block mb-10 md:mb-0\",style:(_vm.style)},[_c('div',{staticClass:\"aspect-ratio-container\"},[(_vm.details && _vm.details.brandLogos && _vm.imageLoaded)?_c('CultureAwareRouterLink',{staticClass:\"brandlogo\",class:{'brandlogo--wide' : _vm.imageMode === 'wide', 'brandlogo--square' : _vm.imageMode === 'square', 'brandlogo--tall' : _vm.imageMode === 'tall'},attrs:{\"to\":{ name: _vm.brandPage, params: { brandName: _vm.details.brand } }}},[_c('img',{attrs:{\"srcset\":((_vm.details.brandLogos.brandLogoUrl125px) + \" 1x, \" + (_vm.details.brandLogos.brandLogoUrl250px) + \" 2x\"),\"alt\":_vm.details.brand}})]):_vm._e(),(_vm.assetCount > 0 && _vm.renderMainSlider && _vm.sliderOptions)?_c('Swiper',{ref:\"slider\",staticClass:\"w-full h-full\",attrs:{\"options\":_vm.sliderOptions},on:{\"click\":_vm.showOverlay,\"ready\":function($event){_vm.mainSliderActive = true}},scopedSlots:_vm._u([{key:\"button-prev\",fn:function(){return [_c('button',{staticClass:\"custom-swiper-button-prev md:invisible md:pointer-events-none\",class:_vm.prevButtonSelector,attrs:{\"type\":\"button\",\"aria-label\":_vm._f(\"t\")('Generic.Prev')}},[_c('c-icon',{attrs:{\"name\":\"arrow-thin-left\",\"width\":\"25\",\"height\":\"25\"}})],1)]},proxy:true},{key:\"button-next\",fn:function(){return [_c('button',{staticClass:\"custom-swiper-button-next md:invisible md:pointer-events-none\",class:_vm.nextButtonSelector,attrs:{\"type\":\"button\",\"aria-label\":_vm._f(\"t\")('Generic.Next')}},[_c('c-icon',{attrs:{\"name\":\"arrow-thin-right\",\"width\":\"25\",\"height\":\"25\"}})],1)]},proxy:true},{key:\"pagination\",fn:function(){return [_c('div',{staticClass:\"swiper-pagination md:hidden md:pointer-events-none\"})]},proxy:true}],null,false,2241503181)},[_vm._l((_vm.productImages),function(image){return _c('SwiperSlide',{key:image.uri,staticClass:\"cursor-pointer\"},[_c('div',{staticClass:\"w-full h-full relative p-10\"},[_c('ProductDetailsImageVideo',{attrs:{\"title\":\"View fullscreen\",\"url\":image.uri,\"image-name\":_vm.productName,\"media-mode\":\"pdp\"}})],1)])}),_vm._l((_vm.productVideos),function(video){return _c('SwiperSlide',{key:video.uri,staticClass:\"cursor-pointer\"},[_c('div',{staticClass:\"w-full h-full relative p-10\"},[_c('ProductDetailsImageVideo',{attrs:{\"url\":video.uri,\"is-video\":\"\",\"media-mode\":\"pdp\"}})],1)])})],2):(_vm.fallbackImage)?_c('div',{staticClass:\"flex justify-center items-center w-full h-full bg-gray-400\"},[_c('img',{staticClass:\"fallback-image\",attrs:{\"alt\":\"category fallback image\",\"src\":_vm.fallbackImage.uri}})]):_vm._e()],1)]),(!_vm.isMobile)?_c('div',[(_vm.showThumbNails)?_c('div',{staticClass:\"product-thumbnail-carousel mb-10 mt-10\"},[_c('Swiper',{ref:\"thumbs\",staticClass:\"carousel mx-auto\",attrs:{\"options\":_vm.sliderThumnailOptions},on:{\"ready\":function($event){_vm.renderMainSlider = true}}},[_vm._l((_vm.productImages),function(image){return _c('SwiperSlide',{key:image.uri,staticClass:\"carousel-thumb cursor-pointer w-full h-full px-10\"},[_c('ProductDetailsImageVideo',{attrs:{\"url\":image.uri,\"image-name\":_vm.productName,\"media-mode\":\"thumbnail\"}})],1)}),_vm._l((_vm.productVideos),function(video){return _c('SwiperSlide',{key:video.uri,staticClass:\"carousel-thumb cursor-pointer relative w-full h-full outline-none px-10\"},[_c('div',{staticClass:\"absolute inset-0 z-2 cursor-pointer\"}),_c('ProductDetailsImageVideo',{attrs:{\"url\":video.uri,\"media-mode\":\"thumbnail\",\"is-video\":\"\"}})],1)})],2),_c('button',{staticClass:\"custom-swiper-button-prev\",class:_vm.prevButtonSelector,attrs:{\"type\":\"button\"}},[_c('c-icon',{attrs:{\"name\":\"arrow-left\",\"width\":\"25\",\"height\":\"25\"}})],1),_c('button',{staticClass:\"custom-swiper-button-next\",class:_vm.nextButtonSelector,attrs:{\"type\":\"button\"}},[_c('c-icon',{attrs:{\"name\":\"arrow-right\",\"width\":\"25\",\"height\":\"25\"}})],1)],1):_vm._e()]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { BrandLogoViewModel, ImageViewObject, VideoViewObject } from '@/types/apiServerContract';\r\nimport { AbstractModalService } from '@/core/modals/AbstractModalService';\r\n\r\nclass ProductDetailsMediaOverlayService extends AbstractModalService {\r\n public show(\r\n images: ImageViewObject[],\r\n videos: VideoViewObject[],\r\n brandLogos: BrandLogoViewModel | undefined,\r\n brandName: string | undefined,\r\n aspectRatio: number,\r\n productName: string,\r\n thumbs: any, // Swiper\r\n activeIndex: number) {\r\n return this.showModal({\r\n component: () => import(\r\n /* webpackPrefetch: true */\r\n '@/project/product/product-details/ProductDetailsMediaOverlay.vue'),\r\n componentAttrs: {\r\n images,\r\n videos,\r\n brandLogos,\r\n brandName,\r\n aspectRatio,\r\n productName,\r\n thumbs,\r\n activeIndex\r\n },\r\n options: {\r\n contentAutoScroll: false,\r\n contentMaxHeight: false,\r\n disableBodyScroll: true,\r\n placement: 'center',\r\n showCloseButton: true,\r\n usePanelWrapper: false,\r\n wide: true\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default new ProductDetailsMediaOverlayService();\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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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, Prop, Component } from 'vue-property-decorator';\r\nimport {\r\n ProductDetailsViewModel,\r\n ImageViewObject,\r\n VideoViewObject,\r\n CategoryFallbackViewObject\r\n} from '@/types/apiServerContract';\r\nimport breakpointsState from '@/core/responsive/breakpoints/breakpointsState.observable';\r\nimport ProductDetailsImageVideo from './ProductDetailsImageVideo.vue';\r\nimport { PageName } from '@/router/routes/constants';\r\nimport { MAX_SM } from '@/core/config/breakpointConfig';\r\nimport productDetailsMediaOverlayService from '@/project/modals/overlays/ProductDetailsMediaOverlay.service';\r\nimport botService from '@/project/site/bot.service';\r\n\r\nconst THUMBNAIL_SLIDES_PER_VIEW = 3;\r\nconst isBot: boolean = !!((botService.uaIsPrerender() || botService.uaIsBot()));\r\n\r\n@Component({\r\n components: { ProductDetailsImageVideo },\r\n $reactiveRefs: ['slider', 'thumbs']\r\n})\r\nexport default class ProductDetailsSlider extends Vue {\r\n @Prop({ required: true }) details!: ProductDetailsViewModel;\r\n\r\n /* Can take a single aspectratio number, or an object with a number pr. breakpoint. If a 'default' is provided is will be used when no breakpoint is active:\r\n {\r\n xs: 16/9,\r\n min-sm,max-md: 4/3\r\n default: 1/2\r\n }\r\n */\r\n @Prop({ type: [Number, Object], default: 16 / 9 })\r\n private aspectRatio!: number | { [breakpoint: string]: number};\r\n\r\n // Slider\r\n private renderMainSlider: boolean = false;\r\n private mainSliderActive: boolean = false;\r\n private overlayActive: boolean = false;\r\n\r\n private get style(): object {\r\n const padding = `${(100 / this.activeAspectRatio).toFixed(2)}%`;\r\n return { paddingTop: padding };\r\n }\r\n\r\n private get productName() {\r\n return this.details.displayName + ' - ' + this.details.wid;\r\n }\r\n\r\n private get assetCount(): number {\r\n return (this.productImages.length + this.productVideos.length);\r\n }\r\n\r\n private get activeAspectRatio(): number {\r\n if (typeof this.aspectRatio === 'number') {\r\n return this.aspectRatio;\r\n }\r\n\r\n // Else - object with aspect-ratio pr. breakpoint-def.\r\n\r\n // Find first active breakpoint-def\r\n const activeBpDef = Object.keys(this.aspectRatio).find(bpDef => breakpointsState.isBreakpointActive(bpDef));\r\n // Use active or default\r\n const result = activeBpDef ? this.aspectRatio[activeBpDef] : this.aspectRatio.default;\r\n if (!result) {\r\n throw new Error('Provide a breakpoint-definition for all cases or a default');\r\n }\r\n return result;\r\n }\r\n\r\n private get prevButtonSelector() {\r\n return 'custom-swiper-button-prev-' + this.details.wid;\r\n }\r\n\r\n private get nextButtonSelector() {\r\n return 'custom-swiper-button-next-' + this.details.wid;\r\n }\r\n\r\n protected get isMobile() {\r\n return breakpointsState.isBreakpointActive(MAX_SM);\r\n }\r\n\r\n private get showThumbNails() {\r\n return !this.isMobile && this.assetCount > 1;\r\n }\r\n\r\n private get sliderOptions() {\r\n if (this.showThumbNails && !this.$refs.thumbs) {\r\n return null;\r\n }\r\n\r\n return ({\r\n speed: 1,\r\n initialSlide: 0,\r\n slidesPerView: 1,\r\n slidesPerGroup: 1,\r\n loop: false,\r\n loopedSlides: 1,\r\n loopFillGroupWithBlank: false,\r\n watchSlidesVisibility: true,\r\n watchOverflow: true,\r\n setWrapperSize: true,\r\n pagination: {\r\n el: '.swiper-pagination',\r\n clickable: true\r\n },\r\n navigation: {\r\n nextEl: '.' + this.nextButtonSelector,\r\n prevEl: '.' + this.prevButtonSelector\r\n },\r\n grabCursor: true,\r\n allowTouchMove: true,\r\n breakpoints: {\r\n 720: {\r\n grabCursor: false,\r\n allowTouchMove: false,\r\n simulateTouch: false\r\n }\r\n },\r\n thumbs: {\r\n swiper: this.showThumbNails && this.$refs.thumbs && this.$refs.thumbs.$el.swiper\r\n }\r\n });\r\n };\r\n\r\n private get sliderThumnailOptions() {\r\n return {\r\n initialSlide: 0,\r\n slidesPerView: THUMBNAIL_SLIDES_PER_VIEW,\r\n slidesPerGroup: 1,\r\n spaceBetween: 10,\r\n grabCursor: 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 height: '140px',\r\n keyboard: {\r\n enabled: true,\r\n onlyInViewPort: true\r\n }\r\n };\r\n }\r\n\r\n $refs!: Vue['$refs'] & {\r\n slider: any, // todo: typesafety\r\n thumbs: any\r\n };\r\n\r\n showOverlay() {\r\n if (this.isMobile) return;\r\n\r\n const index = this.$refs.slider.$swiper.activeIndex;\r\n\r\n productDetailsMediaOverlayService.show(\r\n this.productImages,\r\n this.productVideos,\r\n this.details.brandLogos,\r\n this.details.brand,\r\n 16 / 9,\r\n this.productName,\r\n this.$refs.slider,\r\n index);\r\n }\r\n\r\n get productImages(): ImageViewObject[] {\r\n return this.details?.images ?? [];\r\n }\r\n\r\n get productVideos(): VideoViewObject[] {\r\n return this.details?.videoes ?? [];\r\n }\r\n\r\n private get brandPage() {\r\n return PageName.BRAND;\r\n }\r\n\r\n private created() {\r\n if (this.details.brandLogos) {\r\n // Unfortunately we don't receive image dimensions on the brandLogo object\r\n // Therefore we load a new image based on the uri to get the dimensions when the image has loaded\r\n this.imageDimensions(this.details.brandLogos.brandLogoUrl125px);\r\n }\r\n\r\n // Always render it if thumbnails isnt needed\r\n this.renderMainSlider = !this.showThumbNails;\r\n }\r\n\r\n private imageMode: 'wide' | 'tall' | 'square' = 'wide';\r\n private imageLoaded: boolean = isBot; // if bot, set imageLoaded = true, else false and let it trigger when images are loaded\r\n\r\n private imageDimensions(url) {\r\n const img = new Image();\r\n\r\n img.src = url;\r\n\r\n img.onload = () => {\r\n if (img.width === img.height) {\r\n this.imageMode = 'square';\r\n } else if (img.width > img.height) {\r\n this.imageMode = 'wide';\r\n } else {\r\n this.imageMode = 'tall';\r\n }\r\n\r\n this.imageLoaded = true;\r\n };\r\n }\r\n\r\n private get fallbackImage(): CategoryFallbackViewObject | ImageViewObject | null {\r\n let categoryFallbackImage: CategoryFallbackViewObject | null = null;\r\n if (this.details.categoryFallbackImageMap) {\r\n Object.keys(this.details.categoryFallbackImageMap).forEach((index, key) => {\r\n const item = this.details.categoryFallbackImageMap[index];\r\n if (!categoryFallbackImage && item.isDefaultFallback) {\r\n categoryFallbackImage = item;\r\n }\r\n });\r\n }\r\n // Return categoryFallbackImageMap or old categoryFallbackImage (for legacy only) or null\r\n return categoryFallbackImage || this.details?.categoryFallbackImage || 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!./ProductDetailsSlider.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!./ProductDetailsSlider.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductDetailsSlider.vue?vue&type=template&id=3c4405e6&scoped=true&\"\nimport script from \"./ProductDetailsSlider.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductDetailsSlider.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ProductDetailsSlider.vue?vue&type=style&index=0&id=3c4405e6&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 \"3c4405e6\",\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',{attrs:{\"id\":\"specifications\"}},[_c('h2',{staticClass:\"text-16 md:text-24 pb-20 only-md:px-20\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Details.Specifications'))+\" \")]),_c('ReadMore',{ref:\"readmore\",staticClass:\"bg-white pt-20 px-10 pb-5\",attrs:{\"min-height\":300,\"animation-time\":150,\"button-class\":\"w-full\",\"with-fade\":\"\"}},[_vm._l((_vm.specifications),function(spec,specIdx){return _c('div',{key:specIdx,staticClass:\"flex flex-col mb-20 md:flex-row\"},[_c('h3',{staticClass:\"text-14 only-md:px-10 w-full md:w-1/5 md:text-16 font-medium md:pt-9 md:pb-0 pb-15\"},[_vm._v(\" \"+_vm._s(spec.displayName)+\" \")]),_c('div',{staticClass:\"w-full\"},_vm._l((spec.features),function(feature,featureIdx){return _c('div',{key:featureIdx,staticClass:\"flex flex-col mb-5 md:flex-row last:mb-0\"},[_c('h4',{staticClass:\"w-full md:w-1/5 px-10 pt-10 md:p-10 md:py-7 md:mr-5 font-semi-bold bg-gray-300 text-13\"},[_vm._v(\" \"+_vm._s(feature.displayName)+\" \")]),_c('div',{staticClass:\"w-auto flex-1 px-10 pt-5 pb-10 md:p-10 md:py-7 bg-gray-300 text-13\"},[_c('CultureAwareRouterLink',{class:{ 'theme-text-linkcolor underline hover:no-underline focus:no-underline': !!feature.url },attrs:{\"to\":feature.url}},[(feature.value)?_c('p',[_vm._v(\" \"+_vm._s(feature.value)+\" \"+_vm._s(_vm.getUnit(feature.unit))+\" \")]):_vm._e(),(feature.values && feature.values.length)?_c('p',[_vm._v(\" \"+_vm._s(feature.values.join(', '))+\" \")]):_vm._e()])],1)])}),0)])}),_c('div',{attrs:{\"slot\":\"collapse\"},slot:\"collapse\"},[_c('div',{staticClass:\"cursor-pointer font-medium text-15 bg-white theme-text-linkcolor p-12 flex items-center justify-center\"},[_c('c-icon',{staticClass:\"mr-10\",attrs:{\"height\":\"16\",\"width\":\"16\",\"name\":\"minus-big\"}}),_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Details.ShowLess'))+\" \")],1)]),_c('div',{attrs:{\"slot\":\"expand\"},slot:\"expand\"},[_c('div',{staticClass:\"cursor-pointer font-medium text-15 bg-white theme-text-linkcolor p-12 flex items-center justify-center\"},[_c('c-icon',{staticClass:\"mr-10\",attrs:{\"height\":\"16\",\"width\":\"16\",\"name\":\"plus-big\"}}),_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Details.ShowMore'))+\" \")],1)])],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\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport { SpecificationViewObject } from '@/types/apiServerContract';\r\nimport dictionaryService from '@/core/translation/dictionary.service';\r\n\r\nimport ReadMore from '@/core/ui-components/ReadMore.vue';\r\n\r\n@Component({\r\n components: { ReadMore }\r\n})\r\nexport default class ProductDetailsSpecifications extends Vue {\r\n @Prop({ required: true, type: Array })\r\n private specifications!: SpecificationViewObject[];\r\n\r\n public open() {\r\n this.$refs.readmore.open();\r\n }\r\n\r\n public close() {\r\n this.$refs.readmore.close();\r\n }\r\n\r\n getUnit(unit: string) {\r\n return dictionaryService.translate(unit);\r\n }\r\n\r\n public $refs!: {\r\n readmore: ReadMore;\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!./ProductDetailsSpecifications.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!./ProductDetailsSpecifications.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductDetailsSpecifications.vue?vue&type=template&id=54404cd3&\"\nimport script from \"./ProductDetailsSpecifications.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductDetailsSpecifications.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.relatedModelGroups.length > 0)?_c('article',{attrs:{\"id\":\"compatibility\"}},[_c('h2',{staticClass:\"text-16 md:text-24 pb-20 only-md:px-20\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Details.ModelRelations'))+\" \")]),_c('ReadMore',{staticClass:\"bg-white px-10 py-5\",attrs:{\"min-height\":200,\"animation-time\":200,\"animation-time-mod\":0,\"button-class\":\"w-full\",\"with-fade\":\"\"}},[_vm._l((_vm.relatedModelGroups),function(group,groupIdx){return _c('div',{key:groupIdx},[_c('h3',{staticClass:\"text-14 only-md:px-10 md:text-16 font-medium py-15\"},[_vm._v(\" \"+_vm._s(group.brandName)+\" \")]),_vm._l((group.relatedModels),function(model,modelIdx){return _c('div',{key:modelIdx,staticClass:\"flex flex-col mb-10 md:flex-row text-13\"},[_c('h4',{staticClass:\"w-full md:w-1/5 px-10 pt-20 md:p-10 md:mr-10 font-semi-bold bg-gray-300\"},[_vm._v(\" \"+_vm._s(model.brandSeries)+\" \")]),_c('div',{staticClass:\"flex-1 px-10 pt-5 pb-20 md:p-10 bg-gray-300 leading-large\"},[_vm._l((model.relations),function(relation,relationIdx){return [_c('CultureAwareRouterLink',{key:relationIdx,staticClass:\"theme-text-linkcolor hover:underline leading-none\",attrs:{\"to\":{\n path: _vm.productGuideSpecificGuidePage,\n query: {\n 'pg-mode': 'step-by-step',\n brand: group.brandName,\n series: model.brandSeries,\n model: relation.modelName\n }\n }}},[_vm._v(\" \"+_vm._s(relation.modelName)+\" \")]),(relationIdx < model.relations.length - 1)?_c('span',{key:(relationIdx + \"-komma\"),staticClass:\"pr-2\"},[_vm._v(\", \")]):_vm._e()]}),(model.overflow && !_vm.hasFetchedFullSection(group.brandName, model.brandSeries))?_c('div',{staticClass:\"section-fetch-button cursor-pointer font-medium text-15 bg-white theme-text-linkcolor p-12 flex items-center justify-center\",on:{\"click\":function($event){return _vm.getRelatedModelsSection(group.brandName, model.brandSeries)}}},[(_vm.isLoadingSection(group.brandName, model.brandSeries))?_c('div',[_c('spinner-overlay',{attrs:{\"show\":\"\",\"delay\":0}}),_c('span',{staticClass:\"invisible pointer-events-none\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Details.ShowMore'))+\" \")])],1):[_c('c-icon',{staticClass:\"mr-10\",attrs:{\"height\":\"16\",\"width\":\"16\",\"name\":\"plus-big\"}}),_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Details.ShowMore'))+\" \")]],2):_vm._e()],2)])})],2)}),_c('div',{attrs:{\"slot\":\"collapse\"},slot:\"collapse\"},[_c('div',{staticClass:\"cursor-pointer font-medium text-15 bg-white theme-text-linkcolor p-12 flex items-center justify-center\"},[_c('c-icon',{staticClass:\"mr-10\",attrs:{\"height\":\"16\",\"width\":\"16\",\"name\":\"minus-big\"}}),_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Details.ShowLess'))+\" \")],1)]),_c('div',{attrs:{\"slot\":\"expand\"},slot:\"expand\"},[_c('div',{staticClass:\"cursor-pointer font-medium text-15 bg-white theme-text-linkcolor p-12 flex items-center justify-center\"},[_c('c-icon',{staticClass:\"mr-10\",attrs:{\"height\":\"16\",\"width\":\"16\",\"name\":\"plus-big\"}}),_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Details.ShowMore'))+\" \")],1)])],2)],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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 { RelatedModelsGroupViewObject } from '@/types/apiServerContract';\r\n\r\nimport ReadMore from '@/core/ui-components/ReadMore.vue';\r\nimport serverContextService from '@/core/serverContext.service';\r\nimport Api from '@/project/http/Api.service';\r\nimport SpinnerOverlay from '@/project/spinners/SpinnerOverlay.vue';\r\n\r\n@Component({\r\n components: { ReadMore, SpinnerOverlay }\r\n})\r\nexport default class ProductDetailsRelatedModels extends Vue {\r\n @Prop({ required: true, type: String })\r\n private itemId!: string;\r\n\r\n private relatedModelGroups: readonly RelatedModelsGroupViewObject[] = [];\r\n private relatedModelsLoaded: boolean = false;\r\n\r\n private fetched: string[] = [];\r\n private loading: string[] = [];\r\n\r\n private hasFetchedFullSection(brandName: string, brandSeries: string) {\r\n const key = `${brandName}-${brandSeries}`;\r\n return this.fetched.indexOf(key) >= 0;\r\n }\r\n\r\n private isLoadingSection(brandName: string, brandSeries: string) {\r\n const key = `${brandName}-${brandSeries}`;\r\n return this.loading.indexOf(key) >= 0;\r\n }\r\n\r\n private get productGuideSpecificGuidePage() {\r\n return serverContextService?.settings?.productGuideSpecificGuidePage;\r\n }\r\n\r\n private async getRelatedModels() {\r\n try {\r\n const result = await Api.product.relatedModels(this.itemId);\r\n this.relatedModelGroups = Object.freeze(result.relatedModelGroups);\r\n } catch {\r\n } finally {\r\n this.relatedModelsLoaded = true;\r\n }\r\n }\r\n\r\n private async getRelatedModelsSection(brandName: string, brandSeries: string) {\r\n const key = `${brandName}-${brandSeries}`;\r\n if (this.fetched.indexOf(key) >= 0) { return; }\r\n\r\n this.loading.push(key);\r\n\r\n try {\r\n const result = await Api.product.relatedModelsSection(this.itemId, brandName, brandSeries);\r\n const section = this.relatedModelGroups.find(x => x.brandName === brandName);\r\n if (section) {\r\n const models = section.relatedModels.find(x => x.brandSeries === brandSeries);\r\n if (models) {\r\n models.relations = result;\r\n }\r\n }\r\n\r\n this.relatedModelGroups = Object.freeze([...this.relatedModelGroups]);\r\n this.fetched.push(key);\r\n } finally {\r\n this.relatedModelsLoaded = true;\r\n this.loading.splice(this.loading.indexOf(key));\r\n }\r\n }\r\n\r\n created() {\r\n this.getRelatedModels();\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!./ProductDetailsRelatedModels.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!./ProductDetailsRelatedModels.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductDetailsRelatedModels.vue?vue&type=template&id=2a74a866&scoped=true&\"\nimport script from \"./ProductDetailsRelatedModels.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductDetailsRelatedModels.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ProductDetailsRelatedModels.vue?vue&type=style&index=0&id=2a74a866&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 \"2a74a866\",\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-col\"},[_c('h2',{staticClass:\"text-16 md:text-24 font-medium pb-20 only-xs:px-20\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Details.ReasonsToBuy'))+\" \")]),_c('read-more',{staticClass:\"bg-white pt-20 px-20\",attrs:{\"min-items\":2,\"animation-time\":150,\"button-class\":\"w-full\",\"with-fade\":\"\"}},[_vm._l((_vm.reasonsToBuy),function(reason){return _c('section',{key:reason.title,staticClass:\"flex flex-col items-center md:items-start md:flex-row mb-30\"},[_c('div',{staticClass:\"reasons-to-buy-image flex-shrink-0 order-2 md:order-1 mt-5\"},[_c('img',{directives:[{name:\"on-error\",rawName:\"v-on-error\"}],attrs:{\"src\":reason.imageUrl,\"alt\":reason.title}})]),_c('div',{staticClass:\"flex flex-col md:ml-15 lg:w-1/3 lg:ml-20 order-1 md:order-2\"},[_c('h2',{staticClass:\"xs:text-15 md:text-20 font-medium\"},[_vm._v(\" \"+_vm._s(reason.title)+\" \")]),_c('p',{staticClass:\"text-12 md:text-13\",domProps:{\"innerHTML\":_vm._s(reason.bodyText)}})])])}),_c('div',{attrs:{\"slot\":\"collapse\"},slot:\"collapse\"},[_c('div',{staticClass:\"cursor-pointer font-medium text-15 bg-white theme-text-linkcolor p-12 flex items-center justify-center\"},[_c('c-icon',{staticClass:\"mr-10\",attrs:{\"height\":\"16\",\"width\":\"16\",\"name\":\"minus-big\"}}),_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Details.ShowLess'))+\" \")],1)]),_c('div',{attrs:{\"slot\":\"expand\"},slot:\"expand\"},[_c('div',{staticClass:\"cursor-pointer font-medium text-15 bg-white theme-text-linkcolor p-12 flex items-center justify-center\"},[_c('c-icon',{staticClass:\"mr-10\",attrs:{\"height\":\"16\",\"width\":\"16\",\"name\":\"plus-big\"}}),_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Details.ShowMore'))+\" \")],1)])],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\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport { ReasonToBuyViewObject } from '@/types/apiServerContract';\r\n\r\nimport ReadMore from '@/core/ui-components/ReadMore.vue';\r\n\r\n@Component({\r\n components: { ReadMore }\r\n})\r\nexport default class ProductDetailsReasonsToBuy extends Vue {\r\n @Prop({ required: true, type: Array }) reasonsToBuy!: ReasonToBuyViewObject[];\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!./ProductDetailsReasonsToBuy.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!./ProductDetailsReasonsToBuy.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductDetailsReasonsToBuy.vue?vue&type=template&id=f729beb2&scoped=true&\"\nimport script from \"./ProductDetailsReasonsToBuy.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductDetailsReasonsToBuy.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ProductDetailsReasonsToBuy.vue?vue&type=style&index=0&id=f729beb2&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 \"f729beb2\",\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',[(!_vm.loaded)?_c('div',{staticClass:\"relative h-full my-20 md:m-0\"},[_c('spinner-overlay',{staticClass:\"bg-transparent\",attrs:{\"show\":true}})],1):(!_vm.isLoggedIn)?_c('div',{staticClass:\"w-full h-full flex justify-center md:justify-end items-center\"},[_c('call-to-action',{staticClass:\"cta--green add-to-basket--button\",on:{\"click\":_vm.showLoginOverlay}},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Price.NotLoggedIn'))+\" \")])],1):(!_vm.isServiceAvailable && !_vm.isPriceAvailable)?_c('div',{staticClass:\"flex flex-col h-full items-center justify-center md:justify-start md:items-end w-full\"},[_c('div',{staticClass:\"flex flex-col justify-center items-center lg:justify-end mb-10\"},[_c('div',{staticClass:\"text-gray-900 text-12 md:text-11 lg:text-12 font-medium whitespace-pre-line\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Cart.PriceUnavailable.Details'))+\" \"),_c('v-popover',{staticClass:\"inline-block align-bottom\",attrs:{\"trigger\":\"click\",\"auto-hide\":\"\",\"offset\":\"10\",\"placement\":\"top\"}},[_c('span',{staticClass:\"underline cursor-pointer\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Cart.PriceUnavailable.Info'))+\" \")]),_c('template',{slot:\"popover\"},[_c('div',{staticClass:\"font-bold text-12 pb-10\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Cart.PriceUnavailable.Popup.Title'))+\" \")]),_c('div',{staticClass:\"text-12\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Cart.PriceUnavailable.Popup.Content'))+\" \")])])],2)],1)]),(_vm.$permission.canPlaceOrder())?_c('add-to-basket',{attrs:{\"style-mode\":\"detailed\",\"product-wid\":_vm.wid,\"allow-delete\":\"\"},on:{\"change-quantity\":function($event){return _vm.$emit('addToBasketChange', $event)}}}):_vm._e()],1):(_vm.isServiceAvailable && (!_vm.isPriceAvailable || !_vm.formattedPrice))?_c('p',{staticClass:\"w-full h-full text-16 font-medium flex justify-center items-center\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Cart.ServiceUnavailable'))+\" \")]):_c('div',{staticClass:\"flex flex-col h-full w-full items-center justify-center md:justify-start md:items-end w-full\"},[(!_vm.hasQuantityDiscounts)?_c('p',{staticClass:\"flex flex-row justify-center md:justify-end text-18 md:text-24 items-center\"},[_c('span',{staticClass:\"text-gray-700 line-through mr-10 md:mr-0 lg:mr-10 text-16\"},[_vm._v(\" \"+_vm._s(_vm._f(\"op\")(_vm.price,\"data\", \"previousPrice\", \"cultureFormatted\"))+\" \")]),_c('span',{staticClass:\"text-black font-bold uppercase\"},[_vm._v(\" \"+_vm._s(_vm._f(\"op\")(_vm.price,\"data\", \"price\", \"cultureFormatted\"))+\" \")])]):(_vm.hasQuantityDiscounts)?_c('div',{staticClass:\"flex flex-col justify-center md:justify-end items-end\"},[_c('p',[_c('span',{staticClass:\"text-13 md:text-12 lg:text-13 font-medium mr-10\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Discount.Details.Units'))+\" \")]),_c('span',{staticClass:\"text-black font-bold uppercase text-18 lg:text-24 whitespace-no-wrap\"},[_vm._v(\" \"+_vm._s(_vm._f(\"op\")(_vm.price,\"data\", \"price\", \"cultureFormatted\"))+\" \")])]),_vm._l((_vm.price.data.discounts),function(discount,index){return _c('p',{key:index},[_c('span',{staticClass:\"text-13 md:text-12 lg:text-13 font-medium mr-10\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Discount.Details.FromUnits',discount.quantity.toString()))+\" \")]),_c('span',{staticClass:\"text-black font-bold uppercase text-15 lg:text-22 whitespace-no-wrap\"},[_vm._v(\" \"+_vm._s(discount.amount.cultureFormatted)+\" \")])])})],2):_vm._e(),_c('p',{staticClass:\"flex flex-row justify-center ml-10 md:justify-end md:ml-0 text-13 font-medium\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Details.Cart.ExVat'))+\" \")]),(_vm.suggestedRetailPrice)?_c('div',{staticClass:\"flex justify-center md:items-end md:justify-end w-full mt-3\"},[_c('p',{staticClass:\"text-12 md:text-13\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Cart.SuggestedRetailPrice'))+\" \"+_vm._s(_vm.suggestedRetailPrice.cultureFormatted)+\" \")])]):_vm._e(),(_vm.$permission.canPlaceOrder())?_c('add-to-basket',{staticClass:\"mt-10\",attrs:{\"style-mode\":\"detailed\",\"product-wid\":_vm.wid,\"allow-delete\":\"\"},on:{\"change-quantity\":function($event){return _vm.$emit('addToBasketChange', $event)}}}):_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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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, Prop, Component } from 'vue-property-decorator';\r\nimport { PriceDetailedDataExtended } from '@/project/product/services/detailedPriceFetch.service';\r\nimport SpinnerOverlay from '@/project/spinners/SpinnerOverlay.vue';\r\n\r\nimport AddToBasket from '@/project/basket/AddToBasket.vue';\r\nimport loginFormOverlayService from '@/project/modals/overlays/LoginFormOverlay.service';\r\nimport gtmService from '@/project/tracking/gtm/GTM.service';\r\n\r\n@Component({\r\n components: { AddToBasket, SpinnerOverlay }\r\n})\r\nexport default class ProductDetailsCart extends Vue {\r\n @Prop({ required: true, type: String }) wid!: string;\r\n @Prop({ required: true }) price!: { loaded: boolean, data: PriceDetailedDataExtended };\r\n @Prop({ required: false, default: false }) isLoggedIn!: boolean;\r\n\r\n private get loaded(): boolean {\r\n return this.price?.loaded;\r\n }\r\n\r\n private get isServiceAvailable(): boolean {\r\n return this.price.data?.isServiceAvailable ?? false;\r\n }\r\n\r\n private get isPriceAvailable(): boolean {\r\n return this.price.data !== null && this.price.data.price !== null;\r\n }\r\n\r\n private get hasQuantityDiscounts() {\r\n return this.price.data && this.price.data.discounts && this.price.data?.discounts.length > 0;\r\n }\r\n\r\n private get suggestedRetailPrice() {\r\n return this.price.data?.suggestedRetailPrice.cultureFormatted && this.price.data?.suggestedRetailPrice;\r\n }\r\n\r\n private get formattedPrice() {\r\n return this.price.data?.price?.cultureFormatted;\r\n }\r\n\r\n private showLoginOverlay() {\r\n gtmService.trackLogInToViewPricesClick();\r\n loginFormOverlayService.show('login');\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!./ProductDetailsCart.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!./ProductDetailsCart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductDetailsCart.vue?vue&type=template&id=7b9bb5e4&\"\nimport script from \"./ProductDetailsCart.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductDetailsCart.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.product.hasAccessories || _vm.product.hasExactAlternatives || _vm.product.hasSimilarAlternatives)?_c('div',{staticClass:\"product-menu\"},[[_c('Tabs',{attrs:{\"header-class\":\"ml-20 md:ml-0 mb-15\",\"content-class\":\"ml-20 md:ml-0\"},on:{\"changed\":_vm.tabsChanged,\"init\":_vm.tabsInit},scopedSlots:_vm._u([{key:\"header\",fn:function(ref){\nvar title = ref.title;\nreturn [_c('span',[_vm._v(\" \"+_vm._s(_vm.getMessage(title))+\" \")])]}}],null,false,2468502914)},[(_vm.product.hasAccessories)?_c('Tab',{attrs:{\"name\":\"ProductAccessoriesRecommended\",\"selected\":_vm.activeTab === 'ProductAccessoriesRecommended',\"keep-alive\":\"\"}},[(_vm.labelAccessoriesText)?_c('p',{staticClass:\"text-13 lg:text-14 mb-15\"},[_vm._v(\" \"+_vm._s(_vm.labelAccessoriesText)+\" \")]):_vm._e(),_c('ProductAccessoriesSearchControl',{attrs:{\"product-id\":_vm.product.wid},on:{\"loaded\":_vm.handleRelationLoaded},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar products = ref.products;\nreturn [_c('CondensedProductList',{attrs:{\"products\":products,\"list-view-page-size\":undefined,\"tracking-list-name\":(\"relations-\" + (_vm.$route.name) + \"-accessories\"),\"product-bg-color\":\"white\"}})]}}],null,false,4006031976)})],1):_vm._e(),(_vm.product.hasExactAlternatives || _vm.product.hasSimilarAlternatives)?_c('Tab',{attrs:{\"name\":'Product.Relations.ProductAlternatives',\"selected\":_vm.activeTab === 'Product.Relations.ProductAlternatives',\"keep-alive\":\"\"}},[(_vm.product.hasExactAlternatives)?_c('div',[_c('div',{staticClass:\"text-13 lg:text-14 font-bold mb-5\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Relations.ProductRelatedProductExact'))+\" \")]),_c('ProductAccessoriesSearchControl',{attrs:{\"product-id\":_vm.product.wid,\"relation-type\":_vm.ProductRelationType.exactAlternatives},on:{\"loaded\":_vm.handleRelationLoaded},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar products = ref.products;\nreturn [_c('CondensedProductList',{attrs:{\"products\":products,\"tracking-list-name\":(\"relations-\" + (_vm.$route.name) + \"-\" + (_vm.ProductRelationType.exactAlternatives)),\"product-bg-color\":\"white\"}})]}}],null,false,2946361592)})],1):_vm._e(),(_vm.product.hasSimilarAlternatives)?_c('div',[_c('div',{staticClass:\"text-13 lg:text-14 font-bold mb-5\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Relations.ProductRelatedProductSimilar'))+\" \")]),_c('ProductAccessoriesSearchControl',{attrs:{\"product-id\":_vm.product.wid,\"relation-type\":_vm.ProductRelationType.similarAlternatives},on:{\"loaded\":_vm.handleRelationLoaded},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar products = ref.products;\nreturn [_c('CondensedProductList',{attrs:{\"products\":products,\"tracking-list-name\":(\"relations-\" + (_vm.$route.name) + \"-\" + (_vm.ProductRelationType.similarAlternatives)),\"product-bg-color\":\"white\"}})]}}],null,false,115321074)})],1):_vm._e()]):_vm._e()],1)]],2):_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\n\n\n\n\n\n\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, Prop, Component } from 'vue-property-decorator';\r\nimport CondensedProductList from '@/project/product/condensed/CondensedProductList.vue';\r\n\r\nimport ProductRecommendationsBlock from '@/project/app/blocks/ProductRecommendationsBlock.vue';\r\nimport ProductAccessoriesSearchControl, { ProductRelationType } from '@/project/product/product-tile/ProductRelationSearchControl.vue';\r\nimport dictionaryService from '@/core/translation/dictionary.service';\r\nimport { ProductDetailsViewModel } from '@/types/apiServerContract';\r\nimport Tabs from '@/core/ui-components/tabs/Tabs.vue';\r\nimport Tab from '@/core/ui-components/tabs/Tab.vue';\r\nimport SpinnerOverlay from '@/project/spinners/SpinnerOverlay.vue';\r\nimport gtmService from '@/project/tracking/gtm/GTM.service';\r\n\r\n@Component({\r\n components: { Tabs, Tab, SpinnerOverlay, CondensedProductList, ProductRecommendationsBlock, ProductAccessoriesSearchControl }\r\n})\r\nexport default class ProductDetailsRelations extends Vue {\r\n @Prop({ required: true }) product!: ProductDetailsViewModel;\r\n\r\n private loaded: boolean = false;\r\n private activeTab: string = '';\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 get labelAccessoriesText(): string | null {\r\n const bodyTextKey = 'Product.Relations.ProductAccessoriesRecommended.BodyText';\r\n return dictionaryService.exists(bodyTextKey) ? dictionaryService.get(bodyTextKey) : null;\r\n }\r\n\r\n private handleRelationLoaded(relationType: string) {\r\n this.loaded = true;\r\n }\r\n\r\n private tabsChanged(tabName: string) {\r\n this.activeTab = tabName;\r\n gtmService.trackProductDetailsTabChange(tabName);\r\n }\r\n\r\n private tabsInit(tabName) {\r\n this.activeTab = tabName;\r\n }\r\n\r\n get ProductRelationType() {\r\n return ProductRelationType;\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!./ProductDetailsRelations.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!./ProductDetailsRelations.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductDetailsRelations.vue?vue&type=template&id=524f3f25&scoped=true&\"\nimport script from \"./ProductDetailsRelations.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductDetailsRelations.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ProductDetailsRelations.vue?vue&type=style&index=0&id=524f3f25&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 \"524f3f25\",\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.isUserLoggedIn)?_c('article',{staticClass:\"bg-gray-300 px-20 py-20\"},[_c('h2',{staticClass:\"font-semi-bold text-16 mb-8\"},[_vm._v(\" \"+_vm._s(_vm._f(\"t\")('Product.Details.Partners.Title'))+\" \")]),_c('p',{staticClass:\"text-13\",domProps:{\"innerHTML\":_vm._s(_vm.subtitle)}}),_c('div',{staticClass:\"flex flex-wrap items-center h-full mt-5\"},_vm._l((_vm.partners),function(partner){return _c('div',{key:partner.partner,staticClass:\"mr-20 mt-10 last:mr-0\"},[_c('adnuntius-pixels',{staticClass:\"mx-10 first:ml-0 last:mr-0\",attrs:{\"rendered-url\":partner.renderedPixelUrl,\"visible-url\":partner.visiblePixelUrl,\"view-url\":partner.viewPixelUrl,\"click-url\":partner.clickPixelUrl,\"always-visible\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar click = ref.click;\nreturn [_c('a',{staticClass:\"brand-link\",attrs:{\"href\":partner.url,\"target\":\"_blank\"},on:{\"click\":click}},[_c('img',{staticClass:\"brand-logo\",class:_vm.imageCssClass(partner),attrs:{\"src\":partner.image.url,\"alt\":\"\"}}),_c('span',{staticClass:\"sr-only\"},[_vm._v(_vm._s(_vm._f(\"t\")('BrandHero.BrandLogo.SeeAllProductsFrom'))+\" \"+_vm._s(partner.name))])])]}}],null,true)})],1)}),0)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// If label contains email, format it as email a-tag\r\nexport default function formatEmailAsHtml(label: string) {\r\n const regex = new RegExp('([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+[a-zA-Z0-9_-]+)', 'ig');\r\n const rawTextString = label;\r\n\r\n const formattedTextString = rawTextString.replace(regex, '$1');\r\n\r\n return formattedTextString;\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\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport { PartnerLogoViewModel } from '@/types/apiServerContract';\r\nimport AdnuntiusPixels from '@/project/tracking/adnuntius/AdnuntiusPixels.vue';\r\nimport authService from '@/core/auth/auth.service';\r\nimport dictionaryService from '@/core/translation/dictionary.service';\r\nimport formatEmailAsHtml from '@/core/formatters/emailAsHtml.service';\r\n\r\n@Component({\r\n components: { AdnuntiusPixels }\r\n})\r\nexport default class ProductDetailsPartnerLogos extends Vue {\r\n @Prop({ required: true, type: Array })\r\n private partners!: readonly PartnerLogoViewModel[];\r\n\r\n private imageCssClass(partner: PartnerLogoViewModel) : string {\r\n const isTall = partner.image.width < partner.image.height;\r\n const isSquare = partner.image.width === partner.image.height;\r\n\r\n return isTall || isSquare ? 'brand-logo-max-h' : 'brand-logo-max-w';\r\n }\r\n\r\n private get isUserLoggedIn(): boolean {\r\n return authService.isLoggedIn();\r\n }\r\n\r\n private get subtitle() {\r\n return formatEmailAsHtml(dictionaryService.get('Product.Details.Partners.Subtitle'));\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!./ProductDetailsPartnerLogos.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!./ProductDetailsPartnerLogos.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductDetailsPartnerLogos.vue?vue&type=template&id=b5f1cf3e&scoped=true&\"\nimport script from \"./ProductDetailsPartnerLogos.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductDetailsPartnerLogos.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ProductDetailsPartnerLogos.vue?vue&type=style&index=0&id=b5f1cf3e&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 \"b5f1cf3e\",\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.loaded && _vm.recommendationsResult.length > 0)?_c('article',{staticClass:\"product-menu\"},[_c('Tabs',{attrs:{\"header-class\":\"ml-20 md:ml-0 md:mb-15 pb-10 mb-5 md:pb-0 overflow-x-auto overflow-y-hidden flex-no-wrap\",\"content-class\":\"ml-20 md:ml-0\"},on:{\"changed\":_vm.changed},scopedSlots:_vm._u([{key:\"header\",fn:function(ref){\nvar title = ref.title;\nreturn [_c('span',{staticClass:\"inline-block whitespace-no-wrap\"},[_vm._v(\" \"+_vm._s(title)+\" \")])]}}],null,false,1815710595)},_vm._l((_vm.recommendationsResult),function(result,idx){return _c('Tab',{key:idx,attrs:{\"name\":result.content.headline,\"keep-alive\":\"\"}},[_c('CondensedProductList',{attrs:{\"products\":result.products,\"tracking-list-name\":_vm.trackingListName(result.content),\"use-swiper\":!result.content.useListView,\"product-bg-color\":result.content.productBackgroundColor}})],1)}),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\r\nimport { Vue, Prop, Component } from 'vue-property-decorator';\r\nimport CondensedProductList from '@/project/product/condensed/CondensedProductList.vue';\r\nimport Tabs from '@/core/ui-components/tabs/Tabs.vue';\r\nimport Tab from '@/core/ui-components/tabs/Tab.vue';\r\nimport loggingService from '@/core/logging.service';\r\nimport { ProductDetailsPageViewModel, ProductRecommendationsBlockViewModel } from '@/types/contentServerContract';\r\nimport { ProductRecommendationType, ProductTileViewObject } from '@/types/apiServerContract';\r\nimport Api from '@/project/http/Api.service';\r\nimport GTMService from '@/project/tracking/gtm/GTM.service';\r\n\r\ninterface RecommendationsResult {\r\n content: ProductRecommendationsBlockViewModel,\r\n products: ProductTileViewObject[]\r\n}\r\n\r\n@Component({\r\n components: { Tabs, Tab, CondensedProductList }\r\n})\r\nexport default class ProductDetailsRecommendations extends Vue {\r\n @Prop({ required: true, type: String })\r\n private productId!: string;\r\n\r\n @Prop()\r\n private productDetailsPage!: ProductDetailsPageViewModel;\r\n\r\n public recommendationsResult: RecommendationsResult[] = [];\r\n private loaded: boolean = false;\r\n\r\n private changed(relationsType: string) {\r\n GTMService.trackProductDetailsTabChange(relationsType);\r\n }\r\n\r\n private async getRecommendationsContent() {\r\n try {\r\n const result = this.productDetailsPage;\r\n const recommendationsBlockContent = result.recommendations.map(x => x.content as ProductRecommendationsBlockViewModel);\r\n const recommendationsProductDataPromises = recommendationsBlockContent.map(x => this.getProductData(x));\r\n\r\n await Promise.all(recommendationsProductDataPromises);\r\n\r\n this.recommendationsResult.sort((a, b) => {\r\n const indexA = recommendationsBlockContent.indexOf(a.content);\r\n const indexB = recommendationsBlockContent.indexOf(b.content);\r\n return indexA - indexB;\r\n });\r\n } catch (e) {\r\n // No content - ignored\r\n } finally {\r\n this.loaded = true;\r\n }\r\n }\r\n\r\n private async getProductData(content: ProductRecommendationsBlockViewModel): Promise {\r\n try {\r\n const result = await Api.recommendations.recommend({\r\n categoryIdFilterPositiveList: content.categoryIdFilterPositiveList,\r\n categoryIdFilterNegativeList: content.categoryIdFilterNegativeList,\r\n displayedAtLocation: content.displayLocation,\r\n intervalDays: content.interval,\r\n popularityType: content.popularity,\r\n categoryId: content.categoryId,\r\n productId: this.productId,\r\n productCount: content.productCount,\r\n recommendationType: content.type,\r\n allowFillIfNecessary: content.allowFillIfNecessary,\r\n brandId: content.brandId,\r\n hasImages: content.hasImages,\r\n stockFilter: content.stockFilter,\r\n showFeedProducts: content.showFeedProducts\r\n });\r\n\r\n if (result?.products?.length > 0) {\r\n this.recommendationsResult.push({\r\n content: content,\r\n products: result.products\r\n });\r\n }\r\n } catch (e) {\r\n loggingService.error(e);\r\n }\r\n }\r\n\r\n trackingListName(recommendation: ProductRecommendationsBlockViewModel):string {\r\n const key = Object.keys(ProductRecommendationType).filter((v) => isNaN(Number(v))).find(k => ProductRecommendationType[k] === recommendation.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 created() {\r\n this.getRecommendationsContent();\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!./ProductDetailsRecommendations.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!./ProductDetailsRecommendations.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductDetailsRecommendations.vue?vue&type=template&id=2e2c522b&scoped=true&\"\nimport script from \"./ProductDetailsRecommendations.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductDetailsRecommendations.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ProductDetailsRecommendations.vue?vue&type=style&index=0&id=2e2c522b&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 \"2e2c522b\",\n null\n \n)\n\nexport default component.exports","import { AbstractModalService } from '@/core/modals/AbstractModalService';\r\n\r\nimport { ModalOptions } from '@/core/modals/ModalState';\r\nimport { ProductDetailsViewModel } from '@/types/apiServerContract';\r\n\r\nclass ProductFeedbackOverlayService extends AbstractModalService {\r\n public show(product: ProductDetailsViewModel, options?: Partial) {\r\n return this.showModal({\r\n component: () => import(\r\n '@/project/product/product-details/ProductFeedbackOverlay.vue'),\r\n componentAttrs: {\r\n product\r\n },\r\n options\r\n });\r\n }\r\n}\r\n\r\nexport default new ProductFeedbackOverlayService();\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.product)?_c('div',{staticClass:\"product-details-bid-tile bg-gray-300 mb-10 last:mb-0 p-15\"},[_c('div',{staticClass:\"flex flex-col flex-1 mb-20 md:mb-0\"},[_c('CultureAwareRouterLink',{staticClass:\"product-title hover:underline\",attrs:{\"to\":_vm.productDetailsUrl},nativeOn:{\"click\":function($event){return _vm.productClick()}}},[_c('div',{directives:[{name:\"line-clamp\",rawName:\"v-line-clamp:16\",value:(3),expression:\"3\",arg:\"16\"}],staticClass:\"xs:text-13 lg:text-14 font-bold text-black mb-15\"},[_c('span',{staticClass:\"block\"},[_vm._v(\" \"+_vm._s(_vm.bid.description + ' - ' + _vm.bid.bidNo)+\" \")])])]),_c('ProductTileBid',{attrs:{\"bid\":_vm.bid,\"is-bid-on-pdp\":\"\"}})],1),_c('ProductTileCart',{staticClass:\"product-cart vertical\",attrs:{\"mode\":\"horizontal\",\"product\":_vm.product,\"bid\":_vm.bid,\"price\":{ loaded: _vm.pricesLoaded, data: _vm.priceData },\"is-logged-in\":_vm.isUserLoggedIn,\"is-bid-on-pdp\":true},on:{\"add-to-basket-change\":_vm.trackAddToBasketChange}})],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\r\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\r\n\r\nimport { BidViewObject, ProductTileViewObject, StockInformationViewObject } from '@/types/apiServerContract';\r\nimport { TrackingProductAndElement } from '@/project/tracking/gtm/types';\r\n\r\nimport simplePriceFetchService, { PriceSimpleDataExtended } from '@/project/product/services/simplePriceFetch.service';\r\nimport stockFetchService from '@/project/product/services/stockFetch.service';\r\nimport GTMService, { ProductTrackingState, TrackingProduct } from '@/project/tracking/gtm/GTM.service';\r\nimport authService from '@/core/auth/auth.service';\r\nimport serverContextService from '@/core/serverContext.service';\r\n\r\nimport ProductTileBid from '@/project/product/product-tile/ProductTileBid.vue';\r\nimport ProductTileCart from '@/project/product/product-tile/ProductTileCart.vue';\r\nimport bus from '@/core/bus';\r\nimport { ProductTrackerProcessBatchKey } from '@/project/tracking/gtm/ProductListTracker.vue';\r\n\r\n@Component({\r\n components: {\r\n ProductTileBid,\r\n ProductTileCart\r\n }\r\n})\r\nexport default class ProductDetailsBidTile extends Vue {\r\n @Prop({ required: true }) product!: ProductTileViewObject;\r\n @Prop({ required: true, type: Function }) productClick!: (product: TrackingProduct) => void;\r\n\r\n private priceData: PriceSimpleDataExtended | null = null;\r\n private stockData: readonly StockInformationViewObject[] | null = null;\r\n private bidsData: readonly ProductTileViewObject[] | null = null;\r\n private showMenu: boolean = false;\r\n private isERPServiceAvailable = true;\r\n\r\n private pricesLoaded: boolean = false;\r\n private stockLoaded: boolean = false;\r\n\r\n private cancellationCallbacks: (() => void)[] = [];\r\n\r\n get bid(): BidViewObject | null | undefined {\r\n return this.product.bid;\r\n }\r\n\r\n private get productDetailsUrl() {\r\n return encodeURI(this.product.url);\r\n }\r\n\r\n private get hasBids() {\r\n return this.bidsData && this.bidsData.length > 0;\r\n }\r\n\r\n get hasAlternatives() {\r\n return this.product.alternatives.length > 0;\r\n }\r\n\r\n get hasAccessories() {\r\n return this.product.accessories.length > 0;\r\n }\r\n\r\n get isUserLoggedIn(): boolean {\r\n return authService.isLoggedIn();\r\n }\r\n\r\n get isExternalProductGuide() {\r\n return serverContextService.isExternalProductGuide;\r\n }\r\n\r\n get getTrackingState(): ProductTrackingState {\r\n if (!this.isUserLoggedIn) {\r\n return ProductTrackingState.NotLoggedIn;\r\n }\r\n\r\n if (!this.pricesLoaded || !this.stockLoaded) {\r\n return ProductTrackingState.NoErpResponseYet;\r\n }\r\n\r\n return this.isERPServiceAvailable ? ProductTrackingState.Complete : ProductTrackingState.ErpNotAvailable;\r\n }\r\n\r\n created() {\r\n this.getPriceData();\r\n this.getStockData();\r\n }\r\n\r\n mounted() {\r\n this.trackImpression(true);\r\n }\r\n\r\n async toggleMenu() {\r\n this.showMenu = !this.showMenu;\r\n }\r\n\r\n @Watch('isUserLoggedIn')\r\n onLoginStateChange(now: boolean, before: boolean) {\r\n if (now && !before) {\r\n this.getPriceData();\r\n this.getStockData();\r\n }\r\n }\r\n\r\n async getPriceData() {\r\n if (this.isExternalProductGuide) {\r\n this.pricesLoaded = true;\r\n return;\r\n }\r\n\r\n this.pricesLoaded = false;\r\n\r\n try {\r\n if (!this.isUserLoggedIn) {\r\n return;\r\n }\r\n\r\n const request = simplePriceFetchService.requestData(this.product.itemId);\r\n\r\n this.cancellationCallbacks.push(request.cancel);\r\n\r\n const result = await request.promise;\r\n\r\n this.priceData = Object.freeze(result);\r\n this.isERPServiceAvailable = this.isERPServiceAvailable && result.isServiceAvailable;\r\n } catch {\r\n } finally {\r\n this.pricesLoaded = true;\r\n this.trackImpression();\r\n }\r\n }\r\n\r\n async getStockData() {\r\n this.stockLoaded = false;\r\n\r\n try {\r\n const request = stockFetchService.requestData(this.product.itemId);\r\n\r\n this.cancellationCallbacks.push(request.cancel);\r\n\r\n const result = await request.promise;\r\n\r\n this.stockData = Object.freeze(result.stockInformation);\r\n this.isERPServiceAvailable = this.isERPServiceAvailable && result.isServiceAvailable;\r\n } catch {\r\n } finally {\r\n this.stockLoaded = true;\r\n this.trackImpression();\r\n }\r\n }\r\n\r\n trackImpression(force: boolean = false): void {\r\n if ((!force && (!this.pricesLoaded || !this.stockLoaded)) || this.isExternalProductGuide) {\r\n return;\r\n }\r\n\r\n this.$emit('productImpression', { product: this.constructTrackingProduct(), el: this.$el } as TrackingProductAndElement);\r\n }\r\n\r\n trackAddToBasketChange(deltaQuantity: number) {\r\n bus.emit(ProductTrackerProcessBatchKey);\r\n GTMService.trackProductQuantityChange(this.constructTrackingProduct(), deltaQuantity, `bids-${this.$route.name}-bid`);\r\n }\r\n\r\n private constructTrackingProduct(): TrackingProduct {\r\n return {\r\n ...this.product,\r\n price: this.priceData?.amount,\r\n stockInfo: this.stockData,\r\n trackingState: this.getTrackingState\r\n };\r\n }\r\n\r\n rawProductClick() {\r\n this.productClick(this.constructTrackingProduct());\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!./ProductDetailsBidTile.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!./ProductDetailsBidTile.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductDetailsBidTile.vue?vue&type=template&id=78a14360&scoped=true&\"\nimport script from \"./ProductDetailsBidTile.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductDetailsBidTile.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ProductDetailsBidTile.vue?vue&type=style&index=0&id=78a14360&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 \"78a14360\",\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.productSeries && _vm.loaded && _vm.series)?_c('div',{key:_vm.wid,staticClass:\"mx-10 md:mx-0\"},[_c('div',{staticClass:\"flex flex-wrap -mx-10\"},_vm._l((_vm.series.values),function(seriesItem,seriesIndex){return _c('div',{key:seriesIndex,staticClass:\"mb-20 px-10 w-full lg:w-1/2\"},[_c('Dropdown',{ref:(\"dropdown\" + seriesIndex),refInFor:true,attrs:{\"icon-is-after\":true,\"position-right\":(seriesIndex + 1) % 2 === 0,\"icon\":\"arrow-down\",\"button-class\":\"cta-icon--16 w-full\"},on:{\"close\":_vm.handleCloseInDropdown,\"click\":function($event){return _vm.handleClickInDropdown(seriesItem, _vm.productSeries, _vm.series)}},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('div',[_c('span',{staticClass:\"font-bold\"},[_vm._v(\" \"+_vm._s(seriesItem.facetDisplayName)+\": \")]),(_vm.alternativeSeriesDisplayName)?_c('span',[_vm._v(\" \"+_vm._s(_vm.alternativeSeriesDisplayName)+\" \")]):_c('span',[_vm._v(\" \"+_vm._s(_vm.getDisplayValue(seriesItem.selectedSeries.displayValue))+\" \")])])]},proxy:true},{key:\"activeHead\",fn:function(){return [_c('span',{staticClass:\"font-bold\"},[_vm._v(\" \"+_vm._s(seriesItem.facetDisplayName)+\" \")]),(_vm.alternativeSeriesDisplayName)?_c('span',{staticClass:\"pl-3\"},[_vm._v(\" \"+_vm._s(_vm.alternativeSeriesDisplayName)+\" \")]):_vm._e()]},proxy:true},{key:\"dropdown\",fn:function(){return [(_vm.filteredAlternativeSeriesData && _vm.alternativeSeriesIndex === seriesIndex)?_c('ul',{staticClass:\"relative z-1\"},_vm._l((_vm.filteredAlternativeSeriesData),function(alternativeOption,alternativeOptionIndex){return _c('li',{key:alternativeOption.product.wid},[_c('CultureAwareRouterLink',{staticClass:\"flex px-20 py-10 c-product-series__item\",class:{\n 'c-product-series__item-even': alternativeOptionIndex % 2 === 0\n },attrs:{\"to\":_vm.productDetailsUrl(alternativeOption.product),\"target\":_vm.productDetailsUrlTarget},nativeOn:{\"click\":function($event){return _vm.handleClickProductSeriesItem(seriesItem, alternativeOption)}}},[_c('div',{staticClass:\"w-1/3 xl:w-2/5 mr-auto text-left mb-2 leading-normal\"},[_vm._v(\" \"+_vm._s(alternativeOption.displayName)+\" \")]),_c('ProductTileStock',{staticClass:\"w-2/3 xl:w-3/5 ml-auto\",attrs:{\"number-of-stock-labels\":1,\"align-right\":true,\"allow-stock-popover\":false,\"item-id\":alternativeOption.product.itemId,\"stock\":{ loaded: _vm.stockLoaded, simpleData: _vm.getStockByItemId(alternativeOption.product.itemId), data: null },\"is-logged-in\":_vm.isUserLoggedIn,\"ignore-notify-me\":\"\"}})],1)],1)}),0):_c('ul',{staticClass:\"relative z-1\"},_vm._l((seriesItem.values),function(seriesOption,seriesOptionIndex){return _c('li',{key:seriesOptionIndex},[(seriesOption.isActive)?_c('CultureAwareRouterLink',{staticClass:\"flex px-20 py-10 c-product-series__item\",class:{\n 'c-product-series__item-disabled': seriesOption.isActive === false,\n 'c-product-series__item-even': seriesOptionIndex % 2 === 0\n },attrs:{\"to\":_vm.productDetailsUrl(seriesOption.productUrl),\"target\":_vm.productDetailsUrlTarget},nativeOn:{\"click\":function($event){return _vm.handleClickSeries(seriesOption, seriesOptionIndex, seriesItem)}}},[_c('div',{staticClass:\"w-1/3 xl:w-2/5 mr-auto text-left mb-2 leading-normal\",class:{\n 'text-gray-700': seriesOption.isActive === false,\n 'font-bold': seriesOption.isSelected === true\n }},[_vm._v(\" \"+_vm._s(_vm.getDisplayValue(seriesOption.displayValue))+\" \")]),(seriesOption.isActive)?_c('ProductTileStock',{staticClass:\"w-2/3 xl:w-3/5 ml-auto\",attrs:{\"number-of-stock-labels\":1,\"align-right\":true,\"allow-stock-popover\":false,\"item-id\":seriesOption.itemId,\"stock\":{ loaded: _vm.stockLoaded, simpleData: _vm.getStockByItemId(seriesOption.itemId), data: null },\"is-logged-in\":_vm.isUserLoggedIn,\"ignore-notify-me\":\"\"}}):_vm._e()],1):_c('button',{staticClass:\"flex px-20 py-10 w-full c-product-series__item\",class:{\n 'c-product-series__item-disabled': seriesOption.isActive === false,\n 'c-product-series__item-even': seriesOptionIndex % 2 === 0\n },attrs:{\"type\":\"button\"},on:{\"click\":function () { return _vm.handleClickSeriesInvalidOption(seriesItem, seriesOption, seriesIndex); }}},[_c('div',{staticClass:\"mr-auto text-left mb-2 leading-normal\",class:{\n 'text-gray-700': seriesOption.isActive === false,\n 'font-bold': seriesOption.isSelected === true\n }},[_vm._v(\" \"+_vm._s(_vm.getDisplayValue(seriesOption.displayValue))+\" \")]),_c('div',{staticClass:\"ml-auto text-left text-gray-700 text-13 mt-2 leading-normal text-right\"},[_vm._v(\" \"+_vm._s(_vm.labelForUnavailableCombination(seriesItem))+\" \")])])],1)}),0)]},proxy:true}],null,true)})],1)}),0)]):_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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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, Prop, Component } from 'vue-property-decorator';\r\nimport {\r\n ProductSeriesFacetValueViewObject,\r\n ProductSeriesFacetViewObject, ProductSeriesProductViewObject\r\n} from '@/types/apiServerContract';\r\nimport Api from '@/project/http/Api.service';\r\nimport { softRedirect } from '@/core/redirect.service';\r\nimport { router } from 'spaRouter';\r\nimport stockFetchService, { StockViewObjectExtended } from '@/project/product/services/stockFetch.service';\r\nimport ProductTileStock from '@/project/product/product-tile/ProductTileStock.vue';\r\nimport authService from '@/core/auth/auth.service';\r\nimport dictionaryService from '@/core/translation/dictionary.service';\r\nimport Dropdown from '@/project/form/Dropdown.vue';\r\nimport serverContextService from '@/core/serverContext.service';\r\nimport IDropdown from '@/project/form/IDropdown';\r\nimport GTMBasics from '@/project/tracking/gtm/GTM.basics';\r\n\r\ninterface ProductSeriesFacetObject extends ProductSeriesFacetViewObject {\r\n selectedSeries?: ProductSeriesFacetValueViewObject;\r\n}\r\ninterface ProductSeriesObject {\r\n productSeriesProducts: ProductSeriesProductViewObject[];\r\n values: ProductSeriesFacetObject[];\r\n}\r\ninterface AlternativeSeriesObject {\r\n displayName: string;\r\n facetId?: string;\r\n product: ProductSeriesProductViewObject;\r\n}\r\n\r\n@Component({\r\n components: { Dropdown, ProductTileStock }\r\n})\r\nexport default class ProductDetailsSeries extends Vue {\r\n @Prop({ required: true, type: String }) wid!: string;\r\n @Prop({ required: true, type: String }) itemId!: string;\r\n @Prop({ required: true, type: String }) productSeries!: string;\r\n private series: ProductSeriesObject | null = null;\r\n private stockData: StockViewObjectExtended[] = [];\r\n private loaded: boolean = false;\r\n private stockLoaded: boolean = false;\r\n private isERPServiceAvailable = true;\r\n\r\n private alternativeSeries: null | AlternativeSeriesObject[][] = null;\r\n private alternativeSeriesIndex: null | number = null;\r\n private alternativeSeriesDisplayName: null | string = null;\r\n private alternativeSeriesFacetId: null | string = null;\r\n private alternativeSeriesClearOnClose: boolean = false;\r\n\r\n private cancellationCallbacks: (() => void)[] = [];\r\n $refs!: Vue['$refs'] & {\r\n dropdown0?: IDropdown,\r\n dropdown1?: IDropdown,\r\n dropdown2?: IDropdown,\r\n dropdown3?: IDropdown\r\n }\r\n\r\n mounted() {\r\n if (this.wid && this.productSeries) {\r\n this.loadProductSeries();\r\n }\r\n }\r\n\r\n private async loadProductSeries() {\r\n this.series = null;\r\n try {\r\n const result = await Api.product.series(this.wid, this.productSeries);\r\n this.series = Object.freeze(result);\r\n this.series.values.map(series => {\r\n series.values.map(seriesValue => {\r\n if (seriesValue.isSelected) {\r\n series.selectedSeries = seriesValue;\r\n }\r\n });\r\n });\r\n this.getStockData();\r\n } catch {\r\n } finally {\r\n this.loaded = true;\r\n }\r\n }\r\n\r\n private resetStockData() {\r\n this.stockData = [];\r\n }\r\n\r\n async getStockData() {\r\n this.stockLoaded = false;\r\n this.resetStockData();\r\n try {\r\n // eslint-disable-next-line\r\n this.series?.values.map(ser => ser.values.map(facet => {\r\n if (facet.itemId) {\r\n this.getStockItem(facet.itemId);\r\n }\r\n }));\r\n } catch {\r\n } finally {\r\n this.stockLoaded = true;\r\n }\r\n }\r\n\r\n async getStockItem(itemId: string) {\r\n const request = stockFetchService.requestData(itemId);\r\n this.cancellationCallbacks.push(request.cancel);\r\n const result = await request.promise;\r\n if (!this.stockData.find(s => s && s.itemId === itemId)) {\r\n this.stockData.push(Object.freeze(result));\r\n }\r\n\r\n this.isERPServiceAvailable = this.isERPServiceAvailable && (result?.isServiceAvailable ?? false);\r\n }\r\n\r\n private handleClickSeries(selectedSeriesValue:ProductSeriesFacetValueViewObject, seriesIndex: number, seriesItem: ProductSeriesFacetObject) {\r\n const hasUrl = selectedSeriesValue?.productUrl?.length > 0;\r\n const isNotCurrentUrl = selectedSeriesValue.productUrl !== router.currentRoute.path;\r\n const isValidUrl = hasUrl && isNotCurrentUrl;\r\n this.trackClickProductLink(seriesItem, selectedSeriesValue);\r\n if (isValidUrl) {\r\n seriesItem.selectedSeries = selectedSeriesValue;\r\n softRedirect(selectedSeriesValue.productUrl);\r\n }\r\n }\r\n\r\n private getStockByItemId(itemId: string) {\r\n const stockArray = this.stockData.filter(s => itemId && s.itemId === itemId).map(m => m.stockInformation);\r\n return stockArray.length ? stockArray[0] : [];\r\n }\r\n\r\n private get isUserLoggedIn(): boolean {\r\n return authService.isLoggedIn();\r\n }\r\n\r\n private getDisplayValue(value: string): string {\r\n return dictionaryService.translate(value);\r\n }\r\n\r\n private labelForUnavailableCombination(seriesItem): string {\r\n const combinationNames = this.series?.values.filter(v => v.facetDisplayName !== seriesItem.facetDisplayName).map(s => s.selectedSeries?.displayValue);\r\n if (combinationNames) {\r\n return dictionaryService.get('Product.Series.NotAvailable', [combinationNames.map((n, cIndex) => {\r\n const c = dictionaryService.translate(n || '');\r\n if (cIndex === (combinationNames.length - 2)) {\r\n return dictionaryService.get('Product.Series.NotAvailablePluralisation', [c]);\r\n } else if (cIndex === (combinationNames.length - 1)) {\r\n return c;\r\n } else {\r\n return `${c}, `;\r\n }\r\n }).join('')]);\r\n }\r\n return '';\r\n }\r\n\r\n private handleClickSeriesInvalidOption(seriesItem:ProductSeriesFacetViewObject, seriesOption: ProductSeriesFacetValueViewObject, index: number) {\r\n const seriesFacetId = seriesItem.facetId.toLowerCase(); // Using to lowercase for some json reason\r\n const alternativeSeries: AlternativeSeriesObject[][] = [];\r\n const products = this.series?.productSeriesProducts.filter(p => {\r\n const obj = Object.keys(p.facetValues);\r\n const alternativeItems: AlternativeSeriesObject[] = [];\r\n const objWithFacets = obj.filter((facetId) => {\r\n alternativeItems.push({\r\n product: p,\r\n displayName: p.facetValues[facetId],\r\n facetId: facetId.toLowerCase()\r\n });\r\n return facetId === seriesFacetId && p.facetValues[facetId] === seriesOption.displayValue;\r\n });\r\n alternativeSeries.push(alternativeItems);\r\n return objWithFacets.length;\r\n });\r\n if (index === 0) {\r\n this.alternativeSeriesIndex = 1;\r\n this.$refs.dropdown0![0]!.closeDropdown();\r\n this.$refs.dropdown1![0]!.openDropdown();\r\n } else {\r\n this.alternativeSeriesIndex = 0;\r\n this.$refs.dropdown1![0]!.closeDropdown();\r\n this.$refs.dropdown0![0]!.openDropdown();\r\n }\r\n this.alternativeSeries = alternativeSeries;\r\n this.alternativeSeriesDisplayName = dictionaryService.translate(seriesOption.displayValue);\r\n this.alternativeSeriesFacetId = seriesFacetId;\r\n products!.forEach(p => {\r\n this.getStockItem(p.itemId);\r\n });\r\n this.trackClickProductLink(seriesItem, { facetDisplayName: this.getDisplayValue(seriesOption.displayValue), facetId: seriesFacetId });\r\n this.$nextTick(() => {\r\n this.alternativeSeriesClearOnClose = true;\r\n });\r\n }\r\n\r\n get filteredAlternativeSeriesData(): AlternativeSeriesObject[] | null {\r\n if (this.alternativeSeries) {\r\n const items:AlternativeSeriesObject[] = [];\r\n this.alternativeSeries!.forEach(altSeries => {\r\n altSeries.forEach(item => {\r\n if (item.facetId === this.alternativeSeriesFacetId && this.alternativeSeriesDisplayName === item.product.facetValues[item.facetId]) {\r\n const itemCopy = { ...item };\r\n const facets = Object.keys(item.product.facetValues);\r\n const theOtherFacetId = facets.find((facetId, index) => {\r\n return facetId !== item.facetId;\r\n });\r\n if (theOtherFacetId) {\r\n itemCopy.displayName = item.product.facetValues[theOtherFacetId];\r\n }\r\n items.push(itemCopy);\r\n }\r\n });\r\n });\r\n return items || null;\r\n }\r\n return null;\r\n }\r\n\r\n private handleCloseInDropdown() {\r\n if (this.alternativeSeriesClearOnClose) {\r\n this.alternativeSeries = null;\r\n this.alternativeSeriesFacetId = null;\r\n this.alternativeSeriesDisplayName = null;\r\n this.alternativeSeriesIndex = null;\r\n this.alternativeSeriesClearOnClose = false;\r\n }\r\n }\r\n\r\n private handleClickInDropdown(seriesItem) {\r\n this.trackClickSeriesDropdown(seriesItem);\r\n }\r\n\r\n private handleClickProductSeriesItem(seriesItem, variant) {\r\n this.trackClickProductLink(seriesItem, variant);\r\n }\r\n\r\n private trackClickSeriesDropdown(seriesItem) {\r\n GTMBasics.pushToDataLayer({\r\n event: 'variant.open',\r\n variantAttribute: seriesItem.facetDisplayName, // English display name TODO: English\r\n seriesClassificationId: seriesItem.facetId // ID of the product series classification\r\n });\r\n }\r\n\r\n private trackClickProductLink(seriesItem, variant) {\r\n GTMBasics.pushToDataLayer({\r\n event: 'variant.click',\r\n variantAttribute: seriesItem.facetDisplayName || seriesItem.displayValue, // English display name TODO: English\r\n variantValue: variant.facetDisplayName || variant.displayValue || variant.displayName, // English display name TODO: English\r\n seriesClassificationId: seriesItem.facetId // ID of the product series classification\r\n });\r\n }\r\n\r\n private productDetailsUrl(productAlternative) {\r\n const product:{ itemId: string, url?: string, mpn?: string } = {\r\n itemId: productAlternative.itemId,\r\n url: productAlternative.productUrl\r\n };\r\n return serverContextService.productUrl(product);\r\n }\r\n\r\n private get productDetailsUrlTarget() {\r\n return serverContextService.externalProductLinkTarget;\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!./ProductDetailsSeries.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!./ProductDetailsSeries.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductDetailsSeries.vue?vue&type=template&id=70ffceb5&\"\nimport script from \"./ProductDetailsSeries.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductDetailsSeries.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ProductDetailsSeries.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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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, Watch } from 'vue-property-decorator';\r\nimport authService from '@/core/auth/auth.service';\r\nimport {\r\n Feature,\r\n FrequentlyAskedQuestionViewObject,\r\n PartnerLogoViewModel,\r\n ProductDetailsViewModel,\r\n ProductTileViewObject,\r\n StockInformationViewObject\r\n} from '@/types/apiServerContract';\r\nimport detailedPriceFetchService, {\r\n PriceDetailedDataExtended\r\n} from '@/project/product/services/detailedPriceFetch.service';\r\nimport productConditionService from '@/project/product/services/productCondition.service';\r\nimport productDeliveryService from '@/project/product/services/productDelivery.service';\r\nimport StockFetchService from '@/project/product/services/stockFetch.service';\r\nimport Api from '@/project/http/Api.service';\r\nimport scrollService from '@/core/scroll/scroll.service';\r\nimport ProductDetailsSlider from './ProductDetailsSlider.vue';\r\nimport ProductDetailsSpecifications from './ProductDetailsSpecifications.vue';\r\nimport ProductDetailsRelatedModels from './ProductDetailsRelatedModels.vue';\r\nimport ProductDetailsReasonsToBuy from './ProductDetailsReasonsToBuy.vue';\r\nimport ProductDetailsCart from './ProductDetailsCart.vue';\r\nimport ProductDetailsRelations from './ProductDetailsRelations.vue';\r\nimport ProductTileStock from '@/project/product/product-tile/ProductTileStock.vue';\r\nimport ProductTileFavorite from '@/project/product/product-tile/ProductTileFavorite.vue';\r\nimport ReadMore from '@/core/ui-components/ReadMore.vue';\r\nimport SmartParagraph from '@/core/ui-components/SmartParagraph.vue';\r\nimport productBidsFetchService from '@/project/product/services/productBidsFetch.service';\r\nimport GTMService, { ProductTrackingState, TrackingProduct } from '@/project/tracking/gtm/GTM.service';\r\nimport ProductListTracker from '@/project/tracking/gtm/ProductListTracker.vue';\r\nimport dictionaryService, { NamedLabelArgument } from '@/core/translation/dictionary.service';\r\nimport domService from '@/core/dom/dom.service';\r\nimport adnuntiusService from '@/project/personalization/adnuntius.service';\r\nimport ProductDetailsPartnerLogos from './ProductDetailsPartnerLogos.vue';\r\nimport CopyText from '@/project/shared/CopyText.vue';\r\nimport responsiveProductImageService from '@/project/product/image/responsiveProductImage.service';\r\nimport ProductDetailsRecommendations from './ProductDetailsRecommendations.vue';\r\nimport siteService from '@/project/site/site.service';\r\nimport productFeedbackOverlayService from '@/project/modals/overlays/productFeedbackOverlay.service';\r\nimport permissionService from '@/project/auth/permission.service';\r\nimport { PageName } from '@/router/routes/constants';\r\nimport ProductDetailsBidTile from '@/project/product/product-details/ProductDetailsBidTile.vue';\r\nimport { Media, ProductDetailsPageViewModel } from '@/types/contentServerContract';\r\nimport ProductDetailsSeries from '@/project/product/product-details/ProductDetailsSeries.vue';\r\nimport BrandCategoriesLinks from '@/project/product/product-details/BrandCategoriesLinks.vue';\r\nimport botService from '@/project/site/bot.service';\r\nimport serverContext from '@/core/serverContext.service';\r\nimport contentApiService from '@/core/http/contentApi.service';\r\nimport loggingService from '@/core/logging.service';\r\nimport GTMBasics from '@/project/tracking/gtm/GTM.basics';\r\n\r\n@Component({\r\n components: {\r\n ProductDetailsSeries,\r\n ProductListTracker,\r\n ProductDetailsSlider,\r\n ProductDetailsSpecifications,\r\n ProductDetailsRelatedModels,\r\n ProductDetailsReasonsToBuy,\r\n ProductDetailsCart,\r\n ProductDetailsRelations,\r\n ProductDetailsRecommendations,\r\n ProductTileStock,\r\n ReadMore,\r\n SmartParagraph,\r\n ProductTileFavorite,\r\n ProductDetailsPartnerLogos,\r\n CopyText,\r\n ProductDetailsBidTile,\r\n BrandCategoriesLinks\r\n }\r\n})\r\nexport default class ProductDetails extends Vue {\r\n @Prop({ required: true, type: Object }) details!: ProductDetailsViewModel;\r\n\r\n private priceData: PriceDetailedDataExtended | null = null;\r\n private stockData: readonly StockInformationViewObject[] | null = null;\r\n private conditions: readonly ProductTileViewObject[] = [];\r\n private bidsData: readonly ProductTileViewObject[] = [];\r\n private partnerLogos: readonly PartnerLogoViewModel[] = [];\r\n private productDetailsPage: ProductDetailsPageViewModel | null = null;\r\n private conditionsLoaded: boolean = false;\r\n private isERPServiceAvailable = true;\r\n\r\n private pricesLoaded: boolean = false;\r\n private stockLoaded: boolean = false;\r\n private bidsLoaded: boolean = false;\r\n private descriptionTranslated: null | string = null;\r\n\r\n private cancellationCallbacks: (() => void)[] = [];\r\n\r\n public $refs!: {\r\n description: HTMLElement;\r\n readMoreDescription: ReadMore;\r\n specifications: ProductDetailsSpecifications;\r\n };\r\n\r\n private get isUserLoggedIn(): boolean {\r\n return authService.isLoggedIn();\r\n }\r\n\r\n private get isStaff() {\r\n return permissionService.isStaff();\r\n }\r\n\r\n private get hasUserLoggedInBefore(): boolean {\r\n return authService.hasLoggedInBefore();\r\n }\r\n\r\n private get hasQuantityDiscounts() {\r\n return this.priceData && this.priceData.discounts ? this.priceData.discounts.length > 0 : false;\r\n }\r\n\r\n private get isDesignedFor() {\r\n return !!this.details.designedFor;\r\n }\r\n\r\n private siteLanguageLabel(languageCode: string): string {\r\n return siteService.languageLabel(languageCode);\r\n }\r\n\r\n private get labelForTranslateDescription():string {\r\n const languageTargetString = dictionaryService.get(siteService.languageLabel(siteService.getLanguageCode()?.toLowerCase()));\r\n return this.descriptionTranslated\r\n ? dictionaryService.get('Product.Details.Translate.ShowOriginal')\r\n : dictionaryService.get('Product.Details.Translate', [languageTargetString]);\r\n }\r\n\r\n private get isTranslationEnabled(): boolean {\r\n return serverContext.isFeatureEnabled(Feature.GoogleTranslatePdp) && this.isUserLoggedIn;\r\n }\r\n\r\n private async toggleDescriptionTranslation() {\r\n GTMBasics.pushToDataLayer({\r\n event: 'button.click',\r\n buttonTarget: this.descriptionTranslated ? 'revertTranslatePdp' : 'translatePdp'\r\n });\r\n if (this.descriptionTranslated) {\r\n this.descriptionTranslated = null;\r\n } else {\r\n const translation = await Api.translate.translateDescription(this.details.wid, serverContext.siteInfo.languageCode);\r\n this.descriptionTranslated = translation?.translatedData || null;\r\n }\r\n }\r\n\r\n private gotoDescription() {\r\n scrollService.scrollToElement(this.$refs.description, -100);\r\n this.$refs.readMoreDescription.open();\r\n }\r\n\r\n private gotoSpecifications() {\r\n scrollService.scrollToElement(this.$refs.specifications.$el as HTMLElement, -100);\r\n this.$refs.specifications.open();\r\n }\r\n\r\n private get shortDescription() {\r\n return this.details.shortDescription\r\n ? this.details.shortDescription : null;\r\n }\r\n\r\n private get description() {\r\n return this.descriptionTranslated\r\n ? this.descriptionTranslated : this.details.longDescription\r\n ? this.details.longDescription : this.details.longSummaryDescription\r\n ? this.details.longSummaryDescription : null;\r\n }\r\n\r\n private get bulletPoints() {\r\n return this.details.bulletPoints ? this.details.bulletPoints.slice(0, 10) : null;\r\n }\r\n\r\n private get hasBids() {\r\n return this.bidsData.length > 0;\r\n }\r\n\r\n private get hasActiveCampaign(): boolean {\r\n return this.details.campaigns.length > 0 && !!this.details.campaigns.find(c => c.showCampaignIcon);\r\n }\r\n\r\n private getClassificationCodeDictionary(details: boolean = false) {\r\n return productConditionService.getProductClassificationCodeDictionary(\r\n this.details.conditionCode,\r\n details\r\n );\r\n }\r\n\r\n private get hasProductSeries():boolean {\r\n return !!this.details?.productSeries;\r\n }\r\n\r\n private get deliveryCodeFromStock() {\r\n return this.stockData\r\n ? productDeliveryService.getProductDeliveryCodeDictionary(this.stockData)\r\n : null;\r\n }\r\n\r\n get myAccountBidsPage() {\r\n return PageName.MY_ACCOUNT_BIDS;\r\n }\r\n\r\n private async getPriceData() {\r\n this.priceData = null;\r\n\r\n if (!this.isUserLoggedIn) {\r\n this.pricesLoaded = true;\r\n return;\r\n }\r\n\r\n this.pricesLoaded = false;\r\n\r\n try {\r\n const request = detailedPriceFetchService.requestData(this.details.itemId);\r\n this.cancellationCallbacks.push(request.cancel);\r\n\r\n const result = await request.promise;\r\n this.priceData = Object.freeze(result);\r\n this.isERPServiceAvailable = this.isERPServiceAvailable && result.isServiceAvailable;\r\n } catch {\r\n } finally {\r\n this.pricesLoaded = true;\r\n this.priceOrStockLoaded();\r\n }\r\n }\r\n\r\n private async getStockData() {\r\n this.stockData = null;\r\n this.stockLoaded = false;\r\n\r\n try {\r\n const request = StockFetchService.requestData(this.details.itemId);\r\n this.cancellationCallbacks.push(request.cancel);\r\n\r\n const result = await request.promise;\r\n this.stockData = Object.freeze(result.stockInformation);\r\n this.isERPServiceAvailable = this.isERPServiceAvailable && result.isServiceAvailable;\r\n } catch {\r\n } finally {\r\n this.stockLoaded = true;\r\n this.priceOrStockLoaded();\r\n this.updateMetaData();\r\n }\r\n }\r\n\r\n private async getConditions() {\r\n this.conditions = [];\r\n\r\n if (this.details.conditionCode) return; // Do not fetch conditions if product itself is a condition\r\n\r\n try {\r\n const result = await Api.product.conditions(this.details.wid);\r\n this.conditions = Object.freeze(result.products);\r\n } catch {\r\n } finally {\r\n this.conditionsLoaded = true;\r\n }\r\n }\r\n\r\n private async getBidsData() {\r\n this.bidsData = [];\r\n\r\n if (!this.isUserLoggedIn) {\r\n this.bidsLoaded = true;\r\n return;\r\n }\r\n\r\n this.bidsLoaded = false;\r\n\r\n try {\r\n const request = productBidsFetchService.requestData(this.details.wid);\r\n this.cancellationCallbacks.push(request.cancel);\r\n\r\n const result = await request.promise;\r\n this.bidsData = Object.freeze(result.productBids);\r\n } catch {\r\n } finally {\r\n this.bidsLoaded = true;\r\n }\r\n }\r\n\r\n private async getProductDetailsPage() {\r\n this.productDetailsPage = null;\r\n\r\n try {\r\n const pageUrl = serverContext.settings ? `${serverContext.settings.productDetailsPage}` : null;\r\n if (!pageUrl) {\r\n loggingService.warn('Tried to fetch productDetailsPage but url is not present in server context!');\r\n return;\r\n }\r\n\r\n this.productDetailsPage = await contentApiService.getContent(pageUrl);\r\n } catch {\r\n } finally {\r\n this.updateMetaData();\r\n }\r\n }\r\n\r\n private trackAddToBasketChange(deltaQuantity: number) {\r\n GTMService.trackProductQuantityChange(this.createTrackingProduct(), deltaQuantity);\r\n }\r\n\r\n private get getTrackingState(): ProductTrackingState {\r\n if (!this.isUserLoggedIn) return ProductTrackingState.NotLoggedIn;\r\n if (!this.pricesLoaded || !this.stockLoaded) return ProductTrackingState.NoErpResponseYet;\r\n return this.isERPServiceAvailable ? ProductTrackingState.Complete : ProductTrackingState.ErpNotAvailable;\r\n }\r\n\r\n private get productSchemaQuestionJson() {\r\n const bullets = this.details.bulletPoints || [];\r\n const faqs: FrequentlyAskedQuestionViewObject[] = this.details.frequentlyAskedQuestions || [];\r\n\r\n if (bullets.length + faqs.length < 1) return null;\r\n const mainFeatureBulletsMarkup = bullets.map(b => `
  • ${b}
  • `).join('');\r\n\r\n const labelValues = {\r\n ...this.productBaseLabelValues,\r\n mainFeaturesCount: bullets.length\r\n };\r\n const labelQuestionKey = 'Product.SEO.FAQ.Mainfeatures';\r\n const questionLabelMainFeature = dictionaryService.exists(labelQuestionKey) ? dictionaryService.getWithNamedValues(labelQuestionKey, labelValues, true) : '';\r\n const labelKeyAnswerPrefix = 'Product.SEO.FAQ.Mainfeatures.AnswerPrefix';\r\n const answerPrefixLabelMainFeature = dictionaryService.exists(labelKeyAnswerPrefix) ? dictionaryService.getWithNamedValues(labelKeyAnswerPrefix, labelValues, true) : '';\r\n const labelKeyAnswerPostfix = 'Product.SEO.FAQ.Mainfeatures.AnswerPostfix';\r\n const answerPostfixLabelMainFeature = dictionaryService.exists(labelKeyAnswerPostfix) ? dictionaryService.getWithNamedValues(labelKeyAnswerPostfix, labelValues, true) : '';\r\n\r\n const schemaBase = 'https://schema.org/';\r\n const schema: any = {\r\n '@context': schemaBase,\r\n '@type': 'FAQPage',\r\n mainEntity: []\r\n };\r\n if (bullets.length) {\r\n schema.mainEntity.push({\r\n '@type': 'Question',\r\n name: questionLabelMainFeature,\r\n acceptedAnswer: {\r\n '@type': 'Answer',\r\n text: `${answerPrefixLabelMainFeature}
      ${mainFeatureBulletsMarkup}
    ${answerPostfixLabelMainFeature}`\r\n }\r\n });\r\n }\r\n faqs.forEach((faq) => {\r\n schema.mainEntity.push({\r\n '@type': 'Question',\r\n name: faq.question,\r\n acceptedAnswer: {\r\n '@type': 'Answer',\r\n text: faq.answer\r\n }\r\n });\r\n });\r\n return schema;\r\n }\r\n\r\n private get productSchemaJson() {\r\n const schemaBase = 'https://schema.org/';\r\n const schema: any = {\r\n '@context': schemaBase,\r\n '@type': 'Product',\r\n name: this.details.displayName,\r\n description: dictionaryService.get('Product.Schema.Description', [this.details.displayName]),\r\n image: this.schemaImages(),\r\n sku: this.details.itemId,\r\n mpn: this.details.mpn,\r\n brand: {\r\n '@type': 'Brand',\r\n name: this.details.brand,\r\n logo: this.details.brandLogos?.brandLogoUrl250px\r\n },\r\n review: []\r\n };\r\n\r\n // Add the gtin property based on the EAN code length. EET says that the EAN can't be longer than 13 but can be shorter than it\r\n if (this.details.ean) {\r\n if (this.details.ean.length === 8) {\r\n schema.gtin8 = this.details.ean;\r\n } else if (this.details.ean.length === 13) {\r\n schema.gtin13 = this.details.ean;\r\n } else {\r\n schema.gtin = this.details.ean;\r\n }\r\n }\r\n\r\n // Only display offers if user is authenticated\r\n if (this.isUserLoggedIn) {\r\n let conditionType = schemaBase;\r\n\r\n if (this.details.conditionCode === 2) {\r\n conditionType += 'RefurbishedCondition';\r\n } else {\r\n conditionType += 'NewCondition';\r\n }\r\n\r\n schema.offers = {\r\n '@type': 'Offer',\r\n url: window.location.href,\r\n priceCurrency: this.priceData?.price.currency,\r\n price: this.priceData?.price.invariantCultureFormatted,\r\n itemCondition: conditionType,\r\n availability: this.schemaAvailability(),\r\n seller: {\r\n '@type': 'Organization',\r\n name: dictionaryService.get('Product.Schema.SellerName')\r\n }\r\n };\r\n } else {\r\n schema.offers = [];\r\n }\r\n\r\n return schema;\r\n }\r\n\r\n private schemaAvailability() :string {\r\n let schemaType = 'https://schema.org/';\r\n const status = this.stockStatus();\r\n\r\n if (status === undefined) {\r\n schemaType += 'Discontinued';\r\n } else if (status === 2) {\r\n schemaType += 'Preorder';\r\n } else {\r\n schemaType += 'InStock';\r\n }\r\n\r\n return schemaType;\r\n }\r\n\r\n private schemaImages() :string[] {\r\n return this.details?.images.map(image => responsiveProductImageService.defaultImageUrl(image.uri));\r\n }\r\n\r\n private priceOrStockLoaded(): void {\r\n if (!this.pricesLoaded || !this.stockLoaded) return;\r\n this.$emit('productComplete', this.createTrackingProduct());\r\n }\r\n\r\n private createTrackingProduct(): TrackingProduct {\r\n return {\r\n ...this.details,\r\n price: this.priceData?.price,\r\n stockInfo: this.stockData,\r\n trackingState: this.getTrackingState\r\n };\r\n }\r\n\r\n private get productBaseLabelValues(): NamedLabelArgument {\r\n const labelValues: NamedLabelArgument = {\r\n brand: this.details.brand,\r\n product: this.details.displayName,\r\n itemId: this.details.itemId,\r\n ean: this.details.ean || undefined,\r\n mpn: this.details.mpn,\r\n category: this.details.breadCrumb.at(-2)?.name || undefined,\r\n subLine: this.details.subLine || undefined\r\n };\r\n return labelValues;\r\n }\r\n\r\n private updateMetaData() :void {\r\n const status = this.stockStatus();\r\n let stockStatusLabel: string | null;\r\n if (botService.uaIsBot() || botService.uaIsPrerender()) {\r\n stockStatusLabel = null;\r\n } else if (status === undefined) {\r\n stockStatusLabel = dictionaryService.get('Product.SEO.Status.Discontinued');\r\n } else if (status === 2) {\r\n stockStatusLabel = dictionaryService.get('Product.SEO.Status.Preorder');\r\n } else {\r\n stockStatusLabel = dictionaryService.get('Product.SEO.Status.InStock');\r\n }\r\n\r\n const displayNameAndItemId = `${this.details.displayName}, ${this.details.itemId}`;\r\n\r\n const categoryValues = {};\r\n const breadcrumbs = this.details.breadCrumb.slice(0, this.details.breadCrumb.length - 1);\r\n breadcrumbs.map((cat, catIndex) => categoryValues[`categoryLevel${catIndex + 1}`] = cat.name);\r\n\r\n const labelValues: NamedLabelArgument = {\r\n ...this.productBaseLabelValues,\r\n status: stockStatusLabel,\r\n ...categoryValues\r\n };\r\n const titleLabelKey = 'Product.SEO.Title';\r\n const titleLabel = dictionaryService.get(titleLabelKey, [displayNameAndItemId]);\r\n const titleLabelTranslated = titleLabelKey && dictionaryService.getWithNamedValues(titleLabelKey, labelValues, true);\r\n\r\n const titleKeys = this.productDetailsPage?.seoTitles;\r\n const titleKeysTranslated = titleKeys && dictionaryService.getWithNamedValuesUntilString(titleKeys, labelValues);\r\n\r\n const descriptionLabelKey = 'Product.SEO.Description';\r\n const descriptionLabel = dictionaryService.get(descriptionLabelKey, [this.details.displayName, stockStatusLabel, this.details.ean || undefined, this.details.mpn]);\r\n const descriptionLabelTranslated = descriptionLabelKey && dictionaryService.getWithNamedValues(descriptionLabelKey, labelValues, true);\r\n\r\n const descriptionKey = this.productDetailsPage?.seoDescription;\r\n const descriptionKeyTranslated = descriptionKey && dictionaryService.getWithNamedValues(descriptionKey, labelValues, true, true);\r\n\r\n domService.setTitle(titleKeysTranslated || titleLabelTranslated || titleLabel);\r\n domService.setDescription(descriptionKeyTranslated || descriptionLabelTranslated || descriptionLabel);\r\n domService.setCanonicalUrl(window.servercontext.culture + this.details.canonical, true);\r\n domService.setOpenGraphImage(this.details?.images?.length ? { url: responsiveProductImageService.defaultImageUrl(this.details.images[0].uri), name: `${this.details.displayName}-${this.details.images[0].name}` } as Media : null);\r\n\r\n const expectedProductUrl = this.details?.canonical ? `${serverContext.siteInfo.url}${this.details.canonical}` : null;\r\n botService.setPrerenderRedirectUrlsIfLocationIsWrong(expectedProductUrl);\r\n }\r\n\r\n private stockStatus() {\r\n if (!this.stockData || this.stockData.length === 0) return;\r\n\r\n return this.stockData[0].locationType;\r\n }\r\n\r\n private get isLimitedItem() {\r\n return this.details.blocking === 2; // LIMITED ITEM\r\n }\r\n\r\n private async getPartnerLogos() {\r\n if (this.isUserLoggedIn || this.hasUserLoggedInBefore) return;\r\n\r\n const result = await Api.personalization.partnerLogos(\r\n this.details.brand ?? '',\r\n this.getClassificationCodeDictionary() ?? '',\r\n this.details.breadCrumb[0].id,\r\n this.details.mpn ?? '',\r\n this.details.itemId ?? '',\r\n this.details.pph ?? '',\r\n this.details.categoryId ?? '0',\r\n this.details.productGroup?.split(' ').shift() ?? '',\r\n this.$route.fullPath,\r\n adnuntiusService.getContactKey(),\r\n adnuntiusService.getCustomerKey());\r\n\r\n this.partnerLogos = Object.freeze(result);\r\n }\r\n\r\n get itemId(): string | null {\r\n if (serverContext.isExternalProductGuide) return null;\r\n return (this.details.mpn !== this.details.itemId && this.details.itemId) || null;\r\n }\r\n\r\n get mpn(): string | null {\r\n return this.details.mpn || null;\r\n }\r\n\r\n private created() {\r\n this.getPriceData();\r\n this.getStockData();\r\n this.getConditions();\r\n this.getBidsData();\r\n this.getProductDetailsPage();\r\n this.getPartnerLogos();\r\n }\r\n\r\n private cancelOutstandingXHRRequests() {\r\n this.cancellationCallbacks.forEach(x => x && x());\r\n }\r\n\r\n private destroyed() {\r\n this.cancelOutstandingXHRRequests();\r\n }\r\n\r\n @Watch('details')\r\n onDetailsChange(\r\n current: ProductDetailsViewModel,\r\n previous: ProductDetailsViewModel\r\n ) {\r\n if (current.wid !== previous?.wid) {\r\n this.getPriceData();\r\n this.getStockData();\r\n this.getConditions();\r\n this.getBidsData();\r\n }\r\n }\r\n\r\n @Watch('isUserLoggedIn')\r\n onLoginStateChange(now: boolean, before: boolean) {\r\n if (now && !before) {\r\n this.getPriceData();\r\n this.getBidsData();\r\n this.getStockData();\r\n }\r\n }\r\n\r\n openReportOverlay() {\r\n productFeedbackOverlayService.show(this.details);\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!./ProductDetails.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!./ProductDetails.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductDetails.vue?vue&type=template&id=6a64c629&scoped=true&\"\nimport script from \"./ProductDetails.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductDetails.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ProductDetails.vue?vue&type=style&index=0&id=6a64c629&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 \"6a64c629\",\n null\n \n)\n\nexport default component.exports","const productDetailsRegEx = /-wid-([A-Za-z0-9]*)$/i;\r\n\r\nfunction getProductWidFromUrl(url: string): string | null {\r\n const match = url.match(productDetailsRegEx);\r\n if (match === null || match.length !== 2) return null;\r\n const productId = match[1];\r\n return productId;\r\n}\r\n\r\nfunction matchingRegEx(): RegExp {\r\n return productDetailsRegEx;\r\n}\r\n\r\nexport default {\r\n getProductWidFromUrl,\r\n matchingRegEx\r\n};\r\n","\n\n\n\n\n\n\n\r\nimport { Component, Vue, Watch } from 'vue-property-decorator';\r\nimport Api from '@/project/http/Api.service';\r\nimport ProductDetails from '@/project/product/product-details/ProductDetails.vue';\r\nimport productDetailsUrlService from './productDetailsUrl.service';\r\nimport { ProductDetailsViewModel } from '@/types/apiServerContract';\r\nimport appStore from '@/core/app/app.store';\r\nimport gtmService, { ProductTrackingState, TrackingProduct } from '@/project/tracking/gtm/GTM.service';\r\nimport { Route } from 'vue-router';\r\nimport domService from '@/core/dom/dom.service';\r\nimport errorCodeService from '@/core/errorCode.service';\r\nimport { NOT_FOUND } from 'http-status-codes';\r\nimport SpinnerOverlay from '@/project/spinners/SpinnerOverlay.vue';\r\n\r\n@Component({\r\n components: { ProductDetails, SpinnerOverlay },\r\n beforeRouteEnter: (to: Route, from: Route, next) => {\r\n next();\r\n }\r\n})\r\nexport default class ProductDetailsPage extends Vue {\r\n private details: ProductDetailsViewModel | null = null;\r\n private hasTrackedPage = false;\r\n private loading: boolean = false;\r\n\r\n created() {\r\n this.setup();\r\n }\r\n\r\n @Watch('$route')\r\n onRouteChange(to: Route, from: Route) {\r\n if (to.path === from.path) return;\r\n this.setup();\r\n }\r\n\r\n private async setup() {\r\n if (!this.hasTrackedPage && this.details) {\r\n gtmService.trackProductDetailsPage({\r\n ...this.details,\r\n stockInfo: null,\r\n price: undefined,\r\n trackingState: ProductTrackingState.NoErpResponseYet\r\n });\r\n }\r\n\r\n this.hasTrackedPage = false;\r\n const productWid = productDetailsUrlService.getProductWidFromUrl(this.$route.path);\r\n if (!productWid) return; // Probably because we're leaving page...\r\n\r\n this.loading = true;\r\n\r\n try {\r\n const result = await Api.product.details(productWid);\r\n this.details = Object.freeze(result);\r\n appStore.setBreadcrumb(result.breadCrumb);\r\n } catch (error) {\r\n appStore.setBreadcrumb([]);\r\n const logMessage = `ProductDetailsPage: A page with the following 'productWid' was not found: ${productWid}`;\r\n errorCodeService.handleErrorCodes(NOT_FOUND, logMessage, productWid);\r\n } finally {\r\n this.loading = false;\r\n }\r\n\r\n if (this.details?.alternativeUrls) {\r\n domService.setHreflang(this.details?.alternativeUrls);\r\n }\r\n }\r\n\r\n private trackPage(product: TrackingProduct) {\r\n // Prices and stock ready\r\n gtmService.trackProductDetailsPage(product);\r\n this.hasTrackedPage = true;\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!./ProductDetailsPage.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!./ProductDetailsPage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductDetailsPage.vue?vue&type=template&id=c6ff7976&\"\nimport script from \"./ProductDetailsPage.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductDetailsPage.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","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es-x/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","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!./ProductDetailsSlider.vue?vue&type=style&index=0&id=3c4405e6&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!./ProductDetailsSlider.vue?vue&type=style&index=0&id=3c4405e6&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!./ProductDetailsReasonsToBuy.vue?vue&type=style&index=0&id=f729beb2&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!./ProductDetailsReasonsToBuy.vue?vue&type=style&index=0&id=f729beb2&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!./ProductDetailsSeries.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!./ProductDetailsSeries.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.isVideo)?_c('article',{staticClass:\"w-full h-full overflow-hidden relative\"},[_c('video-render',{attrs:{\"video-url\":_vm.url,\"size\":_vm.productMediaSize,\"mode\":_vm.mediaMode}})],1):_c('responsive-product-image',{attrs:{\"image-url\":_vm.url,\"size\":_vm.productMediaSize,\"alt\":_vm.imageName}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport ResponsiveProductImage from '@/project/product/image/ResponsiveProductImage.vue';\r\nimport VideoRender from '@/project/video/ProductVideoRender.vue';\r\nimport { XS, SM, MD, MIN_LG } from '@/core/config/breakpointConfig';\r\n\r\n@Component({\r\n components: { ResponsiveProductImage, VideoRender }\r\n})\r\nexport default class ProductDetailsImageVideo extends Vue {\r\n @Prop({\r\n required: true,\r\n type: String\r\n }) url!: string;\r\n\r\n @Prop({\r\n type: String,\r\n validator: (value: string | undefined) => value === undefined || ['thumbnail', 'pdp', 'fullscreen'].includes(value)\r\n })\r\n private mediaMode!: 'thumbnail' | 'pdp' | 'fullscreen';\r\n\r\n @Prop({\r\n type: Boolean,\r\n default: false\r\n }) isVideo!: boolean;\r\n\r\n @Prop({\r\n type: String,\r\n default: ''\r\n }) imageName!: string;\r\n\r\n private get productMediaSize(): string | object {\r\n switch (this.mediaMode) {\r\n case 'thumbnail':\r\n return '200';\r\n case 'pdp':\r\n return '700';\r\n case 'fullscreen':\r\n return {\r\n [XS]: '300',\r\n [SM]: '700',\r\n [MD]: '700',\r\n [MIN_LG]: '1400'\r\n };\r\n }\r\n throw new Error('unknown image-mode: ' + this.mediaMode);\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!./ProductDetailsImageVideo.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!./ProductDetailsImageVideo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductDetailsImageVideo.vue?vue&type=template&id=60190522&\"\nimport script from \"./ProductDetailsImageVideo.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductDetailsImageVideo.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!./ProductDetailsRelations.vue?vue&type=style&index=0&id=524f3f25&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!./ProductDetailsRelations.vue?vue&type=style&index=0&id=524f3f25&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!./ProductDetailsBidTile.vue?vue&type=style&index=0&id=78a14360&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!./ProductDetailsBidTile.vue?vue&type=style&index=0&id=78a14360&lang=less&scoped=true&\"","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es-x/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\n\nvar charAt = uncurryThis(''.charAt);\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line es-x/no-array-string-prototype-at -- safe\n return '𠮷'.at(-2) !== '\\uD842';\n});\n\n// `String.prototype.at` method\n// https://github.com/tc39/proposal-relative-indexing-method\n$({ target: 'String', proto: true, forced: FORCED }, {\n at: function at(index) {\n var S = toString(requireObjectCoercible(this));\n var len = S.length;\n var relativeIndex = toIntegerOrInfinity(index);\n var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n return (k < 0 || k >= len) ? undefined : charAt(S, k);\n }\n});\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"videoWrapper\",staticClass:\"video relative\",class:_vm.cssClasses},[(_vm.isVimeoVideo)?_c('vimeo-video',{staticClass:\"outline-none\",attrs:{\"url\":_vm.videoUrl,\"mode\":_vm.screenMode,\"allow-controls\":_vm.allowControls,\"start-video\":_vm.startVideo}}):(_vm.isYoutubeVideo)?_c('youtube-video',{staticClass:\"outline-none\",attrs:{\"url\":_vm.videoUrl,\"mode\":_vm.screenMode,\"allow-controls\":_vm.allowControls,\"start-video\":_vm.startVideo}}):_c('native-video',{staticClass:\"outline-none\",attrs:{\"url\":_vm.videoUrl,\"allow-controls\":_vm.allowControls,\"start-video\":_vm.startVideo}}),(_vm.screenMode !== 'fullscreen')?_c('span',{staticClass:\"play absolute inset-0 m-auto\"},[_c('c-icon',{attrs:{\"name\":\"play\",\"width\":_vm.iconWidth,\"height\":_vm.iconHeight}}),_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Play\")])],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('video',{attrs:{\"src\":_vm.url,\"preload\":\"metadata\",\"controls\":_vm.allowControls,\"autoplay\":_vm.startVideo}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\r\nimport { Vue, Prop } from 'vue-property-decorator';\r\nimport Component from 'vue-class-component';\r\n\r\n@Component\r\n\r\nexport default class NativeVideo extends Vue {\r\n @Prop({ type: String, required: true })\r\n private url!: string;\r\n\r\n @Prop({\r\n required: true,\r\n type: Boolean\r\n }) startVideo!: boolean;\r\n\r\n @Prop({\r\n required: true,\r\n type: Boolean\r\n }) allowControls!: 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!./ProductNativeVideo.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!./ProductNativeVideo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductNativeVideo.vue?vue&type=template&id=0eda7191&\"\nimport script from \"./ProductNativeVideo.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductNativeVideo.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',[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.fullscreenMode),expression:\"!fullscreenMode\"}]},[_c('div',{ref:\"videoMount\"})]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.fullscreenMode),expression:\"fullscreenMode\"}]},[_c('div',{ref:\"videoPlayMount\",staticClass:\"absolute top-0 left-0 z-1\"})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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 VimeoPlayer from '@vimeo/player';\r\n\r\n@Component\r\nexport default class ProductVimeoVideo extends Vue {\r\n @Prop({ type: String, required: true })\r\n private url!: string;\r\n\r\n @Prop({\r\n required: true,\r\n type: String\r\n }) mode!: string;\r\n\r\n @Prop({\r\n required: true,\r\n type: Boolean\r\n }) startVideo!: boolean;\r\n\r\n $refs!: {\r\n videoMount?: HTMLElement,\r\n videoPlayMount?: HTMLElement,\r\n }\r\n\r\n private mounted() {\r\n // Setup the fullscreen video mount\r\n this.$nextTick(() => {\r\n if (this.fullscreenMode) {\r\n if (this.$refs.videoPlayMount) {\r\n const playOptions = {\r\n url: this.url,\r\n controls: true,\r\n autoplay: this.startVideo\r\n };\r\n\r\n // eslint-disable-next-line no-new\r\n new VimeoPlayer(this.$refs.videoPlayMount, playOptions);\r\n }\r\n } else {\r\n if (this.$refs.videoMount) {\r\n const posterOptions = {\r\n url: this.url,\r\n controls: false,\r\n background: false,\r\n width: 165\r\n };\r\n\r\n // eslint-disable-next-line no-new\r\n new VimeoPlayer(this.$refs.videoMount, posterOptions);\r\n }\r\n }\r\n });\r\n }\r\n\r\n private get fullscreenMode(): boolean {\r\n return this.mode === 'fullscreen';\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!./ProductVimeoVideo.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!./ProductVimeoVideo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductVimeoVideo.vue?vue&type=template&id=1c2f5789&\"\nimport script from \"./ProductVimeoVideo.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductVimeoVideo.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.allowControls)?_c('div',[_c('iframe',{attrs:{\"src\":_vm.youtubeUrl,\"frameborder\":\"0\",\"allowfullscreen\":\"\"}})]):_c('img',{attrs:{\"src\":_vm.videoImage,\"alt\":\"\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Prop } from 'vue-property-decorator';\r\nimport Component from 'vue-class-component';\r\n\r\n@Component\r\n\r\nexport default class ProductYoutubeVideo extends Vue {\r\n @Prop({ type: String, required: true })\r\n private url!: string;\r\n\r\n @Prop({\r\n required: true,\r\n type: String\r\n }) mode!: string;\r\n\r\n @Prop({\r\n required: true,\r\n type: Boolean\r\n }) startVideo!: boolean;\r\n\r\n @Prop({\r\n required: true,\r\n type: Boolean\r\n }) allowControls!: boolean;\r\n\r\n private get videoId() {\r\n const youtubeRegex = /^.*((youtube\\/)|(youtu.be\\/)|(v\\/)|(\\/u\\/\\w\\/)|(embed\\/)|(watch\\?))\\??v?=?([^#&?]*).*/;\r\n const match = this.url.match(youtubeRegex);\r\n\r\n return (match && match[8].length >= 11) ? match[8].slice(0, 11) : 'default';\r\n }\r\n\r\n // Fixes iframe same-origin issues: https://stackoverflow.com/questions/41522652/refused-to-display-url-in-a-frame-because-it-set-x-frame-options-to-sameori/49330250#49330250\r\n private get youtubeUrl() {\r\n return `https://youtube.com/embed/${this.videoId}?autoplay=${this.startVideo ? 1 : 0}`;\r\n }\r\n\r\n private get videoImage() : string {\r\n return `https://i.ytimg.com/vi/${this.videoId}/${this.imageResolution}.jpg`;\r\n }\r\n\r\n private get imageResolution() : string {\r\n return this.mode === 'thumbnail' ? 'mqdefault' : 'maxresdefault';\r\n }\r\n}\r\n","export enum VideoType {\r\n Vimeo = 'vimeo',\r\n Youtube = 'youtu',\r\n Native = 'native'\r\n}\r\n\r\nexport const supportedSizes = ['200', '300', '700', '1400'];\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!./ProductYoutubeVideo.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!./ProductYoutubeVideo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductYoutubeVideo.vue?vue&type=template&id=a92458e2&\"\nimport script from \"./ProductYoutubeVideo.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductYoutubeVideo.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","\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 NativeVideo from './ProductNativeVideo.vue';\r\nimport VimeoVideo from './ProductVimeoVideo.vue';\r\nimport YoutubeVideo from './ProductYoutubeVideo.vue';\r\nimport { supportedSizes, VideoType } from './constants';\r\nimport breakpointState from '@/core/responsive/breakpoints/breakpointsState.observable';\r\nimport { XS } from '@/core/config/breakpointConfig';\r\n\r\n@Component({\r\n components: { NativeVideo, VimeoVideo, YoutubeVideo }\r\n})\r\n\r\nexport default class ProductVideoRender extends Vue {\r\n @Prop({ type: String, required: true })\r\n private videoUrl!: string;\r\n\r\n @Prop({\r\n required: true,\r\n type: String\r\n }) mode!: 'thumbnail' | 'pdp' | 'fullscreen';\r\n\r\n @Prop({\r\n type: [String, Object],\r\n required: true,\r\n validator: (value: string | object) => {\r\n const valuesToCheck = typeof value === 'string' ? [value] : Object.values(value);\r\n return valuesToCheck.every(val => supportedSizes.includes(val));\r\n }\r\n })\r\n private size!: string | { [breakpoint: string]: string};\r\n\r\n private get videoType(): VideoType {\r\n let videoType: VideoType;\r\n\r\n if (this.videoUrl.indexOf(VideoType.Vimeo) !== -1) {\r\n videoType = VideoType.Vimeo;\r\n } else if (this.videoUrl.indexOf(VideoType.Youtube) !== -1) {\r\n videoType = VideoType.Youtube;\r\n } else {\r\n videoType = VideoType.Native;\r\n }\r\n\r\n return videoType;\r\n }\r\n\r\n private get isYoutubeVideo() {\r\n return this.videoType === VideoType.Youtube;\r\n }\r\n\r\n private get isVimeoVideo() {\r\n return this.videoType === VideoType.Vimeo;\r\n }\r\n\r\n private get screenMode(): string {\r\n if (this.isMobile) return 'fullscreen';\r\n\r\n switch (this.mode) {\r\n case 'thumbnail':\r\n return 'thumbnail';\r\n case 'pdp':\r\n return 'pdp';\r\n case 'fullscreen':\r\n return 'fullscreen';\r\n }\r\n throw new Error('unknown screen-mode: ' + this.mode);\r\n }\r\n\r\n protected get isMobile() {\r\n return breakpointState.isBreakpointActive(XS);\r\n }\r\n\r\n private get cssClasses(): string {\r\n return `${this.screenMode} ${this.videoType}`;\r\n }\r\n\r\n private get iconWidth(): string {\r\n return this.screenMode === 'thumbnail' ? '13' : '26';\r\n }\r\n\r\n private get iconHeight(): string {\r\n return this.screenMode === 'thumbnail' ? '16' : '32';\r\n }\r\n\r\n private get allowControls() {\r\n return this.screenMode === 'fullscreen' || this.isMobile;\r\n }\r\n\r\n $refs!: Vue['$refs'] & {\r\n videoWrapper: HTMLElement\r\n }\r\n\r\n private autoplay: boolean | null = false;\r\n\r\n private mounted() {\r\n const videoWrapper = this.$refs.videoWrapper;\r\n const visibleState = this.isScrolledIntoView(videoWrapper);\r\n this.autoplay = visibleState;\r\n }\r\n\r\n private isScrolledIntoView(el: HTMLElement) {\r\n const parent = el.closest('.swiper-container');\r\n if (!parent) return false;\r\n const rect = el.getBoundingClientRect();\r\n const parentRect = parent.getBoundingClientRect();\r\n const isVisible = (rect.top >= parentRect.top) && (rect.bottom <= parentRect.bottom) && (rect.left >= parentRect.left) && (rect.right <= parentRect.right);\r\n return isVisible;\r\n }\r\n\r\n private get startVideo() {\r\n return this.screenMode === 'fullscreen' && this.autoplay;\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!./ProductVideoRender.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!./ProductVideoRender.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductVideoRender.vue?vue&type=template&id=0eafe25d&scoped=true&\"\nimport script from \"./ProductVideoRender.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductVideoRender.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ProductVideoRender.vue?vue&type=style&index=0&id=0eafe25d&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 \"0eafe25d\",\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!./ProductDetailsPartnerLogos.vue?vue&type=style&index=0&id=b5f1cf3e&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!./ProductDetailsPartnerLogos.vue?vue&type=style&index=0&id=b5f1cf3e&lang=less&scoped=true&\""],"sourceRoot":""}