{"version":3,"sources":["webpack:///./src/utilities/dropdown-quantity/index.ts?b143","webpack:///src/modules/iframe/iframe.tsx?d14a","webpack:///./src/themes/nile-theme/views/navigation-menu.view.tsx?5eaf","webpack:///./src/themes/nile-theme/views/order-confirmation.view.tsx?de63","webpack:///src/modules/cookie-compliance/components/accept-button.tsx?1709","webpack:///src/modules/cookie-compliance/components/links.tsx?807e","webpack:///src/modules/cookie-compliance/cookie-compliance.tsx?5f7e","webpack:///./src/modules/clone-cart/clone-cart.tsx?388f","webpack:///./src/themes/nile-theme/views/order-history.view.tsx?fb6f","webpack:///./src/themes/nile-theme/views/media-gallery.view.tsx?aed7","webpack:///src/modules/loyalty-sign-up/components/loyalty-sign-up-small-components.tsx?d781","webpack:///src/modules/loyalty-sign-up/loyalty-sign-up.tsx?f29d","webpack:///src/modules/fabrikam/views/ratings-histogram.view.tsx?96ae","webpack:///src/modules/adventureworks/views/write-review.view.tsx?7a62","webpack:///src/modules/iframe/iframe.view.tsx?dd86","webpack:///./src/modules/clone-cart/clone-cart.view.tsx?9ed1","webpack:///./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/modules/es.symbol.async-iterator.js?137a","webpack:///src/modules/adventureworks/views/content-block.view.tsx?ebaa","webpack:///src/modules/adventureworks/views/order-details.view.tsx?1e8c","webpack:///./src/themes/nile-theme/views/reviews-list.view.tsx?7451","webpack:///src/modules/adventureworks/views/b2b-requests-status.view.tsx?b8db","webpack:///./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/internals/path.js?2c34","webpack:///./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/internals/well-known-symbol-wrapped.js?6776","webpack:///src/modules/loyalty-sign-up/loyalty-sign-up.view.tsx?ed3f","webpack:///src/modules/fabrikam/views/header.view.tsx?1cde","webpack:///./src/themes/nile-theme/views/ratings-histogram.view.tsx?7c27","webpack:///./src/themes/nile-theme/views/buybox.view.tsx?b573","webpack:///./src/utilities/dropdown-quantity/DropdownQuantity.tsx?3588","webpack:///./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/internals/well-known-symbol-define.js?8fcb","webpack:///src/modules/loyalty-terms/components/loyalty-terms-modal.tsx?c84d","webpack:///src/modules/loyalty-terms/loyalty-terms.tsx?0629","webpack:///src/modules/adventureworks/views/cart.view.tsx?7e13","webpack:///src/modules/cookie-compliance/cookie-compliance.view.tsx?b30b","webpack:///src/modules/product-comparison-button/product-comparison-button.tsx?934c","webpack:///./src/modules/nile-subscribe/nile-subscribe.tsx?2976","webpack:///src/modules/adventureworks/views/sign-in.view.tsx?94bb","webpack:///./src/modules/nile-subscribe/nile-subscribe.view.tsx?2b3e","webpack:///src/modules/loyalty-terms/loyalty-terms.view.tsx?5155","webpack:///src/modules/fabrikam/views/order-details.view.tsx?2a61","webpack:///src/modules/product-comparison-button/product-comparison-button.view.tsx?68cc"],"names":["Iframe","React","constructor","props","super","this","iframeRef","render","config","resources","isConsentGiven","context","request","cookies","target","destinationUrl","srcURL","URL","error","telemetry","exception","protocol","toLocaleLowerCase","iframeClassName","classnames","className","viewProps","_objectSpread","Heading","_createHeading","heading","IframeContainer","moduleProps","IFrame","_createIframe","cookieConsentAccepted","alert","_renderAlert","cookieConsentRequiredMessage","renderView","text","length","Object","assign","message","role","targetURL","src","height","iframeAriaLabel","ref","NavigationMenuView","currentLevel","_positionInSetOffset","escapeKey","_updateCategoryImage","categoryImageSrc","option","linkText","promotionalImage","altText","ArrayExtensions","hasElements","promotionalContent","map","item","image","imageSrc","promotionalItemImageSettings","imageSettings","push","additionalProperties","linkUrl","setState","categoryImage","categoryImageAltText","_handleDropdownToggle","data","parentId","isMobileView","activeMenu","id","parentMenu","showMenuOnHover","state","undefined","_handleMouseLeaveEvent","showCategoryImage","imageSource","_resetFocus","setTimeout","menuNode","current","focus","_handleClickOutside","event","contains","_handleFocusOutside","relatedTarget","_closeSubmenu","_escFunction","keyCode","navDrawerList","Array","from","childNodes","navDrawerButton","firstChild","getAttribute","_getCategoryImage","categoryImageUrl","generateImageUrl","actionContext","requestContext","apiSettings","defaultImageSettings","viewports","xs","q","w","h","sm","md","lg","lazyload","_categoryImage$imageS","_this$props$config$ca","ImageData","Image","gridSettings","categoryImageSettings","loadFailureBehavior","_onDrawerChange","drawerState","drawerKeyValue","newPair","buttonText","isOpen","menuItemData","retailMenuInsertLinks","cmsNavItems","_menuItemDataClone","retailMenu","find","mi","menuSource","hideMenuItem","_item$linkUrl","_retailMenu$subMenu","_item$image","_retailMenu$subMenu2","tempMenuItem","linkURL","shouldOpenNewTab","openInNewTab","subMenu","splice","insertPosition","menuItem","menuItemPair","cms","idx","findIndex","i","timeout","bind","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","payLoad","getPayloadObject","componentDidMount","MsDyn365","isBrowser","document","body","addEventListener","componentWillUnmount","removeEventListener","_renderMobileMenu","_renderDesktopMenu","Navigation","Module","posinset","_renderDrawerMenu","MenuList","Node","tabIndex","_renderDisplay","setSize","_renderDrawer","_renderLinkMenuItem","toggleButtonText","keyValue","isDrawerOpen","colProps","Drawer","toggleButtonProps","key","openGlyph","onToggle","collapseProps","closeGlyph","glyphPlacement","_renderLinkText","menuSubItem","currentPos","_menuItem$subMenu2","_menuItem$subMenu","_renderDrawerLink","_renderSpanMenuItem","ListItem","menuItemList","menuItemDatum","_getFromSubMenu","_createMenuItemList","forEach","index","subMenus","found","_renderSubMenu","_renderButtonMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","levelClassName","menuOptions","hasOptions","haveSubmenu","Math","round","toString","_renderMenu","menuHideTimeout","timeToCloseMenu","traverseNodes","nodeList","querySelectorAll","node","isInMenu","parentNode","_node$classList","classList","clearTimeout","Button","tag","href","onClick","window","location","onMouseEnter","onFocus","hoverEffect","arguments","isParent","Link","imagesource","contentAction","etext","attributes","getTelemetryAttributes","currentPath","url","requestUrl","pathname","menuLink","cmsMenuLink","onMouseOver","onTelemetryClick","indexOf","_renderPromotionalLink","Span","level","currentItem","submenu","DivContainer","ImageDivContainer","showPromotionalContent","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","OrderConfirmationOrderInfomation","_ref","orderInformationProps","receiptEmail","createdDate","OrderConfirmationSalesLine","_ref2","salesLineProps","salesLine","buyAgainButton","OrderConfirmationGroupDelivery","_ref3","deliveryProps","count","processing","address","trackingInfo","pickupDateTimeslot","OrderConfirmationGroup","_ref4","groupProps","delivery","salesLinesProps","salesLines","orderSummaryTitle","_renderOrderSummaryHeading","LineId","OrderConfirmationGroups","_ref5","groupsProps","groups","group","OrderConfirmationOrderSummary","_ref6","salesOrder","orderSummaryProps","shipping","subtotal","totalAmount","earnedPoints","backToShoppingLink","value","SubtotalAmountWithoutTax","OrderConfirmationPayment","_ref7","paymentMethodsProps","title","methods","OrderConfirmationHelp","_ref8","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","productColumnHeading","colorColumnHeading","sizeColumnHeading","quantityColumnHeading","priceColumnHeading","totalColumnHeading","getPriceContext","typeName","freePriceText","OrderConfirmationView","_salesOrder$CreatedDa","_salesOrder$CreatedDa2","loading","orderInfomation","orderSummary","payment","help","orderString","CreatedDateTime","orderDate","Date","changeHref","msdyn365Commerce","el","channelReferenceId","thankYouMessage","orderPlacedOnLabel","replace","toLocaleDateString","priceContext","tyvm","paidMsg","signOff","teamNile","CookieComplianceAcceptButton","acceptCookiesButtonText","acceptCookiesButtonAriaLabel","onClose","type","CookieComplianceLinks","_mapEditableLinks","linkdata","editableLinks","link","editableLink","ariaLabel","links","Msdyn365","editProps","onTextChange","CookieCompliance","handleLinkTextChange","linkIndex","_this$props$config$ac","actionLinks","handleContentChange","content","visible","cookieRef","_onDismiss","acceptCookiesAriaLabel","moduleConfig","onDismiss","CookieComplianceBanner","AlertProps","color","fade","Content","onEdit","acceptButton","setConsentCookie","reload","CloneCart","oun","channelId","products","modalOpen","_this$props$data$cart","cart","result","_cloneCart","err","_noop","modal","_renderModal","_this$props$data$cart2","destinationCart","lastCartId","get","lastOun","lastChannelId","Number","parseInt","set","Id","_sourceCart$CartLines","lastCtx","_cloneDeep","sourceCart","_readAsync","CartLines","productIdSet","Set","cl","add","ProductId","_getByIdsAsync","errors","_iteratorError","_iteratorAbruptCompletion","_didIteratorError","_step","_iterator","_asyncIterator","next","done","cartLine","_sourceCart$CartLines2","productId","cartLineNumber","LineNumber","product","p","RecordId","_addProductToCart","Quantity","status","return","ctx","cartId","readAsync","callerContext","getByIdsAsync","input","addProductToCart","Modal","toggle","ModalHeader","resourceKey","Name","OrderHistoryOrderInfomation","salesId","receiptId","channelName","amount","OrderHistoryGroupDelivery","OrderHistoryGroup","OrderHistoryGroups","OrderHistoryHeader","headerProps","orderCountLabel","extraActions","OrderHistorySalesOder","salesOrderProps","orderDetailsLink","expandProductsButton","OrderHistoryList","listProps","salesOrders","OrderHistoryView","orderHistoryProps","header","emptyMessage","list","table","moreButton","_renderThumbnails","thumbnails","ThumbnailsContainerProps","SingleSlideCarouselComponentProps","items","_renderThumbnailItem","thumbnail","ThumbnailItemContainerProps","Picture","MediaGalleryView","CarouselProps","Thumbnails","MediaGallery","images","formatJpgString","img","SignUpText","createElement","LoyaltySignUp","handleHeadingChange","handleMemberHeadingChange","memberHeading","_issueLoyalty","user","isAuthenticated","clicked","IssueLoyaltyInput","issueLoyalty","then","catch","debug","TelemetryConstant","SignIn","loyaltySignInAttributes","SignUp","loyaltySignUpAttributes","LoyaltyDetailLink","loyaltyDetailsLinkAttributes","LoyaltyTermsLink","loyaltyTermsLinkAttributes","shouldComponentUpdate","nextProps","nextState","_data$customerInforma","_this$props$context$a","signInUrl","termsUrl","loyaltyJoinUrl","origin","signInurl","completeClass","classname","loyaltyCard","hasLoyaltyAccount","CardTenderTypeValue","customerInformation","invalidAsyncCustomerState","app","canRenderAsyncCustomerDataAsUnmodifiable","IsAsyncCustomer","infoMessageBar","accountProcessingPendingInfoMessage","params","isEditor","signInLink","joinLoyaltyButtonText","signUpText","loyaltyProgramText","signUpButton","disabled","detailsLink","viewLoyaltyPageText","termsLink","loyaltyTermsLinkText","__decorate","observer","histogramItem","buttonProps","starLabel","bar","percentage","RatingsHistogramView","histogramItems","histogramProps","renderProductDescription","_props$data$product$r","primaryImageSource","PrimaryImageUrl","imageUrl","fallBackSrc","xl","cropFocalRegion","renderProductImage","ItemId","WriteReviewView","signInMessage","signInButton","modalToggle","paragraph","RichTextComponent","reviewModal","modalHeader","modalBody","form","inputRow","selectRatingLabel","rating","reviewTitleLabel","titleInput","reviewTextLabel","textInput","privacyPolicyUrl","modalFooter","submitButton","cancelButton","createReviewModal","IFrameView","defineWellKnownSymbol","renderAdditionalContent","additionalContent","_additionalContent$ad","additionalContentNode","additionalContentItems","additionalContentItemContainer","additionalContentItemLinks","contentBlockView","contentBlockContainer","imageContainer","detailsContainer","contentBlockAnchorTag","imageLink","imageAriaLabel","imageClass","OrderInfomation","channelAddress","SalesLine","GroupDelivery","Group","isCashAndCarryTransaction","salesStatus","deliveryType","shipment","showTimeslot","pickupProps","Groups","OrderSummary","tax","Payment","Help","OrderDetailsView","_ref9","viewModes","tableViewActions","placedBy","buildReviewCard","cardProps","name","date","cardBodyProps","reviewProps","reviewTitle","reviewText","responseProps","responseName","responseDate","responseText","controlsProps","ratingHelpfulLabel","like","dislike","edit","report","ratingLabel","titleLabel","textLabel","createReportModal","reported","headerSubmitted","reportSubmittedMessage","reportMessage","radioButtons","succesfulButton","ReviewsListview","averageRating","filterByDropdown","noReviewsMessage","noReviewsWithFilterMessage","pageControls","refineReviewsProps","reportReviewModal","reviewsListProps","reviewCards","reviewCount","sortByDropdown","userReview","isFilterApplied","review","B2bRequestsStatusView","_props$data$operation","b2bRequestsStatus","continueShoppingButtonTitle","operationRequests","headingForEmptyRequestStatus","textForEmptyRequestStatus","getUrlSync","global","module","exports","wellKnownSymbol","f","LoyaltySignUpView","renderCustomerName","accountInformation","customer","FirstName","_renderReactFragment","slot","headerView","HeaderTag","HeaderContainer","HeaderTopBarContainer","Divider","navIcon","logo","search","preferredStore","renderForMobile","AccountInfoDropdownParentContainer","AccountInfoDropdownPopoverConentContainer","accountInfoDropdownButton","signOutLink","accountLinks","accountClassName","_renderAccountBlock","wishListIconDesktop","cartIcon","siteOptions","MobileMenuLinksContainer","mobileMenuCollapsed","Collapse","_renderMobileAccountBlock","wishListIconMobile","menuBar","_renderCollapseMenu","colorRecords","colorInStock","_strikeSVG","checkAvailability","PhysicalAvailableInventoryLevelCode","_renderTextBlock","textBlocks","_renderSocialShare","socialShare","_renderCartAndActions","addToCart","addToOrderTemplate","addToWishlist","errorBlock","button","_renderConfigure","configure","ContainerProps","dropdowns","_renderConfigureDropdown","dropdown","LabelContainerProps","select","_renderFindInStore","findInStore","storeSelector","productPickupOptionList","onChangeHandler","callbacks","newValue","updateQuantity","_renderQuantity","quantityComponent","extentionResources","quantityLimitsMessages","max","quantity","dropdownOptions","DropdownQuantity","currentCount","onChange","options","_renderKeyInPrice","keyInPrice","_renderShopSimilarItem","shopSimilarItem","BuyboxView","ModuleProps","MediaGalleryContainerProps","ProductInfoContainerProps","price","inventoryLabel","shopSimilarLook","shopSimilarDescription","unitOfMeasure","previousSelection","setPreviousSelection","useState","useEffect","imgCollect2","thisColour","style","backgroundImage","maxWidth","dimensions","productDimensions","dimensionValues","d","DimensionValues","dimensionValuesFlat","dv","swatches","Value","_dimensionValuesFlat$","extensionProperty","ExtensionProperties","ep","Key","_extensionProperty$Va","setAttribute","StringValue","updateSwatchTitles","dimensionValuesWithInventory","filter","c","_c$DimensionValue","_c$DimensionValue2","DimensionValue","includes","colorlabel","querySelector","colorswatches","nextElementSibling","_props$context$reques","_props$context$reques2","colornamecontainer","children","append","e","colorname","innerText","query","selectedSwatch","imgCollect","b","selectedTitle","display","swatchContainers","hasSelected","j","sizeSwatches","sizeSelected","size","click","childToSelect","mediaGallery","slots","pdpspecs","DropdownQuantity_1","_props$currentCount","_this$props$min","inputRef","_handleUpdateState","_debounce","isNaN","currentInput","inputElement","HTMLInputElement","_validateMin","_minValue","currentValue","min","isUpdating","_handleChange","defaultProps","_props$currentCount2","onBlur","inputQuantityAriaLabel","n","selected","path","hasOwn","wrappedWellKnownSymbolModule","defineProperty","NAME","Symbol","LoyaltyTermsModal","LoyaltyTermsCancel","loyaltyTermCancelAttributes","LoyaltyTermsSubmit","loyaltyTermSubmitAttributes","LoyaltyTermsAgree","loyaltyTermCheckboxAttributes","applicationNode","returnFocusRef","returnRef","ModalFooter","ModalBody","cancelLoyaltyTermsText","onSubmit","checked","joinLoyaltyTermsText","loyaltyTermsHeading","terms","agreeSection","checkbox","onCheck","agreeText","loyaltyAgreeToTerms","LoyaltyTerms","_toggle","_submit","_checkboxChecked","toggleRef","isJoining","substring","qsps","split","qsp","splitQsp","isModalOpen","hideToggle","serviceTerms","innerRef","joinLoyaltytermsToggleText","CardNumber","card","redirectToLoyalty","getLoyaltyCardAsync","fullCard","update","GetLoyaltyCardInput","toggleBopisHandler","isBopisSelected","_cartLine$pickUpInSto","pickUpInStore","toggleBopis","onChangeStoreHandler","_cartLine$pickUpInSto2","renderCartLine","isMultiplePickUp","emailDeliveryModeCode","outOfStockErrorMessage","remove","renderGroupBopisBlock","_cartLine$data2","cartline","DeliveryMode","changeStoreDisplayText","shipInsteadDisplayText","pickItUpDisplayText","PickupInStore","puckUpinStoreAttribute","renderCartlinesInternal","cartLines","itemIndex","renderBopisBlock","_cartLine$data","shipToAddressDisplayText","pickUpAtStoreWithLocationText","orgUnitName","renderCartlines","waitingComponent","cartLoadingStatus","isCartDataResult","multiplePickUpEnabled","CartlinesWrapper","emptyCart","renderCartLinesGroupHeader","_cartLine$pickUpInSto6","pickUpText","shippingText","emailshippingText","payInvoicesDisplayText","groupTitle","IsInvoiceLine","StringExtensions","isNullOrEmpty","toLowerCase","renderCartLinesGroupTitle","_cartLine$pickUpInSto3","_cartLine$pickUpInSto4","_cartLine$pickUpInSto5","itemLabel","itemsLabel","countTitle","deliveryOption","CartView","_props$cart2","_props$cart3","_props$orderSummaryLi","_props$cart4","_props$cart5","_props$cart6","updatedTitle","cartTitle","totalItemsInCart","renderModuleAttributes","checkoutBlockedDueToUnavailableFunds","orderSummaryLineitems","orderTotal","checkoutAsSignInUserButton","checkoutAsGuestButton","renderOrderSummaryCheckoutButton","hasInvoiceLine","promotionOptions","promotions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","renderCartLinesGroup","cartLinesGroup","cartlines","_props$context$action","_props$context$action2","cartlineId","countItem","reduce","_item$data$cartline$Q","_item$data","countItems","channel","EmailDeliveryModeCode","cartDataResult","orderSummaryHeading","OrderSummaryWrapper","renderInvoiceSummarylines","invoiceSummaryLines","orderSummaryItems","invoices","giftCard","loyalty","invoiceSummaryLineitems","OrderSummaryItems","renderOrderSummarylines","orderSummaryLines","totalDiscounts","otherCharge","errorData","OrderSummaryErrors","Wrapper","_props$cart","promoCode","expressCheckoutButton","ExpressCheckoutSectionWrapper","createTemplateFromCartButton","renderOrderSummaryCheckout","CookieComplianceView","Alert","ProductComparisonButton","PureComponent","_addToProductComparison","_this$props$data$acco","ProductComparisonItem","catalogId","ProductComparisonState","instance","addItem","_removeFromProductComparison","_this$props$data$acco2","removeItemById","comparisonItemId","_getNewState","_this$props$data$acco3","getItemId","_getProdutComparisonDataByCatalogId","canProductBeAddedToProductComparison","hasItemById","currentProductsCount","_className","_instanceId","Random","Guid","generateGuid","_shouldUsePreview","_productComparisonPreview","_renderProductComparisonPreview","productComparisonPreview","onClickHandler","isDisabled","ObjectExtensions","isNullOrUndefined","Fragment","_this$props$data$acco4","listModifiedEvent","subscribe","instanceId","handler","getSnapshotBeforeUpdate","previousProps","_this$props$data$acco5","unsubscribe","buttonClassName","shouldDisplayText","removeFromComparisonButtonText","productComparisonButton","_renderProductComparisonButton","productsLimit","_getProductsLimit","addToComparisonLimitReachedButtonText","addToComparisonButtonText","viewport","isMobile","variant","VariantType","Browser","productComparisonMobileProductsLimit","productComparisonDesktopProductsLimit","_this$props$data$acco6","_items$filter","getCatalogId","Subscribe","handleTextChange","handleParagraphChange","emailAddress","_emailAddressInputRef","showResponseMessage","isError","inputValue","hideResponseMessage","_heading$tag","doSubscribe","async","useDoubleOptIn","audience","response","subscribeToMailChimpAsync","Status","renderSubscriptionResultMessage","subscriptionSuccessMessage","subscriptionOptInMessage","subscriptionFailMessage","subscribeParagraph","subscribeHeading","handleText","handleSubscribe","subscribeContainer","subscribeForm","subscribeFormAriaLabel","autoComplete","emailInput","subscribeFormEmailAriaLabel","placeholder","subscribeEmailPlaceholderText","subscribeFormSubmitAriaLabel","subscribeButtonLabel","submitButtonLabelText","responseMessage","renderSubscriptionResultAlert","SignInLoading","icon","SignInButton","SignInView","signIn","viewState","defaultAADConainer","aadConainer","signInSection","signUpSection","signInSectionHeading","signInLocalAccount","signInSocialAccount","signUpSectionHeading","signInB2BAccount","signUpDescription","isShowLoading","localAccount","forgetPassword","disclaimer","wrapper","label","LocalAccount","socialAccounts","SocialAccount","b2bSignUpButtonAriaLabel","b2bSignUpButtonText","B2BAccount","subscribeView","_subscribeForm$classN","_emailInput$className","_submitButton$classNa","preventDefault","LoyaltyTermsView","ProductComparisonButtonViewFunctionalComponent"],"mappings":";6FAAA,8E,quBCwBA,MAAMA,UAAeC,gBAGjBC,YAAYC,GACRC,MAAMD,GACNE,KAAKC,UAAYL,cAGdM,SACH,MAAM,OAAEC,EAAM,UAAEC,GAAcJ,KAAKF,MAC7BO,EACFL,KAAKF,MAAMQ,QAAQC,SACnBP,KAAKF,MAAMQ,QAAQC,QAAQC,SAC3BR,KAAKF,MAAMQ,QAAQC,QAAQC,QAAQH,gBACnCL,KAAKF,MAAMQ,QAAQC,QAAQC,QAAQH,iBAEvC,KAAMF,GAAUA,EAAOM,QAAUN,EAAOM,OAAOC,gBAC3C,OAAO,KAGX,IAAIC,EACJ,IACIA,EAAS,IAAIC,IAAIT,EAAOM,OAAOC,gBACjC,MAAOG,GAEL,OADAb,KAAKF,MAAMgB,UAAUC,UAAUF,GACxB,KAGX,GAAIF,GAAUA,EAAOK,UAAoD,WAAxCL,EAAOK,SAASC,oBAC7C,OAAO,KAEX,MAAMC,EAAkBC,IAAW,YAAahB,EAAOiB,WAEvD,IAAIC,EAASC,IAAA,GACLtB,KAAKF,OAAqC,IAC9CyB,QAASvB,KAAKwB,eAAerB,EAAOsB,SACpCC,gBAAiB,CACbC,YAAa3B,KAAKF,MAClBsB,UAAWF,GAEfU,OAAQ5B,KAAK6B,kBAcjB,OALIR,EAASC,IAAA,GACFD,GAAS,GAPfhB,EAOe,CACZyB,uBAAuB,GANX,CACZC,MAAO/B,KAAKgC,aAAa5B,EAAU6B,gCAQpCjC,KAAKF,MAAMoC,WAAWb,GAGzBG,eAAeC,GACnB,OAAKA,GAAYA,EAAQU,MAAgC,IAAxBV,EAAQU,KAAKC,OAIvCxC,gBAAC2B,UAAOc,OAAAC,OAAA,GAAKb,EAAO,CAAEL,UAAU,wBAH5B,KAMPY,aAAaO,GACjB,OACI3C,gBAAA,KAAGwB,UAAU,2BAA2BoB,KAAK,QAAO,YAAW,aAC1DD,GAKLV,gBACJ,MAAM,OAAE1B,GAAWH,KAAKF,MAClB2C,EAAYtC,EAAOM,OAAOC,eAEhC,OACId,gBAAA,UACIwB,UAAWD,IAAW,sBACtBuB,IAAKD,EACLE,OAAQxC,EAAOwC,OAAM,aACTxC,EAAOyC,gBACnBC,IAAK7C,KAAKC,aAMXN,a,syBCrET,MAAOmD,UAA2BlD,gBAapCC,YAAYC,GACRC,MAAMD,GAbF,KAAAiD,aAAuB,EAEd,KAAAC,qBAA+B,EAE/B,KAAAC,UAAoB,GAsjBpB,KAAAC,qBAAuB,CAACC,EAA0BC,IAA0B,KACzF,MAAMC,EAAWD,GAAUA,EAAOC,SAAWD,EAAOC,SAAW,GACzDC,EAAiC,CAAC,CAAEZ,IAAKS,EAAkBI,QAASF,IAGtEG,kBAAgBC,YAAYL,EAAOM,qBACnCN,EAAOM,mBAAmBC,IAAIC,IAC1B,GAAIA,GAAQA,EAAKC,MAAO,CACpB,MAAMC,EAAWF,EAAKC,MAAMnB,IACtBqB,EAA+BH,EAAKC,MAAMG,cAChDV,EAAiBW,KAAK,CAAEvB,IAAKoB,EAAUP,QAASK,EAAKzB,KAAM6B,cAAeD,EACtEG,qBAAsB,CAAEC,QAASP,EAAKO,QAAQzD,qBAI9DV,KAAKoE,SAAS,CACVC,cAAef,EAAiBlB,OAAS,EAAIkB,EAAmB,CAAC,CAAEZ,IAAK,UACxE4B,qBAAsBjB,KAUb,KAAAkB,sBAAwB,CAACC,EAAqBC,IAAsB,KAC5EzE,KAAKF,MAAM4E,aAoBZ1E,KAAKoE,SAAS,CACVO,WAAYH,EAAKI,GACjBC,WAAYJ,KArBZzE,KAAKF,MAAMK,OAAO2E,iBACd9E,KAAK+E,MAAMJ,aAAeH,EAAKI,IAC/B5E,KAAKoE,SAAS,CACVO,WAAa3E,KAAK+E,MAAMJ,YAAc3E,KAAK+E,MAAMJ,aAAeH,EAAKI,QAAOI,EAAYR,EAAKI,GAC7FC,WAAYJ,IAGpBzE,KAAKiF,0BAELjF,KAAKoE,SAAS,CACVO,WAAa3E,KAAK+E,MAAMJ,YAAc3E,KAAK+E,MAAMJ,aAAeH,EAAKI,QAAOI,EAAYR,EAAKI,GAC7FC,WAAYJ,IAIhBzE,KAAKF,MAAMoF,mBACXlF,KAAKkD,qBAAqBsB,EAAKW,YAAcX,EAA7CxE,IAQRA,KAAKoF,eAMQ,KAAAA,YAAc,KACvBpF,KAAKF,MAAM4E,cACXW,WAAW,KACPrF,KAAKsF,UAAYtF,KAAKsF,SAASC,SAAWvF,KAAKsF,SAASC,QAAQC,SACjE,IAQM,KAAAC,oBAAuBC,IAChC1F,KAAKsF,SAASC,UAAYvF,KAAKsF,SAASC,QAAQI,SAASD,EAAMjF,SAC/DT,KAAKoE,SACD,CACIO,gBAAYK,EACZX,cAAe,QAUd,KAAAuB,oBAAuBF,IAChC1F,KAAKsF,SAASC,UAAYvF,KAAKsF,SAASC,QAAQI,SAASD,EAAMG,gBAC/D7F,KAAK8F,iBAiBI,KAAAC,aAAgBL,IAE7B,GAAIA,EAAMM,UAAYhG,KAAKiD,UAAW,CAClC,IAAKjD,KAAKF,MAAM4E,aAAc,CAC1B,MAAMuB,EAAgBC,MAAMC,KAAKnG,KAAKsF,SAASC,QAASa,YACxD,IAAK,MAAMxC,KAAQqC,EAAe,CAC9B,MAAMI,EAAkBzC,EAAK0C,WACyB,SAAlDD,EAAgBE,aAAa,kBAC7BF,EAAgBb,SAI5BxF,KAAK8F,kBAII,KAAAU,kBAAqBnC,IAElC,IAAKA,IAAkBA,EAAc3B,IACjC,OAAO,KAGX,MAAM+D,EAAmBC,2BAAiBrC,EAAc3B,IAAK1C,KAAKF,MAAMQ,QAAQqG,cAAcC,eAAeC,aACvGC,EAAuC,CACzCC,UAAW,CACPC,GAAI,CAAEC,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCC,GAAI,CAAEH,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCE,GAAI,CAAEJ,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCG,GAAI,CAAEL,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,IAEzCI,UAAU,GAEd,QAAyBvC,IAArByB,EAAgC,KAAAe,EAAAC,EAChC,MAAMC,EAAwB,CAAEhF,IAAK+D,GACrC,OACI7G,gBAAC+H,IAAKtF,OAAAC,OAAA,CACFsE,eAAgB5G,KAAKF,MAAMQ,QAAQqG,cAAcC,eACjDxF,UAAU,sBACNsG,EAAS,CACbE,aAAc5H,KAAKF,MAAMQ,QAAQC,QAAQqH,aACzC5D,cAA0C,QAA7BwD,EAAEnD,EAAcL,qBAAa,IAAAwD,IAA4C,QAA5CC,EAAKzH,KAAKF,MAAMK,OAAO0H,6BAAqB,IAAAJ,IAAIX,EAC1FgB,oBAAoB,OACpBtF,KAAK,WACLoC,GAAOP,EAAc3B,IAAjB,kBACJa,QAASc,EAAcd,WAInC,OAAO,MAOM,KAAAwE,gBAAmBC,IAChC,MAAM,eAAEC,GAAmBjI,KAAK+E,MAE1BmD,EAAU,CAAE,MADoClD,IAA3BgD,EAAYG,WAA2BH,EAAYG,WAAa,IAC3DH,EAAYI,QAC5CpI,KAAKoE,SAAS,CAAE6D,eAAc3G,IAAA,GAAO2G,GAAmBC,MAhtBxD,MAAM,aAAEG,EAAelI,QAAS,sBAAEmI,EAAqB,YAAEC,IAAiBzI,EACpE0I,EAAqB,IAAIH,GACzBI,EAAaD,EAAmBE,KAAKC,GAAwB,WAAlBA,EAAGC,YAgBpD,GAfIH,GAAcjF,kBAAgBC,YAAY6E,IAE1CA,EAAsB3E,IAAIC,IACtB,IAAKA,EAAKiF,aAAc,KAAAC,EAAAC,EAAAC,EAAAC,EACpB,MAAMC,EAA8B,CAChCC,QAAqB,QAAdL,EAAElF,EAAKO,eAAO,IAAA2E,OAAA,EAAZA,EAAcpI,eACvB2C,SAAUO,EAAKP,SACf+F,iBAAkBxF,EAAKyF,aACvBzE,IAAsB,QAAlBmE,EAAAN,EAAWa,eAAO,IAAAP,OAAA,EAAlBA,EAAoB3G,SAAU,EAClC+C,YAAuB,QAAZ6D,EAAEpF,EAAKC,aAAK,IAAAmF,OAAA,EAAVA,EAAYtG,KAEX,QAAlBuG,EAAAR,EAAWa,eAAO,IAAAL,GAAlBA,EAAoBM,OAAO3F,EAAK4F,gBAAkB5F,EAAK4F,eAAiB,GAAK,EAAG,EAAGN,MAI3FV,EACA,IAAK,MAAMiB,KAAYjB,EAAoB,CACvC,GAA4B,WAAxBiB,EAASb,WACT,SAEJ,MAAMc,EAAenB,aAAW,EAAXA,EAAaG,KAAKiB,GAAOA,EAAItG,WAAaoG,EAASpG,UACxE,GAAKqG,WAAmCb,aAAc,CAClD,MAAMe,EAAMpB,EAAmBqB,UAAUC,GAAKA,EAAElF,KAAO6E,EAAS7E,IAC5DgF,GAAO,GACPpB,EAAmBe,OAAOK,EAAK,IAM/C5J,KAAKsF,SAAW1F,cAChBI,KAAK+E,MAAQ,CAAEJ,gBAAYK,EACvBH,gBAAYG,EACZV,qBAAsB,GACtB2D,eAAgB,GAChB8B,QAAS,KACT1B,aAAcG,GAElBxI,KAAK8F,cAAgB9F,KAAK8F,cAAckE,KAAKhK,MAC7CA,KAAK+F,aAAe/F,KAAK+F,aAAaiE,KAAKhK,MAC3CA,KAAKiK,iBAAmBC,6BAAmBlK,KAAKF,MAAMQ,QAAQC,QAAQ4J,kBAClEnK,KAAKF,MAAMsK,aACXpK,KAAKF,MAAMgB,WACfd,KAAKqK,QAAUC,2BAAiB,QAAStK,KAAKiK,iBAAkB,GAAI,IAGjEM,oBACCC,IAASC,YACTC,SAASC,KAAKC,iBAAiB,UAAY5K,KAAK+F,cAA2C,GAC3F2E,SAASC,KAAKC,iBAAiB,YAAa5K,KAAKyF,qBACjDiF,SAASC,KAAKC,iBAAiB,WAAY5K,KAAK4F,sBAKjDiF,uBACCL,IAASC,YACTC,SAASI,oBAAoB,UAAY9K,KAAK+F,cAA2C,GACzF2E,SAASC,KAAKG,oBAAoB,YAAa9K,KAAKyF,qBAAqB,GACzEiF,SAASC,KAAKG,oBAAoB,WAAY9K,KAAK4F,qBAAqB,IAIzE1F,SACH,MAAM,aAAEwE,GAAiB1E,KAAKF,MAG9B,OADAE,KAAK+C,aAAe,EAEhBnD,2BAAA,KACK8E,EAAe1E,KAAK+K,oBAAsB/K,KAAKgL,sBASpDD,oBACJ,MAAM,aAAErG,EAAY,WAAEuG,GAAejL,KAAKF,OACpC,aAAEuI,GAAiBrI,KAAK+E,MAC9B,OACInF,gBAACsL,SAAM7I,OAAAC,OAAA,GAAK2I,EAAU,CAAE7J,UAAWD,IAAW8J,EAAW7J,UAAWsD,EAAe,cAAgB,kBAC9F2D,EAAa1E,IAAI,CAAC8F,EAAyB0B,IACjCnL,KAAKoL,kBAAkB3B,EAAUpB,EAAajG,OAAQ+I,EAAWnL,KAAKgD,wBAUrFgI,qBACJ,MAAM,SAAEK,EAAQ,WAAEJ,GAAejL,KAAKF,MACtC,OACIF,gBAACsL,SAAM7I,OAAAC,OAAA,GAAK2I,EAAU,CAAE7J,UAAWD,IAAW8J,EAAW7J,aACrDxB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK+I,EAAQ,CAAExI,IAAK7C,KAAKsF,SAAUiG,SAAS,OAC5CvL,KAAKwL,mBAadJ,kBAAkB3B,EAAyBgC,EAAiBN,GAChE,OAAI1B,GAAYA,EAASH,SAAW9F,kBAAgBC,YAAYgG,EAASH,SAC7DtJ,KAAK0L,cAAcjC,EAAUgC,EAASN,GAE1CnL,KAAK2L,oBAAoBlC,OAAUzE,GAAW,GAAM,EAAOyG,EAASN,GAWxEO,cAAcjC,EAAyBgC,EAAkBN,GAC7D,MAAMS,EAAmBnC,EAASpG,SAC5BwI,EAAW7L,KAAK+E,MAAMkD,eAI5B,IAAI6D,GAAe,QAFO9G,IAAb6G,EAAyBA,EAAW,SADT7G,IAArB4G,EAAiCA,EAAmB,MAKnEE,GAAe,GAEnB,MAAMC,EAA2B,CAAE3D,OAAQ0D,GAC3C,OACIlM,gBAACoM,SAAM,CACHxJ,KAAK,UACLyJ,kBAAmB,CACf,eAAgBR,EAChB,gBAAiBN,EACjB,KAAQ,UAEZe,IAAKzC,EAAS7E,GAAIxD,UAAU,iBAAiB+K,UAAU,sBACvDC,SAAUpM,KAAK+H,gBAAiBsE,cAAeN,EAC/CO,WAAW,uBAAuBC,eAAe,MAAMX,iBAAkB5L,KAAKwM,gBAAgBZ,EAAkBH,EAASN,IACzHvL,gBAAA,OAAK4C,KAAK,WACLiH,EAASH,QAAS3F,IAAI,CAAC8I,EAA4BC,KAAsB,IAAAC,EAChBC,EAAtD,OAAIpJ,kBAAgBC,YAAYgJ,EAAYnD,SAChCtJ,KAAK0L,cAAce,EAA6B,QAAlBG,EAAEnD,EAASH,eAAO,IAAAsD,OAAA,EAAhBA,EAAkBxK,OAAQsK,EAAa1M,KAAKgD,sBAEjFhD,KAAK6M,kBAAkBJ,EAA6B,QAAlBE,EAAElD,EAASH,eAAO,IAAAqD,OAAA,EAAhBA,EAAkBvK,OAAQsK,EAAa1M,KAAKgD,0BAcnGwJ,gBAAgBnJ,EAA8BoI,EAA6BN,GAC/E,OACIvL,gBAAA,uBAAoB6L,EAAO,gBAAiBN,GACvC9H,GAYLwJ,kBAAkBjJ,EAAqB6H,EAA6BN,GACxE,OAAIvH,GAAQA,EAAKP,UAAYO,EAAKuF,SAAWvF,EAAKuF,QAAQ/G,OAAS,EAE3DpC,KAAK2L,oBAAoB/H,OAAMoB,GAAW,GAAM,EAAOyG,EAASN,GAE7DvH,GAAQA,EAAKP,WAAaO,EAAKuF,QAElCnJ,KAAK8M,oBAAoBlJ,GAG1B,KAOH4H,iBACJ,MAAM,SAAEuB,EAAQ,aAAErI,GAAiB1E,KAAKF,OAClC,aAAEuI,GAAiBrI,KAAK+E,OACxB,WAAEJ,GAAe3E,KAAK+E,MACtBiI,EAA8B,GACpC,GAAItI,QAA+BM,IAAfL,GAA4B0D,EAAajG,OAAS,EAAG,CACrE,IAAIqH,EAA0B,GAC9B,IAAK,MAAMwD,KAAiB5E,EAAc,CACtC,GAAI4E,GAAiBA,EAAcrI,KAAOD,EAAY,CAClD8E,EAAWwD,EACXjN,KAAKoE,SAAS,CAAES,gBAAYG,IAC5B,MAGJ,GADAyE,EAAWzJ,KAAKkN,gBAAgBD,GAC5BxD,GAAYA,EAAS7E,KAAOD,EAC5B,MAIR8E,GAAYuD,EAAa/I,KACrBrE,gBAAC0L,OAAIjJ,OAAAC,OAAA,CAAC4J,IAAKzC,EAAS7E,IAAQmI,GACvB,IACA/M,KAAKmN,oBAAoB1D,GACzB,WAITpB,EAAa+E,QAAQ,CAACxJ,EAAqByJ,KACvCL,EAAa/I,KACTrE,gBAAC0L,OAAIjJ,OAAAC,OAAA,CAAC4J,IAAKmB,GAAWN,GACjB/M,KAAKmN,oBAAoBvJ,OAK1C,OAAOoJ,EAQHE,gBAAgBtJ,GACpB,MAAM0J,EAAW1J,GAAQA,EAAK0F,QAC9B,GAAIgE,GAAYA,EAASlL,OAAS,EAC9B,IAAK,IAAI0H,EAAI,EAAGA,GAAKwD,EAASlL,OAAS,EAAG0H,IAAK,CAC3C,GAAIwD,EAASxD,GAAGlF,KAAO5E,KAAK+E,MAAMJ,WAE9B,OADA3E,KAAKoE,SAAS,CAAES,WAAYjB,aAAI,EAAJA,EAAMgB,KAC3B0I,EAASxD,GAEpB,MAAMyD,EAAQvN,KAAKkN,gBAAgBI,EAASxD,IAC5C,GAAIyD,EACA,OAAOA,EAInB,OAAO,KAQHJ,oBAAoB9E,GACxB,OAAIA,GAAgBA,EAAaiB,SAAWjB,EAAaiB,QAAQlH,OAAS,EAClEpC,KAAKF,MAAM4E,mBAA0CM,IAA1BhF,KAAK+E,MAAMJ,WAC9B3E,KAAKwN,eAAenF,EAAaiB,QAASjB,EAAazD,IAG/DhF,2BAAA,KACKI,KAAKyN,sBAAsBpF,GAC3BrI,KAAKwN,eAAenF,EAAaiB,QAASjB,EAAazD,KAIzDyD,GAAgBA,EAAahF,UAAYgF,EAAac,SAAWd,EAAac,QAAQ/G,OAAS,EAC9FpC,KAAK2L,oBAAoBtD,EAAcA,EAAazD,IAAI,GAAO,GAChEyD,GAAgBA,EAAahF,WAAagF,EAAac,QACtDnJ,KAAK8M,oBAAoBzE,EAAcA,EAAazD,IAAI,GAG7D,KAGH4I,eAAeF,EAA4B3I,EAAqB+I,GACpE,MAAM,aAAEhJ,EAAY,SAAEqI,GAAa/M,KAAKF,MAClC6N,EAAyB3N,KAAKF,MAAMK,OAAOyN,uBAAwB,EAEnEC,EAA0B7N,KAAKF,MAAMK,OAAO2N,kBAD7B,EAIrB,GAAInJ,GAAc3E,KAAK+E,MAAMJ,aAAeA,EAExC,OADA3E,KAAKF,MAAMQ,QAAQQ,UAAUD,MAAM,gEAC5B,KAGX,IAAKyM,GAAgC,IAApBA,EAASlL,OAEtB,OADApC,KAAKF,MAAMQ,QAAQQ,UAAUD,MAAM,4DAC5B,KAGX,IAAIkN,EAAyB,GAC7B,MAAMC,EAAcV,GAAYA,EAAS3J,IAAI,CAACP,EAAuBwG,KACjE,MAAMqE,EAAc7K,EAAOkG,SAAWlG,EAAOkG,QAAQlH,OAAS,EAC9D,IAAIqH,EAOAH,EALAG,EADAwE,GAAcvJ,EACH1E,KAAKyN,sBAAsBrK,EAAQuB,EAAYiF,GAE9CxG,EAAO+F,QAAUnJ,KAAK2L,oBAAoBvI,EAAQwG,GAAO5J,KAAK8M,oBAAoB1J,GAIlG,MAAM8K,EAAcD,GAAcN,GAA2B3N,KAAK+C,cAAgBoL,KAAKC,MAAMP,GAA2B,EAMxH,OALIK,IACAlO,KAAK+C,eACLgL,EAAiBJ,EAAyB,SAAS3N,KAAK+C,aAAasL,WAAe,GACpF/E,EAAUtJ,KAAKwN,eAAepK,EAAOkG,QAAS5E,EAAetB,EAAOwB,QAAKI,GAAW,IAGpFpF,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKyK,EAAQ,CAAEb,IAAK9I,EAAOwB,GAAIxD,UAAWD,IAAW4L,EAAS3L,UAAW8M,GAAe,iBACvFzE,EACAH,KAId,OAAQtJ,KAAKsO,YAAYP,EAAgBC,EAAarJ,EAAY+I,GAQ9DzI,yBACJ,MAAQ9E,QAAQ,gBAAEoO,IAAqBvO,KAAKF,MAEtC0O,EAAkBD,GAAqC,IAAlBA,GAA0B,EAG/DE,EAAgBA,KAClB,MAAMC,EAAWhE,SAASiE,iBAAiB,UAC3C,IAAIC,EAAOF,EAASA,EAAStM,OAAS,GAClCyM,GAAW,EACf,KAAOD,EAAKE,YAAY,KAAAC,EAEpB,GADAH,EAAOA,EAAKE,WACM,QAAlBC,EAAIH,EAAKI,iBAAS,IAAAD,GAAdA,EAAgBpJ,SAVP,UAU+B,CACxCkJ,GAAW,EACX,OAIR,GAAKA,GAkBD,GAAIL,EAAkB,EAAG,CACrB,MAAMzE,EAAU/J,KAAK+E,MAAMgF,QACvBA,IACAkF,aAAalF,GACb/J,KAAKoE,SAAS,CAAE2F,QAAS,cApBjC,GAAIyE,EAAkB,EAAG,CACrB,IAAIzE,EAAU/J,KAAK+E,MAAMgF,QACpBA,IACDA,EAAU1E,WAAW,KACjBrF,KAAK8F,gBACL4E,SAASI,oBAAoB,YAAa2D,IAC3CD,GACHxO,KAAKoE,SAAS,CAAE2F,kBAIpB/J,KAAK8F,gBACL4E,SAASI,oBAAoB,YAAa2D,IAatD/D,SAASI,oBAAoB,YAAa2D,GAC1C/D,SAASE,iBAAiB,YAAa6D,GAUnChB,sBAAsBrK,EAAuBuB,EAAqB0I,GACtE,MAAM,OAAE6B,EAAS/O,QAAQ,gBAAE2E,IAAsB9E,KAAKF,MAEtD,OAAIgF,EAEElF,gBAAC0L,OAAIjJ,OAAAC,OAAA,CACH4J,IAAKmB,GACD6B,EAAM,CACVC,IAAK,IACLC,KAAMhM,EAAO+F,QACbkG,QAASA,IAAMjM,EAAO+F,QAAUmG,OAAOC,SAASH,KAAOhM,EAAO+F,QAAU,KACxEqG,aAAcxP,KAAKuE,sBAAsBnB,EAAQuB,GACjD8K,QAASzP,KAAK8F,cAAa,kBACV9F,KAAK+E,MAAMJ,YAAc3E,KAAK+E,MAAMJ,aAAevB,EAAOwB,IAAG,mBAC5D5E,KAAK+E,MAAMJ,YAAc3E,KAAK+E,MAAMJ,aAAevB,EAAOwB,IAAG,cAClED,EACbnC,KAAM,SAEFY,EAAOC,UAKfzD,gBAAC0L,OAAIjJ,OAAAC,OAAA,CACD4J,IAAKmB,GACD6B,EAAM,CACVG,QAASrP,KAAKuE,sBAAsBnB,EAAQuB,GAC5C6K,aAAcxP,KAAKF,MAAMK,OAAO2E,gBAAkB9E,KAAKuE,sBAAsBnB,EAAQuB,GAAc,KACnG8K,QAASzP,KAAK8F,cAAa,kBACV9F,KAAK+E,MAAMJ,YAAc3E,KAAK+E,MAAMJ,aAAevB,EAAOwB,IAAG,mBAC5D5E,KAAK+E,MAAMJ,YAAc3E,KAAK+E,MAAMJ,aAAevB,EAAOwB,IAAG,cAClED,IAEXvB,EAAOC,UAebsI,oBAAoBvI,EAAuBiK,GACZ,IAD4BqC,IAAAC,UAAAvN,OAAA,QAAA4C,IAAA2K,UAAA,KAAAA,UAAA,GAA6BC,EAAAD,UAAAvN,OAAA,QAAA4C,IAAA2K,UAAA,IAAAA,UAAA,GAC5FlE,EAAgBkE,UAAAvN,OAAA,EAAAuN,UAAA,QAAA3K,EAAEmG,EAAiBwE,UAAAvN,OAAA,EAAAuN,UAAA,QAAA3K,EACnC,MAAM,KAAE6K,EAAI,aAAEnL,EAAcvE,QAAQ,sBAAEmI,EAAqB,YAAEC,IAAkBvI,KAAKF,MAC9EuD,EAAWD,EAAOC,SAAWD,EAAOC,SAAW,GAC/CyM,EAAc1M,EAAO+B,YAAc/B,EAAO+B,YAAc,GAC9DnF,KAAKqK,QAAQ0F,cAAcC,MAAQ3M,EACnC,MAAM4M,EAAaC,iCAAuBlQ,KAAKiK,iBAAkBjK,KAAKqK,SACtE,IAAI8F,EAAcnQ,KAAKF,MAAMQ,QAAQqG,cAAcC,eAAewJ,IAAIC,WAAWC,SAC7ElP,EAAY,GAChB,GAAIkH,EAAuB,CACvB,MAAMiI,EAAWjI,EAAsBI,KAAK9E,GAAQA,EAAKP,WAAaD,EAAOC,UACzEkN,IACAnP,EAAYmP,EAASnP,WAAa,IAG1C,GAAImH,EAAa,CACb,MAAMiI,EAAcjI,EAAYG,KAAKiB,GAAOA,EAAItG,WAAaD,EAAOC,UAChEmN,IACApP,EAAaoP,EAAiCpP,WAAa,IAInE,OACIxB,gBAAC0L,OAAIjJ,OAAAC,OAAA,gBACaoC,EAAe+G,OAAUzG,EAAS,gBACjCN,EAAeyG,OAAWnG,GACrC6K,EAAI,CAAE3D,IAAKmB,EACfoC,QAASG,GAAY5P,KAAK8F,cAC1BrF,OAAQ2C,EAAOgG,iBAAmB,cAAWpE,EAC7CyL,YAAaf,GAAe1P,KAAKkD,qBAAqB4M,EAAa1M,GACnEgM,KAAMhM,EAAO+F,SAAa8G,EAAU,CAAEZ,QAASA,IAAMqB,2BAAiB1Q,KAAKiK,iBAAkBjK,KAAKqK,QAAShH,KAC3GzD,gBAAA,QAAMwB,UACFD,IACAiC,EAAO+F,SACJgH,EAAYQ,QAAQvN,EAAO+F,UAAW,EACzC,kBAAoB,GAAI/H,IAClBgC,EAAOC,WAYrBuN,uBAAuBvN,EAAmBc,GAC9C,MAAM,KAAE0L,GAAS7P,KAAKF,MACtBE,KAAKqK,QAAQ0F,cAAcC,MAAQ3M,EACnC,MAAM4M,EAAaC,iCAAuBlQ,KAAKiK,iBAAkBjK,KAAKqK,SACtE,OAAIhH,GAAYc,EAERvE,gBAAC0L,OAAIjJ,OAAAC,OAAA,GACGuN,EAAI,CAAET,KAAMjL,GAAa8L,EAAU,CACvCZ,QAASqB,2BAAiB1Q,KAAKiK,iBAAkBjK,KAAKqK,QAAShH,KAC7DA,GAIP,KAWHyJ,oBAAoB1J,EAAuBiK,GAAyC,IAAzBuC,EAAAD,UAAAvN,OAAA,QAAA4C,IAAA2K,UAAA,IAAAA,UAAA,GAC/D,MAAM,KAAEkB,GAAS7Q,KAAKF,MACtB,OACIF,gBAAC0L,OAAIjJ,OAAAC,OAAA,CAAC4J,IAAKmB,GAAWwD,EAAI,CAAEpB,QAASG,GAAY5P,KAAK8F,gBAChD1C,EAAOC,UAabiL,YAAYwC,EAAe9C,EAA4B+C,EAAsBC,GAEjF,MAAM,aAAEC,EAAY,SAAE5F,EAAQ,kBAAE6F,EAAiB,kBAAEhM,EAAiB,aAAER,EAAY,uBAAEyM,GAA2BnR,KAAKF,MAC9GsR,GAAwB1M,GAAgBQ,GAAkD,OAA7BlF,KAAK+E,MAAMV,oBAAuDW,IAA7BhF,KAAK+E,MAAMV,gBAAgC2M,EAC7IK,GAA6B3M,GAAgByM,GAA0B3N,kBAAgBC,YAAYzD,KAAK+E,MAAMV,iBAAmB2M,EACjIM,EAAoBtR,KAAK+C,aAAe,GAAKqO,EAAuBH,EAAc7P,UAAY,kBAEpG,OADApB,KAAK+C,aAAe,EAEhBnD,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK2O,EAAY,CAAE7P,UAAWkQ,IAC/B1R,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK+I,EAAQ,CAAEjK,UAAWD,IAAWkK,EAASjK,UAAW0P,EAAOM,GAAwB,gBAAiBA,GAAwBpR,KAAKF,MAAMK,OAAO2N,kBAAoB9N,KAAKF,MAAMK,OAAO2N,iBAAmB,GAAK,yBAChNE,GAENpO,gBAAA,OAAKwB,UAAU,4BAEPgQ,GAAwBpR,KAAK+E,MAAMV,eAAiBrE,KAAK+E,MAAMV,cAAcV,IAAIC,IAAI,IAAA2N,EAAA,OACjF3R,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK4O,EAAiB,CAAE9P,UAAW8P,EAAmB9P,YACrDpB,KAAK+E,MAAMV,eAAiBrE,KAAKwG,kBAAkB5C,GACnDyN,GAA6BrR,KAAK4Q,uBAAuBhN,EAAKL,QAAkC,QAA3BgO,EAAE3N,EAAKM,4BAAoB,IAAAqN,OAAA,EAAzBA,EAA2BpN,cAuGxH2B,gBACC9F,KAAKF,MAAM4E,cACZ1E,KAAKoE,SAAS,CAAEO,gBAAYK,KAuEzBlC,a,klBCjtBR,MAAM0O,EAAgEC,IAAA,IAAC,sBAC1EC,EAAqB,aACrBC,EAAY,YACZC,GACHH,EAAA,OACG7R,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKoP,GACLE,EACAD,IAIIE,EAAmDC,IAAA,IAAC,eAAEC,EAAc,UAAEC,EAAS,eAAEC,GAAgBH,EAAA,OAC1GlS,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKyP,GACLC,IAIIE,EAA2DC,IAAA,IAAC,cAAEC,EAAa,QAAE3Q,EAAO,MAAE4Q,EAAK,WAAEC,EAAU,QAAEC,EAAO,aAAEC,EAAY,mBAAEC,GAAoBN,EAAA,OAC7JvS,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK8P,GACL3Q,EACA8Q,EACAE,IAIIC,EAA4CC,IAAA,IAAC,WAAEC,EAAU,SAAEC,EAAQ,gBAAEC,EAAe,WAAEC,EAAU,UAAE3S,GAAWuS,EAAA,OAEtH/S,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKsQ,GACLC,GAAYjT,gBAACsS,EAA8B7P,OAAAC,OAAA,GAAKuQ,IAEjDjT,gBAAA,MAAIwB,UAAU,qBAAqBhB,EAAU4S,mBAC5CC,EAA2B7S,GAC3B2S,GACGnT,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKwQ,GACLC,EAAWpP,IAAKqO,GACbpS,gBAACiS,EAA0BxP,OAAAC,OAAA,CAAC4J,IAAK8F,EAAUxN,KAAKwN,UAAUkB,QAAYlB,QAQ7EmB,EAA8CC,IAAA,IAAC,YAAEC,EAAW,OAAEC,EAAM,UAAElT,GAAWgT,EAAA,OAC1FxT,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK+Q,GACLC,EAAO3P,IAAI,CAAC4P,EAAelG,IACxBzN,gBAAC8S,EAAsBrQ,OAAAC,OAAA,CAAClC,UAAWA,EAAW8L,IAAKmB,GAAWkG,OAS7DC,EAAkEC,IAAA,IAAC,WAAEC,EAAU,kBAAEC,EAAiB,QAAElS,EAAO,SAAEmS,EAAQ,SAAEC,EAAQ,YAAEC,EAAW,aAAEC,EAAY,mBAAEC,EAAkB,UAAE5T,GAAUqT,EAAA,OACnM7T,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKqR,GACLlS,EAQA7B,eAAmBiU,EAAgC,CAACI,MAAOP,aAAU,EAAVA,EAAYQ,2BAEvEN,EAEAE,EACAC,EAEAC,IAIIG,EAAsDC,IAAA,IAAC,oBAAEC,EAAmB,MAAEC,EAAK,QAAEC,GAASH,EAAA,OACvGxU,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK+R,GACLC,EACAC,IAIIC,EAAyCC,IAAA,IAAC,UAAEC,EAAS,cAAEC,EAAa,oBAAEC,EAAmB,cAAEC,GAAeJ,EAAA,OACnH7U,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKoS,GACLC,EACAC,EACAC,IAIH5B,EAA8B7S,GAE5BR,gBAAA,OAAKwB,UAAU,6CACXxB,gBAAA,OAAKwB,UAAU,0BAA0BhB,EAAU0U,sBACnDlV,gBAAA,OAAKwB,UAAU,wBAAwBhB,EAAU2U,oBACjDnV,gBAAA,OAAKwB,UAAU,uBAAuBhB,EAAU4U,mBAChDpV,gBAAA,OAAKwB,UAAU,2BAA2BhB,EAAU6U,uBACpDrV,gBAAA,OAAKwB,UAAU,wBAAwBhB,EAAU8U,oBACjDtV,gBAAA,OAAKwB,UAAU,wBAAwBhB,EAAU+U,qBAmEvDC,EAAmBtV,IACvB,MAAM,GACJ8E,EAAE,SACFyQ,EAAQ,QACR/U,EAAO,UACPQ,EACAV,WAAW,cAAEkV,IACXxV,EACJ,MAAO,CACL8E,KACAyQ,WACA/U,UACAQ,YACAwU,kBAIWC,UA/EoFzV,IAAQ,IAAA0V,EAAAC,EACzG,MAAM,YACJ9T,EAAW,QACXF,EAAO,mBACPuS,EAAkB,MAClBjS,EAAK,QACL2T,EAAO,gBACPC,EAAe,aACfC,EAAY,QACZC,EAAO,KACPC,EAAI,OACJxC,EAAM,UACNlT,EAAS,WACTsT,EAAU,OACVvT,GACAL,EACMiW,EAAqD,QAA1CP,EAAG9B,SAA2B,QAAjB+B,EAAV/B,EAAYsC,uBAAe,IAAAP,OAAA,EAA3BA,EAA6BpH,kBAAU,IAAAmH,IAAI,GACzDS,EAAY,IAAIC,KAAKH,GAa3B,MAXmBI,MACf,GAAIC,IAAiB3L,WAAatK,EAAO6T,mBAAmB,CACxD,IAAIqC,EAAK3L,SAASiE,iBAAoC,6CAA6C,GAC/F0H,EAAGjH,OAASjP,EAAO6T,qBACnBqC,EAAGjH,KAAOjP,EAAO6T,sBAK7BmC,GAGIvW,gBAACsL,SAAM7I,OAAAC,OAAA,GAAKX,GACPF,EACD7B,gBAAA,MAAIwB,UAAU,cAAcuU,aAAe,EAAfA,EAAiBW,oBAC5CvU,EACA2T,EACD9V,gBAAA,KAAGwB,UAAU,mBAAmBhB,EAAUmW,iBAG1C3W,gBAAA,QAAMwB,UAAU,uBACZxB,gBAAA,QAAMwB,UAAU,eACfhB,EAAUoW,mBAAmBC,QAAQ,IAAI,IAC1C7W,gBAAA,YAAOqW,EAAUS,mBAAmB,WAEnCf,aAAe,EAAfA,EAAiBhE,cAErB2B,GAAU1T,gBAACuT,EAAuB9Q,OAAAC,OAAA,CAAClC,UAAWA,GAAekT,IAE7DsC,GAAgBhW,gBAAC4T,EAA6BnR,OAAAC,OAAA,CAACoR,WAAYA,EAAYtT,UAAWA,EAAW4T,mBAAoBA,EAAoB2C,aAAcvB,EAAgBtV,IAAY8V,IAChLhW,gBAAA,QAAMwB,UAAU,iBACXhB,EAAUwW,KAAMxW,EAAUyW,QAC1BhB,aAAO,EAAPA,EAAStB,QACV3U,gBAAA,WACCQ,EAAU0W,QACXlX,gBAAA,WACCQ,EAAU2W,UAEdjB,GAAQlW,gBAAC4U,EAAqBnS,OAAAC,OAAA,GAAKwT,O,oJC5MzC,MAAMkB,EAAwEvF,IAKhF,IALiF,wBAClFwF,EAAuB,6BACvBC,EAA4B,iBAC5BjN,EAAgB,QAChBkN,GACH1F,EACG,MAAMpH,EAAoBC,2BAAiB,QAASL,EAAmB,kBACjEgG,EAAaC,iCAAuBjG,EAAmBI,GAE7D,OACIzK,gBAAA,SAAAyC,OAAAC,OAAA,CACI8U,KAAK,SACLhW,UAAU,8CAA6C,aAC3C8V,EACZ7H,QAAS8H,GACLlH,GAEHgH,I,UCbN,MAAMI,UAA8BzX,gBAA3CC,c,oBAeqB,KAAAyX,kBAAqBC,IAClC,IAAKA,GAAgC,IAApBA,EAASnV,OACtB,OAAO,KAEX,MAAMoV,EAAuC,GAoB7C,OAnBAD,EAASnK,QAAQ,CAACqK,EAAMpK,KAEpB,MAAMhD,EAAUC,2BAAiB,QAAStK,KAAKF,MAAMmK,iBAAkB,GAAI,IACrE5G,EAAWoU,EAAKpU,SAAWoU,EAAKpU,SAAW,GACjDgH,EAAQ0F,cAAcC,MAAQ3M,EAC9B,MAAM4M,EAAaC,iCAAuBlQ,KAAKF,MAAMmK,iBAAkBI,GACjEqN,EAAoC,CACtCC,UAAWF,EAAKE,UAChBvW,UAAW,OACXiC,SAAUoU,EAAKpU,SACfc,QAASsT,EAAKtT,QAAQzD,eACtB2I,aAAcoO,EAAKpO,aACnB7G,KAAM,OACN0B,qBAAsB+L,EACtBZ,QAASqB,2BAAiB1Q,KAAKF,MAAMmK,iBAAkBI,EAAShH,IAEpEmU,EAAcvT,KAAKyT,KAGhBF,GAtCJtX,SACH,MAAMsX,EAAgBxX,KAAKsX,kBAAkBtX,KAAKF,MAAM8X,OACxD,OACIhY,gBAAA,QAAMwB,UAAU,mCACXoW,GAAiBA,EAAcpV,OAAS,EACrCxC,gBAACiY,IAAc,CACXD,MAAOJ,EACPM,UAAW,CAAEC,aAAc/X,KAAKF,MAAMiY,aAAcnR,eAAgB5G,KAAKF,MAAM8G,kBAEnF,O,ykBCOpB,MAAMoR,UAAyBpY,gBAS3BC,YAAmBC,GACfC,MAAMD,GAPO,KAAAmK,iBAAsCC,6BACnDlK,KAAKF,MAAMQ,QAAQC,QAAQ4J,kBAC3BnK,KAAKF,MAAMsK,aACXpK,KAAKF,MAAMgB,WA2FR,KAAAmX,qBAAwBC,GAAuBxS,IAA8C,IAAAyS,EAC/D,QAAjCA,EAAInY,KAAKF,MAAMK,OAAOiY,mBAAW,IAAAD,GAA7BA,EAAgCD,KAChClY,KAAKF,MAAMK,OAAOiY,YAAYF,GAAW7U,SAAWqC,EAAMjF,OAAOwT,QAQlE,KAAAoE,oBAAuB3S,IAC1B1F,KAAKF,MAAMK,OAAOmY,QAAU5S,EAAMjF,OAAOwT,OAjGzCjU,KAAK+E,MAAQ,CAAEwT,SAAS,GACxBvY,KAAKwY,UAAY5Y,cACjBI,KAAKyY,WAAazY,KAAKyY,WAAWzO,KAAKhK,MAGpCuK,oBACH,MAAM,QAAEjK,GAAYN,KAAKF,MAErBQ,GAAWA,EAAQC,SAAWD,EAAQC,QAAQC,UAAYF,EAAQC,QAAQC,QAAQH,kBAClFL,KAAKoE,SAAS,CAAEmU,SAAS,IAI1BrY,SACH,MAAM,OAAEC,EAAM,QAAEG,EAAO,UAAEF,EAAS,UAAEU,GAAcd,KAAKF,OACjD,wBAAEmX,EAAuB,uBAAEyB,GAA2BtY,GACtD,QAAEmY,GAAYvY,KAAK+E,MAEnB1E,EAAiBC,GAAWA,EAAQC,SAAWD,EAAQC,QAAQC,SAAWF,EAAQC,QAAQC,QAAQH,iBACxG,IAAIsY,EAEJ,IACIA,EAAexY,EACjB,MAAOU,GAEL,OADAC,EAAUD,MAAM,+DAA+DA,GACxEjB,gBAAA,WAAMiB,GAGjB,GAAIR,IAAmBkY,EAEnB,OADAvY,KAAKF,MAAMQ,QAAQQ,UAAUD,MAAM,2DAC5B,KAGX,IAAK2J,IAA0BC,UAC3B,OAAO7K,2BAAA,MAGX,MAAMyB,EAASC,IAAA,GACRtB,KAAKF,OAAK,IACb8Y,UAAW5Y,KAAKyY,WAChBI,uBAAwB,CACpBlX,YAAa3B,KAAKF,MAClBsB,UAAWD,IAAW,uBAAwBwX,EAAavX,WAC3DyB,IAAK7C,KAAKwY,WAEdM,WAAY,CACR1X,UAAW,kCACX2X,MAAO,QACPC,MAAM,GAEVC,QAAS,CACL7X,UAAW,iCAEfe,KAAMwW,EAAaL,SACf1Y,gBAAC4K,IAA0B,CACvBpJ,UAAU,6BACVe,KAAMwW,EAAaL,QACnBR,UAAW,CAAEoB,OAAQlZ,KAAKqY,oBAAqBzR,eAAgB5G,KAAKF,MAAMQ,QAAQC,WAG1FqX,MAAOpU,kBAAgBC,YAAYkV,EAAaP,cAC5CxY,gBAACyX,EAAqB,CAClBO,MAAOe,EAAaP,YACpBL,aAAc/X,KAAKiY,qBACnBrR,eAAgB5G,KAAKF,MAAMQ,QAAQC,QACnC0J,iBAAkBjK,KAAKiK,mBAG/BkP,aACIvZ,gBAACoX,EAA4B,CACzBG,QAASnX,KAAKyY,WACdxB,wBAAyBA,EACzBC,6BAA8BwB,EAC9BzO,iBAAkBjK,KAAKiK,qBAKnC,OAAOjK,KAAKF,MAAMoC,WAAWb,GAsBzBoX,aACJ,MAAM,QAAEnY,GAAYN,KAAKF,MAErBQ,GAAWA,EAAQC,SAAWD,EAAQC,QAAQC,UAC9CF,EAAQC,QAAQC,QAAQ4Y,mBACxB7J,SAAS8J,UAEbrZ,KAAKoE,SAAS,CAAEmU,SAAS,KAIlBP,a,o3CClID,MAAOsB,UAAkB1Z,gBACnCC,YAAYC,GACRC,MAAMD,GAMF,KAAAyZ,IAAcvZ,KAAKF,MAAMQ,QAAQqG,cAAcC,eAAeC,YAAY0S,IAC1E,KAAAC,UAAoBxZ,KAAKF,MAAMQ,QAAQqG,cAAcC,eAAeC,YAAY2S,UANpFxZ,KAAK+E,MAAQ,CACT0U,SAAU,GACVC,WAAW,GAMZnP,oBAAiB,IAAAoP,EAChB3Z,KAAKF,MAAM0E,KAAKoV,MAA4B,QAAxBD,EAAI3Z,KAAKF,MAAM0E,KAAKoV,YAAI,IAAAD,GAApBA,EAAsBE,QAAU7Z,KAAKF,MAAMQ,QAAQC,QAAQC,QAAQH,kBAEtF,WACD,IACSL,KAAK8Z,aACZ,MAAOC,GACLC,MAJH,GAUN9Z,SACH,GAAIF,KAAK+E,MAAM0U,UAAYzZ,KAAK+E,MAAM0U,SAASrX,OAAS,EAAG,CACvD,MAAMf,EAASC,IAAA,GAA6BtB,KAAKF,OAAK,IAAE2Z,SAAUzZ,KAAK+E,MAAM0U,SAAUQ,MAAOja,KAAKka,iBACnG,OAAOla,KAAKF,MAAMoC,WAAWb,GAE7B,OAAO,KAIP,mBAAgB,IAAA8Y,EACpB,MAAMC,EAA6C,QAA9BD,EAAGna,KAAKF,MAAM0E,KAAKoV,KAAKC,cAAM,IAAAM,OAAA,EAA3BA,EAA6BP,KAE/CS,EAAqBra,KAAKF,MAAMQ,QAAQC,QAAQC,QAAQ8Z,IAAY,cAAcrG,OAAS,GAC3FsG,EAAkBva,KAAKF,MAAMQ,QAAQC,QAAQC,QAAQ8Z,IAAY,WAAWrG,OAAS,GACrFuG,EAAwBC,OAAOC,SAAS1a,KAAKF,MAAMQ,QAAQC,QAAQC,QAAQ8Z,IAAY,iBAAiBrG,OAAS,IAAK,IAC5H,GAAmB,KAAfoG,GAAiC,KAAZE,GAAoC,IAAlBC,EAEvCxa,KAAKF,MAAMQ,QAAQC,QAAQC,QAAQma,IAAY,gBAAiB3a,KAAKwZ,WACrExZ,KAAKF,MAAMQ,QAAQC,QAAQC,QAAQma,IAAY,UAAW3a,KAAKuZ,KAC/DvZ,KAAKF,MAAMQ,QAAQC,QAAQC,QAAQma,IAAY,aAAcP,aAAe,EAAfA,EAAiBQ,SAC3E,GAAIL,IAAYva,KAAKuZ,KAAOiB,IAAkBxa,KAAKwZ,WAAaa,KAAeD,aAAe,EAAfA,EAAiBQ,IAAI,KAAAC,EAEvG,MAAMC,EAAUC,IAAY/a,KAAKF,MAAMQ,QAAQqG,eAC/CmU,EAAQlU,eAAeC,YAAY2S,UAAYgB,EAC/CM,EAAQlU,eAAeC,YAAY0S,IAAMgB,EAGzC,MAAMS,QAAmBhb,KAAKib,WAAWH,EAAST,GAOlD,GAJAra,KAAKF,MAAMQ,QAAQC,QAAQC,QAAQma,IAAY,gBAAiB3a,KAAKwZ,WACrExZ,KAAKF,MAAMQ,QAAQC,QAAQC,QAAQma,IAAY,UAAW3a,KAAKuZ,KAC/DvZ,KAAKF,MAAMQ,QAAQC,QAAQC,QAAQma,IAAY,aAAcP,aAAe,EAAfA,EAAiBQ,IAE1EI,EAAWE,YAAiC,QAApBL,EAAAG,EAAWE,iBAAS,IAAAL,OAAA,EAApBA,EAAsBzY,QAAS,EAAG,CAE1D,MAAM+Y,EAA4B,IAAIC,IACtCJ,EAAWE,UAAU9N,QAAQiO,GAAMF,EAAaG,IAAID,EAAGE,YACvD,MAAM9B,QAAiBzZ,KAAKwb,eAAeV,EAASN,EAAetU,MAAMC,KAAKgV,IAExEM,EAAS,GAEf,IAAAC,EAAAC,GAAA,EAAAC,GAAA,MACA,QAAiDC,EAAjDC,E,qRAAAC,CAA6Bf,EAAWE,WAASS,IAAAE,QAAAC,EAAAE,QAAAC,KAAAN,GAAA,EAAE,OAAlCO,EAAQL,EAAA5H,MAAA,KAAAkI,EACrB,MAAMC,EAAYF,EAASX,UACrBc,EAAiBH,EAASI,WAChC,IAA+G,KAAvF,QAApBH,EAAAnB,EAAWE,iBAAS,IAAAiB,OAAA,EAApBA,EAAsBtS,UAAUwR,GAAMA,EAAGE,YAAca,GAAaf,EAAGiB,aAAeD,IAAwB,CAE9G,MAAME,EAAU9C,EAAS/Q,KAAK8T,GAAKA,EAAEC,WAAaP,EAASX,WASrC,kBANDvb,KAAK0c,kBAAkB,CACxCH,QAASA,EACTlK,MAAO6J,EAASS,YAITC,QACPnB,EAAOxX,KAAKsY,MAGvB,MAAAxC,GAAA6B,GAAA,EAAAF,EAAA3B,EAAA,YAAA4B,GAAA,MAAAG,EAAAe,cAAAf,EAAAe,SAAA,WAAAjB,EAAA,MAAAF,GAED1b,KAAKoE,SAAS,CAAEqV,SAAUgC,EAAQ/B,YAAa+B,EAAOrZ,WAW1D,iBAAiB0a,EAAqBC,GAC1C,OAAOC,oBAAU,CAAEC,cAAeH,GAAOC,GAUrC,qBAAqBD,EAAqBtD,EAAmBC,GACjE,OAAOyD,wBAAc,CAAED,cAAeH,GAAOtD,EAAWC,GAQpD,wBAAwB0D,GAC5B,aAAcnd,KAAKF,MAAM0E,KAAKoV,MAAMwD,iBAAiBD,GAGjDjD,eACJ,OACIta,gBAACyd,QAAK,CAACjV,OAAQpI,KAAK+E,MAAM2U,UAAW4D,OAAQA,IAAMtd,KAAKoE,SAAS,CAAEsV,WAAW,KAC1E9Z,gBAAC2d,cAAW,KACR3d,gBAAA,OAAKwB,UAAU,kDACXxB,gBAAA,QAAMwB,UAAU,6BAChBxB,gBAAA,YAAOI,KAAKF,MAAMM,UAAUod,eAGnCxd,KAAK+E,MAAM0U,SAAS9V,IAAI,CAAC6Y,EAAGnP,IAClBzN,gBAAA,MAAIsM,IAAKmB,GAAQmP,EAAEiB,W,ocC1JvC,MAAMC,EAA2DjM,IAAA,IAAC,sBACrEC,EAAqB,QACrBiM,EAAO,UACPC,EAAS,YACTC,EAAW,YACXjM,EAAW,MACXS,EAAK,OACLyL,EAAM,mBACNxH,GACH7E,EAAA,OACG7R,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKoP,GACLmM,EACAF,EACAC,EACAhM,EACAS,EACAyL,EACAxH,IAIIyH,EAAsDjM,IAAA,IAAC,cAAEM,EAAa,QAAE3Q,EAAO,MAAE4Q,EAAK,WAAEC,EAAU,QAAEC,EAAO,aAAEC,GAAcV,EAAA,OACpIlS,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK8P,GACL3Q,EACA4Q,EACAC,EACAC,EACAC,IAIIwL,EAAsC7L,IAAA,IAAC,WAAES,EAAU,SAAEC,EAAQ,gBAAEC,EAAe,WAAEC,GAAYZ,EAAA,OACrGvS,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKsQ,GACLG,GACGnT,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKwQ,GACLC,EAAWpP,IAAIqO,GACZpS,gBAACA,WAAc,CAACsM,IAAK8F,EAAUxN,KAAKwN,UAAUkB,QACzClB,EAAUA,eAQtBiM,EAAwCtL,IAAA,IAAC,YAAEU,EAAW,OAAEC,GAAQX,EAAA,OACzE/S,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK+Q,GACLC,EAAO3P,IAAI,CAAC4P,EAAOlG,IAChBzN,gBAACoe,EAAiB3b,OAAAC,OAAA,CAAC4J,IAAKmB,GAAWkG,OAKlC2K,EAAwC9K,IAAA,IAAC,YAAE+K,EAAW,QAAE1c,EAAO,gBAAE2c,EAAe,aAAEC,GAAcjL,EAAA,OACzGxT,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK6b,GACL1c,EACA2c,EACAC,IAIIC,EAA+C7K,IAAA,IAAC,gBAAE8K,EAAe,gBAAE5I,EAAe,OAAErC,EAAM,iBAAEkL,EAAgB,qBAAEC,GAAsBhL,EAAA,OAC7I7T,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKic,GACL5I,GAAmB/V,gBAAC8d,EAA2Brb,OAAAC,OAAA,GAAKqT,IACpDrC,GAAU1T,gBAACqe,EAAkB5b,OAAAC,OAAA,GAAKgR,IAClCmL,EACAD,IAIIE,EAAoCtK,IAAA,IAAC,UAAEuK,EAAS,YAAEC,GAAaxK,EAAA,OACxExU,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKqc,GACLC,GAAeA,EAAYjb,IAAI,CAAC+P,EAAYrG,IAAUzN,gBAAC0e,EAAqBjc,OAAAC,OAAA,CAAC4J,IAAKmB,GAAWqG,OAoCvFmL,UAhC4CpK,IAAA,IAAC,kBACxDqK,EAAiB,OACjBC,EAAM,MACNhd,EAAK,QACL2T,EAAO,aACPsJ,EAAY,mBACZhL,EAAkB,KAClBiL,EAAI,MACJC,EAAK,WACLC,GACH1K,EAAA,OACG7U,gBAACsL,SAAM7I,OAAAC,OAAA,GAAKwc,GACPC,GAAUnf,gBAACse,EAAkB7b,OAAAC,OAAA,GAAKyc,IAClCrJ,EACA3T,GACGnC,2BAAA,KACKmC,EACAiS,GAGRgL,GACGpf,gBAAC0L,OAAI,CAAClK,UAAU,6CACX4d,EACAhL,GAGRiL,GAAQrf,gBAAC8e,EAAgBrc,OAAAC,OAAA,GAAK2c,IAC9BC,EACAC,GAAcA,K,qGCvGvB,MAoBMC,EAAqBC,IACvB,MAAM,yBAAEC,EAAwB,kCAAEC,EAAiC,MAAEC,GAAUH,EAE/E,OACIzf,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKgd,GACN1f,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKid,GACLC,GAASA,EAAM7b,IAAI8b,MAM9BA,EAAwBC,IAC1B,MAAM,4BAAEC,EAA2B,QAAEC,GAAYF,EAEjD,OACI9f,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKqd,GACLC,IAKEC,UA1C4C/f,IACvD,MAAM,cAAEggB,EAAa,WAAEC,EAAU,aAAEC,EAAY,MAAE3C,GAAUvd,EAE3D,GAAI0K,IAASC,UAAW,CACtB,MAAMwV,EAASvV,SAASiE,iBAAmC,uBACrDuR,EAAkB,SACpBD,GAAUA,EAAO7d,QACnB6d,EAAO7S,QAAQ+S,GAAOA,EAAIzd,KAA4C,IAAtCyd,EAAIzd,IAAIiO,QAAQuP,GAA2BC,EAAIzd,IAAM,SAAWyd,EAAIzd,KAIxG,OACI9C,gBAACsL,SAAM7I,OAAAC,OAAA,GAAK0d,GACRpgB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKwd,IACTzC,EACA+B,EAAkBW,M,qLCnBxB,MAAMK,EAA0CtgB,GAC5CF,IAAAygB,cAAA,KAAGjf,UAAU,2BAA2BtB,EAAMqC,M,ykBCsCzD,IAAMme,EAAN,cAA4B1gB,YAOxBC,YAAYC,GACRC,MAAMD,GAiHH,KAAAygB,oBAAuB7a,GAA0C1F,KAAKF,MAAMK,OAAOsB,QAASU,KAAOuD,EAAMjF,OAAOwT,MAEhH,KAAAuM,0BAA6B9a,GAC/B1F,KAAKF,MAAMK,OAAOsgB,cAAete,KAAOuD,EAAMjF,OAAOwT,MAEzC,KAAAyM,cAAgB,KAC7B,GAAI1gB,KAAKF,MAAMQ,QAAQC,QAAQogB,KAAKC,kBAAoB5gB,KAAK+E,MAAM8b,QAAS,CACxE7gB,KAAKoE,SAAS,CAAEyc,SAAS,IACzB,MAAM1D,EAAQ,IAAI2D,oBAAkB9gB,KAAKF,MAAMQ,QAAQC,QAAQsG,aAE/Dka,uBAAa5D,EAAOnd,KAAKF,MAAMQ,QAAQqG,eAClCqa,KAAK,KACExW,IAASC,WACT6E,OAAOC,SAASjN,OAAOuV,IAAoB,UAAW7X,KAAKF,MAAMQ,QAAQqG,gBAAkB,MAGlGsa,MAAOpgB,IACJb,KAAKoE,SAAS,CAAEyc,SAAS,IACzB7gB,KAAKF,MAAMgB,UAAUD,MAAMA,EAAM0B,SACjCvC,KAAKF,MAAMgB,UAAUogB,MAAM,oCAnIvClhB,KAAK+E,MAAQ,CAAE8b,SAAS,GACxB7gB,KAAKiK,iBAAmBC,6BACpBlK,KAAKF,MAAMQ,QAAQC,QAAQ4J,kBAC3BnK,KAAKF,MAAMsK,aACXpK,KAAKF,MAAMgB,WAEf,MAAMuJ,EAAUC,2BAAiB,QAAStK,KAAKiK,iBAAkBkX,oBAAkBC,QACnFphB,KAAKqhB,wBAA0BnR,iCAAuBlQ,KAAKiK,iBAAkBI,GAC7EA,EAAQ0F,cAAcC,MAAQmR,oBAAkBG,OAChDthB,KAAKuhB,wBAA0BrR,iCAAuBlQ,KAAKiK,iBAAkBI,GAC7EA,EAAQ0F,cAAcC,MAAQmR,oBAAkBK,kBAChDxhB,KAAKyhB,6BAA+BvR,iCAAuBlQ,KAAKiK,iBAAkBI,GAClFA,EAAQ0F,cAAcC,MAAQmR,oBAAkBO,iBAChD1hB,KAAK2hB,2BAA6BzR,iCAAuBlQ,KAAKiK,iBAAkBI,GAG7EuX,sBAAsBC,EAAoDC,GAC7E,OAAI9hB,KAAK+E,QAAU+c,GAAa9hB,KAAKF,MAAM0E,OAASqd,EAAUrd,KAM3DtE,SAAM,IAAA6hB,EAAAC,EACT,MACI7hB,QAAQ,UAAEiB,EAAS,QAAEK,EAAO,cAAEgf,GAAe,UAC7CrgB,EACAE,SAAS,cACLqG,EACApG,SACIogB,MAAM,UAAEsB,EAAS,gBAAErB,KAE1B,KACDpc,GACAxE,KAAKF,MAEHoiB,EAAWrK,IAAoB,eAAgBlR,GACrD,IAAIwb,EAAoBtK,IAAoB,cAAelR,GAAtC,uBACjB6D,IAASC,YACT0X,EAAiB,GAAG7S,OAAOC,SAAS6S,SAASD,KAEjD,MAAME,EAAY,GAAGJ,QAAgBE,IAC/BG,EAAgBC,IAAU,oBAAqBnhB,GAC/CohB,EAAche,EAAKge,YACnBC,EAAoBD,EAAY3I,aAAqD7U,IAA3Cwd,EAAY3I,OAAO6I,oBAC7DC,EAA8C,QAA3BZ,EAAGvd,EAAKme,2BAAmB,IAAAZ,OAAA,EAAxBA,EAA0BlI,OAEhD+I,GACqB,QAAtBZ,EAAAhiB,KAAKF,MAAMQ,QAAQuiB,WAAG,IAAAb,GAAQ,QAARA,EAAtBA,EAAwB7hB,cAAM,IAAA6hB,OAAA,EAA9BA,EAAgCc,4CAChCH,aAAmB,EAAnBA,EAAqBI,mBADuD,EAE3E1hB,EAASC,IAAA,GACRtB,KAAKF,OAAK,IACbsB,UAAWkhB,EACXhC,cAAe,CACX3e,YAAa3B,KAAKF,MAClBsB,UAAWkhB,GAEfU,eAAgBJ,GACZhjB,gBAACiY,IAAa,CAACzW,UAAU,0BAA0Be,KAAM/B,EAAU6iB,sCAEvEvN,SAAU1V,KAAKF,MAAMQ,QAAQC,QAAQ2iB,OAAOC,UAAoC,aAAxBX,aAAW,EAAXA,EAAa5F,QACrEnb,SAAUghB,GAAqBhhB,GAAWA,EAAQU,MAC9CvC,gBAACiY,IAAa,CACVzW,UAAU,6BACV+N,IAAK1N,EAAQ0N,IACbhN,KAAMV,EAAQU,KACd2V,UAAW,CAAEoB,OAAQlZ,KAAKugB,oBAAqB3Z,eAAgB5G,KAAKF,MAAMQ,QAAQC,WAG1FkgB,cAAegC,GAAqBhC,GAAiBA,EAActe,MAC/DvC,gBAACiY,IAAa,CACVzW,UAAU,6BACV+N,IAAKsR,EAActR,IACnBhN,KAAMse,EAActe,KACpB2V,UAAW,CAAEoB,OAAQlZ,KAAKwgB,0BAA2B5Z,eAAgB5G,KAAKF,MAAMQ,QAAQC,WAGhG6iB,YAAaxC,GACThhB,gBAACsP,SAAM7M,OAAAC,OAAA,CAAClB,UAAU,4BAA4BgO,KAAMiT,GAAeriB,KAAKqhB,yBACnErhB,KAAKF,MAAMM,UAAUijB,uBAG9BC,YAAab,GAAqB7iB,gBAACwgB,EAAU,CAACje,KAAM/B,EAAUmjB,qBAC9DC,cAAef,GAAqB7B,GAChChhB,gBAACsP,SAAM7M,OAAAC,OAAA,CACHlB,UAAU,yBACVqiB,SAAUb,EACVvT,QAASrP,KAAK0gB,eACV1gB,KAAKuhB,yBAERvhB,KAAKF,MAAMM,UAAUijB,uBAG9BK,YAAajB,GACT7iB,gBAACsP,SAAM7M,OAAAC,OAAA,CACHlB,UAAU,6BACVgO,KAAMyI,IAAoB,UAAW7X,KAAKF,MAAMQ,QAAQqG,gBACpD3G,KAAKyhB,8BAERzhB,KAAKF,MAAMM,UAAUujB,qBAG9BC,WAAYnB,GACR7iB,gBAACsP,SAAM7M,OAAAC,OAAA,CAAClB,UAAU,2BAA2BgO,KAAM8S,GAAcliB,KAAK2hB,4BACjE3hB,KAAKF,MAAMM,UAAUyjB,wBAKlC,OAAO7jB,KAAKF,MAAMoC,WAAWb,KAtH/Bif,EAAawD,YAAA,CADlBC,KACKzD,GAkJSA,a,+ECvLf,MAcM0D,EAAiBlkB,GAEfF,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKxC,EAAMmkB,aACXnkB,EAAMokB,UACNpkB,EAAMqkB,IACNrkB,EAAMskB,YAKJC,UAxBoDvkB,IAC/D,MAAM,QAAE2B,EAAO,eAAE6iB,EAAc,eAAEC,EAAc,YAAE5iB,GAAgB7B,EACjE,OACIF,gBAACsL,SAAM7I,OAAAC,OAAA,GAAKX,GACPF,EACD7B,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKiiB,GACLD,EAAe3gB,IAAIC,GACTogB,EAAcpgB,Q,yGCEzC,MA+BM4gB,EAA4B1kB,IAC9B,MAAMyc,EAAUzc,EAAM0E,KAAK+X,QAAQ1C,OACnC,OACIja,gBAAC0L,OAAI,CAAClK,UAAU,iCACZxB,gBAAA,OAAKwB,UAAU,2BAnCCtB,KAAmF,IAAA2kB,EAC3G,MAAMC,EAA8C,QAA5BD,EAAG3kB,EAAM0E,KAAK+X,QAAQ1C,cAAM,IAAA4K,OAAA,EAAzBA,EAA2BE,gBAChDC,EAAWle,2BAAiBge,EAAoB5kB,EAAMQ,QAAQC,QAAQsG,aAa5E,OACIjH,gBAAC+H,IAAK,CACFjF,IAAKkiB,UAAY,GACjBC,YAAaH,EACb5c,oBAAoB,QACpBF,aAAc9H,EAAMQ,QAAQC,QAAQqH,aACpC5D,cAAelE,EAAMK,OAAO6D,cAAgBlE,EAAMK,OAAO6D,cAlBpB,CACzC+C,UAAW,CACPC,GAAI,CAAEC,EAAG,kBAAmBC,EAAG,IAAKC,EAAG,KACvCC,GAAI,CAAEH,EAAG,kBAAmBC,EAAG,IAAKC,EAAG,KACvCE,GAAI,CAAEJ,EAAG,kBAAmBC,EAAG,IAAKC,EAAG,KACvCG,GAAI,CAAEL,EAAG,kBAAmBC,EAAG,IAAKC,EAAG,KACvC2d,GAAI,CAAE7d,EAAG,kBAAmBC,EAAG,IAAKC,EAAG,MAE3CI,UAAU,EACVwd,iBAAiB,MAuB6BC,CAAmBllB,IAC7DF,gBAAA,OAAKwB,UAAU,6BACXxB,gBAAA,OAAKwB,UAAU,2BAA2Bmb,aAAO,EAAPA,EAASkB,MACnD7d,gBAAA,OAAKwB,UAAU,4BAA4Bmb,aAAO,EAAPA,EAAS0I,WA4ErDC,UAzBgFplB,IAC3F,MAAM,OAAEK,EAAM,QAAEsB,EAAO,cAAE0jB,EAAa,aAAEC,EAAY,YAAEC,EAAW,YAAE1jB,GAAgB7B,GAC7E,UAAEwlB,GAAcnlB,EAChBygB,EAAkB9gB,EAAMQ,QAAQC,QAAQogB,KAAKC,gBAC7Cze,EAAOmjB,GAAa1lB,gBAAC2lB,IAAiB,CAACpjB,KAAMmjB,EAAWlkB,UAAU,0BAExE,OACIxB,gBAACsL,SAAM7I,OAAAC,OAAA,GAAKX,GACPF,EACCmf,EAMEhhB,2BAAA,KACKuC,EACAkjB,EAzDMvlB,KACvB,MAAM,UAAEM,EAAS,YAAEuB,EAAW,YAAE6jB,GAAgB1lB,EAEhD,OACIF,gBAACsL,SAAM7I,OAAAC,OAAA,GAAKkjB,EAAYvL,MAAWtY,GAC9B6jB,EAAYC,YACb7lB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKkjB,EAAYE,WAClB9lB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKkjB,EAAYG,MAClB/lB,gBAAC0L,OAAI,CAAClK,UAAU,qBACXojB,EAAyB1kB,GAC1BF,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKkjB,EAAYI,SAAQ,CAAExkB,UAAU,8BACtCxB,gBAAA,OAAKwB,UAAU,gDAAgDhB,EAAUylB,mBACxEL,EAAYM,SAGrBlmB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKkjB,EAAYI,SAAQ,CAAExkB,UAAU,6BACrChB,EAAU2lB,iBACVP,EAAYQ,YAEjBpmB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKkjB,EAAYI,SAAQ,CAAExkB,UAAU,oCACrChB,EAAU6lB,gBACVT,EAAYU,WAEhBV,EAAYW,iBACZX,EAAY3kB,QAGrBjB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKkjB,EAAYY,aACjBZ,EAAYa,aACZb,EAAYc,gBA6BRC,CAAkBzmB,IARvBF,2BAAA,KACKulB,EACAC,M,0HCxGd,MAAMoB,UAAmB5mB,gBACrBM,SACH,MAAM,QAAEqB,EAAO,gBAAEG,EAAe,OAAEE,EAAM,MAAEG,EAAK,sBAAED,GAA0B9B,KAAKF,MAEhF,OACIF,gBAACsL,SAAM7I,OAAAC,OAAA,GAAKZ,GACPK,EACAD,GAAyBA,EACtBlC,2BAAA,KACK2B,EACAK,GAEL,OAKL4kB,a,oCChCf,uBAQgB1mB,aACLF,gBAAA,OAAKwB,UAAU,aAAatB,EAAMma,Q,kCCRjB,EAAQ,OAIpCwM,CAAsB,kB,+ECatB,MAAMC,EAA2BC,IAA8D,IAAAC,EAC3F,OACIhnB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKqkB,EAAkBE,uBACiB,QADID,EAC5CD,EAAkBG,8BAAsB,IAAAF,OAAA,EAAxCA,EAA0CjjB,IAAKC,GAExChE,2BAAA,KACKgE,EAAKnC,QACN7B,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKsB,EAAKmjB,gCACVnjB,EAAKzB,KACNvC,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKsB,EAAKojB,4BAA6BpjB,EAAKgU,YAkE9DqP,UApD4CnnB,IACvD,MAAM,sBACFonB,EAAqB,eACrBC,EAAc,iBACdC,EAAgB,MAChB9S,EAAK,KACLnS,EAAI,MACJyV,EAAK,MACL/T,EAAK,sBACLwjB,EAAqB,UACrBC,EAAS,eACTC,EAAc,kBACdZ,GACA7mB,EAIE0nB,EADoB3jB,EAAM/D,MAAM4C,IACG0kB,EAAiBhmB,UAApB,aAA+CgmB,EAAiBhmB,UAApB,gBAElF,OAAIkmB,EAEI1nB,gBAACsL,SAAM7I,OAAAC,OAAA,GAAK4kB,GACRtnB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GACG+kB,EAAqB,CACzBjY,KAAMkY,EACNlmB,UAAWimB,EAAwBA,EAAsBjmB,UAAY,GAAE,aAC3DmmB,IAEZ3nB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK6kB,GAAiBtjB,IAE/BjE,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK8kB,GACL9S,EACAnS,EACAyV,EACA+O,GAAqBD,EAAwBC,KAM1D/mB,gBAACsL,SAAM7I,OAAAC,OAAA,GAAK4kB,GACRtnB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK6kB,GAAiBtjB,GAC3BjE,gBAAC0L,OAAI,CAAClK,UAAWomB,GACZlT,EACAnS,EACAyV,EACA+O,GAAqBD,EAAwBC,O,8ZCpEvD,MAAMc,EAA+ChW,IAAA,IAAC,sBACzDC,EAAqB,QACrBiM,EAAO,UACPC,EAAS,YACThM,EAAW,MACXS,EAAK,OACLyL,EAAM,mBACNxH,EAAkB,YAClBuH,EAAW,eACX6J,GACHjW,EAAA,OACG7R,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKoP,GACLmM,EACA6J,EACA/J,EACAC,EACAhM,EACAS,EACAyL,EACAxH,IAIIqR,EAAkC7V,IAAA,IAAC,eAAEC,EAAc,UAAEC,EAAS,eAAEC,EAAc,OAAEwJ,GAAQ3J,EAAA,OACjGlS,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKyP,GACLC,EACAC,EACAwJ,IAIImM,EAA0CzV,IAAA,IAAC,cAAEC,EAAa,QAAE3Q,EAAO,MAAE4Q,GAAOF,EAAA,OACrFvS,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK8P,GACL3Q,EACA4Q,IAIIwV,EAA0BlV,IAAA,IAAC,WAAEC,EAAU,SAAEC,EAAQ,QAAEN,EAAO,gBAAEO,EAAe,WAAEC,EAAU,0BAAE+U,GAA2BnV,EAAA,OAC7H/S,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKsQ,GACLC,GAAYjT,gBAACgoB,EAAavlB,OAAAC,OAAA,GAAKuQ,IAChCjT,gBAAC0L,OAAI,CAAClK,UAAU,2CACX2R,GACGnT,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKwQ,GACLC,EAAWpP,IAAIqO,GACZpS,gBAACA,WAAc,CAACsM,IAAK8F,EAAUxN,KAAKwN,UAAUkB,SACxC4U,GAA6B9V,EAAU+V,YACR,SAAhC/V,EAAUxN,KAAKwjB,cAA2BhW,EAAUxN,KAAKyjB,SAAWjW,EAAUQ,aAAe,KAC9F5S,gBAAC+nB,EAAStlB,OAAAC,OAAA,GAAK0P,QAK7Ba,EAASqV,cAAgB3V,EAC1BM,EAASqV,cACNtoB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKuQ,EAASsV,aACd5V,EACAM,EAASJ,uBAOjB2V,EAA4BhV,IAAA,IAAC,YAAEC,EAAW,OAAEC,GAAQF,EAAA,OAC7DxT,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK+Q,GACLC,EAAO3P,IAAI,CAAC4P,EAAOlG,IAChBzN,gBAACioB,EAAKxlB,OAAAC,OAAA,CAAC4J,IAAKmB,GAAWkG,OAKtB8U,EAAwC5U,IAAA,IAAC,kBAClDE,EAAiB,QACjBlS,EAAO,SACPoS,EAAQ,SACRD,EAAQ,IACR0U,EAAG,YACHxU,EAAW,aACXC,GACHN,EAAA,OACG7T,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKqR,GACLlS,EACAoS,EACAD,EACA0U,EACAxU,EACAC,IAIIwU,EAAqCnU,IAAA,IAAC,oBAAEC,EAAmB,MAAEC,EAAK,QAAEC,GAASH,EAAA,OACtFxU,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK+R,GACLC,EACAC,IAIIiU,EAAwB/T,IAAA,IAAC,UAAEC,EAAS,cAAEC,EAAa,oBAAEC,EAAmB,cAAEC,GAAeJ,EAAA,OAClG7U,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKoS,GACLC,EACAC,EACAC,IAuCM4T,UAnC4CC,IActD,IAduD,YACxD/mB,EAAW,UACXgnB,EAAS,iBACTC,EAAgB,MAChB1J,EAAK,SACL2J,EAAQ,QACRpnB,EAAO,MACPM,EAAK,QACL2T,EAAO,gBACPC,EAAe,aACfC,EAAY,QACZC,EAAO,KACPC,EAAI,OACJxC,GACHoV,EACG,OACI9oB,gBAACsL,SAAM7I,OAAAC,OAAA,GAAKX,GACPknB,EACApnB,EACAM,EACA2T,EACAC,GAAmB/V,gBAAC6nB,EAAeplB,OAAAC,OAAA,GAAKqT,IACxCiT,EACAD,EACAzJ,EACA5L,GAAU1T,gBAACwoB,EAAM/lB,OAAAC,OAAA,GAAKgR,IACvB1T,gBAAC0L,OAAI,CAAClK,UAAU,6CACXwU,GAAgBhW,gBAACyoB,EAAYhmB,OAAAC,OAAA,GAAKsT,IAClCC,GAAWjW,gBAAC2oB,EAAOlmB,OAAAC,OAAA,GAAKuT,KAE5BC,GAAQlW,gBAAC4oB,EAAInmB,OAAAC,OAAA,GAAKwT,O,+EChJ/B,MA+CMgT,EAAmBhpB,GAEjBF,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKxC,EAAMipB,WACZnpB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKxC,EAAMqe,aACXre,EAAMgmB,OACNhmB,EAAMkpB,KACNlpB,EAAMmpB,MAEXrpB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKxC,EAAMopB,eACZtpB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKxC,EAAMqpB,aACXrpB,EAAMspB,YACNtpB,EAAMupB,YAEXzpB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKxC,EAAMwpB,eACXxpB,EAAMypB,aACNzpB,EAAM0pB,aACN1pB,EAAM2pB,cAEX7pB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKxC,EAAM4pB,eACX5pB,EAAM6pB,mBACN7pB,EAAM8pB,KACN9pB,EAAM+pB,QACN/pB,EAAMgqB,KACNhqB,EAAMiqB,UAOrBxD,EAAoBA,CAACzmB,EAA8B6B,IAEjD/B,gBAACsL,SAAM7I,OAAAC,OAAA,GAAKxC,EAAMma,MAAWtY,GACxB7B,EAAM2lB,YACP7lB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKxC,EAAM4lB,WACZ9lB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKxC,EAAM6lB,MACZ/lB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKxC,EAAM8lB,UACX9lB,EAAMgmB,OACNhmB,EAAMkqB,aAEXpqB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKxC,EAAM8lB,UACX9lB,EAAMmqB,WACNnqB,EAAMkmB,YAEXpmB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKxC,EAAM8lB,UACX9lB,EAAMoqB,UACNpqB,EAAMomB,WAEVpmB,EAAMqmB,iBACNrmB,EAAMe,QAGfjB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKxC,EAAMsmB,aACXtmB,EAAMumB,aACNvmB,EAAMwmB,eAMjB6D,EAAoBA,CAACrqB,EAAoCiF,IAEvDnF,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKxC,EAAMma,OACZra,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKxC,EAAM2lB,aACX1gB,EAAMqlB,SAAWtqB,EAAMuqB,gBAAkBvqB,EAAMif,QAEpDnf,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKxC,EAAM4lB,WACX3gB,EAAMqlB,SAAWtqB,EAAMwqB,uBAAyB,CAACxqB,EAAMyqB,cAAezqB,EAAM0qB,aAAc1qB,EAAMe,QAErGjB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKxC,EAAMsmB,aACXrhB,EAAMqlB,SAAWtqB,EAAM2qB,gBAAkB,CAAC3qB,EAAMumB,aAAcvmB,EAAMwmB,gBAMtEoE,UA3H0C5qB,IACrD,MAAM,cACF6qB,EAAa,iBACbC,EAAgB,YAChBjpB,EAAW,iBACXkpB,EAAgB,2BAChBC,EAA0B,aAC1BC,EAAY,mBACZC,EAAkB,kBAClBC,EAAiB,iBACjBC,EAAgB,YAChBC,EAAW,YACXC,EAAW,YACX5F,EAAW,eACX6F,EAAc,MACdtmB,EAAK,WACLumB,GACAxrB,EAEJ,OAAKwrB,GAAqC,IAAvBH,EAAY/oB,QAAiB2C,EAAMwmB,gBAOlD3rB,gBAACsL,SAAM7I,OAAAC,OAAA,GAAKX,GACPgpB,EACAS,EACDxrB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK0oB,GACLK,EACAT,GAELhrB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK4oB,GACLI,GAAcxC,EAAgBwC,GAC9BH,EAAYxnB,IAAI6nB,GACN1C,EAAgB0C,KAGN,IAAvBL,EAAY/oB,QAAgB2C,EAAMwmB,iBAAmBT,EACtDC,EACAxE,EAAkBf,EAAa7jB,GAC/BwoB,EAAkBc,EAAmBlmB,IAtBlCnF,gBAACsL,SAAM7I,OAAAC,OAAA,GAAKX,GACfkpB,K,oGCuBEY,UArC6G3rB,IAAQ,IAAA4rB,EAChI,MAAM,kBAAEC,EAAiB,QAAElqB,EAAO,MAAEyd,GAAUpf,GACxC,4BAAE8rB,GAAgC9rB,EAAMM,UAG9C,OAFqB,KAEkB,QAAnCsrB,EAAA5rB,EAAM0E,KAAKqnB,kBAAkBhS,cAAM,IAAA6R,OAAA,EAAnCA,EAAqCtpB,QAEjCxC,IAAAygB,cAACnV,SAAM7I,OAAAC,OAAA,GAAKqpB,GACPlqB,EACD7B,IAAAygB,cAAC/U,OAAI,CAAClK,UAAU,IACZxB,IAAAygB,cAAA,OAAKjf,UAAU,uCACXxB,IAAAygB,cAAA,MAAIjf,UAAU,+CAA+CtB,EAAMM,UAAU0rB,8BAC7ElsB,IAAAygB,cAAA,KAAGjf,UAAU,4CAA4CtB,EAAMM,UAAU2rB,2BACzEnsB,IAAAygB,cAAC/U,OAAI,CAAClK,UAAU,oDACZxB,IAAAygB,cAACnR,SAAM,CACH1M,KAAK,SACL8R,MAAOsX,EAA2B,aACtBA,EACZxqB,UAAU,0DACVgO,KAAM4c,YAAW,OAAQlsB,EAAMQ,QAAQqG,gBAEtCilB,OASzBhsB,IAAAygB,cAACnV,SAAM7I,OAAAC,OAAA,GAAKqpB,GACPlqB,EACAyd,K,kCCjDb,IAAI+M,EAAS,EAAQ,QAErBC,EAAOC,QAAUF,G,kCCFjB,IAAIG,EAAkB,EAAQ,QAE9BD,EAAQE,EAAID,G,+ECwCGE,UAjC8CxsB,IACzD,MAAM,cACFwgB,EAAa,QACb7e,EAAO,cACPgf,EAAa,WACb2C,EAAU,WACVE,EAAU,aACVE,EAAY,YACZE,EAAW,UACXE,EAAS,QACTlO,EAAO,eACPsN,GACAljB,EAEJ,OAAI4V,GACA5V,EAAMQ,QAAQQ,UAAUD,MAAM,mDACvB,MAIPjB,gBAACsL,SAAM7I,OAAAC,OAAA,GAAKge,GACP0C,EACAvC,EACAhf,EACAiiB,EACAJ,EACAM,EACAJ,EACAJ,K,wHCab,MAAMmJ,EAAsBC,IACxB,MAAMC,EAAWD,GAAsBA,EAAmB3S,OAC1D,OAAOja,2BAAA,KAAG6sB,EAAWA,EAASC,WAAaD,EAAShP,KAAO,KA4E/D,SAASkP,EAAqBnN,GAC1B,OACI5f,2BAAA,KACK4f,GAASA,EAAMpd,OAAS,EACnBod,EAAM7b,IAAI,CAACipB,EAAuBvf,IACvBzN,gBAACA,WAAc,CAACsM,IAAKmB,GAAQuf,IAExC,MAKHC,UAjIgC/sB,IAC3C,MAAM,UAAEgtB,EAAS,gBAAEC,EAAe,sBAAEC,EAAqB,QAAEC,GAAYntB,EACvE,OACIF,gBAACsL,SAAM7I,OAAAC,OAAA,GAAKwqB,GACRltB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKyqB,GACNntB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK0qB,GACLltB,EAAMotB,QACNptB,EAAMqtB,KACNR,EAAqB7sB,EAAMstB,QAC3BttB,EAAMutB,eAuE3B,SAA6BvtB,EAAyBwtB,GAClD,MAAM,mCACFC,EAAkC,0CAClCC,EAAyC,0BACzCC,EAAyB,YACzBC,EAAW,WACXtK,EAAU,aACVuK,GACA7tB,EAEJ,GAAIytB,EAAoC,CACpC,MAAMK,EAAmBzsB,IACrBosB,EAAmCnsB,UACnCksB,EAAkB,iBAAmB,mBAEzC,GAAIE,EACA,OACI5tB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKirB,EAAkC,CAAEnsB,UAAWwsB,IACpDH,EACD7tB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKkrB,KACLG,GAAeA,EAAahqB,IAAK8T,GAA0BA,GAC3DiW,IAIV,GAAItK,EACP,OACIxjB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKirB,EAAkC,CAAEnsB,UAAWwsB,IACpDxK,GAMjB,OAAO,KAxGUyK,CAAoB/tB,GAAO,GAC3BA,EAAMguB,oBACPluB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK2qB,IACTntB,EAAMiuB,SACNpB,EAAqB7sB,EAAMkuB,cAShD,SAA6BluB,GACzB,MAAM,QAAEmtB,EAAO,yBAAEgB,EAAwB,oBAAEC,GAAwBpuB,EACnE,OACIF,gBAACuuB,WAAQ,CAAC/sB,UAAU,mCAAmCgH,QAAS8lB,GAC5DtuB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK2rB,GACLtB,EAAqB7sB,EAAMstB,QAgB5C,SAAmCttB,EAAyBwtB,GACxD,MAAM,mCAAEC,EAAkC,YAAEG,EAAW,WAAEtK,EAAU,KAAE5e,EAAI,aAAEmpB,GAAiB7tB,EAE5F,GAAIytB,EAAoC,CACpC,MAAMK,EAAmBzsB,IACrB,oBACAosB,EAAmCnsB,UACnCksB,EAAkB,iBAAmB,mBAGzC,GAAIK,EACA,OACI/tB,gBAACoM,SAAM,CACH5K,UAAWwsB,EACXzhB,UAAU,yBACVG,WAAW,0BACXC,eAAe,MACfX,iBAAkB2gB,EAAmB/nB,EAAKgoB,qBAE1C5sB,gBAAA,aACK+tB,GAAeA,EAAahqB,IAAK8T,GAA0BA,GAC3DiW,IAIV,GAAItK,EACP,OACIxjB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKirB,EAAkC,CAAEnsB,UAAWwsB,IACpDxK,GAKjB,OAAO,KAhDMgL,CAA0BtuB,GAAO,GACjCA,EAAMuuB,mBACNvuB,EAAMkuB,aAEXpuB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK2qB,IACTN,EAAqB7sB,EAAMwuB,UAlBvBC,CAAoBzuB,GACrBF,gBAAC0L,OAAI,CAAClK,UAAU,2BAA2BurB,EAAqB7sB,EAAMwuB,c,+ECnBtF,MAcMtK,EAAiBlkB,GAEfF,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKxC,EAAMmkB,aACXnkB,EAAMokB,UACNpkB,EAAMqkB,IACNrkB,EAAMskB,YAKJC,UAxBoDvkB,IAC/D,MAAM,QAAE2B,EAAO,eAAE6iB,EAAc,eAAEC,EAAc,YAAE5iB,GAAgB7B,EACjE,OACIF,gBAACsL,SAAM7I,OAAAC,OAAA,GAAKX,GACPF,EACD7B,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKiiB,GACLD,EAAe3gB,IAAIC,GACTogB,EAAcpgB,Q,qICoBzC,MAAM4qB,EAAuC,GACvCC,EAAyB,GACzBC,EACF,oMA0BJ,SAASC,EAAkBnS,GACvB,MAAiD,UAA1CA,EAAEoS,oCAGb,MAmQMC,EAAoBC,IACtB,GAAKA,GAAoC,IAAtBA,EAAW1sB,OAI9B,OAAOxC,2BAAA,KAAGkvB,EAAW,KAGnBC,EAAsBC,IACxB,GAAKA,GAAsC,IAAvBA,EAAY5sB,OAIhC,OAAOxC,2BAAA,KAAGovB,EAAY,KAGpBC,EAAwBA,CAC1BC,EACAC,EACAC,KAEA,GAAKF,GAAcE,EAInB,OACIxvB,gBAAA,OAAKwB,UAAU,uBAEV+tB,GAAsBA,EAAmBE,WAC1CzvB,gBAAA,OAAKwB,UAAU,WACV8tB,GAAaA,EAAUI,OACvBH,GAAsBA,EAAmBG,UAMpDC,EAAoBC,IACtB,MAAM,eAAEC,EAAc,UAAEC,GAAcF,EAEtC,OAAO5vB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKmtB,GAAiBC,EAAU/rB,IAAIgsB,KAG9CA,EAA4BC,IAC9B,MAAM,eAAEH,EAAc,oBAAEI,EAAmB,QAAEpuB,EAAO,OAAEga,EAAM,OAAEqU,GAAWF,EAEzE,OACIhwB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKmtB,GACN7vB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKutB,GACLpuB,EACAga,GAEJqU,IAKPC,EAAsBC,IACxB,MAAM,eAAEP,EAAc,cAAEQ,EAAa,QAAExuB,EAAO,OAAoBga,EAAM,OAAE6T,EAAM,MAAErV,EAAK,wBAAEiW,GAA4BF,EAErH,OACIpwB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKmtB,GACLQ,EACAxuB,EACAyuB,EAEAzU,EACA6T,EACArV,IAUPkW,EAAmBC,GAAiCC,IAClDD,EAAUE,gBACHF,EAAUE,eAAeD,GAKlCE,EAAkBA,CACpBC,EACAJ,EACAtwB,EACAiF,EACA0rB,EACAC,EACAC,EACA1mB,KAEA,MAAM,eAAEwlB,EAAc,oBAAEI,EAAmB,QAAEpuB,EAAO,OAAEga,GAAW+U,GAC3D,SAAEI,GAAa7rB,EAErB,IAAI8rB,EAA4B,GAC3BF,IACDA,EAAM,IAGV,IAAK,IAAI7mB,EAAI,EAAGA,GAAK6mB,EAAK7mB,IACtB+mB,EAAgB5sB,KAAK6F,GAGzB,OACIlK,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKmtB,GACN7vB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKutB,GACLpuB,EACAga,GAGL7b,gBAACkxB,mBAAgB,CACblsB,GAAG,oCACH+rB,IAAKA,EACLI,aAAcH,EACdI,SAAUb,EAAgBC,GAC1Ba,QAASJ,IAeZH,IAKPQ,EAAqBC,IACvB,MAAM,eAAE1B,EAAc,oBAAEI,EAAmB,QAAEpuB,EAAO,MAAE0b,GAAUgU,EAEhE,OACIvxB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKmtB,GACN7vB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKutB,GAAsBpuB,GAC/B0b,IAKPiU,EAA0BC,IAC5B,MAAM,eAAE5B,EAAc,OAAEhU,EAAM,MAAE0B,GAAUkU,EAE1C,OACIzxB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKmtB,GACLhU,EACA0B,IAKEmU,UApaqExxB,IAChF,MAAM,YACFyxB,EAAW,2BACXC,EAA0B,0BAC1BC,EAAyB,UACzBvC,EAAS,mBACTC,EAAkB,cAClBC,EAAa,iBACbnlB,EAAgB,UAChBulB,EAAS,YACSQ,EAAW,SAC7BY,EAAQ,MACRc,EAAK,MACLpd,EAAK,OACLwR,EAAM,UACNsK,EAAS,MACTrrB,EAAK,UACL3E,EAAS,eACTuxB,EAAc,gBACdC,EAAe,WACfT,EAAU,uBACVT,EAAsB,IACtBC,EAAG,uBACHkB,EAAsB,cACtBC,EAAa,KACbttB,GACA1E,GACGiyB,EAAmBC,GAAwBC,oBAAS,GA8B3D,GA7BAC,oBAAU,KACN,GAAIxnB,SAAU,CAEV,MAAMynB,EAAcznB,SAASiE,iBACzB,kEAEAwjB,EAAY/vB,OAAS,GACrB+vB,EAAY/kB,QAAQwB,IAEhB,GAAIA,EAAKI,UAAUrJ,SAAS,wCAAyC,CACjE,MAAMysB,EAAaxjB,EAAKlM,IACxBkM,EAAKlM,IAAMgsB,EACX9f,EAAKyjB,MAAMC,gBAAkB,QAAUF,EAAa,KAEpDxjB,EAAKyjB,MAAME,SAAW,YAavC,CAAC/tB,IAEAgG,IAASC,UAAW,CACpB,MAAM+nB,EAAahuB,EAAKiuB,kBAAkB5Y,OAC1C,GAAI2Y,EAEA,GAvFgBA,KACxB,MAAME,EAAkBF,EAAW7uB,IAAIgvB,GAAKA,EAAEC,iBACxCC,EAA+C,GAErDH,EAAgBtlB,QAAQ0lB,GAAMD,EAAoB5uB,QAAQ6uB,IAC1D,MAAMC,EAAWroB,SAASiE,iBAAiB,gCAC3C,GAAIokB,GAAYA,EAAS3wB,OACrB,IAAK,IAAI0H,EAAI,EAAGA,EAAIipB,EAAS3wB,OAAQ0H,IAAK,CACtC,MAAMwK,EAAQye,EAASjpB,GAAGvD,aAAa,SACvC,GAAI+N,EAAO,CACP,MAAM1K,EAAMipB,EAAoBhpB,UAAUipB,IAAMA,aAAE,EAAFA,EAAIE,SAAU1e,GAC9D,GAAI1K,GAAO,EAAG,KAAAqpB,EACV,MAAMC,EAA4C,QAA3BD,EAAGJ,EAAoBjpB,UAAI,IAAAqpB,GAAqB,QAArBA,EAAxBA,EAA0BE,2BAAmB,IAAAF,OAAA,EAA7CA,EAA+CvqB,KAAK0qB,GAAiB,iBAAXA,EAAGC,KAChE,IAAAC,EAAvB,GAAIJ,EACAH,EAASjpB,GAAGypB,aAAa,SAAgC,QAAvBD,EAAAJ,EAAkBF,aAAK,IAAAM,OAAA,EAAvBA,EAAyBE,cAAelf,OAwEtFmf,CAAmBjB,QACgCxtB,IAA/CwtB,EAAW,GAAGkB,6BACQlB,EAAW,GAAGkB,6BAA6BC,OAAOhF,GACxDvhB,QAAQwmB,IAAI,IAAAC,EAAAC,OACQ9uB,KAAZ,QAAhB6uB,EAAAD,EAAEG,sBAAc,IAAAF,OAAA,EAAhBA,EAAkBb,QAAwBvE,EAAauF,SAAyB,QAAjBF,EAACF,EAAEG,sBAAc,IAAAD,OAAA,EAAhBA,EAAkBd,QAClFvE,EAAaxqB,KAAK2vB,EAAEG,eAAef,SAMnD,MAAMiB,EAAavpB,SAASwpB,cAAc,kFACpCC,EAAgBF,aAAU,EAAVA,EAAYG,mBAClC,IAkBwBC,EAAAC,EAlBpBC,EAAqB7pB,SAAS2V,cAAc,QAkBhD,GAhBI4T,GAAcA,EAAWO,UAA2C,IAA/BP,EAAWO,SAASpyB,SACzD6xB,WAAYQ,OAAOF,GACfJ,GACAA,EAAcvpB,iBAAiB,QAAS8pB,IACpC,IAAIj0B,EAASi0B,EAAEj0B,OACf,GACIA,EAAOuO,UAAUrJ,SAAS,8BAG5B,CACE,IAAIgvB,EAAYl0B,EAAO6T,MACvBigB,EAAmBK,UAAY,KAAKD,MAKhDJ,EACAA,EAAmBK,UAAY,MAAuC,QAAvCP,EAAgC,QAAhCC,EAAKx0B,EAAMQ,QAAQC,QAAQs0B,aAAK,IAAAP,OAAA,EAA3BA,EAA6Bvb,aAAK,IAAAsb,IAAI,IAI9E,MAAMS,EAAiBpqB,SAASiE,iBAC5B,uFAEJ,GAAImmB,EAAe,IAAMrG,EAAauF,SAASc,EAAe,GAAGxgB,OAAQ,CACrE,MAAMygB,EAAarqB,SAASiE,iBACxB,oFAwBJ,GAtBIomB,EAAW3yB,OAAS,GACpB2yB,EAAW3nB,QAAQ,CAACwB,EAAM9E,UACW9E,IAA7BwpB,EAAa5f,EAAK0F,QAAyB1F,EAAKlM,IAAIsxB,SAAS,aAC7DxF,EAAa5f,EAAK0F,OAAS1F,EAAKlM,KAGpC,IAAIsyB,EAAavG,EAAauF,SAASplB,EAAK0F,QACxC1F,EAAKI,UAAUrJ,SAAS,yCAA4CqvB,IACpEpmB,EAAKlM,IAAMgsB,EACX9f,EAAKyjB,MAAMC,qBACsBttB,IAA7BwpB,EAAa5f,EAAK0F,OAAuB,GAAK,QAAUka,EAAa5f,EAAK0F,OAAS,KACvF1F,EAAKyjB,MAAME,SAAW,QAGtB3jB,EAAKI,UAAUrJ,SAAS,0CACvBiJ,EAAKI,UAAUrJ,SAAS,yCACzBqvB,IAEApmB,EAAKlM,IAAM8rB,EAAa5f,EAAK0F,UAIrCma,EAAarsB,OAAS,EAAG,CACzB,MAAMuvB,EAAiBjnB,SAASwpB,cAA8B,8BACxDe,EAAgBvqB,SAASwpB,cAA8B,yCAEtC,OAAnBvC,GAA6C,OAAlBsD,IAC3BtD,EAAeU,MAAM6C,QAAUzG,EAAauF,SAASiB,EAAc3gB,OAAS,OAAS,SAG7F,MAAM6gB,EAAmBzqB,SAASiE,iBAAiB,yBACnD,GAAIwmB,EACA,IAAK,IAAIrrB,EAAI,EAAGA,EAAIqrB,EAAiB/yB,OAAQ0H,IAAK,CAC9C,MAAM0qB,EAAWW,EAAiBrrB,GAAG0qB,SACrC,IAAIY,GAAc,EAClB,IAAK,IAAIC,EAAI,EAAGA,EAAIb,EAASpyB,OAAQizB,IACjC,GAAIb,EAASa,IAAMb,EAASa,GAAGrmB,UAAUrJ,SAAS,wCAAyC,CACvFyvB,GAAc,EACd,MAGR,GAAKA,GAWE,IAAKrD,EAAmB,CAC3B,MAAMuD,EAAe5qB,SAASiE,iBAC1B,gFAIJ,IAAI4mB,GAAe,EACnB,GAAID,EAAalzB,OAAS,IACtBkzB,EAAaloB,QAAQooB,IAEbA,EAAKxmB,UAAUrJ,SAAS,0CACvB6vB,EAAKxmB,UAAUrJ,SAAS,0CAEzB4vB,GAAe,MAGlBA,GAAc,CACf,IAAI1U,GAAU,EACdyU,EAAaloB,QAAQooB,IACZA,EAAKxmB,UAAUrJ,SAAS,yCAA4Ckb,IACrE2U,EAAKC,QACL5U,GAAU,EACVmR,GAAqB,YAjCvB,CAEd,IAAI0D,EAAgBlB,EAAS,GAC7B,IAAK,IAAIa,EAAI,EAAGA,EAAIb,EAASpyB,OAAQizB,IACjC,IAAKb,EAASa,GAAGrmB,UAAUrJ,SAAS,wCAAyC,CACzE+vB,EAAgBlB,EAASa,GACzBD,GAAc,EACd,MAGRM,EAAcD,cA+BvB,CACH,MAAMV,EAAarqB,SAASiE,iBACxB,oFAEAomB,EAAW3yB,OAAS,GACpB2yB,EAAW3nB,QAAQwB,SACkB5J,IAA7BwpB,EAAa5f,EAAK0F,QAAyB1F,EAAKlM,IAAIsxB,SAAS,aAC7DxF,EAAa5f,EAAK0F,OAAS1F,EAAKlM,KAGpC,IAAIsyB,EAAavG,EAAauF,SAASplB,EAAK0F,QACxC1F,EAAKI,UAAUrJ,SAAS,yCAA4CqvB,IACpEpmB,EAAKlM,IAAMgsB,EACX9f,EAAKyjB,MAAMC,qBACsBttB,IAA7BwpB,EAAa5f,EAAK0F,OAAuB,GAAK,QAAUka,EAAa5f,EAAK0F,OAAS,KACvF1F,EAAKyjB,MAAME,SAAW,QAGtB3jB,EAAKI,UAAUrJ,SAAS,0CACvBiJ,EAAKI,UAAUrJ,SAAS,yCACzBqvB,IAEApmB,EAAKlM,IAAM8rB,EAAa5f,EAAK0F,WASjD,OACI1U,gBAACsL,SAAM7I,OAAAC,OAAA,GAAKivB,GACR3xB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKkvB,GAA6B1xB,EAAM61B,cAC7C/1B,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKmvB,GACN7xB,gBAAA,OAAKwB,UAAU,cACVkT,EACA8a,GAAiBA,EAAcE,QAGnCoC,EACAI,EACA1C,GAAiBA,EAAcC,WAIhCzvB,gBAAA,MAAIwB,UAAU,WACbouB,GAAaD,EAAiBC,GAC9B2B,GAAcD,EAAkBC,GAEhCQ,EAKD/xB,gBAAA,OAAKwB,UAAU,gBACVwvB,GACGL,EAAgBK,EAAUR,EAAWtwB,EAAOiF,EAAO3E,EAAWswB,EAAwBC,EAAK1mB,GAC9FglB,EAAsBC,EAAWC,EAAoBC,IAGzDP,EAAiB/uB,EAAM81B,MAAM9G,YAC7BhvB,EAAM81B,OAAS91B,EAAM81B,MAAMC,SAC3B/P,EAEAkK,GAAeD,EAAmBC,GAClCjB,EAAmBjvB,EAAM81B,OAAS91B,EAAM81B,MAAM5G,aAC9C4C,GAAmBR,EAAuBQ,GAC1CC,GAA0BT,EAAuBS,O,2WC/SlE,IAAqBf,EAAgBgF,EAArC,cAA8Cl2B,gBAS1CC,YAAYC,GAA6B,IAAAi2B,EAAAC,EACrCj2B,MAAMD,GAHO,KAAAm2B,SAA8Cr2B,cAgE9C,KAAAs2B,mBAAqB,KAClCC,IAAS,KACL,GAAI1b,OAAO2b,MAAMp2B,KAAK+E,MAAMsxB,cACxB,OAIJr2B,KAAKF,MAAMkxB,UAAYhxB,KAAKF,MAAMkxB,SAAShxB,KAAK+E,MAAMsxB,cAEtD,MAAMC,EACFt2B,KAAKi2B,UAAYj2B,KAAKi2B,SAAS1wB,SAAWvF,KAAKi2B,SAAS1wB,mBAAmBgxB,kBAAoBv2B,KAAKi2B,SAAS1wB,QAC7G+wB,IACAA,EAAa/C,aAAa,gBAAiBvzB,KAAK+E,MAAMsxB,aAAahoB,YACnEioB,EAAa/C,aAAa,QAASvzB,KAAK+E,MAAMsxB,aAAahoB,cAEhE,IAdH8nB,IAiBa,KAAAK,aAAe,KAC5B,GAAI/b,OAAO2b,MAAMp2B,KAAK+E,MAAMsxB,cACxBr2B,KAAKoE,SAAS,CAAEiyB,aAAcr2B,KAAKy2B,WAAaz2B,KAAKk2B,wBAClD,CACH,MAAMQ,EAAevoB,KAAKwoB,IAAI32B,KAAKF,MAAM6wB,IAAKxiB,KAAKwiB,IAAI3wB,KAAKy2B,UAAWz2B,KAAK+E,MAAMsxB,eAC9EK,IAAiB12B,KAAK+E,MAAMsxB,aAC5Br2B,KAAKoE,SAAS,CAAEiyB,aAAcK,GAAgB12B,KAAKk2B,oBAEnDl2B,KAAKk2B,uBAtFbl2B,KAAK+E,MAAQ,CAAEsxB,aAAgC,QAApBN,EAAEj2B,EAAMixB,oBAAY,IAAAgF,IAAI,EAAGa,YAAY,GAClE52B,KAAK62B,cAAgB72B,KAAK62B,cAAc7sB,KAAKhK,MAC7CA,KAAKy2B,UAA0B,QAAjBT,EAAGh2B,KAAKF,MAAM62B,WAAG,IAAAX,IAAIF,EAAiBgB,aAAaH,IAG9D,gCAAgC72B,EAAyCiF,GAC5E,MAAM+c,E,yWAASxgB,CAAA,GAAQyD,GAMkB,IAAAgyB,GAJrCj3B,EAAM2jB,WAAa1e,EAAM6xB,aACzB9U,EAAU8U,YAAa,IAGtB92B,EAAM2jB,UAAY1e,EAAM6xB,cACzB9U,EAAUuU,aAAiC,QAArBU,EAAGj3B,EAAMixB,oBAAY,IAAAgG,IAAI,EAC/CjV,EAAU8U,YAAa,GAE3B,OAAO9U,EAGJ5hB,SACH,MAAM,IAAEywB,EAAG,QAAEM,GAAYjxB,KAAKF,MAExB42B,EAAe12B,KAAK+E,MAAMsxB,aAEhC,OACIz2B,gBAAA,UACIgF,GAAI5E,KAAKF,MAAM8E,GACfxD,UAAU,kBACV6S,MAAOjU,KAAK+E,MAAMsxB,aAClBrF,SAAUhxB,KAAK62B,cACfG,OAAQh3B,KAAKw2B,aAAY,YACf,SAAQ,aACN,GAAGx2B,KAAKF,MAAMm3B,uBAC1Bz0B,KAAK,aAAY,gBACFxC,KAAKy2B,UAAS,gBACd9F,EAAG,gBACH+F,GAEdzF,EAAQttB,IAAIuzB,GAELt3B,gBAAA,UAAQsM,IAAKgrB,EAAG91B,UAAU,yBAAyB6S,MAAOijB,EAAGC,SAAUD,IAAMR,GACxEQ,KAQjBL,cAAcnC,GAClB,IAAIgC,EAAejc,OAAOC,SAASga,EAAEj0B,OAAOwT,MAAO,IAC9CwG,OAAO2b,MAAMM,KACdA,EAAevoB,KAAKwoB,IAAI32B,KAAKF,MAAM6wB,IAAKxiB,KAAKwiB,IAAI3wB,KAAKy2B,UAAWC,KAErE12B,KAAKoE,SAAS,CAAEiyB,aAAcK,GAAgB12B,KAAKk2B,sBAhEzCpF,EAAAgG,aAAgD,CAC1DH,IAAK,GAFQ7F,EAAgBgF,EAAAhS,YAAA,CADpCC,KACoB+M,U,kCCnBrB,IAAIsG,EAAO,EAAQ,QACfC,EAAS,EAAQ,QACjBC,EAA+B,EAAQ,QACvCC,EAAiB,EAAQ,QAAuClL,EAEpEH,EAAOC,QAAU,SAAUqL,GACzB,IAAIC,EAASL,EAAKK,SAAWL,EAAKK,OAAS,IACtCJ,EAAOI,EAAQD,IAAOD,EAAeE,EAAQD,EAAM,CACtDvjB,MAAOqjB,EAA6BjL,EAAEmL,O,mHC2CnC,MAAME,EAAqB53B,IAC9B,MAAMuK,EAAUC,2BAAiB,QAASxK,EAAMmK,iBAAmBkX,oBAAkBwW,oBAC/EC,EAA8B1nB,iCAAuBpQ,EAAMmK,iBAAmBI,GACpFA,EAAQ0F,cAAcC,MAAQmR,oBAAkB0W,mBAChD,MAAMC,EAA8B5nB,iCAAuBpQ,EAAMmK,iBAAmBI,GACpFA,EAAQ0F,cAAcC,MAAQmR,oBAAkB4W,kBAChD,MAAMC,EAAgC9nB,iCAAuBpQ,EAAMmK,iBAAmBI,GACtF,MAAO,CACH4P,MAAO,CACH9K,IAAKkO,QACLjc,UAAW,0BACXkc,OAAQxd,EAAMsM,SACd6rB,gBAAiB,aACjB7vB,OAAQtI,EAAMsI,OACd8vB,eAAgBp4B,EAAMq4B,WAE1B1S,YAAa,CAAEtW,IAAKoO,cAAanc,UAAW,iCAAkCkc,OAAQxd,EAAMsM,UAC5Fga,YAAa,CAAEjX,IAAKipB,cAAah3B,UAAW,kCAC5CskB,UAAW,CAAEvW,IAAKkpB,YAAWj3B,UAAW,gCACxCklB,aACI1mB,IAAAygB,cAACnR,SAAM7M,OAAAC,OAAA,CAAClB,UAAU,2BAA2BiO,QAASvP,EAAMsM,UAAcwrB,GACrE93B,EAAMM,UAAUk4B,wBAGzBjS,aACIzmB,IAAAygB,cAACnR,SAAM7M,OAAAC,OAAA,CACHlB,UAAU,2BACViO,QAASvP,EAAMy4B,SACf9U,UAAW3jB,EAAM04B,SACbV,GAEHh4B,EAAMM,UAAUq4B,sBAGzBh3B,QAAS7B,IAAAygB,cAAA,KAAGjf,UAAU,6BAA6BtB,EAAMM,UAAUs4B,qBACnEC,MAAO74B,EAAM64B,MACbC,aAAc,CAAEx3B,UAAW,mCAC3By3B,SACIj5B,IAAAygB,cAAA,QAAAhe,OAAAC,OAAA,CACIlB,UAAU,8BACN42B,EAA6B,CACjC5gB,KAAK,WACLohB,QAAS14B,EAAM04B,QAAO,eACR14B,EAAM04B,QACpBxH,SAAUlxB,EAAMg5B,WAGxBC,UAAWn5B,IAAAygB,cAAA,KAAGjf,UAAU,2BAA2BtB,EAAMM,UAAU44B,wB,ywBClE3E,MAAMC,UAAqBr5B,YAKvBC,YAAmBC,GACfC,MAAMD,GACNE,KAAKk5B,QAAUl5B,KAAKk5B,QAAQlvB,KAAKhK,MACjCA,KAAKm5B,QAAUn5B,KAAKm5B,QAAQnvB,KAAKhK,MACjCA,KAAKo5B,iBAAmBp5B,KAAKo5B,iBAAiBpvB,KAAKhK,MACnDA,KAAKq5B,UAAYz5B,cACjBI,KAAKiK,iBAAmBC,6BACpBlK,KAAKF,MAAMQ,QAAQC,QAAQ4J,kBAC3BnK,KAAKF,MAAMsK,aACXpK,KAAKF,MAAMgB,WAEf,IAAIssB,EAASptB,KAAKF,MAAMQ,QAAQC,QAAQ6P,IAAIC,WAAW+c,OACnDkM,GAAY,EAChB,GAAIlM,EAAQ,CACRA,EAASA,EAAOmM,UAAU,GAC1B,MAAMC,EAAOpM,EAAOqM,MAAM,KAC1B,IAAK,MAAMC,KAAOF,EAAM,CACpB,MAAMG,EAAWD,EAAID,MAAM,KAE3B,GADAH,EAA4B,mBAAhBK,EAAS,IAA2C,SAAhBA,EAAS,GACrDL,EACA,OAKZt5B,KAAK+E,MAAQ,CACT60B,YAAaN,EACbd,SAAS,EACT3X,SAAS,GAIVe,sBAAsBC,EAAkDC,GAC3E,OAAI9hB,KAAK+E,QAAU+c,GAAa9hB,KAAKF,MAAM0E,OAASqd,EAAUrd,KAM3DtE,SACH,MACIC,QAAQ,UAAEiB,EAAS,WAAEy4B,GAAY,UACjCz5B,EACAw1B,OAAO,aAAEkE,GACTt1B,MAAM,YAAEge,GACRliB,SACIC,SACIogB,MAAM,gBAAEC,MAGhB5gB,KAAKF,MACHwiB,EAAgBC,IAAU,mBAAoBnhB,GAE9CC,EAASC,IAAA,GACRtB,KAAKF,OAAK,IACbsB,UAAWkhB,EACX2W,aAAc,CACVt3B,YAAa3B,KAAKF,MAClBsB,UAAWkhB,GAEf5M,QAAgC,YAAvB8M,EAAY5F,OACrByI,aAA4B,IAAfwU,GACTj6B,gBAACsP,SAAM,CAAC9N,UAAU,2BAA2BiO,QAASrP,KAAKk5B,QAASa,SAAU/5B,KAAKq5B,WAC9Ej5B,EAAU45B,4BAGnB/f,MACI2G,GACA4B,EAAY3I,aACsB7U,IAAlCwd,EAAY3I,OAAOogB,YACnBvC,YAAkB,CACdt3B,UAASkB,EAAA,GAAOlB,GAChB+3B,UAAWn4B,KAAKq5B,UAChBb,QAASx4B,KAAK+E,MAAMyzB,QACpBpwB,OAAQpI,KAAK+E,MAAM60B,YACnBjB,MAAOmB,EACP7vB,iBAAkBjK,KAAKiK,iBACvBmC,SAAUpM,KAAKk5B,QACfX,SAAUv4B,KAAKm5B,QACfL,QAAS94B,KAAKo5B,qBAI1B,OAAOp5B,KAAKF,MAAMoC,WAAWb,GAGzB63B,UACJl5B,KAAKoE,SAAS,CAAEw1B,aAAc55B,KAAK+E,MAAM60B,YAAapB,SAAS,IAG3DW,UACJ,GAAIn5B,KAAKF,MAAMQ,QAAQC,QAAQogB,KAAKC,kBAAoB5gB,KAAK+E,MAAM8b,QAAS,CACxE7gB,KAAKoE,SAAS,CAAEyc,SAAS,IACzB,MAAM1D,EAAQ,IAAI2D,oBAAkB9gB,KAAKF,MAAMQ,QAAQC,QAAQsG,aAE/Dka,uBAAa5D,EAAOnd,KAAKF,MAAMQ,QAAQqG,eAClCqa,KAAKkZ,IACEl6B,KAAKF,MAAMK,OAAOg6B,kBAClB7qB,OAAOC,SAASjN,OAAO0pB,YAAW,UAAWhsB,KAAKF,MAAMQ,QAAQqG,gBAAkB,IAElFyzB,8BAAoB,CAAEnd,cAAejd,KAAKF,MAAMQ,QAAQqG,eAAiBuzB,EAAKD,YAAc,IACvFjZ,KAAKqZ,IACFr6B,KAAKF,MAAMQ,QAAQqG,cAAc2zB,OAC7B,IAAIC,sBAAoBv6B,KAAKF,MAAMQ,QAAQC,QAAQsG,aACnDwzB,KAGPpZ,MAAOpgB,IACJb,KAAKF,MAAMQ,QAAQqG,cAAc2zB,OAC7B,IAAIC,sBAAoBv6B,KAAKF,MAAMQ,QAAQC,QAAQsG,aACnDqzB,GAEJl6B,KAAKF,MAAMgB,UAAUD,MAAMA,EAAM0B,SACjCvC,KAAKF,MAAMgB,UAAUogB,MAAM,oCAI1CD,MAAOpgB,IACJb,KAAKoE,SAAS,CAAEyc,SAAS,IACzB7gB,KAAKF,MAAMgB,UAAUD,MAAMA,EAAM0B,SACjCvC,KAAKF,MAAMgB,UAAUogB,MAAM,mCAKnCkY,mBACJp5B,KAAKoE,SAAS,CAAEo0B,SAAUx4B,KAAK+E,MAAMyzB,WAI9BS,a,+GCtIf,MAAMuB,EAAqBA,CAACte,EAA+Bue,IAA6B,KAAK,IAAAC,EACnE,QAAtBA,EAAAxe,EAASye,qBAAa,IAAAD,GAAtBA,EAAwBtK,UAAUwK,aAAaH,IAQ7CI,EAAwB3e,GAAkC,KAAK,IAAA4e,EAC3C,QAAtBA,EAAA5e,EAASye,qBAAa,IAAAG,GAAtBA,EAAwB1K,UAAUwK,aAAY,IA0H5CG,EAAiBA,CACnB7e,EACA9b,EACA6vB,EACAhmB,EACA+wB,EACAC,IAEI/e,EAASrb,QAAUT,EAAU86B,uBAEzBt7B,gBAAC0L,OAAI,CAAClK,UAAU,0BACX8a,EAASkT,cACTlT,EAASif,QAKlBH,EAEIp7B,gBAAC0L,OAAI,CAAClK,UAAU,sCAnEEg6B,EAC1Blf,EACA9b,EACA6vB,EACAhmB,EACAgxB,KACoB,IAAAI,EAEpB,IAAKnf,EAASye,gBAAkB1K,IAA8B,QAAboL,EAAAnf,EAAS1X,YAAI,IAAA62B,OAAA,EAAbA,EAAeC,SAASC,gBAAiBN,EACtF,OAAO,KAGX,MAAM,uBAAEO,EAAsB,uBAAEC,EAAsB,oBAAEC,GAAwBt7B,EAE1Eq6B,EAAkBve,EAASye,cAAcF,gBAEzCpwB,EAAUC,2BAAiB,QAASL,EAAmBkX,oBAAkBwa,eACzEC,EAAyB1rB,iCAAuBjG,EAAmBI,GAEzE,OACIzK,2BAAA,KACK66B,EACG76B,gBAACsP,SAAM,CAAC1M,KAAK,OAAOpB,UAAU,qCAAqCiO,QAASwrB,EAAqB3e,IAC5Fsf,GAEL,KACJ57B,gBAACsP,SAAM7M,OAAAC,OAAA,CACHE,KAAK,OACLpB,UAAU,sCACNw6B,EAAsB,CAC1BvsB,QAASmrB,EAAmBte,EAAUue,KAErCA,EAAkBgB,EAAyBC,KAoC3CN,CAAsBlf,EAAU9b,EAAW6vB,EAAehmB,EAAkBgxB,GAC5E/e,EAASiT,mBACTjT,EAASkT,cACTlT,EAASif,QAKlBjf,EAASiT,mBAELvvB,gBAAC0L,OAAI,CAAClK,UAAU,gCACX8a,EAASiT,mBACTjT,EAASkT,cACTlT,EAASif,QAMlBv7B,gBAAC0L,OAAI,CAAClK,UAAU,0BACX8a,EAASkT,cACTlT,EAASif,QAehBU,EAA0BA,CAC5BC,EACA17B,EACA6vB,EACAhmB,EACA+wB,EACAC,IAEOa,EAAUn4B,IAAI,CAACuY,EAAU7O,KAC5B,MAAM0uB,EAAY1uB,EAClB,OACIzN,gBAAA,OAAKwB,UAAU,sBAAsB8K,IAAK6vB,GACrC7f,EAASof,SACV17B,gBAAA,QAAMwB,UAAU,mCACX45B,EACK,KArLDgB,EACrB9f,EACA9b,EACA6vB,EACAhmB,EACAgxB,KACoB,IAAAgB,EAEpB,IAAK/f,EAASye,gBAAkB1K,IAA8B,QAAbgM,EAAA/f,EAAS1X,YAAI,IAAAy3B,OAAA,EAAbA,EAAeX,SAASC,gBAAiBN,EACtF,OAAO,KAGX,MAAM,uBACFQ,EAAsB,yBACtBS,EAAwB,oBACxBR,EAAmB,8BACnBS,EAA6B,uBAC7BX,GACAp7B,EAEEq6B,EAAkBve,EAASye,cAAcF,gBAEzCpwB,EAAUC,2BAAiB,QAASL,EAAmBkX,oBAAkBwa,eACzEC,EAAyB1rB,iCAAuBjG,EAAmBI,GAEzE,OACIzK,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK4Z,EAASye,cAAclL,gBAC7B7vB,gBAAA,OAAKwB,UAAU,+BACVq5B,EACG76B,gBAAA,QAAMwB,UAAU,WAAW+6B,GAE3Bv8B,gBAAA,QAAMwB,UAAU,QAAQ86B,IAG/BzB,GACG76B,gBAAA,OAAKwB,UAAU,oCACXxB,gBAAA,QAAMwB,UAAU,0CAA0C8a,EAASye,cAAcyB,aACjFx8B,gBAACsP,SAAM,CAAC1M,KAAK,OAAOpB,UAAU,mCAAmCiO,QAASwrB,EAAqB3e,IAC1Fsf,IAIb57B,gBAACsP,SAAM7M,OAAAC,OAAA,CACHlB,UAAU,4BACNw6B,EAAsB,CAC1BvsB,QAASmrB,EAAmBte,EAAUue,KAErCA,EAAkBgB,EAAyBC,KAuIlCM,CAAiB9f,EAAU9b,EAAW6vB,EAAehmB,EAAkBgxB,GAC5EF,EAAe7e,EAAU9b,EAAW6vB,EAAehmB,EAAkB+wB,EAAkBC,OAqBtGoB,EAAkBA,CACpBv8B,EACAg8B,EACA17B,EACA6vB,EACAqM,EACAC,EACAC,EACAvyB,EACA+wB,EACAC,IAEIsB,EACO38B,2BAAA,KAAG28B,GAKVT,EACOh8B,EAAM28B,sBACTZ,EAAwBC,EAAW17B,EAAW6vB,EAAehmB,EAAkB+wB,EAAkBC,GAEjGr7B,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKxC,EAAM48B,kBACXb,EAAwBC,EAAW17B,EAAW6vB,EAAehmB,EAAkB+wB,EAAkBC,IAKvGuB,EACH58B,gBAAA,OAAKwB,UAAU,wBACXxB,gBAAA,OAAKwB,UAAU,iBAAiBtB,EAAM81B,MAAM+G,YAGhD/8B,2BAAA,KAAG08B,GAyCLM,EAA6BA,CAC/B1gB,EACA9b,EACAiS,EACA4oB,KACA,IAAA4B,EACA,MAAMpC,EAAwC,QAAzBoC,EAAG3gB,EAASye,qBAAa,IAAAkC,OAAA,EAAtBA,EAAwBpC,iBAC1C,WAAEqC,EAAU,aAAEC,EAAY,kBAAEC,EAAiB,uBAAEC,GAA2B78B,EAChF,IAAI88B,EASJ,OAPAA,EAAazC,EAAkBqC,EAAaC,EACxC7gB,EAAS1X,MAAQ0X,EAAS1X,KAAK82B,SAAS6B,cACxCD,EAAaD,EACLG,mBAAiBC,cAAcpC,KACvCiC,EAAahhB,EAAS1X,MAAQ0X,EAAS1X,KAAK82B,SAASC,eAAiBN,EAAwB+B,EAAoBE,GAIlHt9B,2BAAA,KACIA,gBAAA,OAAKwB,UAAU,+CACXxB,gBAAA,KAAGwB,UAAW,+CAA+C87B,EAAWI,cAAc7mB,QAAQ,IAAK,cACnG7W,gBAAA,KAAGwB,UAAW,+CAA+C87B,EAAWI,cAAc7mB,QAAQ,IAAK,MAASymB,GAnD1FK,EAACrhB,EAA+B9b,EAA2BiS,KAAiB,IAAAmrB,EAAAC,EAAAC,EAC1G,MAAMjD,EAAwC,QAAzB+C,EAAGthB,EAASye,qBAAa,IAAA6C,OAAA,EAAtBA,EAAwB/C,iBAC1C,UAAEkD,EAAS,WAAEC,GAAex9B,EAG5By9B,EAAa,IAAIxrB,KADRA,EADc,EACSurB,EAAaD,KAEnD,OACI/9B,2BAAA,KACIA,gBAAC0L,OAAI,CAAClK,UAAU,qDACXq5B,EACG76B,gBAAA,KAAGwB,UAAU,wDACc,QADwCq8B,EAC9DvhB,EAASye,qBAAa,IAAA8C,OAAA,EAAtBA,EAAwBK,eACxB,KACsB,QADlBJ,EACJxhB,EAASye,qBAAa,IAAA+C,OAAA,EAAtBA,EAAwBtB,aAE7B,KACJx8B,gBAAA,KAAGwB,UAAU,wDAAwDy8B,MAoCpEN,CAA0BrhB,EAAU9b,EAAWiS,MA+OjD0rB,UA7CuDj+B,IAAmD,IAAAk+B,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACrH,MACMC,EACF1+B,gBAAA,MAAIwB,UAAU,qBACTtB,EAAMM,UAAUm+B,UACjB3+B,gBAAA,QAAMwB,UAAU,iCACX,KAAKqZ,OAAiB,QAAXujB,EAACl+B,EAAM8Z,YAAI,IAAAokB,OAAA,EAAVA,EAAYQ,qBALH,KAKkC,QAAVP,EAAAn+B,EAAM8Z,YAAI,IAAAqkB,OAAA,EAAVA,EAAYO,kBAAyC,QAAU,YAIzH,OACI5+B,gBAAA,MAAAyC,OAAAC,OAAA,CAAKlB,UAAWtB,EAAMsB,UAAWwD,GAAI9E,EAAM8E,IAAQ9E,EAAM2+B,uBAAuB3+B,IAC3EA,EAAM4+B,qCACNJ,EACD1+B,gBAAA,OAAKwB,UAAU,4BAAuD,QAA7B88B,EAAEp+B,EAAM6+B,6BAAqB,IAAAT,OAAA,EAA3BA,EAA6BU,YA5B1C9+B,IAElCF,gBAAC0L,OAAI,CAAClK,UAAU,sCACXtB,EAAM++B,2BACN/+B,EAAMg/B,uBAyBNC,CAAiCj/B,KACtB,QAAXq+B,EAACr+B,EAAM8Z,YAAI,IAAAukB,GAAVA,EAAYa,iBAAkBl/B,EAAMm/B,mBApExBC,EAoE6Dp/B,EAAMm/B,iBAlErFr/B,2BAAA,KACIA,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK48B,EAAWC,yBAChBD,EAAWE,iBACZx/B,gBAAC0L,OAAI,CAAClK,UAAU,oCAAoC89B,EAAWG,qBAC9DH,EAAWI,mBA+DL,QAAVlB,EAAAt+B,EAAM8Z,YAAI,IAAAwkB,GAAVA,EAAYY,gBAAkBl/B,EAAM28B,sBAzLpB8C,EAACz/B,EAAiDM,IACvEN,EAAM0/B,gBAAkBh8B,kBAAgBC,YAAY3D,EAAM0/B,gBAEtD5/B,gBAAA,OAAKwB,UAAU,wBACVtB,EAAM0/B,eAAe77B,IAAI87B,IAAY,IAAAC,EAAAC,EAClC,OACI//B,gBAAA,OAAKsM,IAAKuzB,EAAU,GAAGG,WAAYx+B,UAAU,+BACxCw7B,EACG6C,EAAU,GACVr/B,EAxBZ8b,KAChB,IAAI2jB,EAAY,EAKhB,OAHAA,EAAY3jB,EAAS4jB,OAAO,CAACztB,EAAOzO,KAAQ,IAAAm8B,EAAAC,EACxC,OAAO3tB,GAAqC,QAAhC0tB,EAAa,QAAbC,EAAIp8B,EAAKY,YAAI,IAAAw7B,OAAA,EAATA,EAAW1E,SAAS3e,gBAAQ,IAAAojB,IAFvB,OAIlBF,GAmBqBI,CAAWR,GACuC,QAD7BC,EACrB5/B,EAAMQ,QAAQqG,cAAcC,eAAes5B,eAAO,IAAAR,OAAA,EAAlDA,EAAoDS,uBAEvD9D,EACGv8B,EACA2/B,EACA3/B,EAAMM,UACNN,EAAMmwB,cACNnwB,EAAMw8B,iBACNx8B,EAAMy8B,kBACNz8B,EAAMsgC,eACNtgC,EAAMmK,iBACNnK,EAAM28B,sBAC4C,QADvBkD,EAC3B7/B,EAAMQ,QAAQqG,cAAcC,eAAes5B,eAAO,IAAAP,OAAA,EAAlDA,EAAoDQ,2BAQzErgC,EAAMsgC,eACTxgC,gBAAA,OAAKwB,UAAU,wBACXxB,gBAAA,OAAKwB,UAAU,iBAAiBtB,EAAM81B,MAAM+G,YAGhD/8B,2BAAA,KAAGE,EAAMw8B,kBAsJCiD,CAAqBz/B,EAAOA,EAAMM,WAClCi8B,EACIv8B,EACAA,EAAM2/B,UACN3/B,EAAMM,UACNN,EAAMmwB,cACNnwB,EAAMw8B,iBACNx8B,EAAMy8B,kBACNz8B,EAAMsgC,gBAEftgC,EAAMugC,qBACHzgC,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKxC,EAAMwgC,qBACZ1gC,gBAAC0L,OAAI,CAAClK,UAAU,4BACXtB,EAAMugC,oBACI,QAAVhC,EAAAv+B,EAAM8Z,YAAI,IAAAykB,GAAVA,EAAYW,eAxIHuB,EAC9BC,EACAC,EACA3gC,IAEK0gC,EAKD5gC,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKm+B,GACLD,EAAoBE,SACpBF,EAAoBG,SACpBH,EAAoBI,QACpBJ,EAAoB5B,aARzB9+B,EAAMQ,QAAQQ,UAAUD,MAAM,uDACvB,MAkIe0/B,CAA0BzgC,EAAM+gC,wBAAyB/gC,EAAMghC,kBAAmBhhC,GA/GhFihC,EAC5BC,EACAP,EACA3gC,IAEKkhC,EAKDphC,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKm+B,GACLO,EAAkBntB,SAClBmtB,EAAkBC,eAAiBD,EAAkBC,eAAiB,KACtED,EAAkBptB,SAClBotB,EAAkBE,YAClBF,EAAkB1Y,IAClB0Y,EAAkBpC,aAVvB9+B,EAAMQ,QAAQQ,UAAUD,MAAM,qDACvB,MAyGekgC,CAAwBjhC,EAAM6+B,sBAAuB7+B,EAAMghC,kBAAmBhhC,IA7JlFqhC,EA8JgBrhC,EAAMshC,qBA7JzB59B,kBAAgBC,YAAY09B,EAAU1lB,QAIrD7b,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK6+B,EAAUE,SACfF,EAAUpiB,OACVoiB,EAAU1lB,QALR,MAsFqB3b,KAAkD,IAAAwhC,EAClF,OACI1hC,gBAAC0L,OAAI,CAAClK,UAAU,+BACD,QAAVkgC,EAAAxhC,EAAM8Z,YAAI,IAAA0nB,GAAVA,EAAYtC,eAAiB,KAAOl/B,EAAMyhC,UAC3C3hC,gBAAC0L,OAAI,CAAClK,UAAU,uCACXtB,EAAM++B,2BACN/+B,EAAMg/B,sBACNh/B,EAAM0hC,uBAAyBh+B,kBAAgBC,YAAY3D,EAAM0hC,uBAC9D5hC,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKxC,EAAM2hC,+BAAgC3hC,EAAM0hC,uBACtD,MAEP1hC,EAAM4hC,+BA6DEC,CAA2B7hC,IAGnCA,EAAMmwB,eAnKOkR,MAuEAjC,I,+ECzdX0C,UAfoD9hC,IAC/D,MAAM,uBAAE+Y,EAAsB,WAAEC,EAAU,QAAEG,EAAO,aAAEE,EAAY,KAAEhX,EAAI,MAAEyV,GAAU9X,EAEnF,OACIF,gBAACsL,SAAM7I,OAAAC,OAAA,GAAKuW,GACRjZ,gBAACiiC,QAAK,CAACzgC,UAAW0X,EAAW1X,UAAW2X,MAAOD,EAAWC,MAAOC,KAAMF,EAAWE,MAC9EpZ,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK2W,GACL9W,EACAyV,GAEJuB,M,8xBC+BV,MAAM2oB,UAAgCliC,IAAMmiC,cAwC/CliC,YAAmBC,GACfC,MAAMD,GAsGO,KAAAkiC,wBAAsC,KAAK,IAAAC,EACxD,MAAMr+B,EAAO,IAAIs+B,IAAsBliC,KAAKF,MAAMyc,QAAQE,SAAUzc,KAAKF,MAAMqiC,WAC/EC,IAAuBC,SAASriC,KAAKF,MAAMQ,QAAQC,QAA2C,QAApC0hC,EAAEjiC,KAAKF,MAAM0E,KAAKgoB,0BAAkB,IAAAyV,OAAA,EAAlCA,EAAoCpoB,QAAQyoB,QAAQ1+B,IAMnG,KAAA2+B,6BAA2C,KAAK,IAAAC,EAC7DJ,IAAuBC,SAASriC,KAAKF,MAAMQ,QAAQC,QAA2C,QAApCiiC,EAAExiC,KAAKF,MAAM0E,KAAKgoB,0BAAkB,IAAAgW,OAAA,EAAlCA,EAAoC3oB,QAAQ4oB,eACpGziC,KAAK+E,MAAM29B,mBAeF,KAAAC,aAAoD,KAAK,IAAAC,EACtE,MAAMF,EAAmBR,IAAsBW,UAAU7iC,KAAKF,MAAMyc,QAAQE,SAAUzc,KAAKF,MAAMqiC,WAC3F1oB,EAAWzZ,KAAK8iC,sCACtB,MAAO,CACHJ,mBACAK,sCAAuCX,IAAuBC,SAC1DriC,KAAKF,MAAMQ,QAAQC,QACe,QADRqiC,EAC1B5iC,KAAKF,MAAM0E,KAAKgoB,0BAAkB,IAAAoW,OAAA,EAAlCA,EAAoC/oB,QACtCmpB,YAAYN,GACdO,qBAAsBxpB,EAASrX,SAtInCpC,KAAKkjC,WAAa,+BAClBljC,KAAKmjC,YAAc,GAAGnjC,KAAKkjC,cAAcljC,KAAKF,MAAM8E,MAAMw+B,SAAOC,KAAKC,iBAEtEtjC,KAAK+E,MAAQ/E,KAAK2iC,eAElB3iC,KAAKujC,mBAAqBzB,EAAwB0B,0BAClD1B,EAAwB2B,gCAAgCzjC,KAAKF,OAxCzD,uCAAuCA,GAK3C,OAJKgiC,EAAwB0B,2BAA6BhgC,kBAAgBC,YAAY3D,EAAM81B,MAAM8N,4BAC9F5B,EAAwB0B,0BAA4B1jC,EAAM81B,MAAM8N,yBAAyB,IAGtF5B,EAAwB0B,0BAG3B,sCACJpiC,EACA+G,EACAmM,EACAqvB,GAEA,MAAMC,EAAaC,mBAAiBC,kBAAkBH,GACtD,IAAIrrB,EASJ,OARInQ,IACAmQ,EACI1Y,IAAAygB,cAAAzgB,IAAAmkC,SAAA,KACInkC,IAAAygB,cAAA,OAAKjf,UAAcA,EAAH,WAChBxB,IAAAygB,cAAA,OAAKjf,UAAcA,EAAH,UAAuB+G,KAK/CvI,IAAAygB,cAACnR,SAAM,CAAC9N,UAAWA,EAAWkT,MAAOA,EAAOjF,QAASs0B,EAAgBlgB,SAAUmgB,GAC1EtrB,GAiBN/N,oBAAiB,IAAAy5B,EACpB5B,IAAuBC,SAASriC,KAAKF,MAAMQ,QAAQC,QAA2C,QAApCyjC,EAAEhkC,KAAKF,MAAM0E,KAAKgoB,0BAAkB,IAAAwX,OAAA,EAAlCA,EAAoCnqB,QAAQoqB,kBAAkBC,UACtH,CACIC,WAAYnkC,KAAKmjC,YAKjBiB,QAASA,KACLpkC,KAAKoE,SAASpE,KAAK2iC,mBAM5B0B,wBAAwBC,GACvBA,EAAc/nB,QAAQE,WAAazc,KAAKF,MAAMyc,QAAQE,UAAY6nB,EAAcnC,YAAcniC,KAAKF,MAAMqiC,WACzGniC,KAAKoE,SAASpE,KAAK2iC,gBAIpB93B,uBAAoB,IAAA05B,EACvBnC,IAAuBC,SACnBriC,KAAKF,MAAMQ,QAAQC,QACe,QADRgkC,EAC1BvkC,KAAKF,MAAM0E,KAAKgoB,0BAAkB,IAAA+X,OAAA,EAAlCA,EAAoC1qB,QACtCoqB,kBAAkBO,YAAYxkC,KAAKmjC,aAGlCjjC,SAEH,IADuBF,KAAKF,MAAMQ,QAAQC,QAAQC,QAAQH,iBAEtD,OAAO,KAGX,MAAMgB,EAASC,IAAA,GACRtB,KAAKF,OAAK,IACb6B,YAAa,CACTA,YAAa3B,KAAKF,MAClBsB,UAAWpB,KAAKkjC,cAIpBljC,KAAKujC,oBACLliC,EAAUqiC,yBAA2B5B,EAAwB0B,2BAGjE,MAAMiB,EAAkBzkC,KAAKF,MAAMK,OAAOukC,kBAAuB1kC,KAAKkjC,WAAR,WAAkCljC,KAAKkjC,WAAR,SAE7F,IAAKljC,KAAK+E,MAAMg+B,qCAAsC,CAClD,MAAM56B,EAAanI,KAAKF,MAAMK,OAAOukC,kBAAoB1kC,KAAKF,MAAMM,UAAUukC,oCAAiC3/B,EAO/G,OANA3D,EAAUujC,wBAA0B9C,EAAwB+C,+BACxD1jC,IAAcsjC,EAAH,aAAgCA,GAC3Ct8B,EACAnI,KAAKF,MAAMM,UAAUukC,+BACrB3kC,KAAKuiC,8BAEFviC,KAAKF,MAAMoC,WAAWb,GAGjC,MAAMyjC,EAAgB9kC,KAAK+kC,oBAC3B,IAAKlB,mBAAiBC,kBAAkBgB,IAAkBA,GAAiB9kC,KAAK+E,MAAMk+B,qBAAsB,CACxG,MAAM96B,EAAanI,KAAKF,MAAMK,OAAOukC,kBAAoB1kC,KAAKF,MAAMM,UAAU4kC,2CAAwChgC,EAMtH,OALA3D,EAAUujC,wBAA0B9C,EAAwB+C,+BACxDJ,EACAt8B,EACAnI,KAAKF,MAAMM,UAAU4kC,uCAElBhlC,KAAKF,MAAMoC,WAAWb,GAGjC,MAAM8G,EAAanI,KAAKF,MAAMK,OAAOukC,kBAAoB1kC,KAAKF,MAAMM,UAAU6kC,+BAA4BjgC,EAO1G,OANA3D,EAAUujC,wBAA0B9C,EAAwB+C,+BACxDJ,EACAt8B,EACAnI,KAAKF,MAAMM,UAAU6kC,0BACrBjlC,KAAKgiC,yBAEFhiC,KAAKF,MAAMoC,WAAWb,GAGzB0jC,oBACJ,MAAMG,EAAWC,mBAAS,CAAEC,QAASC,cAAYC,QAAShlC,QAASN,KAAKF,MAAMQ,QAAQC,UACtF,MAAiB,OAAb2kC,GAAkC,OAAbA,EACdllC,KAAKF,MAAMQ,QAAQuiB,IAAI1iB,OAAOolC,qCAElCvlC,KAAKF,MAAMQ,QAAQuiB,IAAI1iB,OAAOqlC,sCAoBjC1C,sCAAmC,IAAA2C,EAAAC,EACvC,MAAMlmB,EAAQ4iB,IAAuBC,SAASriC,KAAKF,MAAMQ,QAAQC,QAA2C,QAApCklC,EAAEzlC,KAAKF,MAAM0E,KAAKgoB,0BAAkB,IAAAiZ,OAAA,EAAlCA,EAAoC5rB,QAAQ2F,MAChH2iB,EAAYwD,YAAa3lC,KAAKF,MAAMQ,QAAQC,SAElD,OADoF,QAA5DmlC,EAAGlmB,aAAK,EAALA,EAAOmU,OAAOpX,GAAWA,EAAQ4lB,YAAcA,UAAU,IAAAuD,IAAI,IAsBjF5D,a,uwBChMT,MAAO8D,UAAkBhmC,gBAG3BC,YAAmBC,GACfC,MAAMD,GAyJH,KAAA+lC,iBAAoBngC,IACvB1F,KAAKF,MAAMK,OAAOsB,QAASU,KAAOuD,EAAMjF,OAAOwT,OAO5C,KAAA6xB,sBAAyBpgC,IAC5B1F,KAAKF,MAAMK,OAAOmlB,UAAY5f,EAAMjF,OAAOwT,OAjK3C,MACI3T,SACIC,SACIogB,MAAM,aAAEolB,MAGhBjmC,EACJE,KAAKgmC,sBAAwBpmC,cAE7BI,KAAK+E,MAAQ,CACTkhC,qBAAqB,EACrBC,SAAS,EACTC,WAAYJ,GAAgB,IAEhC/lC,KAAKomC,oBAAsBpmC,KAAKomC,oBAAoBp8B,KAAKhK,MAGrDomC,sBACJpmC,KAAKoE,SAAS,CAAE6hC,qBAAqB,IAGlC/lC,SAAM,IAAAmmC,EACT,MAAM,QAAE5kC,EAAO,UAAE6jB,GAActlB,KAAKF,MAAMK,OAIpCmmC,EAAcC,UAChB,MACIjmC,SAAS,cAAEqG,GACXxG,QAAQ,eAAEqmC,EAAc,SAAEC,IAC1BzmC,KAAKF,OACH,WAAEqmC,GAAenmC,KAAK+E,MAC5B,GAAIohC,EACA,IACI,MAAMO,QAAiBC,YACnB,CAAE1pB,cAAetW,GACjBw/B,EACAK,WACAC,GAEJzmC,KAAKoE,SAAS,CACV6hC,qBAAqB,EACrBC,SAAUQ,EAASE,SAEzB,MAAO7lC,GACLf,KAAKoE,SAAS,CACV6hC,qBAAqB,EACrBC,SAAS,MAMnBW,EAAkCA,KACpC,MAAM,oBAAEZ,EAAmB,QAAEC,GAAYlmC,KAAK+E,OAE1C5E,QAAQ,eAAEqmC,GACVpmC,WAAW,2BAAE0mC,EAA0B,yBAAEC,EAAwB,wBAAEC,IACnEhnC,KAAKF,MACT,OAAKmmC,EAGDC,EACOtmC,gBAAA,QAAMwB,UAAU,8BAA8B4lC,GAC9CR,EACA5mC,gBAAA,QAAMwB,UAAU,aAAa2lC,GAE7BnnC,gBAAA,QAAMwB,UAAU,aAAa0lC,GAP7B,MAyBTG,EAAqB3hB,GACvB1lB,gBAACiY,IAA0B,CACvB1V,KAAMmjB,EACNlkB,UAAU,8BACV0W,UAAW,CAAEoB,OAAQlZ,KAAK8lC,sBAAuBl/B,eAAgB5G,KAAKF,MAAMQ,QAAQC,WAItF2mC,EAAmBzlC,GACrB7B,gBAACiY,IAAa,CACVzW,UAAU,iCACV+N,IAAgB,QAAbk3B,EAAE5kC,EAAQ0N,WAAG,IAAAk3B,IAAI,KACpBlkC,KAAMV,EAAQU,KACd2V,UAAW,CAAEoB,OAAQlZ,KAAK6lC,iBAAkBj/B,eAAgB5G,KAAKF,MAAMQ,QAAQC,WAGjFc,EAASC,IAAA,GACRtB,KAAKF,OAAK,IACbqnC,WAAYnnC,KAAK6lC,iBACjBuB,gBAAiBd,EACjBpC,UAAW,CACPviC,YAAa3B,KAAKF,MAClBsB,UAnFgB,gBAqFpBimC,mBAAoB,CAChBjmC,UAAW,yBAEfK,QAASylC,EACT/kC,KAAM8kC,EACNK,cAAe,CACXlmC,UAAW,8BACX+N,IAAK,OACL,aAAcnP,KAAKF,MAAMM,UAAUmnC,uBACnCve,KAAM,gBACNxmB,KAAM,OACNglC,aAAc,MACdjP,SAAU+N,GAEdmB,WAAY,CACRrmC,UAAW,qCACX+N,IAAK,QACLtM,IAAK7C,KAAKgmC,sBACV5uB,KAAM,QACN,aAAcpX,KAAKF,MAAMM,UAAUsnC,4BACnCC,YAAa3nC,KAAKF,MAAMM,UAAUwnC,8BAClC3zB,MAAOjU,KAAK+E,MAAMohC,WAClBnV,SAlDwB0D,IAC5B10B,KAAKoE,SAAS,CAAE+hC,WAAYzR,EAAEj0B,OAAOwT,UAmDrCoS,aAAc,CACVjlB,UAAW,sCACX+N,IAAKD,SACL,aAAclP,KAAKF,MAAMM,UAAUynC,6BACnCzwB,KAAM,SACN9C,MAAOtU,KAAKF,MAAMM,UAAU0nC,sBAEhCC,sBAAuB/nC,KAAKF,MAAMM,UAAU0nC,qBAC5CE,gBAtEkCC,MAClC,MAAM,oBAAEhC,EAAmB,QAAEC,GAAYlmC,KAAK+E,MAE9C,OACInF,gBAACiiC,IAAK,CAAC9oB,MAAOmtB,EAAU,QAAU,UAAW99B,OAAQ69B,EAAqB3oB,OAAQtd,KAAKomC,qBAClFS,MAiEQoB,GACjB9B,WAAYnmC,KAAK+E,MAAMohC,aAG3B,OAAOnmC,KAAKF,MAAMoC,WAAWb,IAoBtBukC,a,+EC7Lf,MAsDMsC,EAA0Cv1B,IAAwC,IAAvC,MAAEsH,EAAK,UAAEyL,EAAS,KAAEyiB,EAAI,QAAE5lC,GAASoQ,EAChF,OACI/S,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK2X,GACNra,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKojB,GACLyiB,EACA5lC,KAKX6lC,EAAwCh1B,IAAkE,IAAjE,GAAExO,EAAE,UAAExD,EAAS,KAAEe,EAAI,UAAEwV,EAAS,iBAAE1N,EAAgB,QAAEoF,GAAS+D,EACxG,MAAM/I,EAAUC,2BAAiB,QAASL,EAAmB9H,GACvD8N,EAAaC,iCAAuBjG,EAAmBI,GAC7D,OACIzK,gBAAA,IAAAyC,OAAAC,OAAA,CAAGsC,GAAIA,EAAIxD,UAAWA,EAAS,aAAcuW,EAAWtI,QAASA,GAAaY,GACzE9N,IA4EEkmC,UA3CiEvoC,IAC5E,MAAM,OACFwoC,EAAM,UACNC,EAAS,QACT7yB,EAAO,mBACP8yB,EAAkB,YAClBC,EAAW,cACXC,EAAa,cACbC,EAAa,qBACbC,EAAoB,mBACpBC,EAAkB,oBAClBC,EAAmB,qBACnBC,EAAoB,iBACpBC,EAAgB,kBAChBC,GACAnpC,EAEJ,OACIF,gBAACsL,SAAM7I,OAAAC,OAAA,GAAKgmC,GACPC,EAAUW,eAAiBtpC,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKkmC,IACrCD,EAAUW,eAAiBtpC,gBAACsoC,EAAa7lC,OAAAC,OAAA,GAAKoT,IAC/C9V,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKmmC,GACN7oC,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKomC,GACLE,EA7H+Bn3B,KAA6E,IAA5E,aAAE03B,EAAY,MAAE3pB,EAAK,eAAE4pB,EAAc,WAAEC,EAAU,MAAExoC,EAAK,aAAEukB,GAAc3T,EACzH,OACI7R,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK6mC,GACL3pB,GACGA,EAAM7b,IAAKC,GAEHhE,gBAAC0L,OAAIjJ,OAAAC,OAAA,CAAC4J,IAAKtI,EAAKsI,KAAStI,EAAK0lC,SACzB1lC,EAAK2lC,MACL3lC,EAAK/C,MACL+C,EAAKuZ,QAIrBisB,EACAC,EACAxoC,EACAukB,IA8GQokB,CAAaX,GAzGoB/2B,KAA8B,IAA7B,eAAE23B,EAAc,MAAEjqB,GAAO1N,EAC5E,OACIlS,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKmnC,GACLjqB,GACGA,EAAM7b,IAAKC,GAEHhE,gBAAC0L,OAAIjJ,OAAAC,OAAA,CAAC4J,IAAKtI,EAAKsI,KAAStI,EAAK0rB,QACzB1rB,EAAKC,MACLD,EAAKzB,SAkGbunC,CAAcZ,IAEnBlpC,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKqmC,GACLI,EACAE,EAxDjBnpC,KAEA,MAAM,UACFM,EAAS,UACTU,EAAS,aACTsJ,EACA9J,SACIC,SAAS,kBAAE4J,KAEfrK,EACEmK,EAAmBC,6BAAmBC,EAAoBC,EAActJ,GAK9E,OACIlB,gBAACwoC,EAAY/lC,OAAAC,OAAA,CACTsC,GAAG,iBANQ,CACfwK,KAAM,KAMY,CACdhO,UAAW,mCACXuW,UAAWvX,EAAUupC,yBACrBxnC,KAAM/B,EAAUwpC,oBAChB3/B,iBAAkBA,MAmCTuZ,CAAa1jB,IAElBF,gBAAA,OAAKwB,UAAU,wCACXxB,gBAAA,OAAKwB,UAAU,qDACXxB,gBAAA,mBAnGwBuS,KAA8B,IAA7B,eAAEs3B,EAAc,MAAEjqB,GAAOrN,EACtE,OACIvS,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKmnC,GACLjqB,GACGA,EAAM7b,IAAKC,GAEHA,GACIhE,gBAAC0L,OAAIjJ,OAAAC,OAAA,CAAC4J,IAAKtI,EAAKsI,KAAStI,EAAK0rB,QACzB1rB,EAAKzB,SA6FjB0nC,CAAWb,Q,6HChJzB,MAAMc,EAA+ChqC,IAAQ,IAAAiqC,EAAAC,EAAAC,EAChE,MAAM,UACF/F,EAAS,mBACTmD,EAAkB,QAClB5lC,EAAO,KACPU,EAAI,cACJmlC,EAAa,WACbG,EAAU,aACVphB,EAAY,gBACZ+gB,EAAe,gBACfY,GACAloC,EAWJ,OACIF,gBAACsL,SAAM7I,OAAAC,OAAA,GAAK4hC,GACRtkC,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK+kC,EAAkB,CAAEjmC,UAAWimC,EAAmBjmC,YACvDK,EACAU,EACDvC,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKglC,EAAa,CAAE/O,SAVnB7yB,IACdA,EAAMwkC,iBACN9C,KAQqDhmC,UAAmC,QAA1B2oC,EAAEzC,aAAa,EAAbA,EAAelmC,iBAAS,IAAA2oC,IAAI,KAChFnqC,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKmlC,EAAU,CAAErmC,UAAgC,QAAvB4oC,EAAEvC,aAAU,EAAVA,EAAYrmC,iBAAS,IAAA4oC,IAAI,MAC1DpqC,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK+jB,EAAY,CAAEjlB,UAAkC,QAAzB6oC,EAAE5jB,aAAY,EAAZA,EAAcjlB,iBAAS,IAAA6oC,IAAI,KACzDnqC,EAAMioC,yBAIlBC,IAKE8B,a,+ECrBAK,UAxB4CrqC,IACvD,MAAM,aAAEm5B,EAAY,YAAE5T,EAAW,MAAEpL,EAAK,QAAEvE,GAAY5V,EAEtD,OAAQ4V,GAAWuE,EACfra,gBAACsL,SAAM7I,OAAAC,OAAA,GAAK22B,GACP5T,EACDzlB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK2X,EAAMA,OACZra,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK2X,EAAMwL,aAAcxL,EAAMxY,SACpC7B,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK2X,EAAMyL,WACXzL,EAAM0e,MACP/4B,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK2X,EAAM2e,cACX3e,EAAM4e,SACN5e,EAAM8e,YAGfn5B,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK2X,EAAMmM,aACXnM,EAAMoM,aACNpM,EAAMqM,gBAInB,O,mbCZD,MAAMmB,EAA+ChW,IAAA,IAAC,sBACzDC,EAAqB,QACrBiM,EAAO,UACPC,EAAS,YACThM,EAAW,MACXS,EAAK,OACLyL,EAAM,mBACNxH,EAAkB,YAClBuH,EAAW,eACX6J,GACHjW,EAAA,OACG7R,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKoP,GACLmM,EACA6J,EACA/J,EACAC,EACAhM,EACAS,EACAyL,EACAxH,IAIIqR,EAAkC7V,IAAA,IAAC,eAAEC,EAAc,UAAEC,EAAS,eAAEC,EAAc,OAAEwJ,GAAQ3J,EAAA,OACjGlS,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKyP,GACLC,EACAC,EACAwJ,IAIImM,EAA0CzV,IAAA,IAAC,cAAEC,EAAa,QAAE3Q,EAAO,MAAE4Q,GAAOF,EAAA,OACrFvS,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK8P,GACL3Q,EACA4Q,IAIIwV,EAA0BlV,IAAA,IAAC,WAAEC,EAAU,SAAEC,EAAQ,QAAEN,EAAO,gBAAEO,EAAe,WAAEC,EAAU,0BAAE+U,GAA2BnV,EAAA,OAC7H/S,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKsQ,GACLC,GAAYjT,gBAACgoB,EAAavlB,OAAAC,OAAA,GAAKuQ,IAChCjT,gBAAC0L,OAAI,CAAClK,UAAU,2CACX2R,GACGnT,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKwQ,GACLC,EAAWpP,IAAIqO,GACZpS,gBAACA,WAAc,CAACsM,IAAK8F,EAAUxN,KAAKwN,UAAUkB,QACT,SAAhClB,EAAUxN,KAAKwjB,cAA2BhW,EAAUxN,KAAKyjB,SAAWjW,EAAUQ,aAAe,KAC9F5S,gBAAC+nB,EAAStlB,OAAAC,OAAA,GAAK0P,KACb8V,GAA6B9V,EAAU+V,gBAKvDlV,EAASqV,cAAgB3V,EAC1BM,EAASqV,cACNtoB,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKuQ,EAASsV,aACd5V,EACAM,EAASJ,uBAOjB2V,EAA4BhV,IAAA,IAAC,YAAEC,EAAW,OAAEC,GAAQF,EAAA,OAC7DxT,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK+Q,GACLC,EAAO3P,IAAI,CAAC4P,EAAOlG,IAChBzN,gBAACioB,EAAKxlB,OAAAC,OAAA,CAAC4J,IAAKmB,GAAWkG,OAKtB8U,EAAwC5U,IAAA,IAAC,kBAClDE,EAAiB,QACjBlS,EAAO,SACPoS,EAAQ,SACRD,EAAQ,IACR0U,EAAG,YACHxU,EAAW,aACXC,GACHN,EAAA,OACG7T,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKqR,GACLlS,EACAoS,EACAD,EACA0U,EACAxU,EACAC,IAIIwU,EAAqCnU,IAAA,IAAC,oBAAEC,EAAmB,MAAEC,EAAK,QAAEC,GAASH,EAAA,OACtFxU,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAK+R,GACLC,EACAC,IAIIiU,EAAwB/T,IAAA,IAAC,UAAEC,EAAS,cAAEC,EAAa,oBAAEC,EAAmB,cAAEC,GAAeJ,EAAA,OAClG7U,gBAAC0L,OAAIjJ,OAAAC,OAAA,GAAKoS,GACLC,EACAC,EACAC,IAuCM4T,UAnC4CC,IActD,IAduD,YACxD/mB,EAAW,UACXgnB,EAAS,iBACTC,EAAgB,MAChB1J,EAAK,SACL2J,EAAQ,QACRpnB,EAAO,MACPM,EAAK,QACL2T,EAAO,gBACPC,EAAe,aACfC,EAAY,QACZC,EAAO,KACPC,EAAI,OACJxC,GACHoV,EACG,OACI9oB,gBAACsL,SAAM7I,OAAAC,OAAA,GAAKX,GACPknB,EACApnB,EACAM,EACA2T,EACAC,GAAmB/V,gBAAC6nB,EAAeplB,OAAAC,OAAA,GAAKqT,IACxCiT,EACAD,EACAzJ,EACA5L,GAAU1T,gBAACwoB,EAAM/lB,OAAAC,OAAA,GAAKgR,IACvB1T,gBAAC0L,OAAI,CAAClK,UAAU,6CACXwU,GAAgBhW,gBAACyoB,EAAYhmB,OAAAC,OAAA,GAAKsT,IAClCC,GAAWjW,gBAAC2oB,EAAOlmB,OAAAC,OAAA,GAAKuT,KAE5BC,GAAQlW,gBAAC4oB,EAAInmB,OAAAC,OAAA,GAAKwT,O,8JC5IxB,MAAMs0B,EAA8FtqC,IACvG,MAAM,wBAAE8kC,EAAuB,yBAAElB,GAA6B5jC,EAE9D,OACIF,gBAACsL,SAAM7I,OAAAC,OAAA,GAAKxC,EAAM6B,aACbijC,EACAlB,IAKE0G","file":"static/js/7.94e28008e510f1173514.chunk.js","sourcesContent":["/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport DropdownQuantity from './DropdownQuantity';\r\n\r\nexport * from './DropdownQuantity.props';\r\n\r\nexport { DropdownQuantity };\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Heading, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IHeadingData, IIframeConfig, IIframeProps } from './iframe.props.autogenerated';\n\nexport interface IIframeViewProps extends IIframeProps {\n Heading: React.ReactNode;\n IframeContainer: IModuleProps;\n IFrame: React.ReactNode;\n alert?: React.ReactNode;\n cookieConsentAccepted?: boolean;\n}\n\n/**\n *\n * Iframe component.\n * @extends {React.PureComponent}\n */\nclass Iframe extends React.PureComponent> {\n private readonly iframeRef: React.RefObject;\n\n constructor(props: IIframeProps) {\n super(props);\n this.iframeRef = React.createRef();\n }\n\n public render(): JSX.Element | null {\n const { config, resources } = this.props;\n const isConsentGiven =\n this.props.context.request &&\n this.props.context.request.cookies &&\n this.props.context.request.cookies.isConsentGiven &&\n this.props.context.request.cookies.isConsentGiven();\n\n if (!(config && config.target && config.target.destinationUrl)) {\n return null;\n }\n\n let srcURL;\n try {\n srcURL = new URL(config.target.destinationUrl);\n } catch (error) {\n this.props.telemetry.exception(error);\n return null;\n }\n\n if (srcURL && srcURL.protocol && srcURL.protocol.toLocaleLowerCase() !== 'https:') {\n return null;\n }\n const iframeClassName = classnames('ms-iframe', config.className);\n\n let viewProps: IIframeViewProps = {\n ...(this.props as IIframeProps),\n Heading: this._createHeading(config.heading!),\n IframeContainer: {\n moduleProps: this.props,\n className: iframeClassName\n },\n IFrame: this._createIframe()\n };\n\n if (!isConsentGiven) {\n viewProps = {\n ...viewProps,\n alert: this._renderAlert(resources.cookieConsentRequiredMessage)\n };\n } else {\n viewProps = {\n ...viewProps,\n cookieConsentAccepted: true\n };\n }\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\n if (!heading || !heading.text || heading.text.length === 0) {\n return null;\n }\n\n return ;\n }\n\n private _renderAlert(message: string): React.ReactNode | null {\n return (\n

\n {message}\n

\n );\n }\n\n private _createIframe(): React.ReactNode | null {\n const { config } = this.props;\n const targetURL = config.target.destinationUrl;\n\n return (\n \n );\n }\n}\n\nexport default Iframe;\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport MsDyn365, { IDictionary, IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport { IMenuItemData, INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\r\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Drawer,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n ICollapseProps,\r\n IDrawerState,\r\n IPayLoad,\r\n ITelemetryContent,\r\n Module,\r\n Node,\r\n onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport {\r\n ICmsNavItemsData,\r\n INavigationMenuProps\r\n} from \"../definition-extensions/navigation-menu.ext.props.autogenerated\";\r\nimport * as _ from 'lodash';\r\n\r\ninterface INavigationState {\r\n parentMenu?: number;\r\n activeMenu?: number;\r\n categoryImage?: IImageData[] | null;\r\n categoryImageAltText: string;\r\n drawerKeyValue: IDictionary;\r\n timeout: ReturnType | null;\r\n menuItemData: IMenuItemData[];\r\n}\r\n\r\n/**\r\n *\r\n * NavigationMenuView component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class NavigationMenuView extends React.PureComponent, INavigationState> {\r\n private currentLevel: number = 0;\r\n\r\n private readonly _positionInSetOffset: number = 1;\r\n\r\n private readonly escapeKey: number = 27;\r\n\r\n private readonly menuNode: React.RefObject;\r\n\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n private readonly payLoad: IPayLoad;\r\n\r\n constructor(props: INavigationMenuViewProps & INavigationMenuProps<{}>) {\r\n super(props);\r\n const { menuItemData , config : { retailMenuInsertLinks, cmsNavItems }} = props;\r\n const _menuItemDataClone = [...menuItemData];\r\n const retailMenu = _menuItemDataClone.find(mi => mi.menuSource === 'Retail');\r\n if (retailMenu && ArrayExtensions.hasElements(retailMenuInsertLinks)) {\r\n //Handle pushing in new menu items\r\n retailMenuInsertLinks.map(item => {\r\n if (!item.hideMenuItem) {\r\n const tempMenuItem: IMenuItemData = {\r\n linkURL: item.linkUrl?.destinationUrl,\r\n linkText: item.linkText,\r\n shouldOpenNewTab: item.openInNewTab,\r\n id: retailMenu.subMenu?.length || 0,\r\n imageSource: item.image?.src,\r\n }\r\n retailMenu.subMenu?.splice(item.insertPosition && item.insertPosition - 1 || 0, 0, tempMenuItem);\r\n }\r\n })\r\n }\r\n if (_menuItemDataClone) {\r\n for (const menuItem of _menuItemDataClone) {\r\n if (menuItem.menuSource === 'Retail') {\r\n continue;\r\n }\r\n const menuItemPair = cmsNavItems?.find(cms => cms.linkText === menuItem.linkText);\r\n if ((menuItemPair as ICmsNavItemsData)?.hideMenuItem) {\r\n const idx = _menuItemDataClone.findIndex(i => i.id === menuItem.id);\r\n if (idx > -1) {\r\n _menuItemDataClone.splice(idx, 1);\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.menuNode = React.createRef();\r\n this.state = { activeMenu: undefined,\r\n parentMenu: undefined,\r\n categoryImageAltText: '',\r\n drawerKeyValue: {},\r\n timeout: null,\r\n menuItemData: _menuItemDataClone\r\n };\r\n this._closeSubmenu = this._closeSubmenu.bind(this);\r\n this._escFunction = this._escFunction.bind(this);\r\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry);\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (MsDyn365.isBrowser) {\r\n document.body.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n document.body.addEventListener('mousedown', this._handleClickOutside);\r\n document.body.addEventListener('focusout', this._handleFocusOutside);\r\n }\r\n\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n if (MsDyn365.isBrowser) {\r\n document.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\r\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { isMobileView } = this.props;\r\n\r\n this.currentLevel = 1;\r\n return (\r\n <>\r\n {isMobileView ? this._renderMobileMenu() : this._renderDesktopMenu()}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render mobile menu.\r\n * @returns Jsx element.\r\n */\r\n private _renderMobileMenu(): JSX.Element {\r\n const { isMobileView, Navigation } = this.props;\r\n const { menuItemData } = this.state;\r\n return (\r\n \r\n {menuItemData.map((menuItem: IMenuItemData, posinset: number) => {\r\n return this._renderDrawerMenu(menuItem, menuItemData.length, posinset + this._positionInSetOffset);\r\n })}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render desktop menu.\r\n * @returns Jsx element.\r\n */\r\n private _renderDesktopMenu(): JSX.Element {\r\n const { MenuList, Navigation } = this.props;\r\n return (\r\n \r\n \r\n {this._renderDisplay()}\r\n \r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render drawer menu.\r\n * @param menuItem -Menuitem data.\r\n * @param setSize -Setsize data.\r\n * @param posinset -Current position.\r\n * @returns Jsx element.\r\n */\r\n private _renderDrawerMenu(menuItem: IMenuItemData, setSize: number, posinset: number): JSX.Element | null {\r\n if (menuItem && menuItem.subMenu && ArrayExtensions.hasElements(menuItem.subMenu)) {\r\n return (this._renderDrawer(menuItem, setSize, posinset));\r\n }\r\n return (this._renderLinkMenuItem(menuItem, undefined, true, false, setSize, posinset));\r\n\r\n }\r\n\r\n /**\r\n * Method to render drawer component.\r\n * @param menuItem -Menuitem data.\r\n * @param setSize -Setsize data.\r\n * @param posinset -Current position.\r\n * @returns Jsx element.\r\n */\r\n private _renderDrawer(menuItem: IMenuItemData, setSize?: number, posinset?: number): JSX.Element | null {\r\n const toggleButtonText = menuItem.linkText;\r\n const keyValue = this.state.drawerKeyValue;\r\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\r\n const keys = keyValue !== undefined ? keyValue : {};\r\n\r\n let isDrawerOpen = false;\r\n if (keys[buttonText]) {\r\n isDrawerOpen = true;\r\n }\r\n const colProps: ICollapseProps = { isOpen: isDrawerOpen };\r\n return (\r\n \r\n
\r\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData, currentPos: number) => {\r\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\r\n return (this._renderDrawer(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset));\r\n }\r\n return this._renderDrawerLink(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\r\n })}\r\n
\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render link.\r\n * @param linkText -Text on Menu link.\r\n * @param setSize -Setsize data.\r\n * @param posinset -Current position.\r\n * @returns Jsx element.\r\n */\r\n private _renderLinkText(linkText: string | undefined, setSize: number | undefined, posinset: number | undefined): JSX.Element {\r\n return (\r\n \r\n {linkText}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render drawer link.\r\n * @param item -Single Menuitem.\r\n * @param setSize -Setsize data.\r\n * @param posinset -Current position.\r\n * @returns Jsx element.\r\n */\r\n private _renderDrawerLink(item: IMenuItemData, setSize: number | undefined, posinset: number): JSX.Element | null {\r\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\r\n return (\r\n this._renderLinkMenuItem(item, undefined, true, false, setSize, posinset)\r\n );\r\n } else if (item && item.linkText && !item.linkURL) {\r\n return (\r\n this._renderSpanMenuItem(item)\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Method to generate menu.\r\n * @returns Jsx element.\r\n */\r\n private _renderDisplay(): JSX.Element[] {\r\n const { ListItem, isMobileView } = this.props;\r\n const { menuItemData } = this.state;\r\n const { activeMenu } = this.state;\r\n const menuItemList: JSX.Element[] = [];\r\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\r\n let menuItem: IMenuItemData = {};\r\n for (const menuItemDatum of menuItemData) {\r\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\r\n menuItem = menuItemDatum;\r\n this.setState({ parentMenu: undefined });\r\n break;\r\n }\r\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\r\n if (menuItem && menuItem.id === activeMenu) {\r\n break;\r\n }\r\n }\r\n\r\n menuItem && menuItemList.push(\r\n \r\n {' '}\r\n {this._createMenuItemList(menuItem)}\r\n {' '}\r\n \r\n );\r\n } else {\r\n menuItemData.forEach((item: IMenuItemData, index: number) => {\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(item)}\r\n \r\n );\r\n });\r\n }\r\n return menuItemList;\r\n }\r\n\r\n /**\r\n * Method to get data for submenu.\r\n * @param item -Single Menuitem.\r\n * @returns IMenuItemData.\r\n */\r\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\r\n const subMenus = item && item.subMenu;\r\n if (subMenus && subMenus.length > 0) {\r\n for (let i = 0; i <= subMenus.length - 1; i++) {\r\n if (subMenus[i].id === this.state.activeMenu) {\r\n this.setState({ parentMenu: item?.id });\r\n return subMenus[i];\r\n }\r\n const found = this._getFromSubMenu(subMenus[i]);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Method to create item list.\r\n * @param menuItemData -Single Menuitem.\r\n * @returns Jsx element.\r\n */\r\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\r\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\r\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\r\n return (this._renderSubMenu(menuItemData.subMenu, menuItemData.id));\r\n }\r\n return (\r\n <>\r\n {this._renderButtonMenuItem(menuItemData)}\r\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\r\n \r\n );\r\n\r\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\r\n return (this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true));\r\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\r\n return (this._renderSpanMenuItem(menuItemData, menuItemData.id, true));\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\r\n const { isMobileView, ListItem } = this.props;\r\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\r\n const subMenuLevel = 3;\r\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || subMenuLevel;\r\n\r\n // Const isParentMenu:boolean= false;\r\n if (activeMenu && this.state.activeMenu !== activeMenu) {\r\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n if (!subMenus || subMenus.length === 0) {\r\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n let levelClassName: string = '';\r\n const menuOptions = subMenus && subMenus.map((option: IMenuItemData, idx: number) => {\r\n const hasOptions = (option.subMenu && option.subMenu.length > 0);\r\n let menuItem: JSX.Element | null;\r\n if (hasOptions && isMobileView) {\r\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\r\n } else {\r\n menuItem = (option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option)\r\n );\r\n }\r\n let subMenu;\r\n const haveSubmenu = hasOptions && enableMultiSupportMenu && (this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1);\r\n if (haveSubmenu) {\r\n this.currentLevel++;\r\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\r\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\r\n }\r\n return (\r\n \r\n { menuItem }\r\n { subMenu }\r\n \r\n );\r\n });\r\n return (this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu));\r\n }\r\n\r\n\r\n /**\r\n * Handles the mouseover and mouseleave functions of the menu hover functionality\r\n * @private\r\n */\r\n private _handleMouseLeaveEvent() {\r\n const { config: { menuHideTimeout }} = this.props;\r\n const classToWatch = 'ms-nav'; // Main nav class\r\n const timeToCloseMenu = menuHideTimeout && menuHideTimeout * 1000 || 0; // From props\r\n\r\n // traverse the nodes that are currently being hovered and find out if they are part of the nav system\r\n const traverseNodes = () => {\r\n const nodeList = document.querySelectorAll(':hover');\r\n let node = nodeList[nodeList.length - 1];\r\n let isInMenu = false;\r\n while (node.parentNode) {\r\n node = node.parentNode as Element;\r\n if (node.classList?.contains(classToWatch)) {\r\n isInMenu = true;\r\n break;\r\n }\r\n }\r\n // If they are not part of the nav system - Close the menu\r\n if (!isInMenu) {\r\n // If a timeout time is set, then close the menu after a delay\r\n if (timeToCloseMenu > 0) {\r\n let timeout = this.state.timeout;\r\n if (!timeout) {\r\n timeout = setTimeout(() => {\r\n this._closeSubmenu();\r\n document.removeEventListener('mousemove', traverseNodes);\r\n }, timeToCloseMenu);\r\n this.setState({ timeout });\r\n }\r\n } else {\r\n // Otherwise - close the menu instantly\r\n this._closeSubmenu();\r\n document.removeEventListener('mousemove', traverseNodes);\r\n }\r\n } else {\r\n // Logic to cancel closing the menu if it is still open and the mouse moves back in\r\n if (timeToCloseMenu > 0) {\r\n const timeout = this.state.timeout;\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n this.setState({ timeout: null});\r\n }\r\n }\r\n }\r\n }\r\n document.removeEventListener('mousemove', traverseNodes);\r\n document.addEventListener('mousemove', traverseNodes);\r\n }\r\n\r\n /**\r\n * Method to render button menu item.\r\n * @param option -Single Menuitem.\r\n * @param activeMenu -Active menu number.\r\n * @param index -Active menu index.\r\n * @returns Jsx element.\r\n */\r\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n const { Button, config: { showMenuOnHover } } = this.props;\r\n\r\n if (showMenuOnHover) {\r\n return (\r\n option.linkURL ? window.location.href = option.linkURL : null}\r\n onMouseEnter={this._handleDropdownToggle(option, activeMenu)}\r\n onFocus={this._closeSubmenu}\r\n aria-haspopup={!(this.state.activeMenu && this.state.activeMenu === option.id)}\r\n aria-expanded={!!(this.state.activeMenu && this.state.activeMenu === option.id)}\r\n data-parent={activeMenu}\r\n role={'link'}\r\n >\r\n { option.linkText }\r\n \r\n )\r\n }\r\n return (\r\n \r\n { option.linkText }\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render link menu item.\r\n * @param option -Single Menuitem.\r\n * @param index -Active menu index.\r\n * @param hoverEffect -Active menu effect.\r\n * @param isParent -Is parent menu.\r\n * @param setSize -Setsize data.\r\n * @param posinset -Current position.\r\n * @returns Jsx element.\r\n */\r\n private _renderLinkMenuItem(option: IMenuItemData, index?: number, hoverEffect: boolean = true, isParent: boolean = false,\r\n setSize?: number, posinset?: number): JSX.Element | null {\r\n const { Link, isMobileView, config: { retailMenuInsertLinks, cmsNavItems } } = this.props;\r\n const linkText = option.linkText ? option.linkText : '';\r\n const imagesource = option.imageSource ? option.imageSource : '';\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n let currentPath = this.props.context.actionContext.requestContext.url.requestUrl.pathname;\r\n let className = '';\r\n if (retailMenuInsertLinks) {\r\n const menuLink = retailMenuInsertLinks.find(item => item.linkText === option.linkText);\r\n if (menuLink) {\r\n className = menuLink.className || '';\r\n }\r\n }\r\n if (cmsNavItems) {\r\n const cmsMenuLink = cmsNavItems.find(cms => cms.linkText === option.linkText);\r\n if (cmsMenuLink) {\r\n className = (cmsMenuLink as ICmsNavItemsData).className || '';\r\n }\r\n }\r\n\r\n return (\r\n onTelemetryClick(this.telemetryContent, this.payLoad, linkText)}>\r\n =0 ?\r\n 'active-nav-item' : '', className)}>\r\n { option.linkText }\r\n \r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render promotional link.\r\n * @param linkText -Link text.\r\n * @param linkUrl -Link url.\r\n * @returns Jsx element.\r\n */\r\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\r\n const { Link } = this.props;\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n if (linkText && linkUrl) {\r\n return (\r\n \r\n { linkText }\r\n \r\n );\r\n }\r\n return null;\r\n\r\n }\r\n\r\n /**\r\n * Method to render span menu item.\r\n * @param option -Single Menu Item.\r\n * @param index -Index.\r\n * @param isParent -Is parent menu.\r\n * @returns Jsx element.\r\n */\r\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\r\n const { Span } = this.props;\r\n return (\r\n \r\n { option.linkText }\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render menu.\r\n * @param level -Menu level.\r\n * @param menuOptions -Menu lists.\r\n * @param currentItem -Menu current.\r\n * @param submenu -Mneu has submenu or not.\r\n * @returns Jsx element.\r\n */\r\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\r\n\r\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, isMobileView, showPromotionalContent } = this.props;\r\n const categoryImageDisplay = !isMobileView && showCategoryImage && this.state.categoryImage !== null && this.state.categoryImage !== undefined && !submenu;\r\n const promotionalContentDisplay = !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\r\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\r\n this.currentLevel = 1;\r\n return (\r\n \r\n 2 && 'navmenu-multi-level')}>\r\n { menuOptions }\r\n \r\n
\r\n {\r\n categoryImageDisplay && this.state.categoryImage && this.state.categoryImage.map(item => (\r\n \r\n { this.state.categoryImage && this._getCategoryImage(item) }\r\n { promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\r\n ))\r\n }\r\n
\r\n
\r\n );\r\n }\r\n\r\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\r\n const linkText = option && option.linkText ? option.linkText : '';\r\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\r\n\r\n // Read category and promotional image in one array\r\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\r\n option.promotionalContent.map(item => {\r\n if (item && item.image) {\r\n const imageSrc = item.image.src;\r\n const promotionalItemImageSettings = item.image.imageSettings;\r\n promotionalImage.push({ src: imageSrc, altText: item.text, imageSettings: promotionalItemImageSettings,\r\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl } });\r\n }\r\n });\r\n }\r\n this.setState({\r\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\r\n categoryImageAltText: linkText\r\n });\r\n };\r\n\r\n /**\r\n * Method to handle dropdwon change.\r\n * @param data -Menuitem data.\r\n * @param parentId -Menu parent.\r\n * @returns Jsx element.\r\n */\r\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n if (!this.props.isMobileView) {\r\n if (this.props.config.showMenuOnHover) { // If we're showing menu on hover, we have to handle this part differently\r\n if (this.state.activeMenu !== data.id!) { // Only change state logic if we're not hovering over an already open menu\r\n this.setState({\r\n activeMenu: (this.state.activeMenu && this.state.activeMenu === data.id!) ? undefined : data.id!,\r\n parentMenu: parentId\r\n });\r\n }\r\n this._handleMouseLeaveEvent(); // run the mouse event\r\n } else {\r\n this.setState({\r\n activeMenu: (this.state.activeMenu && this.state.activeMenu === data.id!) ? undefined : data.id!,\r\n parentMenu: parentId\r\n });\r\n }\r\n\r\n if (this.props.showCategoryImage) {\r\n this._updateCategoryImage(data.imageSource!, data)();\r\n }\r\n } else {\r\n this.setState({\r\n activeMenu: data.id,\r\n parentMenu: parentId\r\n });\r\n }\r\n this._resetFocus();\r\n };\r\n\r\n /**\r\n * Method to call when focus lost from menu.\r\n */\r\n private readonly _resetFocus = () => {\r\n if (this.props.isMobileView) {\r\n setTimeout(() => {\r\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\r\n }, 0);\r\n }\r\n };\r\n\r\n /**\r\n * Method to handle click outside of menu.\r\n * @param event -HTML event.\r\n */\r\n private readonly _handleClickOutside = (event: MouseEvent) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\r\n this.setState(\r\n {\r\n activeMenu: undefined,\r\n categoryImage: null\r\n }\r\n );\r\n }\r\n };\r\n\r\n /**\r\n * Method to handle click outside of menu.\r\n * @param event -HTML event.\r\n */\r\n private readonly _handleFocusOutside = (event: FocusEvent) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\r\n this._closeSubmenu();\r\n }\r\n };\r\n\r\n /**\r\n * Method to handle close submenu event.\r\n */\r\n private _closeSubmenu(): void {\r\n if (!this.props.isMobileView) {\r\n this.setState({ activeMenu: undefined });\r\n }\r\n }\r\n\r\n /**\r\n * Method to handle escape key event.\r\n * @param event -HTML event.\r\n */\r\n private readonly _escFunction = (event: React.KeyboardEvent) => {\r\n\r\n if (event.keyCode === this.escapeKey) {\r\n if (!this.props.isMobileView) {\r\n const navDrawerList = Array.from(this.menuNode.current!.childNodes);\r\n for (const item of navDrawerList) {\r\n const navDrawerButton = item.firstChild as HTMLButtonElement;\r\n if (navDrawerButton.getAttribute('aria-expanded') === 'true') {\r\n navDrawerButton.focus();\r\n }\r\n }\r\n }\r\n this._closeSubmenu();\r\n }\r\n };\r\n\r\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\r\n\r\n if (!categoryImage || !categoryImage.src) {\r\n return null;\r\n }\r\n\r\n const categoryImageUrl = generateImageUrl(categoryImage.src, this.props.context.actionContext.requestContext.apiSettings);\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n if (categoryImageUrl !== undefined) {\r\n const ImageData: IImageData = { src: categoryImageUrl };\r\n return (\r\n \r\n );\r\n }\r\n return null;\r\n };\r\n\r\n /**\r\n * Method to handle escape key event.\r\n * @param drawerState -HTML event.\r\n */\r\n private readonly _onDrawerChange = (drawerState: IDrawerState) => {\r\n const { drawerKeyValue } = this.state;\r\n const drawerText: string = drawerState.buttonText !== undefined ? drawerState.buttonText : '';\r\n const newPair = { [drawerText]: drawerState.isOpen };\r\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\r\n };\r\n}\r\n\r\nexport default NavigationMenuView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { IHelp, IOrderSummary, IPaymentMethods, IPriceContext } from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/../../common';\r\nimport { IGroup, IGroupDelivery, IGroups } from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/../../common/get-groups';\r\nimport { IOrderInformation } from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/../../common/get-order-information';\r\nimport { ISalesLine } from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/../../common/get-sales-line';\r\nimport { IOrderConfirmationViewProps } from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/./order-confirmation';\r\nimport {IOrderConfirmationProps, IOrderConfirmationResources} from '../definition-extensions/order-confirmation.ext.props.autogenerated';\r\n// import { PriceComponent } from '@msdyn365-commerce/components';\r\nimport msdyn365Commerce from '@msdyn365-commerce/core-internal';\r\nimport { SalesOrder } from '@msdyn365-commerce/retail-proxy';\r\n\r\n\r\nexport interface IOrderSummaryR extends IOrderSummary {\r\n priceContext?: IPriceContext;\r\n backToShoppingLink? : React.ReactNode;\r\n resources: IOrderConfirmationResources;\r\n}\r\n\r\n// interface ISummaryLineProps {\r\n// priceContext?: IPriceContext;\r\n// name: string;\r\n// label: string;\r\n// value?: number;\r\n// }\r\n\r\n\r\n// const OrderSummaryLine: React.FC = ({ name, label, value = 0, priceContext }) => (\r\n//

\r\n// \r\n// {label}\r\n// \r\n// {priceContext ? (\r\n// \r\n// ) : (\r\n// \r\n// {value}\r\n// \r\n// )}\r\n//

\r\n// );\r\n\r\nexport interface IGroupR extends IGroup {\r\n resources: IOrderConfirmationResources;\r\n}\r\n\r\nexport interface IGroupsR extends IGroups {\r\n groupsProps: INodeProps;\r\n groups: IGroup[];\r\n resources: IOrderConfirmationResources;\r\n}\r\n\r\nexport const OrderConfirmationOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n receiptEmail,\r\n createdDate\r\n}) => (\r\n \r\n {createdDate}\r\n {receiptEmail}\r\n \r\n);\r\n\r\nexport const OrderConfirmationSalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton }) => (\r\n \r\n {salesLine}\r\n \r\n);\r\n\r\nexport const OrderConfirmationGroupDelivery: React.FC = ({ deliveryProps, heading, count, processing, address, trackingInfo, pickupDateTimeslot }) => (\r\n \r\n {heading}\r\n {address}\r\n {pickupDateTimeslot}\r\n \r\n);\r\n\r\nexport const OrderConfirmationGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines, resources }) => (\r\n\r\n \r\n {delivery && }\r\n {/* {delivery && delivery.shippingItemsToYou} */}\r\n

{resources.orderSummaryTitle}

\r\n {_renderOrderSummaryHeading(resources)}\r\n {salesLines && (\r\n \r\n {salesLines.map((salesLine: ISalesLine) => (\r\n \r\n ))}\r\n \r\n )}\r\n
\r\n\r\n);\r\n\r\nexport const OrderConfirmationGroups: React.FC = ({ groupsProps, groups, resources }) => (\r\n \r\n {groups.map((group: IGroup, index: number) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport interface IExtendedOrderSummaryR extends IOrderSummaryR {\r\n salesOrder: SalesOrder | undefined;\r\n}\r\n\r\nexport const OrderConfirmationOrderSummary: React.FC = ({ salesOrder, orderSummaryProps, heading, shipping, subtotal, totalAmount, earnedPoints, backToShoppingLink, resources}) => (\r\n \r\n {heading}\r\n {/* */}\r\n\r\n {React.cloneElement(subtotal as React.ReactElement, {value: salesOrder?.SubtotalAmountWithoutTax})}\r\n\r\n {shipping}\r\n {/*tax*/}\r\n {totalAmount}\r\n {earnedPoints}\r\n \r\n {backToShoppingLink}\r\n \r\n);\r\n\r\nexport const OrderConfirmationPayment: React.FC = ({ paymentMethodsProps, title, methods }) => (\r\n \r\n {title}\r\n {methods}\r\n \r\n);\r\n\r\nexport const OrderConfirmationHelp: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\r\n \r\n {needHelpLabel}\r\n {helpLineNumberLabel}\r\n {contactNumber}\r\n \r\n);\r\n\r\nconst _renderOrderSummaryHeading = (resources: IOrderConfirmationResources & IOrderConfirmationResources): JSX.Element | null => {\r\n return (\r\n
\r\n
{resources.productColumnHeading}
\r\n
{resources.colorColumnHeading}
\r\n
{resources.sizeColumnHeading}
\r\n
{resources.quantityColumnHeading}
\r\n
{resources.priceColumnHeading}
\r\n
{resources.totalColumnHeading}
\r\n
\r\n );\r\n};\r\n\r\nconst OrderConfirmationView: React.FC> = props => {\r\n const {\r\n moduleProps,\r\n heading,\r\n backToShoppingLink,\r\n alert,\r\n loading,\r\n orderInfomation,\r\n orderSummary,\r\n payment,\r\n help,\r\n groups,\r\n resources,\r\n salesOrder,\r\n config }\r\n = props;\r\n const orderString = salesOrder?.CreatedDateTime?.toString() ?? '';\r\n const orderDate = new Date(orderString);\r\n\r\n const changeHref = () => {\r\n if (msdyn365Commerce.isBrowser && config.backToShoppingLink){\r\n let el = document.querySelectorAll('.ms-order-confirmation__btn-keep-shopping')[0];\r\n if (el.href !== config.backToShoppingLink){\r\n el.href = config.backToShoppingLink;\r\n }\r\n }\r\n }\r\n\r\n changeHref();\r\n \r\n return (\r\n \r\n {heading}\r\n

{orderInfomation?.channelReferenceId}

\r\n {alert}\r\n {loading}\r\n

{resources.thankYouMessage}

\r\n {/* {orderInfomation && } */}\r\n\r\n \r\n \r\n {resources.orderPlacedOnLabel.replace(\":\",\"\")}\r\n {orderDate.toLocaleDateString('en-GB')}\r\n \r\n {orderInfomation?.receiptEmail}\r\n \r\n {groups && }\r\n {/* {payment && } */}\r\n {orderSummary && }\r\n \r\n {resources.tyvm}{resources.paidMsg}\r\n {payment?.methods}\r\n
\r\n {resources.signOff}\r\n
\r\n {resources.teamNile}\r\n
\r\n {help && }\r\n
\r\n );\r\n};\r\n\r\nconst getPriceContext = (props: IOrderConfirmationViewProps & IOrderConfirmationProps<{}>): IPriceContext => {\r\n const {\r\n id,\r\n typeName,\r\n context,\r\n telemetry,\r\n resources: { freePriceText }\r\n } = props;\r\n return {\r\n id,\r\n typeName,\r\n context,\r\n telemetry,\r\n freePriceText\r\n };\r\n}\r\n\r\nexport default OrderConfirmationView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICookieComplianceAcceptButton {\n acceptCookiesButtonText?: string;\n acceptCookiesButtonAriaLabel?: string;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onClose(): void;\n}\n\nexport const CookieComplianceAcceptButton: React.FC = ({\n acceptCookiesButtonText,\n acceptCookiesButtonAriaLabel,\n telemetryContent,\n onClose\n}) => {\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, 'accept cookies');\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n {acceptCookiesButtonText}\n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IActionLinksData } from '../cookie-compliance.props.autogenerated';\n\nexport interface ICookieComplianceLinks {\n links: IActionLinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent}\n */\nexport class CookieComplianceLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n \n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n \n );\n }\n\n private readonly _mapEditableLinks = (linkdata: IActionLinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n };\n}\n\nexport default CookieComplianceLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IAlertProps, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { CookieComplianceAcceptButton, CookieComplianceLinks } from './components';\nimport { ICookieComplianceConfig, ICookieComplianceProps } from './cookie-compliance.props.autogenerated';\n\n/**\n * Alert state interface.\n */\nexport interface IAlertState {\n visible: boolean;\n}\n\n/**\n * Cookie compliance view props interface.\n */\nexport interface ICookieComplianceViewProps extends ICookieComplianceProps<{}> {\n CookieComplianceBanner: IModuleProps;\n AlertProps: IAlertProps;\n Content: INodeProps;\n text?: React.ReactNode;\n links?: React.ReactNode;\n acceptButton?: React.ReactNode;\n className: string;\n onDismiss(): void;\n}\n\n/**\n *\n * CookieCompliance component.\n * @extends {React.PureComponent>}\n */\nclass CookieCompliance extends React.PureComponent, IAlertState> {\n private readonly cookieRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public constructor(props: ICookieComplianceProps) {\n super(props);\n this.state = { visible: false };\n this.cookieRef = React.createRef();\n this._onDismiss = this._onDismiss.bind(this);\n }\n\n public componentDidMount(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies && !context.request.cookies.isConsentGiven()) {\n this.setState({ visible: true });\n }\n }\n\n public render(): JSX.Element | null {\n const { config, context, resources, telemetry } = this.props;\n const { acceptCookiesButtonText, acceptCookiesAriaLabel } = resources;\n const { visible } = this.state;\n\n const isConsentGiven = context && context.request && context.request.cookies && context.request.cookies.isConsentGiven();\n let moduleConfig: ICookieComplianceConfig;\n\n try {\n moduleConfig = config;\n } catch (error) {\n telemetry.error(`Something went wrong while rendering the alert module ------${error}`);\n return
{error}
;\n }\n\n if (isConsentGiven && !visible) {\n this.props.context.telemetry.error('Cookie Compliance content is empty, module wont render.');\n return null;\n }\n\n if (!MsDyn365.msdyn365Commerce.isBrowser) {\n return <>;\n }\n\n const viewProps = {\n ...this.props,\n onDismiss: this._onDismiss,\n CookieComplianceBanner: {\n moduleProps: this.props,\n className: classnames('ms-cookie-compliance', moduleConfig.className),\n ref: this.cookieRef\n },\n AlertProps: {\n className: 'ms-cookie-compliance__container',\n color: 'white',\n fade: false\n },\n Content: {\n className: 'ms-cookie-compliance__content'\n },\n text: moduleConfig.content && (\n \n ),\n links: ArrayExtensions.hasElements(moduleConfig.actionLinks) && (\n \n ),\n acceptButton: (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles Link content change event.\n * @param linkIndex - Index of link in linkarray.\n * @returns Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent): void => {\n if (this.props.config.actionLinks?.[linkIndex]) {\n this.props.config.actionLinks[linkIndex].linkText = event.target.value;\n }\n };\n\n /**\n * Handles content change event.\n * @param event - Event.\n */\n public handleContentChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.content = event.target.value;\n };\n\n private _onDismiss(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies) {\n context.request.cookies.setConsentCookie();\n location.reload();\n }\n this.setState({ visible: false });\n }\n}\n\nexport default CookieCompliance;\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport { ICloneCartData } from './clone-cart.data';\r\nimport { ICloneCartProps } from './clone-cart.props.autogenerated';\r\n\r\nimport _, { noop } from 'lodash';\r\n\r\nimport { IActionContext } from '@msdyn365-commerce/core-internal';\r\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { readAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\r\nimport { getByIdsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\n\r\nimport { Modal, ModalHeader } from '@msdyn365-commerce-modules/utilities';\r\n\r\nexport interface ICloneCartViewProps extends ICloneCartProps {\r\n products: SimpleProduct[];\r\n modal: React.ReactNode;\r\n}\r\nexport interface ICloneCartState {\r\n products: SimpleProduct[];\r\n modalOpen: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * CloneCart component\r\n * @extends {React.PureComponent>}\r\n */\r\nexport default class CloneCart extends React.PureComponent, ICloneCartState> {\r\n constructor(props: ICloneCartProps) {\r\n super(props);\r\n this.state = {\r\n products: [],\r\n modalOpen: false\r\n };\r\n }\r\n private oun: string = this.props.context.actionContext.requestContext.apiSettings.oun;\r\n private channelId: number = this.props.context.actionContext.requestContext.apiSettings.channelId;\r\n\r\n public componentDidMount(): void {\r\n if (this.props.data.cart && this.props.data.cart?.result && this.props.context.request.cookies.isConsentGiven()) {\r\n // force async/await\r\n void (async () => {\r\n try {\r\n void this._cloneCart();\r\n } catch (err) {\r\n noop;\r\n }\r\n })();\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n if (this.state.products && this.state.products.length > 0) {\r\n const viewProps: ICloneCartViewProps = { ...this.props, products: this.state.products, modal: this._renderModal() };\r\n return this.props.renderView(viewProps);\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n private async _cloneCart() {\r\n const destinationCart = this.props.data.cart.result?.cart;\r\n\r\n const lastCartId: string = this.props.context.request.cookies.get('lastCartId').value || '';\r\n const lastOun: string = this.props.context.request.cookies.get('lastOun').value || '';\r\n const lastChannelId: number = Number.parseInt(this.props.context.request.cookies.get('lastChannelId').value || '0', 10);\r\n if (lastCartId === '' || lastOun === '' || lastChannelId === 0) {\r\n // set cookies when none found\r\n this.props.context.request.cookies.set('lastChannelId', this.channelId);\r\n this.props.context.request.cookies.set('lastOun', this.oun);\r\n this.props.context.request.cookies.set('lastCartId', destinationCart?.Id!);\r\n } else if (lastOun !== this.oun && lastChannelId !== this.channelId && lastCartId !== destinationCart?.Id) {\r\n // Set up previous website context\r\n const lastCtx = _.cloneDeep(this.props.context.actionContext);\r\n lastCtx.requestContext.apiSettings.channelId = lastChannelId;\r\n lastCtx.requestContext.apiSettings.oun = lastOun;\r\n\r\n // retrieve previous website cart\r\n const sourceCart = await this._readAsync(lastCtx, lastCartId);\r\n\r\n // set cookies to prevent additional runs\r\n this.props.context.request.cookies.set('lastChannelId', this.channelId);\r\n this.props.context.request.cookies.set('lastOun', this.oun);\r\n this.props.context.request.cookies.set('lastCartId', destinationCart?.Id!);\r\n\r\n if (sourceCart.CartLines && sourceCart.CartLines?.length > 0) {\r\n // retrieve products from previous cart\r\n const productIdSet: Set = new Set();\r\n sourceCart.CartLines.forEach(cl => productIdSet.add(cl.ProductId!));\r\n const products = await this._getByIdsAsync(lastCtx, lastChannelId, Array.from(productIdSet));\r\n\r\n const errors = [];\r\n\r\n // add products to cart individually to catch failed validation\r\n for await (const cartLine of sourceCart.CartLines) {\r\n const productId = cartLine.ProductId;\r\n const cartLineNumber = cartLine.LineNumber;\r\n if (sourceCart.CartLines?.findIndex(cl => cl.ProductId === productId && cl.LineNumber === cartLineNumber) === -1) {\r\n // get product info for current cart line\r\n const product = products.find(p => p.RecordId === cartLine.ProductId)!;\r\n\r\n // add product to cart. Cannot add multiple lines as a product with failed validation will fail entire add to cart\r\n const result = await this._addProductToCart({\r\n product: product,\r\n count: cartLine.Quantity\r\n });\r\n\r\n // keep track of products that failed to integrate\r\n if (result.status === 'FAILED') {\r\n errors.push(product);\r\n }\r\n }\r\n }\r\n\r\n this.setState({ products: errors, modalOpen: !!errors.length });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Method to retrieve cart.\r\n * @param ctx -Context of the cart (oun and channelId dictate the website instance).\r\n * @param cartId -Id of the cart.\r\n * @returns Cart object.\r\n */\r\n private async _readAsync(ctx: IActionContext, cartId: string) {\r\n return readAsync({ callerContext: ctx }, cartId);\r\n }\r\n\r\n /**\r\n * Method to retrieve product info.\r\n * @param ctx -Context of the cart (oun and channelId dictate the website instance).\r\n * @param channelId -Channel Id of the website instance.\r\n * @param products -Ids of the products to retrieve.\r\n * @returns SimpleProduct array.\r\n */\r\n private async _getByIdsAsync(ctx: IActionContext, channelId: number, products: number[]) {\r\n return getByIdsAsync({ callerContext: ctx }, channelId, products);\r\n }\r\n\r\n /**\r\n * Method to add a single product to cart.\r\n * @param input -products to add to cart, including SimpleProduct and count(quantity)\r\n * @returns Cart object.\r\n */\r\n private async _addProductToCart(input: any) {\r\n return (await this.props.data.cart).addProductToCart(input);\r\n }\r\n\r\n private _renderModal() {\r\n return (\r\n this.setState({ modalOpen: false })}>\r\n \r\n
\r\n \r\n {this.props.resources.resourceKey}\r\n
\r\n
\r\n {this.state.products.map((p, index) => {\r\n return
  • {p.Name}
  • ;\r\n })}\r\n
    \r\n );\r\n }\r\n}\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IGroup, IGroupDelivery, IGroups, IHeader, IList, IOrderHistoryViewProps, IOrderInformation, ISalesOrder } from '@msdyn365-commerce-modules/order-management';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport const OrderHistoryOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n receiptId,\r\n channelName,\r\n createdDate,\r\n count,\r\n amount,\r\n channelReferenceId\r\n}) => (\r\n \r\n {channelName}\r\n {salesId}\r\n {receiptId}\r\n {createdDate}\r\n {count}\r\n {amount}\r\n {channelReferenceId}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroupDelivery: React.FC = ({ deliveryProps, heading, count, processing, address, trackingInfo }) => (\r\n \r\n {heading}\r\n {count}\r\n {processing}\r\n {address}\r\n {trackingInfo}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n {salesLine.salesLine}\r\n \r\n ))}\r\n \r\n )}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\r\n \r\n {heading}\r\n {orderCountLabel}\r\n {extraActions}\r\n \r\n);\r\n\r\nexport const OrderHistorySalesOder: React.FC = ({ salesOrderProps, orderInfomation, groups, orderDetailsLink, expandProductsButton }) => (\r\n \r\n {orderInfomation && }\r\n {groups && }\r\n {expandProductsButton}\r\n {orderDetailsLink}\r\n \r\n);\r\n\r\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\r\n \r\n {salesOrders && salesOrders.map((salesOrder, index) => )}\r\n \r\n);\r\n\r\nconst OrderHistoryView: React.FC = ({\r\n orderHistoryProps,\r\n header,\r\n alert,\r\n loading,\r\n emptyMessage,\r\n backToShoppingLink,\r\n list,\r\n table,\r\n moreButton\r\n}) => (\r\n \r\n {header && }\r\n {loading}\r\n {alert && (\r\n <>\r\n {alert}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {emptyMessage && (\r\n \r\n {emptyMessage}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {list && }\r\n {table}\r\n {moreButton && moreButton}\r\n \r\n);\r\n\r\nexport default OrderHistoryView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IMediaGalleryThumbnailItemViewProps, IMediaGalleryThumbnailsViewProps, IMediaGalleryViewProps } from '@msdyn365-commerce-modules/media-gallery/src/modules/media-gallery/../..';\r\nimport MsDyn365 from \"@msdyn365-commerce/core\";\r\n\r\nconst MediaGalleryView: React.FC = props => {\r\n const { CarouselProps, Thumbnails, MediaGallery, Modal } = props;\r\n //Change images to jpg\r\n if (MsDyn365.isBrowser) {\r\n const images = document.querySelectorAll('.ms-inline-zoom img');\r\n const formatJpgString = '&f=jpg';\r\n if (images && images.length) {\r\n images.forEach(img => img.src = img.src.indexOf(formatJpgString) === -1 ? img.src + '&f=jpg' : img.src);\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n {Modal}\r\n {_renderThumbnails(Thumbnails)}\r\n \r\n );\r\n};\r\n\r\nconst _renderThumbnails = (thumbnails: IMediaGalleryThumbnailsViewProps): JSX.Element => {\r\n const { ThumbnailsContainerProps, SingleSlideCarouselComponentProps, items } = thumbnails;\r\n\r\n return (\r\n \r\n \r\n {items && items.map(_renderThumbnailItem)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderThumbnailItem = (thumbnail: IMediaGalleryThumbnailItemViewProps): JSX.Element => {\r\n const { ThumbnailItemContainerProps, Picture } = thumbnail;\r\n\r\n return (\r\n \r\n {Picture}\r\n \r\n );\r\n};\r\n\r\nexport default MediaGalleryView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React from 'react';\n\nexport const SignUpText: React.FC<{ text: string }> = (props: { text: string }) => {\n return

    {props.text}

    ;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, * as Msdyn365 from '@msdyn365-commerce/core';\nimport { issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { SignUpText } from './components/loyalty-sign-up-small-components';\nimport { ILoyaltySignUpData } from './loyalty-sign-up.data';\nimport { ILoyaltySignUpProps } from './loyalty-sign-up.props.autogenerated';\n\nexport interface IAccountLoyaltyJoinState {\n clicked: boolean;\n}\nexport interface ILoyaltySignUpViewProps extends ILoyaltySignUpProps {\n LoyaltySignUp: IModuleProps;\n heading: React.ReactNode;\n memberHeading: React.ReactNode;\n signInLink: React.ReactElement;\n signUpText: React.ReactElement;\n signUpButton: React.ReactElement;\n detailsLink: React.ReactElement;\n termsLink: React.ReactElement;\n loading: boolean;\n infoMessageBar?: React.ReactNode;\n}\n\n/**\n *\n * LoyaltySignUp component.\n * @extends {React.Component>}\n */\n@observer\nclass LoyaltySignUp extends React.Component, IAccountLoyaltyJoinState> {\n private readonly telemetryContent?: ITelemetryContent;\n private readonly loyaltySignInAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltySignUpAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltyDetailsLinkAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltyTermsLinkAttributes: Msdyn365.IDictionary | undefined;\n\n constructor(props: ILoyaltySignUpProps) {\n super(props);\n this.state = { clicked: false };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignIn);\n this.loyaltySignInAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.SignUp;\n this.loyaltySignUpAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyDetailLink;\n this.loyaltyDetailsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsLink;\n this.loyaltyTermsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n }\n\n public shouldComponentUpdate(nextProps: ILoyaltySignUpProps, nextState: IAccountLoyaltyJoinState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config: { className, heading, memberHeading },\n resources,\n context: {\n actionContext,\n request: {\n user: { signInUrl, isAuthenticated }\n }\n },\n data\n } = this.props;\n\n const termsUrl = Msdyn365.getUrlSync('loyaltyTerms', actionContext);\n let loyaltyJoinUrl = `${Msdyn365.getUrlSync('loyaltyJoin', actionContext)}?joiningLoyalty=true`;\n if (MsDyn365.isBrowser) {\n loyaltyJoinUrl = `${window.location.origin}${loyaltyJoinUrl}`;\n }\n const signInurl = `${signInUrl}?ru=${loyaltyJoinUrl}`;\n const completeClass = classname('ms-loyalty-signup', className);\n const loyaltyCard = data.loyaltyCard;\n const hasLoyaltyAccount = loyaltyCard.result && loyaltyCard.result.CardTenderTypeValue !== undefined;\n const customerInformation = data.customerInformation?.result;\n\n const invalidAsyncCustomerState: boolean =\n (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (customerInformation?.IsAsyncCustomer || false);\n const viewProps = {\n ...this.props,\n className: completeClass,\n LoyaltySignUp: {\n moduleProps: this.props,\n className: completeClass\n },\n infoMessageBar: invalidAsyncCustomerState && (\n \n ),\n loading: !this.props.context.request.params.isEditor && loyaltyCard?.status === 'LOADING',\n heading: !hasLoyaltyAccount && heading && heading.text && (\n \n ),\n memberHeading: hasLoyaltyAccount && memberHeading && memberHeading.text && (\n \n ),\n signInLink: !isAuthenticated && (\n \n ),\n signUpText: !hasLoyaltyAccount && ,\n signUpButton: !hasLoyaltyAccount && isAuthenticated && (\n \n {this.props.resources.joinLoyaltyButtonText}\n \n ),\n detailsLink: hasLoyaltyAccount && (\n \n {this.props.resources.viewLoyaltyPageText}\n \n ),\n termsLink: !hasLoyaltyAccount && (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public handleMemberHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.memberHeading!.text = event.target.value);\n\n private readonly _issueLoyalty = () => {\n if (this.props.context.request.user.isAuthenticated && !this.state.clicked) {\n this.setState({ clicked: true });\n const input = new IssueLoyaltyInput(this.props.context.request.apiSettings);\n\n issueLoyalty(input, this.props.context.actionContext)\n .then(() => {\n if (MsDyn365.isBrowser) {\n window.location.assign(Msdyn365.getUrlSync('loyalty', this.props.context.actionContext) || '');\n }\n })\n .catch((error: Error) => {\n this.setState({ clicked: false });\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to issue loyalty card');\n });\n }\n };\n}\n\nexport default LoyaltySignUp;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IHistogramItemViewProps, IRatingsHistogramViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst RatingsHistogramView: React.FC = props => {\n const { heading, histogramItems, histogramProps, moduleProps } = props;\n return (\n \n {heading}\n \n {histogramItems.map(item => {\n return histogramItem(item);\n })}\n \n \n );\n};\n\nconst histogramItem = (props: IHistogramItemViewProps) => {\n return (\n \n {props.starLabel}\n {props.bar}\n {props.percentage}\n \n );\n};\n\nexport default RatingsHistogramView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageSettings, Image, RichTextComponent } from '@msdyn365-commerce/core';\nimport { IWriteReviewData, IWriteReviewViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IWriteReviewProps } from '../definition-extensions/write-review.ext.props.autogenerated';\n\n/**\n * Render Product Image.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductImage = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const primaryImageSource = props.data.product.result?.PrimaryImageUrl;\n const imageUrl = generateImageUrl(primaryImageSource, props.context.request.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=111&h=111&m=6', w: 111, h: 111 },\n sm: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n md: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n lg: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n xl: { q: 'w=130&h=130&m=6', w: 130, h: 130 }\n },\n lazyload: true,\n cropFocalRegion: true\n };\n\n return (\n \n );\n};\n\n/**\n * Render Product Description.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductDescription = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const product = props.data.product.result;\n return (\n \n
    {renderProductImage(props)}
    \n
    \n
    {product?.Name}
    \n
    {product?.ItemId}
    \n
    \n
    \n );\n};\n\n/**\n * Create Write Review Modal.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst createReviewModal = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const { resources, moduleProps, reviewModal } = props;\n\n return (\n \n {reviewModal.modalHeader}\n \n \n \n {renderProductDescription(props)}\n \n
    {resources.selectRatingLabel}
    \n {reviewModal.rating}\n
    \n
    \n \n {resources.reviewTitleLabel}\n {reviewModal.titleInput}\n \n \n {resources.reviewTextLabel}\n {reviewModal.textInput}\n \n {reviewModal.privacyPolicyUrl}\n {reviewModal.error}\n
    \n
    \n \n {reviewModal.submitButton}\n {reviewModal.cancelButton}\n \n
    \n );\n};\n\n/**\n * WriteReview view.\n * @param props - WriteReview ViewProps.\n * @returns WriteReview view module.\n */\nconst WriteReviewView: React.FC> = props => {\n const { config, heading, signInMessage, signInButton, modalToggle, moduleProps } = props;\n const { paragraph } = config;\n const isAuthenticated = props.context.request.user.isAuthenticated;\n const text = paragraph && ;\n\n return (\n \n {heading}\n {!isAuthenticated ? (\n <>\n {signInMessage}\n {signInButton}\n \n ) : (\n <>\n {text}\n {modalToggle}\n {createReviewModal(props)}\n \n )}\n \n );\n};\n\nexport default WriteReviewView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IIframeViewProps } from './iframe';\n\n/**\n *\n * IFrameView component.\n * @extends {React.PureComponent}\n */\nexport class IFrameView extends React.PureComponent {\n public render(): JSX.Element | null {\n const { Heading, IframeContainer, IFrame, alert, cookieConsentAccepted } = this.props;\n\n return (\n \n {alert}\n {cookieConsentAccepted && cookieConsentAccepted ? (\n <>\n {Heading}\n {IFrame}\n \n ) : null}\n \n );\n }\n}\nexport default IFrameView;\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport { ICloneCartViewProps } from './clone-cart';\r\n\r\nexport default (props: ICloneCartViewProps) => {\r\n return
    {props.modal}
    ;\r\n};\r\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IContentBlockAdditionalContentItemViewProps,\n IContentBlockAdditionalContentViewProps,\n IContentBlockViewProps\n} from '@msdyn365-commerce-modules/content-block';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IContentBlockAdditionalContentViewProps) => {\n return (\n \n {additionalContent.additionalContentItems?.map((item: IContentBlockAdditionalContentItemViewProps) => {\n return (\n <>\n {item.heading}\n \n {item.text}\n {item.links}\n \n \n );\n })}\n \n );\n};\n\n/**\n * Render View.\n * @param props - The view props.\n * @returns -The JSX Element.\n */\nconst contentBlockView: React.FC = props => {\n const {\n contentBlockContainer,\n imageContainer,\n detailsContainer,\n title,\n text,\n links,\n image,\n contentBlockAnchorTag,\n imageLink,\n imageAriaLabel,\n additionalContent\n } = props;\n\n // @ts-expect-error HTML element need to be clear on run time.\n const hasImage: boolean = image.props.src;\n const imageClass: string = hasImage ? `${detailsContainer.className} withImage` : `${detailsContainer.className} withoutImage`;\n\n if (imageLink) {\n return (\n \n \n {image}\n \n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n }\n return (\n \n {image}\n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n};\n\nexport default contentBlockView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHelp,\n IOrderDetailsViewProps,\n IOrderInformation,\n IOrderSummary,\n IPaymentMethods,\n ISalesLine\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n createdDate,\n count,\n amount,\n channelReferenceId,\n channelName,\n channelAddress\n}) => (\n \n {channelName}\n {channelAddress}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\n \n {salesLine}\n {buyAgainButton}\n {errors}\n \n);\n\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\n \n {heading}\n {count}\n \n);\n\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines, isCashAndCarryTransaction }) => (\n \n {delivery && }\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n \n {!isCashAndCarryTransaction && salesLine.salesStatus}\n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\n \n \n ))}\n \n )}\n {!delivery.showTimeslot && address}\n {delivery.showTimeslot && (\n \n {address}\n {delivery.pickupDateTimeslot}\n \n )}\n \n \n);\n\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderSummary: React.FC = ({\n orderSummaryProps,\n heading,\n subtotal,\n shipping,\n tax,\n totalAmount,\n earnedPoints\n}) => (\n \n {heading}\n {subtotal}\n {shipping}\n {tax}\n {totalAmount}\n {earnedPoints}\n \n);\n\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderDetailsView: React.FC = ({\n moduleProps,\n viewModes,\n tableViewActions,\n table,\n placedBy,\n heading,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {placedBy}\n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {tableViewActions}\n {viewModes}\n {table}\n {groups && }\n \n {orderSummary && }\n {payment && }\n \n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IReviewModalViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\r\nimport { IReportReviewModalViewProps, IReviewCardViewProps, IReviewsListState, IReviewsListViewProps } from '@msdyn365-commerce-modules/ratings-reviews/src/modules/reviews-list';\r\nimport { IModuleProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst ReviewsListview: React.FC = props => {\r\n const {\r\n averageRating,\r\n filterByDropdown,\r\n moduleProps,\r\n noReviewsMessage,\r\n noReviewsWithFilterMessage,\r\n pageControls,\r\n refineReviewsProps,\r\n reportReviewModal,\r\n reviewsListProps,\r\n reviewCards,\r\n reviewCount,\r\n reviewModal,\r\n sortByDropdown,\r\n state,\r\n userReview\r\n } = props;\r\n\r\n if (!userReview && reviewCards.length === 0 && !state.isFilterApplied) {\r\n return (\r\n {noReviewsMessage}\r\n );\r\n }\r\n\r\n return (\r\n \r\n {averageRating}\r\n {reviewCount}\r\n \r\n {sortByDropdown}\r\n {filterByDropdown}\r\n \r\n \r\n {userReview && buildReviewCard(userReview)}\r\n {reviewCards.map(review => {\r\n return buildReviewCard(review);\r\n })}\r\n \r\n { reviewCards.length === 0 && state.isFilterApplied && noReviewsWithFilterMessage}\r\n {pageControls}\r\n {createReviewModal(reviewModal, moduleProps)}\r\n {createReportModal(reportReviewModal, state)}\r\n \r\n );\r\n};\r\n\r\nconst buildReviewCard = (props: IReviewCardViewProps) => {\r\n return (\r\n \r\n \r\n {props.rating}\r\n {props.name}\r\n {props.date}\r\n \r\n \r\n \r\n {props.reviewTitle}\r\n {props.reviewText}\r\n \r\n \r\n {props.responseName}\r\n {props.responseDate}\r\n {props.responseText}\r\n \r\n \r\n {props.ratingHelpfulLabel}\r\n {props.like}\r\n {props.dislike}\r\n {props.edit}\r\n {props.report}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst createReviewModal = (props: IReviewModalViewProps, moduleProps: IModuleProps): JSX.Element => {\r\n return (\r\n \r\n {props.modalHeader}\r\n \r\n \r\n \r\n {props.rating}\r\n {props.ratingLabel}\r\n \r\n \r\n {props.titleLabel}\r\n {props.titleInput}\r\n \r\n \r\n {props.textLabel}\r\n {props.textInput}\r\n \r\n {props.privacyPolicyUrl}\r\n {props.error}\r\n \r\n \r\n \r\n {props.submitButton}\r\n {props.cancelButton}\r\n \r\n \r\n );\r\n};\r\n\r\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\r\n return (\r\n \r\n \r\n {state.reported ? props.headerSubmitted : props.header}\r\n \r\n \r\n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\r\n \r\n \r\n {state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ReviewsListview;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync } from '@msdyn365-commerce/core';\nimport { IB2bRequestsStatusViewProps } from '@msdyn365-commerce-modules/account-management';\nimport { Button, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { IB2bRequestsStatusProps, IB2bRequestsStatusResources } from '../definition-extensions/b2b-requests-status.ext.props.autogenerated';\n\n/**\n * B2b Request status View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\nconst B2bRequestsStatusView: React.FC> = props => {\n const { b2bRequestsStatus, heading, table } = props;\n const { continueShoppingButtonTitle } = props.resources;\n const initialCount = 0;\n\n if (props.data.operationRequests.result?.length === initialCount) {\n return (\n \n {heading}\n \n
    \n

    {props.resources.headingForEmptyRequestStatus}

    \n

    {props.resources.textForEmptyRequestStatus}

    \n \n \n {continueShoppingButtonTitle}\n \n \n
    \n
    \n
    \n );\n }\n return (\n \n {heading}\n {table}\n \n );\n};\n\nexport default B2bRequestsStatusView;\n","'use strict';\nvar global = require('../internals/global');\n\nmodule.exports = global;\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILoyaltySignUpViewProps } from './loyalty-sign-up';\n\nconst LoyaltySignUpView: React.FC = props => {\n const {\n LoyaltySignUp,\n heading,\n memberHeading,\n signInLink,\n signUpText,\n signUpButton,\n detailsLink,\n termsLink,\n loading,\n infoMessageBar\n } = props;\n\n if (loading) {\n props.context.telemetry.error('LoyaltySignUp data is empty, module wont render');\n return null;\n }\n\n return (\n \n {infoMessageBar}\n {memberHeading}\n {heading}\n {detailsLink}\n {signUpText}\n {termsLink}\n {signUpButton}\n {signInLink}\n \n );\n};\n\nexport default LoyaltySignUpView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AsyncResult } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header';\nimport { Collapse, Drawer, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nconst headerView: React.FC = props => {\n const { HeaderTag, HeaderContainer, HeaderTopBarContainer, Divider } = props;\n return (\n \n \n \n {props.navIcon}\n {props.logo}\n {_renderReactFragment(props.search)}\n {props.preferredStore}\n {_renderAccountBlock(props, false)}\n {props.wishListIconDesktop}\n \n {props.cartIcon}\n {_renderReactFragment(props.siteOptions)}\n \n {_renderCollapseMenu(props)}\n {_renderReactFragment(props.menuBar)}\n \n \n );\n};\n\nfunction _renderCollapseMenu(props: IHeaderViewProps): JSX.Element | null {\n const { Divider, MobileMenuLinksContainer, mobileMenuCollapsed } = props;\n return (\n \n \n {_renderReactFragment(props.search)}\n {_renderMobileAccountBlock(props, true)}\n {props.wishListIconMobile}\n {props.siteOptions}\n \n \n {_renderReactFragment(props.menuBar)}\n \n );\n}\n\nconst renderCustomerName = (accountInformation: AsyncResult): React.ReactChild => {\n const customer = accountInformation && accountInformation.result;\n return <>{customer ? customer.FirstName || customer.Name : ''};\n};\n\nfunction _renderMobileAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const { AccountInfoDropdownParentContainer, signOutLink, signInLink, data, accountLinks } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n 'ms-header__drawer',\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n\n if (accountLinks) {\n return (\n \n
    \n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n
    \n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n return null;\n}\n\nfunction _renderAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const {\n AccountInfoDropdownParentContainer,\n AccountInfoDropdownPopoverConentContainer,\n accountInfoDropdownButton,\n signOutLink,\n signInLink,\n accountLinks\n } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n if (AccountInfoDropdownPopoverConentContainer) {\n return (\n \n {accountInfoDropdownButton}\n \n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n \n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n\n return null;\n}\n\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\n return (\n <>\n {items && items.length > 0\n ? items.map((slot: React.ReactNode, index: number) => {\n return {slot};\n })\n : null}\n \n );\n}\n\nexport default headerView;\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IHistogramItemViewProps, IRatingsHistogramViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst RatingsHistogramView: React.FC = props => {\r\n const { heading, histogramItems, histogramProps, moduleProps } = props;\r\n return (\r\n \r\n {heading}\r\n \r\n {histogramItems.map(item => {\r\n return histogramItem(item);\r\n })}\r\n \r\n \r\n );\r\n};\r\n\r\nconst histogramItem = (props: IHistogramItemViewProps) => {\r\n return (\r\n \r\n {props.starLabel}\r\n {props.bar}\r\n {props.percentage}\r\n \r\n );\r\n};\r\n\r\nexport default RatingsHistogramView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport {\r\n IBuyboxAddToCartViewProps,\r\n IBuyboxAddToOrderTemplateViewProps,\r\n IBuyboxAddToWishlistViewProps,\r\n IBuyboxCallbacks,\r\n IBuyboxData,\r\n IBuyboxFindInStoreViewProps,\r\n IBuyboxKeyInPriceViewProps,\r\n IBuyboxProductConfigureDropdownViewProps,\r\n IBuyboxProductConfigureViewProps,\r\n IBuyboxProductQuantityViewProps,\r\n IBuyboxProps,\r\n IBuyboxShopSimilarLookViewProps,\r\n IBuyboxState,\r\n IBuyboxViewProps\r\n} from '@msdyn365-commerce-modules/buybox';\r\nimport { ITelemetryContent, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { DropdownQuantity } from '../../../utilities/dropdown-quantity';\r\n\r\nimport {\r\n IBuyboxProps as IBuyboxExtentionProps,\r\n IBuyboxResources as IBuyboxExtentionResources\r\n} from '../definition-extensions/buybox.ext.props.autogenerated';\r\nimport MsDyn365 from '@msdyn365-commerce/core';\r\nimport { ProductDimensionValue, ProductDimensionValueInventoryAvailability } from '@msdyn365-commerce/retail-proxy';\r\nimport { IProductDimensionsWithAvailabilitiesFull, ProductDimensionFull } from '@msdyn365-commerce/commerce-entities';\r\nimport { useEffect, useState } from 'react';\r\n\r\ninterface IDimensionForSelectedVariant extends ProductDimensionFull, IProductDimensionsWithAvailabilitiesFull {}\r\n\r\nconst colorRecords: Record = {};\r\nconst colorInStock: string[] = [];\r\nconst _strikeSVG =\r\n 'data:image/svg+xml;utf8,' +\r\n \"\" +\r\n \"\";\r\n\r\nconst updateSwatchTitles = (dimensions: IDimensionForSelectedVariant[]) => {\r\n const dimensionValues = dimensions.map(d => d.DimensionValues);\r\n const dimensionValuesFlat: ProductDimensionValue[] = [];\r\n // @ts-ignore This comes up in the JS as a mobx array but in the ts it's not. So we have to flatten it against ts rules.\r\n dimensionValues.forEach(dv => dimensionValuesFlat.push(...dv));\r\n const swatches = document.querySelectorAll('.msc-swatch-container>button');\r\n if (swatches && swatches.length) {\r\n for (let i = 0; i < swatches.length; i++) {\r\n const title = swatches[i].getAttribute('title');\r\n if (title) {\r\n const idx = dimensionValuesFlat.findIndex(dv => dv?.Value === title);\r\n if (idx > -1) {\r\n const extensionProperty = dimensionValuesFlat[idx]?.ExtensionProperties?.find(ep => ep.Key === 'swatch-title');\r\n if (extensionProperty) {\r\n swatches[i].setAttribute('title', extensionProperty.Value?.StringValue || title);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nfunction checkAvailability(p: ProductDimensionValueInventoryAvailability) {\r\n return p.PhysicalAvailableInventoryLevelCode === 'AVAIL';\r\n}\r\n\r\nconst BuyboxView: React.FC> = props => {\r\n const {\r\n ModuleProps,\r\n MediaGalleryContainerProps,\r\n ProductInfoContainerProps,\r\n addToCart,\r\n addToOrderTemplate,\r\n addToWishlist,\r\n telemetryContent,\r\n configure,\r\n /* description,*/ findInStore,\r\n quantity,\r\n price,\r\n title,\r\n rating,\r\n callbacks,\r\n state,\r\n resources,\r\n inventoryLabel,\r\n shopSimilarLook,\r\n keyInPrice,\r\n quantityLimitsMessages,\r\n max,\r\n shopSimilarDescription,\r\n unitOfMeasure,\r\n data\r\n } = props;\r\n const [previousSelection, setPreviousSelection] = useState(false);\r\n useEffect(() => {\r\n if (document) {\r\n //For best friends + other carousel items\r\n const imgCollect2 = document.querySelectorAll(\r\n '.msc-product__dimensions img.msc-swatch-container__item__image'\r\n );\r\n if (imgCollect2.length > 0) {\r\n imgCollect2.forEach(node => {\r\n // check if colour is completely sold out, if yes, color should remain crossed out\r\n if (node.classList.contains('msc-swatch-container__item__disabled')) {\r\n const thisColour = node.src;\r\n node.src = _strikeSVG;\r\n node.style.backgroundImage = \"url('\" + thisColour + \"')\";\r\n //colorRecords[node.title] === undefined ? '' : \"url('\" + colorRecords[node.title] + \"')\";\r\n node.style.maxWidth = '20px';\r\n }\r\n // if (\r\n // node.classList.contains('msc-swatch-container__item__selected') &&\r\n // !node.classList.contains('msc-swatch-container__item__disabled')\r\n // ) {\r\n // const thisColour = node.src;\r\n // node.src = thisColour;\r\n // }\r\n });\r\n }\r\n }\r\n /* */\r\n }, [data]);\r\n\r\n if (MsDyn365.isBrowser) {\r\n const dimensions = data.productDimensions.result;\r\n if (dimensions) {\r\n updateSwatchTitles(dimensions);\r\n if (dimensions[0].dimensionValuesWithInventory !== undefined) {\r\n var availableColors = dimensions[0].dimensionValuesWithInventory.filter(checkAvailability);\r\n availableColors.forEach(c => {\r\n if (c.DimensionValue?.Value !== undefined && !colorInStock.includes(c.DimensionValue?.Value)) {\r\n colorInStock.push(c.DimensionValue.Value);\r\n }\r\n });\r\n }\r\n }\r\n\r\n const colorlabel = document.querySelector('.ms-buybox__dropdown-quantity-label[for=\"ms-buybox__dropown-quantity-input-1\"]');\r\n const colorswatches = colorlabel?.nextElementSibling;\r\n var colornamecontainer = document.createElement('span');\r\n\r\n if (colorlabel && colorlabel.children && colorlabel.children.length === 1) {\r\n colorlabel?.append(colornamecontainer);\r\n if (colorswatches) {\r\n colorswatches.addEventListener('click', e => {\r\n let target = e.target as HTMLElement;\r\n if (\r\n target.classList.contains('msc-swatch-container__item') \r\n // &&\r\n // !target.classList.contains('msc-swatch-container__item__disabled')\r\n ) {\r\n let colorname = target.title;\r\n colornamecontainer.innerText = `: ${colorname}`;\r\n }\r\n });\r\n }\r\n }\r\n if (colornamecontainer) {\r\n colornamecontainer.innerText = `: ${props.context.request.query?.color ?? ''}`;\r\n }\r\n /* Task 1217 & 1312 */\r\n\r\n const selectedSwatch = document.querySelectorAll(\r\n '.ms-buybox__dropdown .msc-swatch-container img.msc-swatch-container__item__selected'\r\n );\r\n if (selectedSwatch[0] && colorInStock.includes(selectedSwatch[0].title)) {\r\n const imgCollect = document.querySelectorAll(\r\n '.ms-buybox__dropdown .msc-swatch-container img.msc-swatch-container__item__image'\r\n );\r\n if (imgCollect.length > 0) {\r\n imgCollect.forEach((node, i) => {\r\n if (colorRecords[node.title] === undefined && !node.src.includes('svg+xml')) {\r\n colorRecords[node.title] = node.src;\r\n }\r\n // check if colour is completely sold out, if yes, color should remain crossed out\r\n let b: boolean = colorInStock.includes(node.title);\r\n if (node.classList.contains('msc-swatch-container__item__disabled') || !b) {\r\n node.src = _strikeSVG;\r\n node.style.backgroundImage =\r\n colorRecords[node.title] === undefined ? '' : \"url('\" + colorRecords[node.title] + \"')\";\r\n node.style.maxWidth = '40px';\r\n }\r\n if (\r\n node.classList.contains('msc-swatch-container__item__selected') &&\r\n !node.classList.contains('msc-swatch-container__item__disabled') &&\r\n b\r\n ) {\r\n node.src = colorRecords[node.title];\r\n }\r\n });\r\n }\r\n if (colorInStock.length > 0) {\r\n const inventoryLabel = document.querySelector('.ms-buybox__inventory-info');\r\n const selectedTitle = document.querySelector('.msc-swatch-container__item__selected');\r\n // hide 'OOS' text when out of stock size is selected\r\n if (inventoryLabel !== null && selectedTitle !== null) {\r\n inventoryLabel.style.display = colorInStock.includes(selectedTitle.title) ? 'none' : 'block';\r\n }\r\n }\r\n const swatchContainers = document.querySelectorAll('.msc-swatch-container');\r\n if (swatchContainers) {\r\n for (let i = 0; i < swatchContainers.length; i++) {\r\n const children = swatchContainers[i].children;\r\n let hasSelected = false;\r\n for (let j = 0; j < children.length; j++) {\r\n if (children[j] && children[j].classList.contains('msc-swatch-container__item__selected')) {\r\n hasSelected = true;\r\n break;\r\n }\r\n }\r\n if (!hasSelected) {\r\n // page loaded for first time, if swatch hasn't been selected: select the first available OR first\r\n let childToSelect = children[0] as HTMLElement;\r\n for (let j = 0; j < children.length; j++) {\r\n if (!children[j].classList.contains('msc-swatch-container__item__disabled')) {\r\n childToSelect = children[j] as HTMLElement;\r\n hasSelected = true;\r\n break;\r\n }\r\n }\r\n childToSelect.click();\r\n } else if (!previousSelection) {\r\n const sizeSwatches = document.querySelectorAll(\r\n '.ms-buybox__dropdown .msc-swatch-container button.msc-swatch-container__item'\r\n );\r\n\r\n // 1312 - size swatches fix\r\n let sizeSelected = false;\r\n if (sizeSwatches.length > 0) {\r\n sizeSwatches.forEach(size => {\r\n if (\r\n size.classList.contains('msc-swatch-container__item__selected') &&\r\n !size.classList.contains('msc-swatch-container__item__disabled')\r\n ) {\r\n sizeSelected = true;\r\n }\r\n });\r\n if (!sizeSelected) {\r\n let clicked = false;\r\n sizeSwatches.forEach(size => {\r\n if (!size.classList.contains('msc-swatch-container__item__disabled') && !clicked) {\r\n size.click();\r\n clicked = true;\r\n setPreviousSelection(true);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n const imgCollect = document.querySelectorAll(\r\n '.ms-buybox__dropdown .msc-swatch-container img.msc-swatch-container__item__image'\r\n );\r\n if (imgCollect.length > 0) {\r\n imgCollect.forEach(node => {\r\n if (colorRecords[node.title] === undefined && !node.src.includes('svg+xml')) {\r\n colorRecords[node.title] = node.src;\r\n }\r\n // check if colour is completely sold out, if yes, color should remain crossed out\r\n let b: boolean = colorInStock.includes(node.title);\r\n if (node.classList.contains('msc-swatch-container__item__disabled') || !b) {\r\n node.src = _strikeSVG;\r\n node.style.backgroundImage =\r\n colorRecords[node.title] === undefined ? '' : \"url('\" + colorRecords[node.title] + \"')\";\r\n node.style.maxWidth = '40px';\r\n }\r\n if (\r\n node.classList.contains('msc-swatch-container__item__selected') &&\r\n !node.classList.contains('msc-swatch-container__item__disabled') &&\r\n b\r\n ) {\r\n node.src = colorRecords[node.title];\r\n }\r\n });\r\n }\r\n }\r\n\r\n /* */\r\n }\r\n\r\n return (\r\n \r\n {props.mediaGallery}\r\n \r\n
    \r\n {title}\r\n {addToWishlist && addToWishlist.button}\r\n
    \r\n\r\n {price}\r\n {unitOfMeasure}\r\n {addToWishlist && addToWishlist.errorBlock}\r\n\r\n {/*{props.bulkPurchaseLink}*/}\r\n {/* {description} */}\r\n
    \r\n {configure && _renderConfigure(configure)}\r\n {keyInPrice && _renderKeyInPrice(keyInPrice)}\r\n\r\n {inventoryLabel}\r\n\r\n {/*
    \r\n {addToCart && addToCart.errorBlock}\r\n
    */}\r\n
    \r\n {quantity &&\r\n _renderQuantity(quantity, callbacks, props, state, resources, quantityLimitsMessages, max, telemetryContent)}\r\n {_renderCartAndActions(addToCart, addToOrderTemplate, addToWishlist)}\r\n
    \r\n\r\n {_renderTextBlock(props.slots.textBlocks)}\r\n {props.slots && props.slots.pdpspecs}\r\n {rating}\r\n\r\n {findInStore && _renderFindInStore(findInStore)}\r\n {_renderSocialShare(props.slots && props.slots.socialShare)}\r\n {shopSimilarLook && _renderShopSimilarItem(shopSimilarLook)}\r\n {shopSimilarDescription && _renderShopSimilarItem(shopSimilarDescription)}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nconst _renderTextBlock = (textBlocks: React.ReactNode[]): JSX.Element | undefined => {\r\n if (!textBlocks || textBlocks.length === 0) {\r\n return undefined;\r\n }\r\n\r\n return <>{textBlocks[0]};\r\n};\r\n\r\nconst _renderSocialShare = (socialShare: React.ReactNode[]): JSX.Element | undefined => {\r\n if (!socialShare || socialShare.length === 0) {\r\n return undefined;\r\n }\r\n\r\n return <>{socialShare[0]};\r\n};\r\n\r\nconst _renderCartAndActions = (\r\n addToCart?: IBuyboxAddToCartViewProps,\r\n addToOrderTemplate?: IBuyboxAddToOrderTemplateViewProps,\r\n addToWishlist?: IBuyboxAddToWishlistViewProps\r\n): JSX.Element | undefined => {\r\n if (!addToCart && !addToWishlist) {\r\n return undefined;\r\n }\r\n\r\n return (\r\n
    \r\n {/* {addToCart && addToCart.errorBlock} */}\r\n {addToOrderTemplate && addToOrderTemplate.errorBlock}\r\n
    \r\n {addToCart && addToCart.button}\r\n {addToOrderTemplate && addToOrderTemplate.button}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nconst _renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\r\n const { ContainerProps, dropdowns } = configure;\r\n\r\n return {dropdowns.map(_renderConfigureDropdown)};\r\n};\r\n\r\nconst _renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n {select}\r\n \r\n );\r\n};\r\n\r\nconst _renderFindInStore = (findInStore: IBuyboxFindInStoreViewProps): JSX.Element => {\r\n const { ContainerProps, storeSelector, heading, /* description,*/ errors, button, modal, productPickupOptionList } = findInStore;\r\n\r\n return (\r\n \r\n {storeSelector}\r\n {heading}\r\n {productPickupOptionList}\r\n {/* {description} */}\r\n {errors}\r\n {button}\r\n {modal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * On Change function.\r\n * @param callbacks -Callbacks.\r\n * @returns Update quantity.\r\n */\r\nconst onChangeHandler = (callbacks: IBuyboxCallbacks) => (newValue: number): boolean => {\r\n if (callbacks.updateQuantity) {\r\n return callbacks.updateQuantity(newValue);\r\n }\r\n return true;\r\n};\r\n\r\nconst _renderQuantity = (\r\n quantityComponent: IBuyboxProductQuantityViewProps,\r\n callbacks: IBuyboxCallbacks,\r\n props: IBuyboxProps,\r\n state: IBuyboxState,\r\n extentionResources: IBuyboxExtentionResources,\r\n quantityLimitsMessages: React.ReactNode,\r\n max: number | undefined,\r\n telemetryContent?: ITelemetryContent\r\n): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, errors } = quantityComponent;\r\n const { quantity } = state;\r\n\r\n var dropdownOptions: number[] = [];\r\n if (!max) {\r\n max = 10;\r\n }\r\n\r\n for (let i = 1; i <= max; i++) {\r\n dropdownOptions.push(i);\r\n }\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n\r\n \r\n\r\n {/* */}\r\n {quantityLimitsMessages}\r\n \r\n );\r\n};\r\n\r\nconst _renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\r\n\r\n return (\r\n \r\n {heading}\r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst _renderShopSimilarItem = (shopSimilarItem: IBuyboxShopSimilarLookViewProps): JSX.Element => {\r\n const { ContainerProps, errors, input } = shopSimilarItem;\r\n\r\n return (\r\n \r\n {errors}\r\n {input}\r\n \r\n );\r\n};\r\n\r\nexport default BuyboxView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { debounce } from 'lodash';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { IdropdownQuantityProps } from './DropdownQuantity.props';\r\n\r\ninterface IdropdownQuantityState {\r\n currentInput: number;\r\n isUpdating: boolean;\r\n}\r\n\r\n/**\r\n * Quantity Component - This component is used to add or remove quantity.\r\n */\r\n@observer\r\nexport default class DropdownQuantity extends React.PureComponent {\r\n public static defaultProps: Partial = {\r\n min: 1\r\n };\r\n\r\n private readonly _minValue: number;\r\n\r\n private readonly inputRef: React.RefObject = React.createRef();\r\n\r\n constructor(props: IdropdownQuantityProps) {\r\n super(props);\r\n this.state = { currentInput: props.currentCount ?? 1, isUpdating: false };\r\n this._handleChange = this._handleChange.bind(this);\r\n this._minValue = this.props.min ?? DropdownQuantity.defaultProps.min!;\r\n }\r\n\r\n public static getDerivedStateFromProps(props: Readonly, state: IdropdownQuantityState): IdropdownQuantityState {\r\n const nextState = { ...state };\r\n\r\n if (props.disabled && !state.isUpdating) {\r\n nextState.isUpdating = true;\r\n }\r\n\r\n if (!props.disabled && state.isUpdating) {\r\n nextState.currentInput = props.currentCount ?? 1;\r\n nextState.isUpdating = false;\r\n }\r\n return nextState;\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { max, options } = this.props;\r\n\r\n const currentValue = this.state.currentInput;\r\n\r\n return (\r\n \r\n {options.map(n => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n );\r\n }\r\n\r\n private _handleChange(e: React.ChangeEvent): void {\r\n let currentValue = Number.parseInt(e.target.value, 10);\r\n if (!Number.isNaN(currentValue)) {\r\n currentValue = Math.min(this.props.max, Math.max(this._minValue, currentValue));\r\n }\r\n this.setState({ currentInput: currentValue }, this._handleUpdateState);\r\n }\r\n\r\n /**\r\n * Updates html element and triggers callbacks whenever state is changed.\r\n */\r\n private readonly _handleUpdateState = () => {\r\n debounce(() => {\r\n if (Number.isNaN(this.state.currentInput)) {\r\n return;\r\n }\r\n\r\n // Due of usage debouncer, we may ignore onChange return value\r\n this.props.onChange && this.props.onChange(this.state.currentInput);\r\n\r\n const inputElement =\r\n this.inputRef && this.inputRef.current && this.inputRef.current instanceof HTMLInputElement && this.inputRef.current;\r\n if (inputElement) {\r\n inputElement.setAttribute('aria-valuenow', this.state.currentInput.toString());\r\n inputElement.setAttribute('value', this.state.currentInput.toString());\r\n }\r\n }, 200)();\r\n };\r\n\r\n private readonly _validateMin = (): void => {\r\n if (Number.isNaN(this.state.currentInput)) {\r\n this.setState({ currentInput: this._minValue }, this._handleUpdateState);\r\n } else {\r\n const currentValue = Math.min(this.props.max, Math.max(this._minValue, this.state.currentInput));\r\n if (currentValue !== this.state.currentInput) {\r\n this.setState({ currentInput: currentValue }, this._handleUpdateState);\r\n } else {\r\n this._handleUpdateState();\r\n }\r\n }\r\n };\r\n}\r\n","'use strict';\nvar path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nexport interface ILoyaltyTermsModalProps {\n resources: ILoyaltyTermsModalResources;\n returnRef: React.RefObject | undefined;\n checked: boolean;\n isOpen: boolean;\n terms: React.ReactNode;\n telemetryContent?: ITelemetryContent;\n onToggle(): void;\n onSubmit(): void;\n onCheck(): void;\n}\n\nexport interface ILoyaltyTermsModalResources {\n loyaltyTermsHeading: string;\n loyaltyAgreeToTerms: string;\n joinLoyaltyTermsText: string;\n cancelLoyaltyTermsText: string;\n}\n\nexport interface ILoyaltyTermsModalViewProps {\n modal: INodeProps;\n modalHeader: INodeProps;\n modalFooter: INodeProps;\n modalBody: INodeProps;\n heading: React.ReactElement;\n cancelButton: React.ReactElement;\n submitButton: React.ReactElement;\n terms: React.ReactNode;\n checkbox: React.ReactElement;\n agreeText: React.ReactElement;\n agreeSection: INodeProps;\n}\n\nexport const LoyaltyTermsModal = (props: ILoyaltyTermsModalProps): ILoyaltyTermsModalViewProps => {\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.LoyaltyTermsCancel);\n const loyaltyTermCancelAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsSubmit;\n const loyaltyTermSubmitAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsAgree;\n const loyaltyTermCheckboxAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n return {\n modal: {\n tag: Modal,\n className: 'ms-loyalty-terms__modal',\n toggle: props.onToggle,\n applicationNode: 'renderPage',\n isOpen: props.isOpen,\n returnFocusRef: props.returnRef\n },\n modalHeader: { tag: ModalHeader, className: 'ms-loyalty-terms__modal-header', toggle: props.onToggle },\n modalFooter: { tag: ModalFooter, className: 'ms-loyalty-terms__modal-footer' },\n modalBody: { tag: ModalBody, className: 'ms-loyalty-terms__modal-body' },\n cancelButton: (\n \n ),\n submitButton: (\n \n {props.resources.joinLoyaltyTermsText}\n \n ),\n heading:

    {props.resources.loyaltyTermsHeading}

    ,\n terms: props.terms,\n agreeSection: { className: 'ms-loyalty-terms__agree-section' },\n checkbox: (\n \n ),\n agreeText:

    {props.resources.loyaltyAgreeToTerms}

    \n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync } from '@msdyn365-commerce/core';\nimport { getLoyaltyCardAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { GetLoyaltyCardInput, issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport * as React from 'react';\n\nimport { ILoyaltyTermsModalViewProps, LoyaltyTermsModal } from './components/loyalty-terms-modal';\nimport { ILoyaltyTermsData } from './loyalty-terms.data';\nimport { ILoyaltyTermsProps } from './loyalty-terms.props.autogenerated';\n\nexport interface ILoyaltyTermsState {\n checked: boolean;\n clicked: boolean;\n isModalOpen: boolean;\n}\nexport interface ILoyaltyTermsViewProps extends ILoyaltyTermsProps {\n LoyaltyTerms: IModuleProps;\n modalToggle: React.ReactElement;\n modal: ILoyaltyTermsModalViewProps;\n loading: boolean;\n}\n\n/**\n *\n * LoyaltyTerms component.\n * @extends {React.Component>}\n */\nclass LoyaltyTerms extends React.Component, ILoyaltyTermsState> {\n private readonly toggleRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n public constructor(props: ILoyaltyTermsProps) {\n super(props);\n this._toggle = this._toggle.bind(this);\n this._submit = this._submit.bind(this);\n this._checkboxChecked = this._checkboxChecked.bind(this);\n this.toggleRef = React.createRef();\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n let search = this.props.context.request.url.requestUrl.search;\n let isJoining = false;\n if (search) {\n search = search.substring(1);\n const qsps = search.split('&');\n for (const qsp of qsps) {\n const splitQsp = qsp.split('=');\n isJoining = splitQsp[0] === 'joiningLoyalty' && splitQsp[1] === 'true';\n if (isJoining) {\n break;\n }\n }\n }\n\n this.state = {\n isModalOpen: isJoining,\n checked: false,\n clicked: false\n };\n }\n\n public shouldComponentUpdate(nextProps: ILoyaltyTermsProps, nextState: ILoyaltyTermsState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config: { className, hideToggle },\n resources,\n slots: { serviceTerms },\n data: { loyaltyCard },\n context: {\n request: {\n user: { isAuthenticated }\n }\n }\n } = this.props;\n const completeClass = classname('ms-loyalty-terms', className);\n\n const viewProps = {\n ...this.props,\n className: completeClass,\n LoyaltyTerms: {\n moduleProps: this.props,\n className: completeClass\n },\n loading: loyaltyCard.status === 'LOADING',\n modalToggle: hideToggle !== true && (\n \n ),\n modal:\n isAuthenticated &&\n loyaltyCard.result &&\n loyaltyCard.result.CardNumber === undefined &&\n LoyaltyTermsModal({\n resources: { ...resources },\n returnRef: this.toggleRef,\n checked: this.state.checked,\n isOpen: this.state.isModalOpen,\n terms: serviceTerms,\n telemetryContent: this.telemetryContent,\n onToggle: this._toggle,\n onSubmit: this._submit,\n onCheck: this._checkboxChecked\n })\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _toggle(): void {\n this.setState({ isModalOpen: !this.state.isModalOpen, checked: false });\n }\n\n private _submit(): void {\n if (this.props.context.request.user.isAuthenticated && !this.state.clicked) {\n this.setState({ clicked: true });\n const input = new IssueLoyaltyInput(this.props.context.request.apiSettings);\n\n issueLoyalty(input, this.props.context.actionContext)\n .then(card => {\n if (this.props.config.redirectToLoyalty) {\n window.location.assign(getUrlSync('loyalty', this.props.context.actionContext) || '');\n } else {\n getLoyaltyCardAsync({ callerContext: this.props.context.actionContext }, card.CardNumber || '')\n .then(fullCard => {\n this.props.context.actionContext.update(\n new GetLoyaltyCardInput(this.props.context.request.apiSettings),\n fullCard\n );\n })\n .catch((error: Error) => {\n this.props.context.actionContext.update(\n new GetLoyaltyCardInput(this.props.context.request.apiSettings),\n card\n );\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to fetch loyalty card');\n });\n }\n })\n .catch((error: Error) => {\n this.setState({ clicked: false });\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to issue loyalty card');\n });\n }\n }\n\n private _checkboxChecked(): void {\n this.setState({ checked: !this.state.checked });\n }\n}\n\nexport default LoyaltyTerms;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n ICartLineItemViewProps,\n ICartlinesViewProps,\n ICartResources,\n ICartViewProps,\n IOrderSummaryErrors\n} from '@msdyn365-commerce-modules/cart';\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Node,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICartProps as ICartExtensionProps } from '../definition-extensions/cart.ext.props.autogenerated';\n\n/**\n * Toggle Bopis Function.\n * @param cartLine -CartLine.\n * @param isBopisSelected -Boolean.\n * @returns Toggle Bopis.\n */\nconst toggleBopisHandler = (cartLine: ICartlinesViewProps, isBopisSelected: boolean) => () => {\n cartLine.pickUpInStore?.callbacks.toggleBopis(!isBopisSelected);\n};\n\n/**\n * Change Store Function.\n * @param cartLine -CartLine.\n * @returns Toggle Bopis.\n */\nconst onChangeStoreHandler = (cartLine: ICartlinesViewProps) => () => {\n cartLine.pickUpInStore?.callbacks.toggleBopis(true);\n};\n\n/**\n * Render Bopis block.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderBopisBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for BOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const {\n shipInsteadDisplayText,\n shipToAddressDisplayText,\n pickItUpDisplayText,\n pickUpAtStoreWithLocationText,\n changeStoreDisplayText\n } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n
    \n {isBopisSelected ? (\n {pickUpAtStoreWithLocationText}\n ) : (\n {shipToAddressDisplayText}\n )}\n
    \n {isBopisSelected && (\n
    \n {cartLine.pickUpInStore.orgUnitName}\n \n
    \n )}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n
    \n );\n};\n\n/**\n * Render Bopis block.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderGroupBopisBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for GroupBOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const { changeStoreDisplayText, shipInsteadDisplayText, pickItUpDisplayText } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n <>\n {isBopisSelected ? (\n \n ) : null}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n \n );\n};\n\n/**\n * Render Cart Lines.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - FLag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartLine = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element => {\n if (cartLine.error === resources.outOfStockErrorMessage) {\n return (\n \n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n if (isMultiplePickUp) {\n return (\n \n {renderGroupBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n if (cartLine.addToOrderTemplate) {\n return (\n \n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n return (\n \n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n};\n\n/**\n * Render Cart Lines.\n * @param cartLines - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartlinesInternal = (\n cartLines: ICartlinesViewProps[],\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n return cartLines.map((cartLine, index) => {\n const itemIndex = index;\n return (\n
    \n {cartLine.cartline}\n \n {isMultiplePickUp\n ? null\n : renderBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {renderCartLine(cartLine, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\n \n
    \n );\n });\n};\n\n/**\n * Render Cart Lines.\n * @param props - The cart line props.\n * @param cartLines - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param waitingComponent - Waiting component element.\n * @param cartLoadingStatus - Cart loading status string.\n * @param isCartDataResult - Flag to check if there is cart data.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartlines = (\n props: ICartViewProps & ICartExtensionProps<{}>,\n cartLines: ICartlinesViewProps[] | undefined,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n waitingComponent: React.ReactNode,\n cartLoadingStatus: string,\n isCartDataResult: boolean,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n if (cartLoadingStatus) {\n return <>{cartLoadingStatus};\n }\n\n // Props.CartlinesWrapper is only required on cart lines and when multiple pickup mode is disabled. This is also required to handle the empty cart styling.\n // Else, empty cart multiple pickup mode is disabled falls under the other cart line wrapper which is creating issue with Empty cart scenario.\n if (cartLines) {\n return props.multiplePickUpEnabled ? (\n renderCartlinesInternal(cartLines, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)\n ) : (\n \n {renderCartlinesInternal(cartLines, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\n \n );\n }\n\n return isCartDataResult ? (\n
    \n
    {props.slots.emptyCart}
    \n
    \n ) : (\n <>{waitingComponent}\n );\n};\n\n/**\n * Render Cart Lines group title.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param count - Count of products.\n * @returns JSX Element.\n */\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, resources: ICartResources, count: number) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { itemLabel, itemsLabel } = resources;\n const itemCountOne: number = 1;\n const suffix = count > itemCountOne ? itemsLabel : itemLabel;\n const countTitle = `(${count} ${suffix})`;\n return (\n <>\n \n {isBopisSelected ? (\n

    \n {cartLine.pickUpInStore?.deliveryOption}\n {', '}\n {cartLine.pickUpInStore?.orgUnitName}\n

    \n ) : null}\n

    {countTitle}

    \n
    \n \n );\n};\n\n/**\n * Render Cart Lines group title.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param count - Count of products.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartLinesGroupHeader = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n count: number,\n emailDeliveryModeCode?: string\n) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { pickUpText, shippingText, emailshippingText, payInvoicesDisplayText } = resources;\n let groupTitle: string;\n\n groupTitle = isBopisSelected ? pickUpText : shippingText;\n if (cartLine.data && cartLine.data.cartline.IsInvoiceLine) {\n groupTitle = payInvoicesDisplayText;\n } else if (!StringExtensions.isNullOrEmpty(emailDeliveryModeCode)) {\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailshippingText : groupTitle;\n }\n\n return (\n <>\n
    \n

    \n

    {groupTitle}

    \n {renderCartLinesGroupTitle(cartLine, resources, count)}\n
    \n \n );\n};\n\n/**\n * Returns count of products.\n * @param cartLine - The cart line view props.\n * @returns Number of products.\n */\nconst countItems = (cartLine: ICartlinesViewProps[]): number => {\n let countItem = 0;\n const defaultItemCount = 0;\n countItem = cartLine.reduce((count, item) => {\n return count + (item.data?.cartline.Quantity ?? defaultItemCount);\n }, defaultItemCount);\n return countItem;\n};\n\n/**\n * Render Cart Lines group.\n * @param props - The cart line view props.\n * @param resources - Module resource strings.\n * @returns JSX Element.\n */\nconst renderCartLinesGroup = (props: ICartViewProps & ICartExtensionProps<{}>, resources: ICartResources): JSX.Element | undefined => {\n if (props.cartLinesGroup && ArrayExtensions.hasElements(props.cartLinesGroup)) {\n return (\n
    \n {props.cartLinesGroup.map(cartlines => {\n return (\n
    \n {renderCartLinesGroupHeader(\n cartlines[0],\n resources,\n countItems(cartlines),\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n {renderCartlines(\n props,\n cartlines,\n props.resources,\n props.storeSelector,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult,\n props.telemetryContent,\n props.multiplePickUpEnabled,\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n
    \n );\n })}\n
    \n );\n }\n return props.cartDataResult ? (\n
    \n
    {props.slots.emptyCart}
    \n
    \n ) : (\n <>{props.waitingComponent}\n );\n};\n\n/**\n * Render error block.\n * @param errorData - Error component.\n * @returns JSX Element.\n */\nconst renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\n if (!errorData || !ArrayExtensions.hasElements(errorData.errors)) {\n return null;\n }\n return (\n \n {errorData.header}\n {errorData.errors}\n \n );\n};\n\n/**\n * Render invoice summary.\n * @param invoiceSummaryLines - Invoice summary component.\n * @param orderSummaryItems - Order summary component.\n * @param props - The module props.\n * @returns JSX Element.\n */\nconst renderInvoiceSummarylines = (\n invoiceSummaryLines: IInvoiceSummaryLines | undefined,\n orderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!invoiceSummaryLines) {\n props.context.telemetry.error('InvoiceSummary content is empty, module wont render');\n return null;\n }\n return (\n \n {invoiceSummaryLines.invoices}\n {invoiceSummaryLines.giftCard}\n {invoiceSummaryLines.loyalty}\n {invoiceSummaryLines.orderTotal}\n \n );\n};\n\n/**\n * Render order summary.\n * @param orderSummaryLines - Order summary component.\n * @param orderSummaryItems - Order summary items component.\n * @param props - The module props.\n * @returns JSX Element.\n */\nconst renderOrderSummarylines = (\n orderSummaryLines: IOrderSummaryLines | undefined,\n orderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!orderSummaryLines) {\n props.context.telemetry.error('OrderSummary content is empty, module wont render');\n return null;\n }\n return (\n \n {orderSummaryLines.subtotal}\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\n {orderSummaryLines.shipping}\n {orderSummaryLines.otherCharge}\n {orderSummaryLines.tax}\n {orderSummaryLines.orderTotal}\n \n );\n};\n\n/**\n * Render error block.\n * @param promotions - The module view props.\n * @returns JSX Element.\n */\nconst renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\n return (\n <>\n \n {promotions.promotionMessage}\n {promotions.promotionSeeAllLink}\n {promotions.promotionDialog}\n \n \n );\n};\n\n/**\n * Render order summary checkout.\n * @param props - The module view props.\n * @returns JSX Element.\n */\nconst renderOrderSummaryCheckout = (props: ICartViewProps): JSX.Element | undefined => {\n return (\n \n {props.cart?.hasInvoiceLine ? null : props.promoCode}\n \n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.expressCheckoutButton && ArrayExtensions.hasElements(props.expressCheckoutButton) ? (\n {props.expressCheckoutButton}\n ) : null}\n \n {props.createTemplateFromCartButton}\n \n );\n};\n\n/**\n * Render order summary checkout button.\n * @param props - The module view props.\n * @returns JSX Element.\n */\nconst renderOrderSummaryCheckoutButton = (props: ICartViewProps): JSX.Element | undefined => {\n return (\n \n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n \n );\n};\n\n/**\n * Render cart view.\n * @param props - The module view props.\n * @returns JSX Element.\n */\nconst CartView: React.FC> = (props: ICartViewProps & ICartExtensionProps<{}>) => {\n const totalItemCountOne: number = 1;\n const updatedTitle = (\n

    \n {props.resources.cartTitle}\n \n {` (${Number(props.cart?.totalItemsInCart)} ${props.cart?.totalItemsInCart !== totalItemCountOne ? 'items' : 'item'})`}\n \n

    \n );\n return (\n
    \n {props.checkoutBlockedDueToUnavailableFunds}\n {updatedTitle}\n
    {props.orderSummaryLineitems?.orderTotal}
    \n {renderOrderSummaryCheckoutButton(props)}\n {!props.cart?.hasInvoiceLine && props.promotionOptions && renderPromotions(props.promotionOptions)}\n {props.cart?.hasInvoiceLine || props.multiplePickUpEnabled\n ? renderCartLinesGroup(props, props.resources)\n : renderCartlines(\n props,\n props.cartlines,\n props.resources,\n props.storeSelector,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult\n )}\n {props.orderSummaryHeading && (\n \n \n {props.orderSummaryHeading}\n {props.cart?.hasInvoiceLine\n ? renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\n : renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\n {renderErrorBlock(props.OrderSummaryErrors)}\n \n {renderOrderSummaryCheckout(props)}\n \n )}\n {props.storeSelector}\n
    \n );\n};\n\nexport default CartView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Alert, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICookieComplianceViewProps } from './cookie-compliance';\n\nconst CookieComplianceView: React.FC = props => {\n const { CookieComplianceBanner, AlertProps, Content, acceptButton, text, links } = props;\n\n return (\n \n \n \n {text}\n {links}\n \n {acceptButton}\n \n \n );\n};\nexport default CookieComplianceView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AsyncResult, Customer, ProductSearchResult, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, ObjectExtensions, Random } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { getCatalogId } from '@msdyn365-commerce/core';\nimport { ProductComparisonItem, ProductComparisonState } from '../product-comparison-state';\nimport { IProductComparisonButtonProps } from './product-comparison-button.props.autogenerated';\n\n/**\n * Represents product comparison view props.\n */\nexport interface IProductComparisonButtonViewProps extends IProductComparisonButtonProps<{}> {\n moduleProps: IModuleProps;\n productComparisonButton?: React.ReactNode;\n productComparisonPreview?: React.ReactNode;\n}\n\n/**\n * Represents the data which is required for the product comparison button to be rendered.\n */\nexport interface IProductComparisonButtonData {\n accountInformation?: AsyncResult;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonFullProps extends IProductComparisonButtonProps {\n product: ProductSearchResult | SimpleProduct;\n catalogId: number;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonState {\n canProductBeAddedToProductComparison: boolean;\n currentProductsCount: number;\n comparisonItemId: string;\n}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductComparisonButton extends React.PureComponent {\n private static _productComparisonPreview?: React.ReactNode;\n\n private readonly _className: string;\n\n private readonly _instanceId: string;\n\n private readonly _shouldUsePreview: boolean;\n\n private static _renderProductComparisonPreview(props: IProductComparisonButtonFullProps): React.ReactNode {\n if (!ProductComparisonButton._productComparisonPreview && ArrayExtensions.hasElements(props.slots.productComparisonPreview)) {\n ProductComparisonButton._productComparisonPreview = props.slots.productComparisonPreview[0];\n }\n\n return ProductComparisonButton._productComparisonPreview;\n }\n\n private static _renderProductComparisonButton(\n className: string,\n buttonText: string | undefined,\n title: string,\n onClickHandler?: () => void\n ): React.ReactNode {\n const isDisabled = ObjectExtensions.isNullOrUndefined(onClickHandler);\n let content: React.ReactNode;\n if (buttonText) {\n content = (\n <>\n
    \n
    {buttonText}
    \n \n );\n }\n return (\n \n );\n }\n\n public constructor(props: IProductComparisonButtonFullProps) {\n super(props);\n\n this._className = 'ms-product-comparison-button';\n this._instanceId = `${this._className}-${this.props.id}-${Random.Guid.generateGuid()}`;\n\n this.state = this._getNewState();\n\n this._shouldUsePreview = !ProductComparisonButton._productComparisonPreview;\n ProductComparisonButton._renderProductComparisonPreview(this.props);\n }\n\n public componentDidMount(): void {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).listModifiedEvent.subscribe(\n {\n instanceId: this._instanceId,\n\n /**\n * Updates the state in case the state for the particular product was changed.\n */\n handler: () => {\n this.setState(this._getNewState());\n }\n }\n );\n }\n\n public getSnapshotBeforeUpdate(previousProps: Readonly): void {\n if (previousProps.product.RecordId !== this.props.product.RecordId || previousProps.catalogId !== this.props.catalogId) {\n this.setState(this._getNewState());\n }\n }\n\n public componentWillUnmount(): void {\n ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).listModifiedEvent.unsubscribe(this._instanceId);\n }\n\n public render(): React.ReactNode | null {\n const isConsentGiven = this.props.context.request.cookies.isConsentGiven();\n if (!isConsentGiven) {\n return null;\n }\n\n const viewProps: IProductComparisonButtonViewProps = {\n ...this.props,\n moduleProps: {\n moduleProps: this.props,\n className: this._className\n }\n };\n\n if (this._shouldUsePreview) {\n viewProps.productComparisonPreview = ProductComparisonButton._productComparisonPreview;\n }\n\n const buttonClassName = this.props.config.shouldDisplayText ? `${this._className}__button` : `${this._className}__icon`;\n\n if (!this.state.canProductBeAddedToProductComparison) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.removeFromComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n classnames(`${buttonClassName}__removing`, buttonClassName),\n buttonText,\n this.props.resources.removeFromComparisonButtonText,\n this._removeFromProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n const productsLimit = this._getProductsLimit();\n if (!ObjectExtensions.isNullOrUndefined(productsLimit) && productsLimit <= this.state.currentProductsCount) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonLimitReachedButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonLimitReachedButtonText\n );\n return this.props.renderView(viewProps);\n }\n\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonButtonText,\n this._addToProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n private _getProductsLimit(): number | undefined | null {\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n if (viewport === 'xs' || viewport === 'sm') {\n return this.props.context.app.config.productComparisonMobileProductsLimit;\n }\n return this.props.context.app.config.productComparisonDesktopProductsLimit;\n }\n\n /**\n * Adds current product to a product comparison list.\n */\n private readonly _addToProductComparison: () => void = () => {\n const item = new ProductComparisonItem(this.props.product.RecordId, this.props.catalogId);\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).addItem(item);\n };\n\n /**\n * Removes current product from the product comparison list where it was added earlier.\n */\n private readonly _removeFromProductComparison: () => void = () => {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).removeItemById(\n this.state.comparisonItemId\n );\n };\n\n private _getProdutComparisonDataByCatalogId(): ProductComparisonItem[] {\n const items = ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).items;\n const catalogId = getCatalogId(this.props.context.request);\n const productByCatalogId = items?.filter(product => product.catalogId === catalogId) ?? [];\n return productByCatalogId;\n }\n\n /**\n * Retrieves the state of the component based on the comparison data.\n * @returns State object for the component.\n */\n private readonly _getNewState: () => IProductComparisonButtonState = () => {\n const comparisonItemId = ProductComparisonItem.getItemId(this.props.product.RecordId, this.props.catalogId);\n const products = this._getProdutComparisonDataByCatalogId();\n return {\n comparisonItemId,\n canProductBeAddedToProductComparison: !ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).hasItemById(comparisonItemId),\n currentProductsCount: products.length\n };\n };\n}\n\nexport default ProductComparisonButton;\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { Button, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { INileSubscribeConfig, INileSubscribeProps } from './nile-subscribe.props.autogenerated';\r\nimport { subscribeToMailChimpAsync } from '../../actions/DataActionExtension.g';\r\nimport { Alert } from 'reactstrap';\r\n\r\ninterface ISubscribeState {\r\n showResponseMessage: boolean;\r\n isError: boolean;\r\n inputValue: string;\r\n}\r\n\r\n/**\r\n * Subscribe view props.\r\n */\r\nexport interface ISubscribeViewProps extends INileSubscribeProps {\r\n subscribe: IModuleProps;\r\n subscribeContainer: INodeProps;\r\n heading: React.ReactNode;\r\n text: React.ReactNode;\r\n submitButton?: INodeProps;\r\n submitButtonLabelText?: string;\r\n subscribeForm?: INodeProps;\r\n emailInput?: INodeProps;\r\n handleText(): void;\r\n handleSubscribe(): void;\r\n responseMessage: React.ReactNode;\r\n}\r\n\r\n/**\r\n * Subscribe component.\r\n * @extends {React.PureComponent>}\r\n */\r\nexport class Subscribe extends React.PureComponent, ISubscribeState> {\r\n private readonly _emailAddressInputRef: React.RefObject;\r\n\r\n public constructor(props: ISubscribeViewProps) {\r\n super(props);\r\n const {\r\n context: {\r\n request: {\r\n user: { emailAddress }\r\n }\r\n }\r\n } = props;\r\n this._emailAddressInputRef = React.createRef();\r\n\r\n this.state = {\r\n showResponseMessage: false,\r\n isError: false,\r\n inputValue: emailAddress || ''\r\n };\r\n this.hideResponseMessage = this.hideResponseMessage.bind(this);\r\n }\r\n\r\n private hideResponseMessage() {\r\n this.setState({ showResponseMessage: false });\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { heading, paragraph } = this.props.config;\r\n\r\n const moduleClassName = 'ms-subscribe';\r\n\r\n const doSubscribe = async () => {\r\n const {\r\n context: { actionContext },\r\n config: { useDoubleOptIn, audience }\r\n } = this.props;\r\n const { inputValue } = this.state;\r\n if (inputValue) {\r\n try {\r\n const response = await subscribeToMailChimpAsync(\r\n { callerContext: actionContext },\r\n inputValue,\r\n useDoubleOptIn ?? false,\r\n audience\r\n );\r\n this.setState({\r\n showResponseMessage: true,\r\n isError: !response.Status\r\n });\r\n } catch (exception) {\r\n this.setState({\r\n showResponseMessage: true,\r\n isError: true\r\n });\r\n }\r\n }\r\n };\r\n\r\n const renderSubscriptionResultMessage = () => {\r\n const { showResponseMessage, isError } = this.state;\r\n const {\r\n config: { useDoubleOptIn },\r\n resources: { subscriptionSuccessMessage, subscriptionOptInMessage, subscriptionFailMessage }\r\n } = this.props;\r\n if (!showResponseMessage) {\r\n return null;\r\n }\r\n if (isError) {\r\n return {subscriptionFailMessage};\r\n } else if (useDoubleOptIn) {\r\n return {subscriptionOptInMessage};\r\n } else {\r\n return {subscriptionSuccessMessage};\r\n }\r\n };\r\n\r\n const renderSubscriptionResultAlert = () => {\r\n const { showResponseMessage, isError } = this.state;\r\n\r\n return (\r\n \r\n {renderSubscriptionResultMessage()}\r\n \r\n );\r\n };\r\n\r\n const handleInputValueChange = (e: React.ChangeEvent) => {\r\n this.setState({ inputValue: e.target.value });\r\n };\r\n\r\n const subscribeParagraph = paragraph && (\r\n \r\n );\r\n\r\n const subscribeHeading = heading && (\r\n \r\n );\r\n const viewProps = {\r\n ...this.props,\r\n handleText: this.handleTextChange,\r\n handleSubscribe: doSubscribe,\r\n subscribe: {\r\n moduleProps: this.props,\r\n className: moduleClassName\r\n },\r\n subscribeContainer: {\r\n className: 'ms-subscribe__details'\r\n },\r\n heading: subscribeHeading,\r\n text: subscribeParagraph,\r\n subscribeForm: {\r\n className: 'ms-subscribe__details__form',\r\n tag: 'form',\r\n 'aria-label': this.props.resources.subscribeFormAriaLabel,\r\n name: 'subscribeForm',\r\n role: 'form',\r\n autoComplete: 'off',\r\n onSubmit: doSubscribe\r\n },\r\n emailInput: {\r\n className: 'ms-subscribe__details__form__email',\r\n tag: 'input',\r\n ref: this._emailAddressInputRef,\r\n type: 'email',\r\n 'aria-label': this.props.resources.subscribeFormEmailAriaLabel,\r\n placeholder: this.props.resources.subscribeEmailPlaceholderText,\r\n value: this.state.inputValue,\r\n onChange: handleInputValueChange\r\n },\r\n submitButton: {\r\n className: 'ms-subscribe__details__form__submit',\r\n tag: Button,\r\n 'aria-label': this.props.resources.subscribeFormSubmitAriaLabel,\r\n type: 'submit',\r\n title: this.props.resources.subscribeButtonLabel\r\n },\r\n submitButtonLabelText: this.props.resources.subscribeButtonLabel,\r\n responseMessage: renderSubscriptionResultAlert(),\r\n inputValue: this.state.inputValue\r\n };\r\n\r\n return this.props.renderView(viewProps);\r\n }\r\n\r\n /**\r\n * Handle text change.\r\n * @param event - The dialog that is allowed to remain open.\r\n */\r\n public handleTextChange = (event: Msdyn365.ContentEditableEvent): void => {\r\n this.props.config.heading!.text = event.target.value;\r\n };\r\n\r\n /**\r\n * Handle paragraph change.\r\n * @param event - The dialog that is allowed to remain open.\r\n */\r\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent): void => {\r\n this.props.config.paragraph = event.target.value;\r\n };\r\n}\r\n\r\nexport default Subscribe;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, getTelemetryObject, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n ISignInItem,\n ISignInLoading,\n ISignInLocalAccount,\n ISignInSocialAccount,\n ISignInSocialItem,\n ISignInB2BAccount,\n ISignInB2BItem,\n ISignInViewProps,\n ISignInButton\n} from '@msdyn365-commerce-modules/account-management';\n\nimport { ISignInProps, ISignInResources } from '../definition-extensions/sign-in.ext.props.autogenerated';\n\nconst LocalAccount: React.FC = ({ localAccount, items, forgetPassword, disclaimer, error, signInButton }) => {\n return (\n \n {items &&\n items.map((item: ISignInItem) => {\n return (\n \n {item.label}\n {item.error}\n {item.input}\n \n );\n })}\n {forgetPassword}\n {disclaimer}\n {error}\n {signInButton}\n \n );\n};\n\nconst SocialAccount: React.FC = ({ socialAccounts, items }) => {\n return (\n \n {items &&\n items.map((item: ISignInSocialItem) => {\n return (\n \n {item.image}\n {item.text}\n \n );\n })}\n \n );\n};\n\nconst B2BAccount: React.FC = ({ socialAccounts, items }) => {\n return (\n \n {items &&\n items.map((item: ISignInB2BItem) => {\n return (\n item && (\n \n {item.text}\n \n )\n );\n })}\n \n );\n};\n\nconst SignInLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\nconst SignInButton: React.FC = ({ id, className, text, ariaLabel, telemetryContent, onClick }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n {text}\n \n );\n};\n\nconst signUpButton: React.FC> = (\n props: ISignInViewProps & ISignInProps\n) => {\n const {\n resources,\n telemetry,\n friendlyName,\n context: {\n request: { telemetryPageName }\n }\n } = props;\n const telemetryContent = getTelemetryObject(telemetryPageName!, friendlyName, telemetry);\n const attributes = {\n href: '#'\n };\n\n return (\n \n );\n};\n\nconst SignInView: React.FC> = props => {\n const {\n signIn,\n viewState,\n loading,\n defaultAADConainer,\n aadConainer,\n signInSection,\n signUpSection,\n signInSectionHeading,\n signInLocalAccount,\n signInSocialAccount,\n signUpSectionHeading,\n signInB2BAccount,\n signUpDescription\n } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n \n {signInSectionHeading}\n {LocalAccount(signInLocalAccount)}\n {SocialAccount(signInSocialAccount)}\n \n \n {signUpSectionHeading}\n {signUpDescription}\n {signUpButton(props)}\n \n
    \n
    \n or\n
    \n {B2BAccount(signInB2BAccount)}\n
    \n
    \n
    \n );\n};\n\nexport default SignInView;\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ISubscribeViewProps } from './nile-subscribe';\r\n\r\n/**\r\n * View component.\r\n * @param props - The view properties.\r\n * @returns - Returns nothing.\r\n */\r\nexport const subscribeView: React.FC = props => {\r\n const {\r\n subscribe,\r\n subscribeContainer,\r\n heading,\r\n text,\r\n subscribeForm,\r\n emailInput,\r\n submitButton,\r\n handleSubscribe,\r\n responseMessage\r\n } = props;\r\n\r\n /**\r\n * Override form action and button action below.\r\n * @param event - The form event.\r\n */\r\n const onSubmit = (event: React.FormEvent): void => {\r\n event.preventDefault();\r\n handleSubscribe();\r\n };\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {text}\r\n \r\n \r\n \r\n {props.submitButtonLabelText}\r\n \r\n \r\n \r\n {responseMessage}\r\n \r\n );\r\n};\r\n\r\nexport default subscribeView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILoyaltyTermsViewProps } from './loyalty-terms';\n\nconst LoyaltyTermsView: React.FC = props => {\n const { LoyaltyTerms, modalToggle, modal, loading } = props;\n\n return !loading && modal ? (\n \n {modalToggle}\n \n {modal.heading}\n \n {modal.terms}\n \n {modal.checkbox}\n {modal.agreeText}\n \n \n \n {modal.submitButton}\n {modal.cancelButton}\n \n \n \n ) : null;\n};\n\nexport default LoyaltyTermsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHelp,\n IOrderDetailsViewProps,\n IOrderInformation,\n IOrderSummary,\n IPaymentMethods,\n ISalesLine\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n createdDate,\n count,\n amount,\n channelReferenceId,\n channelName,\n channelAddress\n}) => (\n \n {channelName}\n {channelAddress}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\n \n {salesLine}\n {buyAgainButton}\n {errors}\n \n);\n\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\n \n {heading}\n {count}\n \n);\n\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines, isCashAndCarryTransaction }) => (\n \n {delivery && }\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n \n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\n \n {!isCashAndCarryTransaction && salesLine.salesStatus}\n \n ))}\n \n )}\n {!delivery.showTimeslot && address}\n {delivery.showTimeslot && (\n \n {address}\n {delivery.pickupDateTimeslot}\n \n )}\n \n \n);\n\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderSummary: React.FC = ({\n orderSummaryProps,\n heading,\n subtotal,\n shipping,\n tax,\n totalAmount,\n earnedPoints\n}) => (\n \n {heading}\n {subtotal}\n {shipping}\n {tax}\n {totalAmount}\n {earnedPoints}\n \n);\n\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderDetailsView: React.FC = ({\n moduleProps,\n viewModes,\n tableViewActions,\n table,\n placedBy,\n heading,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {placedBy}\n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {tableViewActions}\n {viewModes}\n {table}\n {groups && }\n \n {orderSummary && }\n {payment && }\n \n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IProductComparisonButtonViewProps } from './product-comparison-button';\n\n/**\n * Represents product comparison button view.\n * @param props - View props for product comparison button.\n * @returns Functional component of product comparison button.\n */\nexport const ProductComparisonButtonViewFunctionalComponent: React.FC = props => {\n const { productComparisonButton, productComparisonPreview } = props;\n\n return (\n \n {productComparisonButton}\n {productComparisonPreview}\n \n );\n};\n\nexport default ProductComparisonButtonViewFunctionalComponent;\n"],"sourceRoot":""}