{"version":3,"sources":["webpack:///./src/themes/colsolare/views/sign-in.view.tsx?e5a0","webpack:///./src/themes/columbiacrest/views/sign-in.view.tsx?91c9","webpack:///src/modules/business-sign-up/components/sign-up-button.tsx?37a3","webpack:///src/modules/business-sign-up/components/sign-up-error.tsx?fbb9","webpack:///src/modules/business-sign-up/components/sign-up-input.tsx?4011","webpack:///src/modules/business-sign-up/components/sign-up-label.tsx?2025","webpack:///src/modules/business-sign-up/business-sign-up.tsx?df21","webpack:///src/modules/tab-item/tab-item.view.tsx?76f0","webpack:///src/modules/breadcrumb/breadcrumb.view.tsx?58b4","webpack:///./src/themes/spring-valley-vineyard/views/sign-in.view.tsx?58e6","webpack:///src/modules/iframe/iframe.tsx?d14a","webpack:///./src/modules/family-and-friends/components/family-and-friends-code-item.tsx?6c3c","webpack:///./src/modules/family-and-friends/family-and-friends.tsx?53c8","webpack:///./src/modules/sort-and-filter-container/sort-and-filter-container.tsx?0bd0","webpack:///./src/themes/intrinsic-wine-co/views/sign-in.view.tsx?584b","webpack:///src/modules/back-top-footer/back-top-footer.tsx?0e13","webpack:///./src/themes/north-star/views/sign-in.view.tsx?85ec","webpack:///src/modules/footer-category/footer-category.tsx?b7b8","webpack:///src/modules/breadcrumb/components/link.tsx?b7b8","webpack:///src/modules/breadcrumb/components/separator.tsx?7c35","webpack:///src/modules/breadcrumb/breadcrumb.tsx?3387","webpack:///src/modules/accordion-item/accordion-item.view.tsx?b04f","webpack:///src/modules/accordion-item/accordion-item.tsx?fc54","webpack:///src/modules/fabrikam/views/ratings-histogram.view.tsx?96ae","webpack:///src/modules/account-customer-balance-tile/account-customer-balance-tile.view.tsx?955a","webpack:///./src/modules/wine-finder-form/actions/get-wine-api-token.ts?9772","webpack:///./src/modules/wine-finder-form/actions/get-wine-filterable-class.ts?e00f","webpack:///./src/modules/wine-finder-form/actions/get-wine-mapper-class.ts?89dd","webpack:///./src/modules/wine-finder-form/actions/get-wine-international-location.ts?4a50","webpack:///./src/modules/wine-finder-form/actions/get-wine-location.ts?9374","webpack:///./src/modules/wine-finder-form/actions/get-wine-products.ts?bdfc","webpack:///./src/modules/wine-finder-form/wine-finder-dropdown-menu.tsx?9026","webpack:///./src/modules/wine-finder-form/wine-finder-query-location.tsx?e1b8","webpack:///./src/modules/wine-finder-form/actions/get-wine-countries.ts?0ce4","webpack:///./src/modules/wine-finder-form/wine-finder-query-location-international.tsx?9b3d","webpack:///./src/modules/wine-finder-form/wine-finder-form.props.autogenerated.ts?7bde","webpack:///./src/modules/wine-finder-form/wine-finder-wine-display.tsx?54ec","webpack:///./src/modules/wine-finder-form/wine-finder-display-item.tsx?995e","webpack:///./src/modules/wine-finder-form/wine-finder-scrollable.tsx?e714","webpack:///./src/modules/wine-finder-form/wine-finder-pager.tsx?cc64","webpack:///./src/modules/wine-finder-form/wine-finder-wine-results.tsx?909d","webpack:///./src/modules/wine-finder-form/wine-finder-form.tsx?9170","webpack:///src/modules/fabrikam/views/search-result-container.view.tsx?f8ea","webpack:///src/modules/iframe/iframe.view.tsx?dd86","webpack:///src/modules/tab/tab.tsx?d713","webpack:///./src/themes/patzhall/views/sign-in.view.tsx?4dd7","webpack:///./src/modules/mailing-list-redirect-form/mailing-list-redirect-form-input-group.tsx?08ab","webpack:///./src/modules/mailing-list-redirect-form/mailing-list-redirect-form.tsx?7a85","webpack:///./src/themes/generazioni/views/sign-in.view.tsx?5601","webpack:///src/modules/business-sign-up/business-sign-up.view.tsx?578b","webpack:///./src/themes/stemichelle-new/views/sign-in.view.tsx?2607","webpack:///./src/modules/all-purpose-tasting-tours/all-purpose-tasting-tours.tsx?277a","webpack:///./src/modules/family-and-friends/family-and-friends.view.tsx?df6a","webpack:///src/modules/footer-category/footer-category.view.tsx?26a5","webpack:///./src/themes/emp/views/sign-in.view.tsx?ef45","webpack:///src/modules/account-customer-balance-tile/components/account-customer-balance-tile-info.tsx?a91f","webpack:///src/modules/account-customer-balance-tile/components/account-customer-balance-tile-links.tsx?5f47","webpack:///src/modules/account-customer-balance-tile/account-customer-balance-tile.tsx?9383","webpack:///./src/modules/container-with-header/container-with-header.tsx?ee31","webpack:///./src/themes/fth/views/sign-in.view.tsx?75eb","webpack:///src/modules/tab-item/tab-item.tsx?d2c1","webpack:///src/modules/fabrikam/views/header.view.tsx?1cde","webpack:///./src/themes/blend/views/sign-in.view.tsx?f3cf","webpack:///./src/themes/stagsleap/views/sign-in.view.tsx?c226","webpack:///src/modules/tab/tab.view.tsx?701e","webpack:///./src/themes/conn-creek/views/sign-in.view.tsx?515b","webpack:///./src/themes/erath/views/sign-in.view.tsx?0566","webpack:///src/modules/loyalty-terms/components/loyalty-terms-modal.tsx?c84d","webpack:///src/modules/loyalty-terms/loyalty-terms.tsx?0629","webpack:///./src/themes/stemichelle/views/sign-in.view.tsx?47a4","webpack:///src/modules/account-loyalty/components/account-loyalty-small-components.tsx?9694","webpack:///src/modules/account-loyalty/account-loyalty.tsx?82db","webpack:///src/modules/loyalty-terms/loyalty-terms.view.tsx?5155","webpack:///./src/themes/enoteca/views/sign-in.view.tsx?6175","webpack:///src/modules/fabrikam/views/order-details.view.tsx?2a61","webpack:///src/modules/account-loyalty/account-loyalty.view.tsx?06f4","webpack:///./src/themes/elicit/views/sign-in.view.tsx?254d"],"names":["SignInLoading","modal","modalBody","icon","message","React","Node","Object","_showPassword","passwordState","document","getElementById","iconElement","type","className","SignInView","props","signIn","viewState","loading","defaultAADConainer","aadConainer","signInSection","signUpSection","signInSectionHeading","signInLocalAccount","signInSocialAccount","signUpSectionHeading","signUpDescription","signUpLink","Module","isShowLoading","localAccount","items","forgetPassword","disclaimer","error","signInButton","map","item","key","wrapper","label","input","onClick","id","LocalAccount","socialAccounts","button","image","text","SocialAccount","SignUpButton","ariaLabel","telemetryContent","disabled","link","payLoad","getPayloadObject","attributes","getTelemetryAttributes","Button","href","SignUpError","errorClassName","classnames","role","GetMaxLength","maxLength","parsedMaxLength","parseInt","isNaN","SignUpInput","value","pattern","isRequired","onChange","InputType","TextArea","name","required","undefined","SignUpLabel","forId","htmlFor","InputID","renderInputSection","inputs","needToReset","onInputChange","showErrors","addressForm","updateAddress","element","index","maxChars","customClass","baseSignUpItem","errorMessage","Address","isAddressInput","updateForm","hasError","resetAddress","splice","BusinessSignUp","constructor","super","BusinessSignUpDefaultInputs","FirstName","Text","this","resources","firstNameLabel","LastName","lastNameLabel","Email","emailAddressLabel","CompanyName","companyLabel","Department","departmentLabel","JobTitle","jobTitleLabel","Size","companySizeLabel","companyAddressLabel","Comment","commentLabel","moduleClassName","needsToReset","_onInputChange","event","newForm","state","formItems","forEach","target","setState","isReady","_isFormReady","hasSubmitErrors","_onAddressChange","errors","currentAddress","addressItem","find","address","addressHasErrors","showAddressErrors","i","length","currentInput","match","_onSubmit","preventDefault","context","firstName","_getItem","lastName","companyName","companyEmail","companyAddress","jobTitle","department","companySize","comments","newPartner","CompanySize","Comments","createProspectAsync","callerContext","actionContext","catch","_onCancel","cleanForm","isAddress","getTelemetryObject","request","telemetryPageName","friendlyName","telemetry","render","config","heading","viewProps","businessSignUp","moduleProps","ContainerWrapper","Heading","businessSignUpForm","_renderForm","renderView","slots","signUpButtonArialabel","signUpButtonText","cancelButtonArialabel","cancelButtonText","partialAddressErrorMessage","addressSlot","successPageURL","confirmationLink","linkUrl","destinationUrl","getUrlSync","form","FormWrapper","buttons","RichTextComponent","_renderTabItemContent","TabItemView","tabItemType","tabSlots","TabContentContainer","TabHeaderContainer","TabItemContent","tabHeader","TabItemType","TabContent","tabItemContent","TabHeader","BreadCrumbView","root","links","backButton","BreadcrumbContainer","BreadcrumbList","BreadcrumbListItem","separator","Iframe","iframeRef","isConsentGiven","cookies","srcURL","URL","exception","protocol","toLocaleLowerCase","iframeClassName","_createHeading","IframeContainer","IFrame","_createIframe","alert","_renderAlert","cookieConsentRequiredMessage","cookieConsentAccepted","targetURL","src","height","iframeAriaLabel","ref","FamilyAndFriendsCodeComponent","familyFriends_codeLabel","code","Code","familyFriends_recipientLabel","_recipientColumnAction","familyFriends_activationDateLabel","ActivationDate","_hasBeenRecieved","RecipientEmailAddress","mailToLink","familyFriends_sendToAFriendBtn","mailSubject","mailBody","_sanitizeMailTo","stripOnly","replace","p1","toString","FamilyAndFriends","header","_headerJSX","codes","data","codeList","result","Result","Codes","SortAndFilterContainer","_viewport","_modalExampleBtn","_toggleModal","bind","_updateViewport","modalIsOpen","componentDidMount","window","addEventListener","componentWillUnmount","removeEventListener","isMobile","_renderMobile","_renderDesktop","classname","refineMenu","choiceSummary","sorting","products","innerRef","color","mobileModalTitle","Modal","autoFocus","fade","applicationNode","returnFocusRef","isOpen","toggle","horizontalPosition","verticalPosition","modalClassName","zIndex","ModalHeader","ModalBody","ModalFooter","mobileModalCloseButtonText","_getViewport","device","Type","innerWidth","gridSettings","xs","w","sm","md","lg","__decorate","observable","computed","observer","BackTopFooter","editProps","requestContext","onEdit","backtoTopText","destination","BackToTop","title","FooterCategory","content","viewprops","categories","FooterList","tag","FooterListItem","Link","noclick","linkText","contentAction","etext","attribute","onTelemetryClick","itemProp","Separator","Breadcrumb","_pageType","urlTokens","pageType","_getRootLink","_getCustomBreadcrumbLinks","itemPosition","_getCategoryHierarchy","categoryHierarchy","Name","Url","_getPDPLinks","categoryPaths","product","url","requestUrl","push","hideProductName","_goBack","history","back","_getPDPBackButton","query","MsDyn365","isBrowser","referrer","backToResultsText","rootLink","breadcrumbLinks","backButtonComponent","breaCrumbType","app","breadcrumbType","linkSeparator","breadcrumbViewProps","_renderAccordionItemContent","AccordionItemView","drawer","accordionSlots","AccordionItemContainer","AccordionItemContent","accordionItemContent","AccordionItem","handleHeadingChange","accordionItemTitle","_onToggle","accordionExpandedStateResult","accordionExpandedState","expanded","isAllExpanded","isExpandedOnInitialLoad","ControlledDrawer","toggleButtonText","collapseProps","onToggle","onTextChange","interactionStyle","accordionState","update","createAccordionStateInput","histogramItem","buttonProps","starLabel","bar","percentage","RatingsHistogramView","histogramItems","histogramProps","AccountCustomerBalanceTileView","AccountCustomerBalanceTile","apiToken","GetWineFilterable","Msdyn365","filters","dataCacheType","cacheObjectType","cacheKey","JSON","stringify","_token","queryFilters","filtersToHTTPQueryString","queryString","keys","queryKey","queryValue","substr","WineMapper","_input","_applyMap","inputData","inputMap","mappedOutput","GetWineInternationalLocationInput","_url","brand_code","country","fullUrl","console","GetWineInternationalLocationMap","GetWineInternationalLocationDistributorMap","GetWineInternationalLocationCountryMap","GetWineLocationInternationalMapper","output","totalPages","totalResults","page","distributors","distributor","distributorOutput","GetWineLocationMap","GetWineLocationRetailerMap","GetWineLocationProductMap","action","async","ctx","apiSettings","response","headers","Authorization","token","args","Error","GetWineLocationInput","GetWineLocationMapper","retailers","retailer","retailerProducts","mappedRetailer","GetWineProductsInput","brand","FindWineDropdownMenu","_value","defaultValue","_handleOnChange","_constructItems","newItem","itemList","isAriaSelected","WineFinderQueryLocation","_queryLocation","_queryRadius","_allowRetail","_allowRestaurant","_product","_queryRadii","_handleQueryLocationChange","_handleSearchRadiusChange","_toggleRetail","_toggleRestaurant","_doQuery","defaultFilters","retail","restaurant","radii","allowRadiiDisplay","defaultRadius","wineFinder__domesticTitle","wineFinder__domesticSearchRadiusLabel","wineFinder__retailFilterText","wineFinder__restaurantFilterText","domesticSearch","enablePlaceholders","placeholders","cssClass","active","onSubmit","e","placeholder","showChooseWineInput","_renderProductsDropdownList","displayFilters","_hasFilterActive","checked","_isInvalid","onKeyPress","wineFinderSubmit","queryRadius","location","radius","on_premise","filterState","restaurantActive","retailActive","onQuerySearch","Number","test","_renderProductOptions","option","product_key","description","IGetWineCountriesMap","GetWineCountriesInput","shouldCacheOutput","GetWineCountriesMapper","WineFinderQueryLocationInternational","_countries","_handleCountrySelectionChange","_queryCountries","err","warn","iso","wineFinder__internationalTitle","wineFinder__internationalCountryLabel","submitText","_selectedCountry","newCountry","countries","WineCountries","resultsDisplay","showProductsConfiguration","TitleTag","WineFinderWineDisplay","_isOpen","_wines","wines","reaction","allOpen","open","expandedState","_closeToggle","hideProducts","showProducts","showProductsLabel","_showButton","_renderWineList","showButton","showProductsHideButton","list","toJS","sort","wineList","wine","_showProducts","FindWineItem","hideNumbers","numberInList","distance","mapData","zip","rel","mapText","phoneNumber","website","wineFinder__internationalWebsiteLabel","WineFinderScrollable","Component","_onAddMore","pageCount","wineLocationData","_renderWineResults","showMoreText","wineResults","resultType","city","perPage","_getProducts","phone","jdeDistributorNumber","wineFinder__noResults","productArray","onGetMoreContent","WineFinderPager","_isFirstPagination","_goToMinMaxPage","_renderPages","_isLastPagination","range","lower","higher","minOrMax","onPageChange","currentPage","lowerBound","Math","max","min","Array","fill","pageValue","WineFinderResults","_handlePageChange","_renderWineLocations","wineLocation","pageChange","newQuery","selectedTab","FindWine","_pageState","_allOpen","_selectedTab","_wineLocationDataSet","_querySearchFilters","_setWineLocation","_setWineProducts","_handleBackToFind","_setInternationalWineLocation","_getMoreWineLocations","_selectUSTab","_selectInternationalTab","_products","singlePage","_renderQuery","_renderResults","_renderJSXResult","_renderNoResults","hideInternational","searchRadius","showFilterButtons","USLabelText","internationalLabelText","USCssClass","us","internationalCssClass","international","_title","_searchText","wineFinder__backToFind","wineFinder__showMoreButton","wineType","internationalWineLocation","resultDisplay","tabIndex","showAllProductsToggle","_renderAllProductsToggle","hideAllProducts","showAllProducts","showAllProductsLabel","wineFinder__searchAgain","headingTag","searchText","wineLocationInput","moreData","GetWineLocation","GetInternationalWineLocation","per_page","newLocation","filter","getWineProducts","createSearchResultModal","modalProps","sortByDropDown","modalHeader","createModalBody","modalFooter","renderSort","renderRefiner","refiners","RefineMenuContainer","RefinerSectionContainer","submenu","SortingContainer","renderCategoryHierarchy","CategoryHierarchyContainer","categoryHierarchyList","categoryHierarchySeparator","category","renderTitle","TitleContainer","titlePrefix","titleText","titleCount","SearchResultContainerView","SearchResultContainer","pagination","ProductsContainer","ProductSectionContainer","modalToggle","searchResultModal","TitleViewProps","sortByOptions","CategoryNavContainer","RefineAndProductSectionContainer","FeatureSearchContainer","similarLookProduct","IFrameView","Tab","tabIndexQuery","_onClick","activeTabState","activeContentIndex","tabId","createTabStateInput","currentTabIndex","newUrl","_setGetParameter","String","pushState","path","_onKeyDown","keyCode","slotLength","tabItems","defaultTabIndex","initialIndex","activeTab","queryTabIndex","indexOf","arr","split","_getTabHeader","_getTabContent","activeLink","headingComponent","tabViewProps","TabContainer","headerSection","tabsSection","tabItemContainer","tabContents","tabHeaders","componentDidUpdate","dataActionTabId","focus","selected","contentID","getContentID","onKeyDown","isSelected","itemIndex","paramName","paramValue","params","URLSearchParams","search","set","decodeURIComponent","MailingInputGroup","_internalValue","initialValue","_onBlur","onBlur","_renderValidation","onLoseFirstFocus","onValueChange","isValid","_validationMessage","validationMessage","MailingListRedirectForm","_email","_emailRegex","_onSubmitForm","_onEmailChange","_lostFocus","formLabel","formPlaceholder","submitButtonText","mailingListRedirectForm__errorMessage","_isButtonDisabled","email","beenBlurred","_testForRequirement","_testForRegex","field","regex","redirectUrl","encodeURIComponent","assign","BusinessSignUpItem","BusinesSignUpView","TastingTours","_showWidget","appInsights","correlationHeaderExcludedDomains","_injectScript","rcTarget","_image","_reservationClassName","_content","_consentGate","_integration","defaultImageSettings","viewports","q","h","lazyload","Image","imageSettings","_header","_body","dangerouslySetInnerHTML","getRichTextHtml","consentCTA","consentText","requireConsent","consentFooter","consentFooterClass","alt","script","createElement","defer","setAttribute","getElementsByTagName","appendChild","widget","consentGate","format","familyFriends_codesRemaining","QuantityAvailable","helpText","FooterCategoryView","ErrorComponent","CreditComponent","verbagePrefix","verbagePostfix","_mapEditableLinks","linkdata","editableLinks","editableLink","openInNewTab","additionalProperties","AccountCustomerBalanceTileLinks","_initState","apiGenericErrorMessage","get","customerResult","allowOnAccountPayment","AllowOnAccountPayment","isB2BCustomer","IsB2B","enableCustomerAccountPayment","isCustomerAccountPaymentEnabled","isDetailsLinkDisplayed","LinksComponent","account","Balance","CreditLimit","noCreditErrorMessage","accountCreditVerbagePrefix","accountCreditVerbagePostfix","currencyCode","customerBalanceFormatted","formatCurrency","toFixed","ContainerWithHeader","hasSlots","contentBlock","_renderHeader","contentBlockNoHeadings","_renderSlotItems","_renderLinkedTitle","_renderTitle","slot","TabItem","moduleContentClassName","moduleHeaderClassName","_renderTabHeader","activeContentIDResult","shown","tabItemTitle","renderCustomerName","accountInformation","customer","_renderReactFragment","headerView","HeaderTag","HeaderContainer","HeaderTopBarContainer","Divider","navIcon","logo","preferredStore","renderForMobile","AccountInfoDropdownParentContainer","AccountInfoDropdownPopoverConentContainer","accountInfoDropdownButton","signOutLink","signInLink","accountLinks","accountClassName","_renderAccountBlock","wishListIconDesktop","cartIcon","siteOptions","MobileMenuLinksContainer","mobileMenuCollapsed","Collapse","Drawer","openGlyph","closeGlyph","glyphPlacement","_renderMobileAccountBlock","wishListIconMobile","menuBar","_renderCollapseMenu","tabView","LoyaltyTermsModal","TelemetryConstant","LoyaltyTermsCancel","loyaltyTermCancelAttributes","LoyaltyTermsSubmit","loyaltyTermSubmitAttributes","LoyaltyTermsAgree","loyaltyTermCheckboxAttributes","returnRef","cancelButton","cancelLoyaltyTermsText","submitButton","joinLoyaltyTermsText","loyaltyTermsHeading","terms","agreeSection","checkbox","onCheck","agreeText","loyaltyAgreeToTerms","LoyaltyTerms","_toggle","_submit","_checkboxChecked","toggleRef","isJoining","substring","qsps","splitQsp","isModalOpen","clicked","hideToggle","serviceTerms","loyaltyCard","user","isAuthenticated","completeClass","status","joinLoyaltytermsToggleText","CardNumber","IssueLoyaltyInput","issueLoyalty","then","card","redirectToLoyalty","getLoyaltyCardAsync","fullCard","GetLoyaltyCardInput","debug","AccountLoyaltyLabel","AccountLoyaltyModalLabel","labelFor","AccountLoyalty","_populateModalData","focusRef","currentLoyaltyPoints","expiring","RewardPointId","currentModalData","isModalExpiring","modalID","currentFocus","getLoyaltyRewardPointsExpiringSoonAsync","queryResultSettings","points","pointsActivity","getLoyaltyRewardPointActivityTimelineAsync","_closeModal","_buttonAvailableRef","_buttonExpireRef","BackToShopping","loyaltyCardLabel","totalAvailablePointsLabel","backToShoppingText","backToShopAttributes","loyaltyCardData","rewardPoints","RewardPoints","homeLink","totalPoints","_getTotalPoints","_renderRewardPoints","pointsModal","_renderModal","Info","Points","Breakdown","PointsBreakdown","infoLabel","cardNumber","joinDate","_formatJoinDate","_parseDate","LoyaltyEnrollmentDateLocal","pointsLabel","homeButton","date","joinDateFormatted","Intl","DateTimeFormat","locale","month","day","year","Date","loyaltyPoints","availableId","expiringId","availablePointsLabel","expiringPointsFormatLabel","AvailablePoints","availablePointsAttributes","ExpiringPoints","expiringPointsAttributes","Description","availableModalLabel","ActivePoints","availableModalTrigger","expiringModalLabel","PointsExpiringSoon","expiringModalTrigger","loyaltyActivityDateLabel","loyaltyActivityBalanceLabel","modalHeaderClassName","modalBodyClassName","ModalBodyTop","ModalBodyHeaders","rewardPointsActivity","_renderPointsActivity","pointsDescription","_getPoints","balanceLabel","onClose","total","activity","Activity","activityType","_getTimelineType","activityDate","cultureFormatter","formatDate","ActivityDate","activityPoints","LoyaltyPoints","dateString","getUTCFullYear","getUTCMonth","getUTCDate","pointActivity","LoyaltyRewardPointTimelineEntryType","earnedPointsLabel","redeemedPointsLabel","adjustedPointsLabel","refundedPointsLabel","ExtensibleLoyaltyRewardPointActivityEntryTypeValue","LoyaltyTermsView","OrderInfomation","orderInformationProps","salesId","receiptId","createdDate","count","amount","channelReferenceId","channelName","channelAddress","SalesLine","salesLineProps","salesLine","buyAgainButton","GroupDelivery","deliveryProps","trackingInfo","shippedStatusCheck","Group","groupProps","delivery","salesLinesProps","salesLines","LineId","deliveryType","shipment","salesStatus","showTimeslot","pickupProps","pickupDateTimeslot","Groups","groupsProps","groups","group","OrderSummary","orderSummaryProps","subtotal","shipping","tax","totalAmount","earnedPoints","Payment","paymentMethodsProps","methods","Help","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","OrderDetailsView","orderInfomation","orderSummary","payment","help","AccountLoyaltyView","onClosed"],"mappings":"0IAYA,MA2DMA,EAA0C,IAK3C,IAL4C,MAC7CC,EAD6C,UAE7CC,EAF6C,KAG7CC,EAH6C,QAI7CC,GACC,EACD,OACIC,gBAACC,OAAIC,iBAAKN,GACNI,gBAACC,OAAIC,iBAAKL,GACLC,EACAC,KA4CXI,EAAgB,KAClB,MAAMC,EAAgBC,SAASC,eAAe,YACxCC,EAAcF,SAASC,eAAe,yBACxCF,GAAiBG,IACjBH,EAAcI,KAA8B,aAAvBJ,EAAcI,KAAsB,OAAS,WAClED,EAAYE,UAAsC,uBAA1BF,EAAYE,UAAqC,qBAAsB,uBAIxFC,UA/CgCC,IAE3C,MAAM,OACFC,EADE,UAEFC,EAFE,QAGFC,EAHE,mBAIFC,EAJE,YAKFC,EALE,cAMFC,EANE,cAOFC,EAPE,qBAQFC,EARE,mBASFC,EATE,oBAUFC,EAVE,qBAWFC,EAXE,kBAYFC,EAZE,WAaFC,GACAb,EAEJ,OACIX,gBAACyB,SAAMvB,iBAAKU,GACPC,EAAUa,eAAiB1B,gBAACC,OAAIC,iBAAKa,IACrCF,EAAUa,eAAiB1B,gBAACL,EAAaO,iBAAKY,IAC/Cd,gBAACC,OAAIC,iBAAKc,GACNhB,gBAACC,OAAIC,iBAAKe,GACLE,EAnG+B,KAO/C,IAPgD,aACjDQ,EADiD,MAEjDC,EAFiD,eAGjDC,EAHiD,WAIjDC,EAJiD,MAKjDC,EALiD,aAMjDC,GACC,EAED,OACIhC,gBAACC,OAAIC,iBAAKyB,GACLC,GAASA,EAAMK,IAAKC,GACA,aAAbA,EAAKC,IAEDnC,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,MACNtC,0BAAQS,UAAU,wBAAuB,cAAa,OAAO8B,QAASpC,GAClEH,qBAAGwC,GAAG,wBAAwB/B,UAAU,yBAMpDT,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,QAIjBT,EACAC,EACAC,EACAC,IAiEQS,CAAarB,GA5DoB,KAGjD,IAHkD,eACnDsB,EADmD,MAEnDd,GACC,EAED,OACI5B,gBAACC,OAAIC,iBAAKwC,GACLd,GAASA,EAAMK,IAAKC,GAEblC,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKS,QACzBT,EAAKU,MACLV,EAAKW,SAkDTC,CAAczB,IAEnBrB,gBAACC,OAAIC,iBAAKgB,GACLI,EACAC,EACAC,O,iFC1GrB,MA2DM7B,EAA0C,IAK3C,IAL4C,MAC7CC,EAD6C,UAE7CC,EAF6C,KAG7CC,EAH6C,QAI7CC,GACC,EACD,OACIC,gBAACC,OAAIC,iBAAKN,GACNI,gBAACC,OAAIC,iBAAKL,GACLC,EACAC,KA4CXI,EAAgB,KAClB,MAAMC,EAAgBC,SAASC,eAAe,YACxCC,EAAcF,SAASC,eAAe,yBACxCF,GAAiBG,IACjBH,EAAcI,KAA8B,aAAvBJ,EAAcI,KAAsB,OAAS,WAClED,EAAYE,UAAsC,uBAA1BF,EAAYE,UAAqC,qBAAsB,uBAIxFC,UA/CgCC,IAE3C,MAAM,OACFC,EADE,UAEFC,EAFE,QAGFC,EAHE,mBAIFC,EAJE,YAKFC,EALE,cAMFC,EANE,cAOFC,EAPE,qBAQFC,EARE,mBASFC,EATE,oBAUFC,EAVE,qBAWFC,EAXE,kBAYFC,EAZE,WAaFC,GACAb,EAEJ,OACIX,gBAACyB,SAAMvB,iBAAKU,GACPC,EAAUa,eAAiB1B,gBAACC,OAAIC,iBAAKa,IACrCF,EAAUa,eAAiB1B,gBAACL,EAAaO,iBAAKY,IAC/Cd,gBAACC,OAAIC,iBAAKc,GACNhB,gBAACC,OAAIC,iBAAKe,GACLE,EAnG+B,KAO/C,IAPgD,aACjDQ,EADiD,MAEjDC,EAFiD,eAGjDC,EAHiD,WAIjDC,EAJiD,MAKjDC,EALiD,aAMjDC,GACC,EAED,OACIhC,gBAACC,OAAIC,iBAAKyB,GACLC,GAASA,EAAMK,IAAKC,GACA,aAAbA,EAAKC,IAEDnC,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,MACNtC,0BAAQS,UAAU,wBAAuB,cAAa,OAAO8B,QAASpC,GAClEH,qBAAGwC,GAAG,wBAAwB/B,UAAU,yBAMpDT,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,QAIjBR,EACAC,EACAC,EACDhC,uBAAKS,UAAU,yCAAyCoB,KAiE/CY,CAAarB,GA5DoB,KAGjD,IAHkD,eACnDsB,EADmD,MAEnDd,GACC,EAED,OACI5B,gBAACC,OAAIC,iBAAKwC,GACLd,GAASA,EAAMK,IAAKC,GAEblC,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKS,QACzBT,EAAKU,MACLV,EAAKW,SAkDTC,CAAczB,IAEnBrB,gBAACC,OAAIC,iBAAKgB,GACLI,EACAC,EACAC,O,yTCpGd,MAAMuB,EAAqD,IAAkF,IAAjF,GAAEP,EAAF,UAAM/B,EAAN,KAAiBoC,EAAjB,UAAuBG,EAAvB,iBAAkCC,EAAlC,SAAoDC,EAApD,KAA8DC,EAA9D,QAAoEZ,GAAa,EAChJ,MAAMa,EAAUC,2BAAiB,QAASJ,EAAkBJ,GACtDS,EAAaC,iCAAuBN,EAAkBG,GAC5D,OACApD,gBAACwD,SAAMtD,eACHsC,GAAIA,EACJ/B,UAAWA,EAAS,aACRuC,EACZE,SAAUA,EACVX,QAASA,EACTkB,KAAMN,GACFG,GAEHT,ICjBF,MAAMa,EAAmD,IAA8C,IAA7C,GAAElB,EAAF,UAAM/B,EAAN,KAAiBD,EAAO,OAAxB,QAAgCT,GAAa,EAC1G,MAAM4D,EAAiB,GAAGlD,MAAcD,UAExC,OACIR,uBAAKwC,GAAIA,EAAI/B,UAAWmD,IAAWD,EAAgB,QAAYnD,EAAH,SAAiBqD,KAAK,QAAO,YAAW,YAAW,cAAa,QAEpH7D,qBAAGS,UAAckD,EAAH,SACT5D,KCOrB,MAAM+D,EAAgBC,IAClB,GAAIA,EAAW,CACX,MAAMC,EAAkBC,SAASF,EAAW,IAC5C,IAAKG,MAAMF,GACP,OAAOA,IAONG,EAAmD,IAA6E,IAA5E,GAAE3B,EAAF,KAAMhC,EAAN,MAAY4D,EAAZ,QAAmBC,EAAnB,UAA4B5D,EAA5B,UAAuCsD,EAAvC,WAAkDO,EAAlD,SAA8DC,GAAc,EACzI,OAAI/D,IAASgE,EAAUC,SAEfzE,4BACIwC,GAAIA,EACJkC,KAAMlC,EACN4B,MAAOA,EACP3D,UAAW,GAAGA,gBAAwBA,KAAa+B,IAAI,gBACxC8B,EACfK,SAAUL,EACVP,UAAWD,EAAaC,GACxBQ,SAAUA,IAMlBvE,yBACIwC,GAAIA,EACJhC,KAAMA,EACN4D,MAAOA,EACP3D,UAAW,GAAGA,WAAmBA,KAAa+B,IAC9C6B,QAAqB,KAAZA,EAAiBA,OAAUO,EAAS,gBAC9BN,EACfK,SAAUL,EACVP,UAAWD,EAAaC,GACxBQ,SAAUA,KCpDf,MAAMM,EAAmD,QAAC,GAAErC,EAAF,MAAMsC,EAAN,UAAarE,EAAb,KAAwBoC,GAAzB,SAC5D7C,yBAAOwC,GAAOA,EAAH,SAAe/B,UAAcA,EAAH,SAAsBsE,QAASD,GAC/DjC,IAIMgC,IC6CHL,EAOAQ,E,0kBAPZ,SAAYR,GACRA,cACAA,oBACAA,gBACAA,sBAJJ,CAAYA,MAAS,KAOrB,SAAYQ,GACRA,wBACAA,sBACAA,uBACAA,4BACAA,2BACAA,sBACAA,qBACAA,0BACAA,oBATJ,CAAYA,MAAO,KAYZ,MAAMC,EAAqB,CAACC,EAAqBzE,EAAmB0E,EAAsBC,EAC9DC,EAAqBC,EAA+BC,IAC5EL,EAAOjD,IAAI,CAACuD,EAASC,KACxB,MAAM,GAAEjD,EAAF,KAAMhC,EAAN,MAAY6B,EAAZ,SAAmBqD,EAAnB,WAA6BpB,EAA7B,QAAyCD,EAAzC,YAAkDsB,EAAlD,MAA+DvB,GAAUoB,EAEzEI,EAAsC,CACxCxD,QAAS,CACL3B,UAAWmD,IAAWnD,EAAW,GAAGA,KAAa+B,IAAMmD,IAE3DnD,GAAIA,EACJH,MAAOrC,gBAAC6E,EAAW3E,iBAAM,CAAEsC,KAAIsC,MAAOtC,EAAI/B,YAAWoC,KAAMR,KAC3DwD,aAAc7F,gBAAC0D,EAAWxD,iBAAM,CAAEO,UAAWA,EAAWD,KAAM,WAkClE,OA/BIA,IAASgE,EAAUsB,QACfR,GACAM,EAAeG,gBAAiB,EAChCH,EAAetD,MACXtC,gBAACA,WAAc,KACVA,eAAmBsF,EAAmC,CAAEU,WAAYT,EAAeU,SAAUZ,EAAYf,gBAA2BM,IAAfN,GAAmCA,EAAY4B,aAAcf,MAK3LD,EAAOiB,OAAOV,EAAO,GAGzBG,EAAetD,MACXtC,gBAACmE,EAAWjE,iBAEL,CACKsC,GAAIA,EACJhC,KAAMA,EACN4D,MAAOA,EACPL,UAAW2B,EACXrB,QAASA,EACT5D,UAAWA,EACX6D,gBAA2BM,IAAfN,GAAmCA,EAC/CC,SAAUa,KAOvBQ,IAUf,MAAMQ,UAAuBpG,YAkFzBqG,YAAY1F,GAAmC,MAC3C2F,MAAM3F,GADqC,OAhFxC,KAAA4F,4BAA2C,CAC9C,CACI/D,GAAIwC,EAAQwB,UACZhG,KAAMgE,EAAUiC,KAChBpE,MAAOqE,KAAK/F,MAAMgG,UAAUC,eAC5BxC,MAAO,GACPE,YAAY,EACZqB,YAAa,YAEjB,CACInD,GAAIwC,EAAQ6B,SACZrG,KAAMgE,EAAUiC,KAChBpE,MAAOqE,KAAK/F,MAAMgG,UAAUG,cAC5B1C,MAAO,GACPE,YAAY,EACZqB,YAAa,YAEjB,CACInD,GAAIwC,EAAQ+B,MACZvG,KAAMgE,EAAUuC,MAChB1E,MAAOqE,KAAK/F,MAAMgG,UAAUK,kBAC5B5C,MAAO,GACPE,YAAY,EACZD,QAAS,kEACTsB,YAAa,YAEjB,CACInD,GAAIwC,EAAQiC,YACZzG,KAAMgE,EAAUiC,KAChBpE,MAAOqE,KAAK/F,MAAMgG,UAAUO,aAC5B9C,MAAO,GACPE,YAAY,EACZqB,YAAa,YAEjB,CACInD,GAAIwC,EAAQmC,WACZ3G,KAAMgE,EAAUiC,KAChBpE,MAAOqE,KAAK/F,MAAMgG,UAAUS,gBAC5BhD,MAAO,GACPE,YAAY,EACZqB,YAAa,YAEjB,CACInD,GAAIwC,EAAQqC,SACZ7G,KAAMgE,EAAUiC,KAChBpE,MAAOqE,KAAK/F,MAAMgG,UAAUW,cAC5BlD,MAAO,GACPE,YAAY,EACZqB,YAAa,YAEjB,CACInD,GAAIwC,EAAQuC,KACZ/G,KAAMgE,EAAUiC,KAChBpE,MAAOqE,KAAK/F,MAAMgG,UAAUa,iBAC5BpD,MAAO,GACPE,YAAY,EACZqB,YAAa,YAEjB,CACInD,GAAIwC,EAAQc,QACZtF,KAAMgE,EAAUsB,QAChBzD,MAAOqE,KAAK/F,MAAMgG,UAAUc,oBAC5BrD,MAAO,GACPE,YAAY,EACZqB,YAAa,aAEjB,CACInD,GAAIwC,EAAQ0C,QACZlH,KAAMgE,EAAUC,SAChBpC,MAAOqE,KAAK/F,MAAMgG,UAAUgB,aAC5BvD,MAAO,GACPE,YAAY,EACZqB,YAAa,cAIb,KAAAiC,gBAA0B,sBAC1B,KAAAC,cAAwB,EAqExB,KAAAC,eAAkBC,IACtB,MAAMC,EAAUtB,KAAKuB,MAAMC,UAC3BF,EAAQG,QAAQjG,IACRA,EAAKM,KAAOuF,EAAMK,OAAO5F,KACzBN,EAAKkC,MAAQ2D,EAAMK,OAAOhE,SAKlCsC,KAAK2B,SAAS,CACVC,QAAS5B,KAAK6B,eACdL,UAAWF,EACXQ,iBAAiB,KAIjB,KAAAC,iBAAmB,CAACC,EAAiBC,KAEzC,MAAMX,EAAUtB,KAAKuB,MAAMC,UACrBU,EAAcZ,EAAQa,KAAM3G,GACvBA,EAAK1B,OAASgE,EAAUsB,SAI/B8C,IACAA,EAAYE,QAAUH,EAGtBjC,KAAK2B,SAAS,CACVC,QAAS5B,KAAK6B,eACdL,UAAWF,EACXe,iBAAkBL,EAClBM,mBAAmB,MAKvB,KAAAT,aAAe,KACnB,MAAM,UAAEL,GAAcxB,KAAKuB,MAE3B,IAAK,IAAIgB,EAAI,EAAGA,EAAIf,EAAUgB,OAAQD,IAAK,CAOvC,MAAME,EAAejB,EAAUe,GAE/B,GAAIE,EAAa7E,WACb,GAAI6E,EAAa3I,OAASgE,EAAUsB,SAChC,GAAIY,KAAKuB,MAAMc,iBACX,OAAO,OAGX,QAA2BnE,IAAvBuE,EAAa/E,OAA8C,KAAvB+E,EAAa/E,MACjD,OAAO,EAInB,QAA6BQ,IAAzBuE,EAAa9E,SAAsF,OAA7D8E,EAAa/E,MAAMgF,MAAMlB,EAAUe,GAAG5E,SAC5E,OAAO,EAIf,OAAO,GAGH,KAAAgF,UAAatB,IACjB,GAAIrB,KAAKuB,MAAMc,iBAMX,OALArC,KAAK2B,SAAS,CACVW,mBAAmB,SAGvBjB,EAAMuB,iBAIV,MAAM,QAAEC,GAAY7C,KAAK/F,MAGnB6I,EAAY9C,KAAK+C,SAASzE,EAAQwB,WAClCkD,EAAYhD,KAAK+C,SAASzE,EAAQ6B,UAClC8C,EAAejD,KAAK+C,SAASzE,EAAQiC,aACrC2C,EAAgBlD,KAAK+C,SAASzE,EAAQ+B,OACtC8C,EAAiBnD,KAAK+C,SAASzE,EAAQc,SAAS,GAChDgE,EAAYpD,KAAK+C,SAASzE,EAAQqC,UAClC0C,EAAcrD,KAAK+C,SAASzE,EAAQmC,YACpC6C,EAAetD,KAAK+C,SAASzE,EAAQuC,MACrC0C,EAAYvD,KAAK+C,SAASzE,EAAQ0C,SAGpCkC,GAAgBA,EAAaxF,OAASyF,GAAkBA,EAAef,UACvEe,EAAef,QAAQ/B,MAAQ6C,EAAaxF,OAGhD,MAAM8F,EAAsC,CACxC1D,UAAWgD,GAAaA,EAAUpF,MAClCyC,SAAU6C,GAAYA,EAAStF,MAC/B6C,YAAa0C,GAAeA,EAAYvF,MACxC0B,QAAS+D,GAAkBA,EAAef,SAAWe,EAAef,QACpEzB,SAAUyC,GAAYA,EAAS1F,MAC/B+C,WAAY4C,GAAcA,EAAW3F,MACrC+F,YAAaH,GAAe/F,SAAS+F,EAAY5F,MAAO,KAAO,EAC/DgG,SAAUH,GAAYA,EAAS7F,OAInCiG,YAAoB,CAAEC,cAAef,EAAQgB,eAAiBL,GACzDM,MAAM,KACH9D,KAAK2B,SAAS,CACVG,iBAAiB,EACjBF,SAAS,OAKjB,KAAAmC,UAAY,KAEhB,MAAMC,EAAYhE,KAAKuB,MAAMC,UAC7BwC,EAAUvC,QAAQ7F,IAAUA,EAAM8B,MAAQ,KAG1CsC,KAAKmB,cAAe,EAEpBnB,KAAK2B,SAAS,CACVC,SAAS,EACTJ,UAAWwC,EACX3B,kBAAkB,EAClBC,mBAAmB,EACnBR,iBAAiB,KAIjB,KAAAiB,SAAW,SAACjH,GAA0C,IAA9BmI,EAA8B,wDAC1D,OAAIA,EACO,EAAK1C,MAAMC,UAAUW,KAAM3G,GAAkBA,EAAKM,KAAOA,GAAMN,EAAK4G,SAExE,EAAKb,MAAMC,UAAUW,KAAM3G,GAAkBA,EAAKM,KAAOA,GAAqB,KAAfN,EAAKkC,QAzM3EsC,KAAKuB,MAAQ,CACTK,SAAS,EACTJ,UAAWxB,KAAK/F,MAAMuH,WAAaxB,KAAKH,4BACxCwC,kBAAkB,EAClBC,mBAAmB,EACnBR,iBAAiB,GAErB9B,KAAKzD,iBAAmB2H,6BAAmBlE,KAAK/F,MAAM4I,QAAQsB,QAAQC,kBAAoBpE,KAAK/F,MAAMoK,aAAcrE,KAAK/F,MAAMqK,WAG3HC,SACH,MAAM,OAAEC,GAAWxE,KAAK/F,OAClB,UAAEuH,GAAcxB,KAAKuB,OACrB,UAAExH,EAAF,QAAa0K,GAAYD,EAEzBE,EAAS,OACR1E,KAAK/F,OADG,IAEX0K,eAAgB,CACZC,YAAa5E,KAAK/F,MAClBF,UAAWmD,IAAW8C,KAAKkB,gBAAiBnH,IAEhD8K,iBAAkB,CACd9K,UAAciG,KAAKkB,gBAAR,eAEfuD,QAASnL,gBAACwL,UAAOtL,eAACO,UAAciG,KAAKkB,gBAAR,aAAwCuD,IACrEM,mBAAoB/E,KAAKgF,cACzBxD,UAAWA,IAGf,OAAOxB,KAAK/F,MAAMgL,WAAWP,GAGzBM,cACJ,MAAM,OAAER,EAAF,UAAUvE,EAAV,MAAqBiF,GAAUlF,KAAK/F,OACpC,kBAAEqI,EAAF,gBAAqBR,EAArB,QAAsCF,EAAtC,UAA+CJ,GAAcxB,KAAKuB,OAClE,sBAAE4D,EAAF,iBAAyBC,EAAzB,sBAA2CC,EAA3C,iBAAkEC,EAAlE,aAAoFnG,EAApF,2BAAkGoG,GAA+BtF,EACjIrB,EAAcsG,GAASA,EAAMM,aAAeN,EAAMM,YAAYhD,OAAS,GAAK0C,EAAMM,YAAY,SAAMtH,EACpGuH,EAAiBjB,EAAOkB,kBAAoBlB,EAAOkB,iBAAiBC,SAAWnB,EAAOkB,iBAAiBC,QAAQC,gBAAkBC,qBAAW,OAAQ7F,KAAK/F,MAAM4I,QAAQgB,eAEvKiC,EAAO,CACTC,YAAa,CACThM,UAAciG,KAAKkB,gBAAR,WAEfhG,MAAOqD,EAAmBiD,EAAcxB,KAAKkB,gBAAR,cAAsClB,KAAKmB,aAAcnB,KAAKoB,eAAgBkB,EAAmB1D,EAAaoB,KAAK+B,kBACxJiE,QAAS,CAEL1M,gBAAC+C,EAAY,CAACZ,IAAI,WAAWK,GAAG,WAAW/B,UAAciG,KAAKkB,gBAAR,kBAA0CzE,KAAMgJ,EAAgBnJ,UAAW6I,EAAuBhJ,KAAMiJ,EAAkB5I,UAAWoF,EAAS/F,QAASmE,KAAK2C,UAAWpG,iBAAkByD,KAAKzD,mBACpPjD,gBAAC+C,EAAY,CAACZ,IAAI,SAASK,GAAG,SAAS/B,UAAciG,KAAKkB,gBAAR,kBAA0C5E,UAAW+I,EAAuBlJ,KAAMmJ,EAAkBzJ,QAASmE,KAAK+D,UAAWxH,iBAAkByD,KAAKzD,oBAE1M4C,aAAc,CACV2C,GAAmBxI,gBAAC0D,EAAW,CAACvB,IAAI,QAAQK,GAAG,QAAQ/B,UAAWiG,KAAKkB,gBAAiB7H,QAAS8F,IACjGmD,GAAqBhJ,gBAAC0D,EAAW,CAACvB,IAAI,QAAQK,GAAG,QAAQ/B,UAAWiG,KAAKkB,gBAAiB7H,QAASkM,KAEvGnK,WAAYoJ,EAAOpJ,YAAc9B,gBAAC2M,oBAAiB,CAAClM,UAAciG,KAAKkB,gBAAR,eAAuC/E,KAAMqI,EAAOpJ,cAOvH,OAJI4E,KAAKmB,eACLnB,KAAKmB,cAAe,GAGjB2E,GAiJApG,a,6FCpaf,MAuBMwG,EAAyBhL,GAEvB5B,gCACK4B,GAASA,EAAMsH,OACZtH,EAAMK,IAAI,CAACC,EAAuBuD,IAE1BzF,gBAACA,WAAc,CAACmC,IAAKsD,GAChBvD,IAIb,MAID2K,UAtCkClM,IAC7C,MAAM,YAAEmM,EAAF,SAAeC,EAAf,oBAAyBC,EAAzB,mBAA8CC,EAA9C,eAAkEC,EAAlE,UAAkFC,GAAcxM,EAEtG,OAAQmM,GACJ,KAAKM,cAAYC,WACb,OACIrN,gBAACyB,SAAMvB,iBAAK8M,GACRhN,gBAACC,OAAIC,iBAAKgN,GACLH,GAAYA,EAASO,gBAAkBP,EAASO,eAAepE,QAAW0D,EAAsBG,EAASO,kBAI1H,KAAKF,cAAYG,UACb,OACIvN,gBAACyB,SAAMvB,iBAAK+M,GACPE,GAGb,QACK,OAAO,Q,sGCgBLK,UAjCwC7M,IACnD,MAAM,KAAE8M,EAAF,MAAQC,EAAR,WAAeC,EAAf,oBAA2BC,EAA3B,eAAgDC,EAAhD,mBAAgEC,EAAhE,UAAoFC,GAAcpN,EACxG,OAAK8M,GAASC,GAAUC,EAKpB3N,gBAACyB,SAAMvB,iBAAK0N,GACR5N,gBAACC,OAAIC,iBAAK2N,GACLJ,GACGzN,gBAACC,OAAIC,iBAAK4N,GACLL,EACAC,GAASK,GAGjBJ,GACG3N,gBAACC,OAAIC,iBAAK4N,GACLH,GAGRD,GAASA,EAAMzL,IAAI,CAACkB,EAAMsC,IACvBzF,gBAACA,WAAc,CAACmC,IAAKsD,GACjBzF,gBAACC,OAAIC,iBAAK4N,EAAkB,CAAErN,UAAWmD,IAAWkK,EAAmBrN,UAAWgF,IAAQiI,EAAMxE,OAAO,EAAE,0BAA2B,MAC/H/F,EACAuK,EAAMjI,EAAQ,IAAMsI,QArBzCpN,EAAM4I,QAAQyB,UAAUjJ,MAAM,mDACvB,Q,iFCFf,MA2DMpC,EAA0C,IAK3C,IAL4C,MAC7CC,EAD6C,UAE7CC,EAF6C,KAG7CC,EAH6C,QAI7CC,GACC,EACD,OACIC,gBAACC,OAAIC,iBAAKN,GACNI,gBAACC,OAAIC,iBAAKL,GACLC,EACAC,KA4CXI,EAAgB,KAClB,MAAMC,EAAgBC,SAASC,eAAe,YACxCC,EAAcF,SAASC,eAAe,yBACxCF,GAAiBG,IACjBH,EAAcI,KAA8B,aAAvBJ,EAAcI,KAAsB,OAAS,WAClED,EAAYE,UAAsC,uBAA1BF,EAAYE,UAAqC,qBAAsB,uBAIxFC,UA/CgCC,IAE3C,MAAM,OACFC,EADE,UAEFC,EAFE,QAGFC,EAHE,mBAIFC,EAJE,YAKFC,EALE,cAMFC,EANE,cAOFC,EAPE,qBAQFC,EARE,mBASFC,EATE,oBAUFC,EAVE,qBAWFC,EAXE,kBAYFC,EAZE,WAaFC,GACAb,EAEJ,OACIX,gBAACyB,SAAMvB,iBAAKU,GACPC,EAAUa,eAAiB1B,gBAACC,OAAIC,iBAAKa,IACrCF,EAAUa,eAAiB1B,gBAACL,EAAaO,iBAAKY,IAC/Cd,gBAACC,OAAIC,iBAAKc,GACNhB,gBAACC,OAAIC,iBAAKe,GACLE,EAnG+B,KAO/C,IAPgD,aACjDQ,EADiD,MAEjDC,EAFiD,eAGjDC,EAHiD,WAIjDC,EAJiD,MAKjDC,EALiD,aAMjDC,GACC,EAED,OACIhC,gBAACC,OAAIC,iBAAKyB,GACLC,GAASA,EAAMK,IAAKC,GACA,aAAbA,EAAKC,IAEDnC,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,MACNtC,0BAAQS,UAAU,wBAAuB,cAAa,OAAO8B,QAASpC,GAClEH,qBAAGwC,GAAG,wBAAwB/B,UAAU,yBAMpDT,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,QAIjBR,EACAC,EACAC,EACDhC,uBAAKS,UAAU,yCAAyCoB,KAiE/CY,CAAarB,GA5DoB,KAGjD,IAHkD,eACnDsB,EADmD,MAEnDd,GACC,EAED,OACI5B,gBAACC,OAAIC,iBAAKwC,GACLd,GAASA,EAAMK,IAAKC,GAEblC,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKS,QACzBT,EAAKU,MACLV,EAAKW,SAkDTC,CAAczB,IAEnBrB,gBAACC,OAAIC,iBAAKgB,GACLI,EACAC,EACAC,O,quBC/FrB,MAAMwM,UAAehO,gBAEjBqG,YAAY1F,GACR2F,MAAM3F,GACN+F,KAAKuH,UAAYjO,cAEdiL,SACH,MAAM,OAAEC,EAAF,UAAUvE,GAAcD,KAAK/F,MAC7BuN,EACFxH,KAAK/F,MAAM4I,QAAQsB,SACnBnE,KAAK/F,MAAM4I,QAAQsB,QAAQsD,SAC3BzH,KAAK/F,MAAM4I,QAAQsB,QAAQsD,QAAQD,gBACnCxH,KAAK/F,MAAM4I,QAAQsB,QAAQsD,QAAQD,iBAEvC,KAAMhD,GAAUA,EAAO9C,QAAU8C,EAAO9C,OAAOkE,gBAC3C,OAAO,KAGX,IAAI8B,EACJ,IACIA,EAAS,IAAIC,IAAInD,EAAO9C,OAAOkE,gBACjC,MAAOvK,GAEL,OADA2E,KAAK/F,MAAMqK,UAAUsD,UAAUvM,GACxB,KAGX,GAAIqM,GAAUA,EAAOG,UAAoD,WAAxCH,EAAOG,SAASC,oBAC7C,OAAO,KAEX,MAAMC,EAAkB7K,IAAW,YAAasH,EAAOzK,WAEvD,IAAI2K,EAAS,OACL1E,KAAK/F,OADA,IAET6K,QAAS9E,KAAKgI,eAAexD,EAAOC,SACpCwD,gBAAiB,CACbrD,YAAa5E,KAAK/F,MAClBF,UAAWgO,GAEfG,OAAQlI,KAAKmI,kBAcjB,OAVIzD,EAAS,OACFA,GADE,IADU,IAAnB8C,EACS,CAELY,MAAOpI,KAAKqI,aAAapI,EAAUqI,+BAG9B,CAELC,uBAAwB,IAGzBvI,KAAK/F,MAAMgL,WAAWP,GAGzBsD,eAAevD,GACnB,OAAKA,GAAYA,EAAQtI,MAASsI,EAAQtI,KAAKqG,OAK3ClJ,gBAACwL,UAAOtL,iBAAKiL,EAAO,CAAE1K,UAAU,wBAJzB,KAQPsO,aAAahP,GACjB,OACIC,qBAAGS,UAAU,2BAA2BoD,KAAK,QAAO,YAAW,aAC1D9D,GAIL8O,gBACJ,MAAM,OAAE3D,GAAWxE,KAAK/F,MAClBuO,EAAYhE,EAAO9C,OAAOkE,eAEhC,OAEItM,0BACIS,UAAWmD,IAAW,sBACtBuL,IAAKD,EACLE,OAAQlE,EAAOkE,OAAM,aACTlE,EAAOmE,gBACnBC,IAAK5I,KAAKuH,aAOXD,a,+GClGT,MAAOuB,UAAsCvP,YAC/CqG,YAAY1F,GACR2F,MAAM3F,GAGHsK,SACH,OACIjL,uBAAKS,UAAU,8BACXT,uBAAKS,UAAU,wBACXT,uBAAKS,UAAU,8BAA8BiG,KAAK/F,MAAMgG,UAAU6I,yBAClExP,uBAAKS,UAAU,8BAA8BiG,KAAK/F,MAAM8O,KAAKC,OAEjE1P,uBAAKS,UAAU,6BACXT,uBAAKS,UAAU,mCAAmCiG,KAAK/F,MAAMgG,UAAUgJ,8BACvE3P,uBAAKS,UAAU,mCAAmCiG,KAAKkJ,yBAE3D5P,uBAAKS,UAAU,8BACXT,uBAAKS,UAAU,oCAAoCiG,KAAK/F,MAAMgG,UAAUkJ,mCACxE7P,uBAAKS,UAAU,oCAAoCiG,KAAK/F,MAAM8O,KAAKK,kBAMjD,6BAC9B,OAAIpJ,KAAKqJ,iBACE/P,uBAAKS,UAAU,mCAAmCiG,KAAK/F,MAAM8O,KAAKO,uBAGzEhQ,uBAAKS,UAAU,oCACXT,qBAAGyD,KAAMiD,KAAKuJ,WAAYxP,UAAU,oCAAoCiG,KAAK/F,MAAMgG,UAAUuJ,iCAKnF,iBAClB,MAAM,YAAEC,EAAF,SAAeC,GAAa1J,KAAK/F,MAAMuK,OAC7C,MAAO,mBAAmBxE,KAAK2J,gBAAgBF,GAAa,WAAczJ,KAAK2J,gBAAgBD,KAAY1J,KAAK/F,MAAM8O,KAAKC,OAmBvHW,gBAAgBjM,EAA6BkM,GACjD,OAAKlM,EAEEA,EACFmM,QAAQ,OAAQ,IAChBA,QAAQ,SAAUD,EAAY,GAAK,gBACnCC,QAAQ,UAAW,KACnBA,QAAQ,WAAY,UACpBA,QAAQ,aACA,CAACnH,EAAOoH,IAAe,MAAMA,GAAIC,SAAS,KARlC,GAWG,uBACxB,QAAS/J,KAAK/F,MAAM8O,KAAKO,uB,ykBC/DjC,MAAMU,UAAyB1Q,gBACpBiL,SAAM,QACTvE,KAAK/F,MAAM4I,QAAQgB,cACnB,MAAMa,EAAS,OACR1E,KAAK/F,OADG,IAEXgQ,OAAQjK,KAAKkK,WACbC,MAAK,UAAEnK,KAAK/F,MAAMmQ,KAAKC,SAASC,cAA3B,iBAAE,EAAiCC,OAAOC,aAA1C,aAAE,EAA+CjP,IACjDwN,GAEOzP,gBAACuP,EAA6B,CAC1BhG,QAAS7C,KAAK/F,MAAM4I,QACpB5C,UAAWD,KAAK/F,MAAMgG,UACtBuE,OAAQxE,KAAK/F,MAAMuK,OACnBuE,KAAMA,EACNtN,IAAKsN,EAAKC,UAK9B,OAAOhJ,KAAK/F,MAAMgL,WAAWP,GAGX,iBAClB,OACIpL,uBAAKS,UAAU,8BACXT,uBAAKS,UAAU,wBAAwBiG,KAAK/F,MAAMgG,UAAU6I,yBAC5DxP,uBAAKS,UAAU,6BAA6BiG,KAAK/F,MAAMgG,UAAUgJ,8BACjE3P,uBAAKS,UAAU,8BAA8BiG,KAAK/F,MAAMgG,UAAUkJ,qCAMnEa,a,gICpCf,IAAMS,EAAN,cAAqCnR,YAMjCqG,YAAY1F,GACR2F,MAAM3F,GAEN+F,KAAK0K,UAAY,KACjB1K,KAAK2K,iBAAmBrR,cACxB0G,KAAK4K,aAAe5K,KAAK4K,aAAaC,KAAK7K,MAC3CA,KAAK8K,gBAAkB9K,KAAK8K,gBAAgBD,KAAK7K,MAEjDA,KAAKuB,MAAQ,CACTwJ,aAAa,GAIC,eAClB,MAA2B,OAAnB/K,KAAK0K,WAAyC,OAAnB1K,KAAK0K,WAAyC,OAAnB1K,KAAK0K,UAGhEM,oBAEmB,oBAAXC,QAA0BA,OAAOC,mBACxCD,OAAOC,iBAAiB,SAAUlL,KAAK8K,iBACvC9K,KAAK8K,mBAINK,uBAEmB,oBAAXF,QAA0BA,OAAOC,kBACxCD,OAAOG,oBAAoB,SAAUpL,KAAK8K,iBAQ3CvG,SACH,OAAIvE,KAAKqL,SACErL,KAAKsL,gBAETtL,KAAKuL,iBAGRA,iBACJ,MAAM,MAAErG,GAAUlF,KAAK/F,MAEvB,OACIX,uBAAKS,UAAWyR,IAAU,yCAA0CxL,KAAK/F,MAAMuK,OAAOzK,YAClFT,uBAAKS,UAAU,OACXT,uBAAKS,UAAU,YACVmL,EAAMuG,YAEXnS,uBAAKS,UAAU,YACXT,uBAAKS,UAAU,oDACXT,uBAAKS,UAAU,0CACVmL,EAAMwG,eAEXpS,uBAAKS,UAAU,0CACVmL,EAAMyG,UAGfrS,uBAAKS,UAAU,yCACXT,uBAAKS,UAAU,UACVmL,EAAM0G,cAS3BN,gBACJ,MAAM,MAAEpG,EAAF,UAASjF,GAAcD,KAAK/F,OAC5B,YAAE8Q,GAAgB/K,KAAKuB,MAE7B,OACIjI,uBAAKS,UAAWyR,IAAU,wCAAyCxL,KAAK/F,MAAMuK,OAAOzK,YACjFT,uBAAKS,UAAU,+BACfT,uBAAKS,UAAU,kCACfT,uBAAKS,UAAU,gCACXT,uBAAKS,UAAU,UACVmL,EAAMwG,gBAGfpS,uBAAKS,UAAU,iCACXT,uBAAKS,UAAU,sCACfT,uBAAKS,UAAU,uCACXT,uBAAKS,UAAU,UACXT,gBAACwD,SAAM,CACH+O,SAAU7L,KAAK2K,iBACf5Q,UAAU,+BACV8B,QAASmE,KAAK4K,aACdkB,MAAM,aAENxS,qBAAGS,UAAU,gCACbT,wBAAMS,UAAU,sCAAsCkG,EAAU8L,mBAEpEzS,gBAAC0S,QAAK,CACFC,WAAW,EACXC,MAAM,EACNC,gBAAiB,aACjBC,eAAgBpM,KAAK2K,iBACrB0B,OAAQtB,EACRuB,OAAQtM,KAAK4K,aACb2B,mBAAoB,QACpBC,iBAAkB,MAClBC,eAAgB,wBAChBC,OAAQ,MAERpT,gBAACqT,cAAW,CAACL,OAAQtM,KAAK4K,cAAe3K,EAAU8L,kBACnDzS,gBAACsT,YAAS,KACNtT,uBAAKS,UAAU,iCAAiCmL,EAAMyG,SACtDrS,sBAAIS,UAAU,mDACdT,uBAAKS,UAAU,qCAAqCmL,EAAMuG,aAE9DnS,gBAACuT,cAAW,KACRvT,gBAACwD,SAAM,CAACgP,MAAM,UAAUjQ,QAASmE,KAAK4K,aAAc7Q,UAAU,+BACzDkG,EAAU6M,iCAOnCxT,uBAAKS,UAAU,0BACXT,uBAAKS,UAAU,UACVmL,EAAM0G,YAOnBhB,eACJ5K,KAAK2B,SAAS,CACVoJ,aAAc/K,KAAKuB,MAAMwJ,cAIzBD,kBACJ9K,KAAK0K,UAAY1K,KAAK+M,eAElB/M,KAAKqL,UAAYrL,KAAKuB,MAAMwJ,cAAgB/K,KAAKqL,UACjDrL,KAAK4K,eAKLmC,eACJ,MAAM,QAAElK,GAAY7C,KAAK/F,MAGzB,GAAI4I,EAAQsB,SAAWtB,EAAQsB,QAAQ6I,QAA0C,WAAhCnK,EAAQsB,QAAQ6I,OAAOC,KACpE,MAAO,KAGX,QAAsB/O,WAAX+M,QAAwBA,OAAOiC,WAAY,CAClD,MAAMC,EAAetK,EAAQsB,QAAQgJ,aACrC,GAAIA,EACA,OAAIA,EAAaC,IAAMnC,OAAOiC,YAAcC,EAAaC,GAAGC,EACjD,KACAF,EAAaG,IAAMrC,OAAOiC,YAAcC,EAAaG,GAAGD,EACxD,KACAF,EAAaI,IAAMtC,OAAOiC,YAAcC,EAAaI,GAAGF,EACxD,KACAF,EAAaK,IAAMvC,OAAOiC,YAAcC,EAAaK,GAAGH,EACxD,KAEA,KAKnB,MAAO,OAlLXI,sBADCC,KACD,gCAiBUD,sBAATE,KAAS,6BAnBRlD,EAAsB,sBAD3BmD,KACKnD,GAwLSA,a,iFC1Lf,MAoEMxR,EAA0C,IAK3C,IAL4C,MAC/CC,EAD+C,UAE/CC,EAF+C,KAG/CC,EAH+C,QAI/CC,GACG,EACH,OACEC,gBAACC,OAAIC,iBAAKN,GACRI,gBAACC,OAAIC,iBAAKL,GACPC,EACAC,KA2CHI,EAAgB,KACpB,MAAMC,EAAgBC,SAASC,eAAe,YACxCC,EAAcF,SAASC,eAAe,yBACxCF,GAAiBG,IACnBH,EAAcI,KACW,aAAvBJ,EAAcI,KAAsB,OAAS,WAC/CD,EAAYE,UACgB,uBAA1BF,EAAYE,UACR,qBACA,uBAIKC,UAlDiCC,IAC9C,MAAM,OACJC,EADI,UAEJC,EAFI,QAGJC,EAHI,mBAIJC,EAJI,YAKJC,EALI,cAMJC,EANI,cAOJC,EAPI,qBAQJC,EARI,mBASJC,EATI,oBAUJC,EAVI,qBAWJC,EAXI,kBAYJC,EAZI,WAaJC,GACEb,EAEJ,OACEX,gBAACyB,SAAMvB,iBAAKU,GACTC,EAAUa,eAAiB1B,gBAACC,OAAIC,iBAAKa,IACrCF,EAAUa,eAAiB1B,gBAACL,EAAaO,iBAAKY,IAC/Cd,gBAACC,OAAIC,iBAAKc,GACRhB,gBAACC,OAAIC,iBAAKe,GACPE,EA3GyC,KAO/C,IAPgD,aACnDQ,EADmD,MAEnDC,EAFmD,eAGnDC,EAHmD,WAInDC,EAJmD,MAKnDC,EALmD,aAMnDC,GACG,EACH,OACEhC,gBAACC,OAAIC,iBAAKyB,GACPC,GACCA,EAAMK,IAAKC,GACQ,aAAbA,EAAKC,IAELnC,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SAC3BF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,MACNtC,0BACES,UAAU,wBAAuB,cACrB,OACZ8B,QAASpC,GAETH,qBACEwC,GAAG,wBACH/B,UAAU,yBAOlBT,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SAC3BF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,QAIbR,EACAC,EACAC,EACDhC,uBAAKS,UAAU,yCACZoB,KAiEEY,CAAarB,GA3D8B,KAGjD,IAHkD,eACrDsB,EADqD,MAErDd,GACG,EACH,OACE5B,gBAACC,OAAIC,iBAAKwC,GACPd,GACCA,EAAMK,IAAKC,GAEPlC,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKS,QAC3BT,EAAKU,MACLV,EAAKW,SAiDTC,CAAczB,IAEjBrB,gBAACC,OAAIC,iBAAKgB,GACPI,EACAC,EACAC,O,oCC7HX,mCAUA,MAAM+S,UAAsBvU,gBAMxBqG,YAAY1F,GACR2F,MAAM3F,GANF,KAAA6T,UAAqC,CACzCC,eAAgB/N,KAAK/F,MAAM4I,QAAQsB,QACnC6J,OAAS3M,GAAyCrB,KAAK/F,MAAMuK,OAAOyJ,cAAgB5M,EAAMK,OAAOhE,OAKjGsC,KAAKzD,iBAAmB2H,6BAAmBlE,KAAK/F,MAAM4I,QAAQsB,QAAQC,kBAAoBpE,KAAK/F,MAAMoK,aAAcrE,KAAK/F,MAAMqK,WAG3HC,SACH,OAAKvE,KAAK/F,MAAMuK,OAAO0J,YAMnB5U,gBAAC6U,YAAS,CACFpR,KAAMiD,KAAK/F,MAAMuK,OAAO0J,YACxBE,MAAOpO,KAAK/F,MAAMuK,OAAO4J,MAAK,aAClBpO,KAAK/F,MAAMuK,OAAOlI,UAC9BvC,UAAU,iBACV+T,UAAW9N,KAAK8N,UAChB3R,KAAM6D,KAAK/F,MAAMuK,OAAOyJ,cACxB1R,iBAAkByD,KAAKzD,oBAZ/ByD,KAAK/F,MAAMqK,UAAUjJ,MAAM,oEACpB,OAiBJwS,a,iFClCf,MA6DM5U,EAA0C,IAK3C,IAL4C,MAC7CC,EAD6C,UAE7CC,EAF6C,KAG7CC,EAH6C,QAI7CC,GACC,EACD,OACIC,gBAACC,OAAIC,iBAAKN,GACNI,gBAACC,OAAIC,iBAAKL,GACLC,EACAC,KA4CXI,EAAgB,KAClB,MAAMC,EAAgBC,SAASC,eAAe,YACxCC,EAAcF,SAASC,eAAe,yBACxCF,GAAiBG,IACjBH,EAAcI,KAA8B,aAAvBJ,EAAcI,KAAsB,OAAS,WAClED,EAAYE,UAAsC,uBAA1BF,EAAYE,UAAqC,qBAAuB,uBAIzFC,UA/CgCC,IAE3C,MAAM,OACFC,EADE,UAEFC,EAFE,QAGFC,EAHE,mBAIFC,EAJE,YAKFC,EALE,cAMFC,EANE,cAOFC,EAPE,qBAQFC,EARE,mBASFC,EATE,oBAUFC,EAVE,qBAWFC,EAXE,kBAYFC,EAZE,WAaFC,GACAb,EAEJ,OACIX,gBAACyB,SAAMvB,iBAAKU,GACPC,EAAUa,eAAiB1B,gBAACC,OAAIC,iBAAKa,IACrCF,EAAUa,eAAiB1B,gBAACL,EAAaO,iBAAKY,IAC/Cd,gBAACC,OAAIC,iBAAKc,GACNhB,gBAACC,OAAIC,iBAAKe,GACLE,EArG+B,KAO/C,IAPgD,aACjDQ,EADiD,MAEjDC,EAFiD,eAGjDC,EAHiD,WAIjDC,EAJiD,MAKjDC,EALiD,aAMjDC,GACC,EAED,OACIhC,gBAACC,OAAIC,iBAAKyB,GACLC,GAASA,EAAMK,IAAKC,GACA,aAAbA,EAAKC,IAEDnC,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,MACNtC,0BAAQS,UAAU,wBAAuB,cAAa,OAAO8B,QAASpC,GAClEH,qBAAGwC,GAAG,wBAAwB/B,UAAU,yBAMpDT,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,QAIjBR,EACAC,EACAC,EACDhC,uBAAKS,UAAU,yCACVoB,KAkEIY,CAAarB,GA5DoB,KAGjD,IAHkD,eACnDsB,EADmD,MAEnDd,GACC,EAED,OACI5B,gBAACC,OAAIC,iBAAKwC,GACLd,GAASA,EAAMK,IAAKC,GAEblC,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKS,QACzBT,EAAKU,MACLV,EAAKW,SAkDTC,CAAczB,IAEnBrB,gBAACC,OAAIC,iBAAKgB,GACLI,EACAC,EACAC,O,6qBCnGrB,MAAMuT,UAAuB/U,gBAClBiL,SACH,IAAIvE,KAAK/F,MAAMiL,QAAUlF,KAAK/F,MAAMiL,MAAMoJ,UAAYtO,KAAK/F,MAAMiL,MAAMoJ,QAAQ9L,OAE3E,OADAxC,KAAK/F,MAAM4I,QAAQyB,UAAUjJ,MAAM,qDAC5B,KAEX,MAAMkT,EAAS,OACRvO,KAAK/F,OADG,IAEXuU,WAAYxO,KAAK/F,MAAMiL,MAAMoJ,QAC7BG,WAAY,CACR7J,YAAa5E,KAAK/F,MAClBF,UAAWmD,IAAW,kBAAmB8C,KAAK/F,MAAMuK,OAAOzK,WAC3D2U,IAAI,MAERC,eAAgB,CACZ5U,UAAWmD,IAAW,uBAAwB8C,KAAK/F,MAAMuK,OAAOzK,WAChE2U,IAAK,QAIb,OAAO1O,KAAK/F,MAAMgL,WAAWsJ,IAItBF,a,4JChCR,MAAMO,EAAwB,IAA2E,IAA1E,KAAEzS,EAAF,UAAQpC,EAAR,KAAmBgD,EAAnB,UAAyBT,EAAzB,MAAoCyC,EAApC,QAA2C8P,EAA3C,iBAAoDtS,GAAsB,EAE5G,MAAMG,EAAUC,2BAAiB,QAASJ,EAAkB,GAAI,IAE1DuS,OAAoB5Q,IAAT/B,EAAqBA,EAAO,GAC7CO,EAAQqS,cAAcC,MAAQF,EAE9B,MAAMG,EAAYpS,iCAAuBN,EAAkBG,GAE3D,OACIpD,qCAAO2V,EAAS,CAAElV,UAAWA,EAAWgD,KAAMA,EAAI,aAAcT,EAAWT,QAASqT,2BAAiB3S,EAAkBG,EAASoS,IAAgBD,GAAW,CAAE,iBAAiB,IAC1KvV,wBAAM6V,SAAS,QACVL,GAELxV,wBAAM6V,SAAS,WAAWb,QAASvP,MCtBlCqQ,EAAkC,QAAC,UAAE/H,GAAH,SAAoB/N,gCAAQ+N,EAAR,M,ykBC0BnE,MAAMgI,UAAmB/V,gBAAzBqG,kCACY,KAAA2P,UAAgCtP,KAAK/F,MAAM4I,QAAQsB,QAAQoL,UAAUC,SACrE,KAAAjT,iBAAsC2H,6BAAmBlE,KAAK/F,MAAM4I,QAAQsB,QAAQC,kBAC3BpE,KAAK/F,MAAMoK,aACXrE,KAAK/F,MAAMqK,WA6DpE,KAAAmL,aAAe,KACnB,MAAM,KAAE1I,GAAS/G,KAAK/F,MAAMuK,OAC5B,OAAKuC,GAASA,EAAKpB,SAAYoB,EAAKpB,QAAQC,eAKxCtM,gBAACsV,EAAI,CACDzS,KAAM4K,EAAK+H,SACXxS,UAAWyK,EAAKzK,WAAayK,EAAK+H,SAClC/R,KAAMgK,EAAKpB,SAAWoB,EAAKpB,QAAQC,eACnC7G,MAAM,IACNhF,UAAU,qBACVwC,iBAAkByD,KAAKzD,oBAV3ByD,KAAK/F,MAAM4I,QAAQyB,UAAUjJ,MAAM,0DAC5B,OAcP,KAAAqU,0BAA6BC,IACjC,MAAM,MAAE3I,GAAUhH,KAAK/F,MAAMuK,OAE7B,OAAKwC,GAAWA,EAAMxE,OAAS,EAK3BwE,EAAMzL,IAAI,CAACmC,EAAmBqB,KAC1B4Q,IAEIrW,gBAACsV,EAAI,CACDnT,IAAKsD,EACL5C,KAAMuB,EAAMoR,SACZxS,UAAWoB,EAAMpB,WAAaoB,EAAMoR,SACpC/R,KAAMW,EAAMiI,SAAWjI,EAAMiI,QAAQC,eACrC7G,MAAO,CAAE4Q,gBAAe5F,WACxBhQ,UAAU,qBACVwC,iBAAkByD,KAAKzD,sBAdnCyD,KAAK/F,MAAM4I,QAAQyB,UAAUjJ,MAAM,wDAC5B,OAmBP,KAAAuU,sBAAyBD,IAC7B,MAAM,KAAEvF,GAASpK,KAAK/F,MAChB4V,EAAoBzF,EAAKyF,kBAAkBvF,OACjD,OAAKuF,EAKDA,EAAkBtU,IAAI,CAACmC,EAA0BqB,KAC7C4Q,IAEIrW,gBAACsV,EAAI,CACDnT,IAAKsD,EACL5C,KAAMuB,EAAMoS,KACZxT,UAAWoB,EAAMoS,KACjB/S,KAAMW,EAAMqS,IACZhR,MAAO4Q,EAAa5F,WACpBhQ,UAAU,qBACV8U,QAAS9P,IAAU8Q,EAAkBrN,OAAQ,EAC7CjG,iBAAkByD,KAAKzD,sBAfnCyD,KAAK/F,MAAM4I,QAAQyB,UAAUjJ,MAAM,2DAC5B,OAqBP,KAAA2U,aAAgBL,IACpB,MAAM,KAAEvF,EAAF,OAAQ5F,GAAWxE,KAAK/F,MACxB4V,EAAoBzF,EAAK6F,cAAc3F,OACvC4F,EAAU9F,EAAK8F,QAAQ5F,OACvB6F,EAAMnQ,KAAK/F,MAAM4I,QAAQsB,QAAQgM,IAAIC,WAAWrT,KACtD,IAAK8S,EAED,OADA7P,KAAK/F,MAAM4I,QAAQyB,UAAUjJ,MAAM,kDAC5B,KAEX,MAAM2L,EAAuB,GA8B7B,OA5BA6I,EAAkBtU,IAAI,CAACmC,EAAqBqB,KACxC4Q,IACA3I,EAAMqJ,KACF/W,gBAACsV,EAAI,CACDnT,IAAKsD,EACL5C,KAAMuB,EAAMoS,KACZxT,UAAWoB,EAAMoS,KACjB/S,KAAMW,EAAMqS,IACZhR,MAAO4Q,EAAa5F,WACpBhQ,UAAU,qBACVwC,iBAAkByD,KAAKzD,sBAI/B2T,IAAY1L,EAAO8L,kBACnBX,IACA3I,EAAMqJ,KACF/W,gBAACsV,EAAI,CACDzS,KAAM+T,EAAQJ,KACdxT,UAAW4T,EAAQJ,KACnB/S,KAAOoT,EACPpR,MAAO4Q,EAAa5F,WACpB8E,SAAS,EACT9U,UAAU,qBACVwC,iBAAkByD,KAAKzD,qBAI5ByK,GAIH,KAAAuJ,QAAU,KACdtF,OAAOuF,QAAQC,QAGX,KAAAC,kBAAoB,IACF1Q,KAAK/F,MAAM4I,SAAW7C,KAAK/F,MAAM4I,QAAQsB,SAAWnE,KAAK/F,MAAM4I,QAAQsB,QAAQwM,OAAS3Q,KAAK/F,MAAM4I,QAAQsB,QAAQwM,MAAMF,KAI3IG,UAASC,YAAoC,KAAtBlX,SAASmX,UAAmB7F,OAAOuF,QAAQhO,OAAS,GACpE,KAGPlJ,qBACIS,UAAU,4BACVoD,KAAK,SACLJ,KAAK,sBACLlB,QAASmE,KAAKuQ,QAAO,aACTvQ,KAAK/F,MAAMgG,UAAU8Q,mBAEhC/Q,KAAK/F,MAAMgG,UAAU8Q,mBAbnB,KAlLRxM,SAEH,MAAM,UAAExK,GAAciG,KAAK/F,MAAMuK,OACjC,IAAIwM,EAAW,KACXC,EAAkB,KAClBC,EAAsB,KAC1BF,EAAWhR,KAAKyP,eAChB,MAAME,EAAeqB,EAAW,EAAI,EACpC,GAAuB,aAAnBhR,KAAKsP,UACL2B,EAAkBjR,KAAK0P,0BAA0BC,GAC5CsB,IACDA,EAAkBjR,KAAK4P,sBAAsBD,SAE9C,GAAuB,YAAnB3P,KAAKsP,WAEZ,GADA2B,EAAkBjR,KAAK0P,0BAA0BC,IAC5CsB,EAAiB,CAClB,MAAME,EAAgBnR,KAAK/F,MAAM4I,QAAQuO,IAAI5M,OAAO6M,eAC9B,aAAlBF,IACAF,EAAkBjR,KAAKgQ,aAAaL,IAElB,oBAAlBwB,IACAD,EAAsBlR,KAAK0Q,oBAC3BO,EAAkBjR,KAAKgQ,aAAaL,IAElB,SAAlBwB,IACAD,EAAsBlR,KAAK0Q,oBACA,OAAxBQ,IACCD,EAAkBjR,KAAKgQ,aAAaL,WAMhDsB,EAAkBjR,KAAK0P,0BAA0BC,GAErD,MAAM2B,EAAgBhY,gBAAC8V,EAAS,CAAC/H,UAAU,MAErCkK,EAAmB,OAClBvR,KAAK/F,OADa,IAErBiN,oBAAqB,CACjBtC,YAAa5E,KAAK/F,MAClBF,UAAWmD,IAAW,gBAAiBnD,GACvC2U,IAAK,MACLvR,KAAM,cAEVgK,eAAgB,CACZuH,IAAK,KACL3U,UAAW,sBAEfqN,mBAAoB,CAChBsH,IAAK,KACL3U,UAAW,sBAEfgN,KAAMiK,EACNhK,MAAOiK,EACPhK,WAAYiK,EACZ7J,UAAWiK,IAEf,OAAOtR,KAAK/F,MAAMgL,WAAWsM,IA4ItBlC,a,+EClOf,MAaMmC,EAA+BtW,GAE7B5B,gCACK4B,GAASA,EAAMsH,OACftH,EAAMK,IAAI,CAACC,EAAuBuD,IAE1BzF,gBAACA,WAAc,CAACmC,IAAKsD,GAChBvD,IAIb,MAIEiW,UA5B8CxX,IACrD,MAAM,OAAEyX,EAAF,eAAUC,EAAV,uBAA0BC,EAA1B,qBAAkDC,GAAyB5X,EACjF,OACIX,gBAACyB,SAAMvB,iBAAKoY,GACRtY,gBAACC,OAAIC,iBAAKkY,GACNpY,gBAACC,OAAIC,iBAAKqY,GACLF,GAAkBA,EAAeG,sBAAwBH,EAAeG,qBAAqBtP,QAAWgP,EAA4BG,EAAeG,2B,6tBCoB5K,IAAMC,EAAN,cAA4BzY,YAKxBqG,YAAY1F,GACR2F,MAAM3F,GAJF,KAAAiH,gBAA0B,oBAuC3B,KAAA8Q,oBAAuB3Q,GAAyCrB,KAAK/F,MAAMuK,OAAOyN,mBAAqB5Q,EAAMK,OAAOhE,MAlCvHsC,KAAKkS,UAAYlS,KAAKkS,UAAUrH,KAAK7K,MACrCA,KAAKzD,iBAAmB2H,6BAAmBlE,KAAK/F,MAAM4I,QAAQsB,QAAQC,kBAAoBpE,KAAK/F,MAAMoK,aAAcrE,KAAK/F,MAAMqK,WAG3HC,SACH,MAAM,MAACW,EAAD,WAAQD,EAAR,OAAoBT,EAApB,KAA4B4F,GAASpK,KAAK/F,MAC1CkY,EAA+B/H,GAAQA,EAAKgI,wBAA0BhI,EAAKgI,uBAAuB9H,OAClG+H,EAAWF,QAA+EjU,IAA/CiU,EAA6BG,cAC9ElI,GAAQ5F,EAAO+N,wBACdJ,GAAgCA,EAA6BG,cAsB9D,OAAOrN,EArBQ,OACPjF,KAAK/F,OADE,IAEX2X,uBAAwB,CACpBhN,YAAa5E,KAAK/F,MAClBF,UAAYmD,IAAW8C,KAAKkB,gBAAiBsD,EAAOzK,YAExD8X,qBAAsB,CAClB9X,UAAW,6BAEf2X,OAAO,CACHhD,IAAK8D,mBACLzY,UAAciG,KAAKkB,gBAAR,WACXuR,iBAAmBjO,EAAOyN,oBAAsBzN,EAAOyN,oBAAuB,GAC9ES,cAAe,CAACrG,OAAQgG,GACxBM,SAAU3S,KAAKkS,UACfU,aAAc5S,KAAKgS,oBACnBjE,eAAgB/N,KAAK/F,MAAM4I,QAAQsB,QACnC5H,iBAAkByD,KAAKzD,kBAE3BoV,eAAgBzM,KAOhBgN,UAAU3Q,GACd,IAAIA,EAAM8K,QAAqC,sBAA3BrM,KAAK/F,MAAM4Y,iBAAyD,CACpF,MAAMC,EAAiB,CAAER,eAAe,GACxCtS,KAAK/F,MAAM4I,QAAQgB,cAAckP,OAAOC,oCAA0BF,GAAiBA,MA9CzFf,EAAa,sBADlBnE,KACKmE,GAmDSA,a,+EC7Ef,MAcMkB,EAAiBhZ,GAEfX,gBAACC,OAAIC,iBAAKS,EAAMiZ,aACXjZ,EAAMkZ,UACNlZ,EAAMmZ,IACNnZ,EAAMoZ,YAKJC,UAxBoDrZ,IAC/D,MAAM,QAAEwK,EAAF,eAAW8O,EAAX,eAA2BC,EAA3B,YAA2C5O,GAAgB3K,EACjE,OACIX,gBAACyB,SAAMvB,iBAAKoL,GACPH,EACDnL,gBAACC,OAAIC,iBAAKga,GACLD,EAAehY,IAAIC,GACTyX,EAAczX,Q,+ECM1BiY,UAZwExZ,IACnF,MAAM,2BAAEyZ,EAAF,QAA8BjP,EAA9B,QAAuC6J,EAAvC,MAAgDtH,GAAU/M,EAEhE,OACIX,gBAACyB,SAAMvB,iBAAKka,GACPjP,EACA6J,EACAtH,K,wKChBN,MAAM2M,EAAmB,mCCM1B,MAAOC,UAAmCC,sBAQ5ClU,YAAYmU,GAOR,OANAlU,MAAM,CACFmU,cAAe,UACfC,gBAAiB,uBACjBC,SAAUC,KAAKC,UAAUL,KARhB,KAAAM,OAAiBT,EAU9B3T,KAAKqU,aAAeP,EACb9T,KAGF,YACL,OAAOA,KAAKoU,OAQTE,2BACH,IAAIC,EAAc,GAMlB,OALA/a,OAAOgb,KAAKxU,KAAKqU,cAAc5S,QAAQgT,IACnC,MAAMC,EAAa1U,KAAKqU,aAAaI,GACrCF,GAAe,GAAGE,KAAYC,OAElCH,EAAcA,EAAYI,OAAO,EAAGJ,EAAY/R,OAAS,GACjD+R,EAAY/R,OAAS,EAAK,IAAI+R,EAAgB,ICpCxD,MAAOK,EAETjV,YAAY/D,GACRoE,KAAK6U,OAASjZ,EAGRkZ,UACNC,EACAC,GAEA,MAAMC,EAAe,GAIrB,OAHAzb,OAAOgb,KAAKQ,GAAUvT,QAAQhG,IAC1BwZ,EAAaxZ,GAAOsZ,EAAUC,EAASvZ,MAEjCwZ,GCLZ,MAAOC,UAA0CtB,EAAvDjU,c,oBAEqB,KAAAwV,KAAe,uBAElB,UACV,MAAM,WAAEC,EAAF,QAAcC,GAAYrV,KAAKqU,aAE/BiB,EAAU,GAAGtV,KAAKmV,WAAWC,0BAAmCC,IAItE,OAHKD,GACDG,QAAQla,MAAM,2EAEXia,GAQf,IAAKE,EAMAC,EAWAC,GAjBL,SAAKF,GACDA,+BACAA,2BACAA,cAHJ,CAAKA,MAA+B,KAMpC,SAAKC,GACDA,gDACAA,yBACAA,cACAA,cACAA,gBACAA,YACAA,gBACAA,YARJ,CAAKA,MAA0C,KAW/C,SAAKC,GACDA,YACAA,cACAA,iCACAA,cACAA,oBALJ,CAAKA,MAAsC,KAY3C,MAAMC,UAA2Cf,EAC5B,aACb,MAAMgB,EAA8C,CAChDxL,KAAM,GACNyL,WAAY7V,KAAK6U,OAAOW,EAAgCK,YACxDC,aAAc9V,KAAK6U,OAAOW,EAAgCM,cAC1DC,KAAM/V,KAAK6U,OAAOW,EAAgCO,OAUtD,OAPA/V,KAAK6U,OAAOmB,aAAavU,QAAQwU,IAC7B,MAAMC,EACFlW,KAAK8U,UAA2ImB,EAAaR,GACjKS,EAAkBb,QACdrV,KAAK8U,UAAsJmB,EAAYZ,QAASK,GACpLE,EAAOxL,KAAKiG,KAAK6F,KAEdN,GAsGA/B,ICvJVsC,EAMAC,EAaAC,EDoIUxC,qBAA0B,CACrCyC,OAZJC,eAAsB3a,EAA0C4a,GAC5D,MAAMC,EAAc5C,mBAA0B4C,YAExCC,QAAiB7C,cAAyDjY,EAAMuU,IAAK,MAAOsG,EAAa,CAC3GE,QAAS,CACLC,cAAe,gBAAgBhb,EAAMib,YAG7C,OAAO,IAAIlB,EAAmCe,EAAStM,MAAMwL,QAK7Dha,MAvBCkb,IACG,IAAKA,EAAKtS,OACN,MAAM,IAAIuS,MAAM,qEAAqED,EAAKtS,QAE9F,OAAO,IAAI0Q,EAAkC4B,EAAKtS,W,UCnJpD,MAAOwS,UAA6BpD,EAA1CjU,c,oBAEqB,KAAAwV,KAAe,wCAEzB,UACH,OAAOnV,KAAKmV,OAQpB,SAAKgB,GACDA,+BACAA,2BACAA,cAHJ,CAAKA,MAAkB,KAMvB,SAAKC,GACDA,cACAA,cACAA,oBACAA,cACAA,gBACAA,YACAA,YACAA,YACAA,yBACAA,sBAVJ,CAAKA,MAA0B,KAa/B,SAAKC,GACDA,2BACAA,yBACAA,6BACAA,4BAJJ,CAAKA,MAAyB,KAW9B,MAAMY,UAA8BrC,EACf,aACb,MAAMgB,EAAqC,CACvCxL,KAAM,GACNyL,WAAY7V,KAAK6U,OAAOsB,EAAmBN,YAC3CC,aAAc9V,KAAK6U,OAAOsB,EAAmBL,cAC7CC,KAAM/V,KAAK6U,OAAOsB,EAAmBJ,OAiBzC,OAdA/V,KAAK6U,OAAOqC,UAAUzV,QAAQ0V,IAC1B,MAAMC,EAAoD,GACpDC,EACFrX,KAAK8U,UAA4GqC,EAAUf,GAC/HiB,EAAezL,SAAWwL,EAC1BxB,EAAOxL,KAAKiG,KAAKgH,GAEjBF,EAASvL,SAASnK,QAAQyO,IACtBkH,EAAiB/G,KACbrQ,KAAK8U,UAAU5E,EAASmG,QAK7BT,GAgHA/B,yBAA0B,CACrCyC,OAbJC,eAAqC3a,EAA6B4a,GAC9D,MAAMC,EAAc5C,mBAA0B4C,YAGxCC,QAAiB7C,cAAgD,GAAGjY,EAAMuU,MAAMvU,EAAM0Y,6BAA8B,MAAOmC,EAAa,CAC1IE,QAAS,CACLC,cAAe,gBAAgBhb,EAAMib,YAG7C,OAAO,IAAII,EAAsBP,EAAStM,MAAMwL,QAKhDha,MA1B6Bkb,IAC7B,IAAKA,EAAKtS,OAAU,MAAM,IAAIuS,MAAM,wDAAwDD,EAAKtS,QACjG,OAAO,IAAIwS,EAAqBF,EAAKtS,WCxJnC,MAAO8S,UAA6B1D,EAA1CjU,c,oBAEqB,KAAAwV,KAAe,uBAElB,UACV,MAAM,MAAEoC,GAAUvX,KAAKqU,aAEjBiB,EAAU,GAAGtV,KAAKmV,WAAWoC,aAInC,OAHKA,GACDhC,QAAQla,MAAM,2EAEXia,GAsCAzB,yBAA0B,CACrCyC,OAZJC,eAAsB3a,EAA6B4a,GAC/C,MAAMC,EAAc5C,mBAA0B4C,YAO9C,aALuB5C,cAA6CjY,EAAMuU,IAAK,MAAOsG,EAAa,CAC/FE,QAAS,CACLC,cAAe,gBAAgBhb,EAAMib,aAG7BzM,MAKhBxO,MArBiBkb,IACjB,IAAKA,EAAKtS,OAAU,MAAM,IAAIuS,MAAM,wDAAwDD,EAAKtS,QACjG,OAAO,IAAI8S,EAAqBR,EAAKtS,W,oBClCzC,IAAagT,EAAb,cAA0Cle,YAMtCqG,YAAmB1F,GACf2F,MAAM3F,GAFU,KAAAwd,OAAiBzX,KAAK/F,MAAMyd,cAAgB,GAI5D1X,KAAK2X,gBAAkB3X,KAAK2X,gBAAgB9M,KAAK7K,MAG9CuE,SACH,IAAIrJ,EAAQ8E,KAAK4X,kBAejB,OAdK5X,KAAKyX,SACNvc,EAAQ,CAEA5B,0BACIoE,MAAO,GACPjC,IAAK,GAAE,iBACQ,EACf1B,UAAU,8BAET,qBAGJmB,IAGT5B,0BAAQS,UAAU,+BAA8B,aAA6B,KAAhBiG,KAAKyX,OAAgB,iBAAmBzX,KAAKyX,OAAQ/Z,MAAOsC,KAAKyX,OAAQ5Z,SAAUmC,KAAK2X,iBAChJzc,GAULyc,gBAAgBtW,GACpB,MAAMwW,EAAU7X,KAAK/F,MAAM6d,SAAS3V,KAAK3G,GAAQ6F,EAAMK,OAAOhE,QAAUlC,EAAKkC,MAAMqM,YACnF/J,KAAKyX,OAASpW,EAAMK,OAAOhE,MAC3BsC,KAAK/F,MAAM4D,SAASga,GAMhBD,kBACJ,OAAO5X,KAAK/F,MAAM6d,SAASvc,IACvB,CAACC,EAAMuD,KACH,MAAMgZ,EAAiBvc,EAAKkC,QAAUsC,KAAKyX,OAC3C,OACIne,0BACIoE,MAAOlC,EAAKkC,MACZjC,IAAKsD,EAAK,gBACKgZ,EACfhe,UAAU,8BAETyB,EAAKG,WAvDd8R,sBAAXC,KAAW,6BALH8J,EAAoB,sBADhC5J,KACY4J,GCMb,IAAMQ,EAAN,cAAsC1e,YAkClCqG,YAAmB1F,GAAoC,QACnD2F,MAAM3F,GA1BU,KAAAge,eAAyB,GAMzB,KAAAC,aAAuB,EAEvB,KAAAC,cAAwB,EACxB,KAAAC,kBAA4B,EAK5B,KAAAC,SAAmB,GAK/B,KAAAC,YAAwB,CAAC,EAAG,GAAI,GAAI,IAQxCtY,KAAKuY,2BAA6BvY,KAAKuY,2BAA2B1N,KAAK7K,MACvEA,KAAKwY,0BAA4BxY,KAAKwY,0BAA0B3N,KAAK7K,MACrEA,KAAKyY,cAAgBzY,KAAKyY,cAAc5N,KAAK7K,MAC7CA,KAAK0Y,kBAAoB1Y,KAAK0Y,kBAAkB7N,KAAK7K,MACrDA,KAAK2Y,SAAW3Y,KAAK2Y,SAAS9N,KAAK7K,MACnCA,KAAK2X,gBAAkB3X,KAAK2X,gBAAgB9M,KAAK7K,MAEjDA,KAAKmY,eAAgB,UAACle,EAAMuK,OAAOoU,sBAAd,QAAC,EAA6BC,QACnD7Y,KAAKoY,mBAAoB,UAACne,EAAMuK,OAAOoU,sBAAd,QAAC,EAA6BE,YAGpDvU,SACH,MAAMuT,EAAW9X,KAAKsY,YAAY/c,IAAIwd,IAAkB,CAAEpd,MAAOod,EAAOrb,MAAOqb,KACzEC,EAAiD,IAA7BhZ,KAAK/F,MAAMgf,eAEjChZ,WAAW,0BACXiZ,EADW,sCAEXC,EAFW,6BAGXC,EAHW,iCAIXC,IAEArZ,KAAK/F,OACH,eAAEqf,EAAF,mBAAkBC,GAAuBvZ,KAAK/F,MAAMuf,cAAgB,GAGpEC,EAFWzZ,KAAK/F,MAAMyf,SAAU,EAEZ,yBAAyB,kBAOnD,OACIpgB,wBAAMqgB,SANUC,IAChBA,EAAEhX,iBACF5C,KAAK2Y,aAKDrf,2BACIA,uBAAKS,UAAW0f,GACXP,GAA6B5f,sBAAIS,UAAU,yBAAyBmf,GACrE5f,yBACIS,UAAU,mCACVsE,QAAQ,YAEPkb,EAAqBD,EAAiB,IAEvChgB,yBACIQ,KAAK,OACLgC,GAAG,WACH/B,UAAU,iCACV2D,MAAOsC,KAAKiY,eACZpa,SAAUmC,KAAKuY,2BACfsB,YAAaN,EAAqBD,EAAiB,GACnDrb,UAAQ,IAEX+a,GACG1f,uBAAKS,UAAU,iCACXT,yBACIS,UAAU,sCACVsE,QAAQ,iBAEP8a,GAGL7f,gBAACke,EAAoB,CAAC1b,GAAG,gBAAgB4b,aAAc1X,KAAKkY,aAAanO,WAAY+N,SAAUA,EAAUja,SAAUmC,KAAKwY,6BAG/HxY,KAAK/F,MAAMuK,OAAOsV,qBAAuB9Z,KAAK+Z,8BAE1C/Z,KAAK/F,MAAM+f,gBAAkBha,KAAKia,kBACnC3gB,uBAAKS,UAAU,kCACXT,uBAAKS,UAAU,sEACXT,yBAAA,eAAqB0G,KAAKmY,cACtB7e,yBAAOQ,KAAK,WAAW+D,SAAUmC,KAAKyY,cAAeyB,QAASla,KAAKmY,eACnE7e,4BAAO8f,KAGf9f,uBAAKS,UAAU,0EACXT,yBAAA,eAAqB0G,KAAKoY,kBACtB9e,yBAAOQ,KAAK,WAAW+D,SAAUmC,KAAK0Y,kBAAmBwB,QAASla,KAAKoY,mBACvE9e,4BAAO+f,MAK3B/f,0BAAQQ,KAAK,SAASC,UAAU,gCAAgCyC,SAAUwD,KAAKma,aAAcC,WAAYpa,KAAK2Y,SAAU9c,QAASmE,KAAK2Y,SAAQ,aAAc,UAAW3Y,KAAK/F,MAAMuK,OAAO6V,kBAAoB,cAE/Mra,KAAKma,cAAgBna,KAAKiY,eAAezV,QAAU,GAAMlJ,uBAAKS,UAAU,kDAAkD,yBAapI4e,WACJ,IAAI2B,EAActa,KAAK/F,MAAMgf,cACT,IAAhBqB,IACAA,EAActa,KAAKkY,cAGvB,MAAMpE,EAAwC,CAC1CyG,SAAUva,KAAKiY,eACfuC,OAAQF,EACRG,WAAYza,KAAKoY,kBAQrB,GAJIpY,KAAKoY,mBAAqBpY,KAAKmY,qBACxBrE,EAAQ2G,YAGdza,KAAKia,iBAAkB,CACxB,MAAM,YAAES,GAAgB1a,KAAK/F,MAAMuK,OAKnCsP,EAAQ2G,aAAeC,YAAaC,kBAG/BD,WAAaC,kBAAqBD,WAAaE,qBACzC9G,EAAQ2G,WAInBza,KAAK/F,MAAMuK,OAAOsV,qBAAuB9Z,KAAKqY,WAC9CvE,EAAQ5D,QAAUlQ,KAAKqY,UAG3BrY,KAAK/F,MAAM4gB,cAAc/G,GAID,uBACxB,MAAM,YAAE4G,GAAgB1a,KAAK/F,MAAMuK,OACnC,QAAUkW,YAAaC,kBAAbD,MAAiCA,MAAaE,cAMpDpC,0BAA0Bhd,GAC1BA,IACAwE,KAAKkY,aAAe4C,OAAOtf,EAAKkC,QAIhC+a,gBACJzY,KAAKmY,cAAgBnY,KAAKmY,aAGtBO,oBACJ1Y,KAAKoY,kBAAoBpY,KAAKoY,iBAM1BG,2BAA2BlX,GAC/BrB,KAAKiY,eAAiB5W,EAAMK,OAAOhE,MAI/Byc,aAEJ,OADc,UACCY,KAAK/a,KAAKiY,gBAMrB8B,8BACJ,OACIzgB,uBAAKS,UAAU,+BACXT,yBAAO+E,QAAQ,cAActE,UAAU,WAAS,0BAChDT,0BAAQS,UAAU,mDAAmD+B,GAAG,cAAc4B,MAAOsC,KAAKqY,SAAUxa,SAAUmC,KAAK2X,iBACvHre,0BAAA,iBAAuB,EAAOoE,MAAM,IAAE,0BACrCsC,KAAKgb,0BAWdrD,gBAAgBtW,GACpBrB,KAAKqY,SAAWhX,EAAMK,OAAOhE,MAIzBsd,wBAEJ,OADoDhb,KAAK/F,MAAM2R,SAAW5L,KAAK/F,MAAM2R,SAAW,IACjFrQ,IAAI,CAAC0f,EAAQlc,IAEpBzF,0BACImC,IAAKsD,EACLrB,MAAOud,EAAOC,YAAW,iBACV,GAEdD,EAAOE,gBAxOZ1N,sBAAXC,KAAW,qCAMAD,sBAAXC,KAAW,mCAEAD,sBAAXC,KAAW,mCACAD,sBAAXC,KAAW,uCAKAD,sBAAXC,KAAW,+BAvBVsK,EAAuB,sBAD5BpK,KACKoK,GAwPSA,ICpPVoD,EDoPUpD,IClQT,MAAOqD,UAA8BxH,sBAMvClU,cACIC,MAAM,CAAE0b,mBAAmB,EAAMtH,gBAAiB,wBAAyBC,SAAU,WALxE,KAAAkB,KAAe,wCAEf,KAAAf,OAAiBT,EAMpB,UAAa,OAAO3T,KAAKmV,KACvB,YAAa,OAAOnV,KAAKoU,SAG7C,SAAKgH,GACDA,YACAA,cACAA,cACAA,iCACAA,oBALJ,CAAKA,MAAoB,KAWzB,MAAMG,UAA+B3G,EAChB,aACb,OAAO5U,KAAK6U,OAAOtZ,IAAI8Z,GACRrV,KAAK8U,UAIVO,EAAS+F,KAuCZvH,yBAA0B,CACrCyC,OAZJC,eAAsB3a,EAA8B4a,GAChD,MAAMC,EAAc5C,mBAA0B4C,YAExCC,QAAiB7C,cAA8CjY,EAAMuU,IAAK,MAAOsG,EAAa,CAChGE,QAAS,CACLC,cAAe,gBAAgBhb,EAAMib,YAG7C,OAAO,IAAI0E,EAAuB7E,EAAStM,MAAMwL,QAKjDha,MApBiBkb,GACV,IAAIuE,IC/Cf,IAAMG,EAAN,cAAmDliB,YAS/CqG,YAAY1F,GACR2F,MAAM3F,GAHU,KAAAwhB,WAA4C,GAK5Dzb,KAAK0b,8BAAgC1b,KAAK0b,8BAA8B7Q,KAAK7K,MAC7EA,KAAK2Y,SAAW3Y,KAAK2Y,SAAS9N,KAAK7K,MAIhCgL,oBACHhL,KAAK2b,kBAAkB7X,MAAM8X,GAAOrG,QAAQsG,KAAKD,IAG9CrX,SACH,MAAMuT,EAAW9X,KAAKyb,WAAWlgB,IAAI8Z,IAC1B,CACH1Z,MAAO0Z,EAAQrX,KACfN,MAAO2X,EAAQyG,QAIjB,+BACFC,EADE,sCAEFC,GACAhc,KAAK/F,MAAMgG,UAGTwZ,EAFWzZ,KAAK/F,MAAMyf,SAAU,EAEZ,6BAA6B,sBAEvD,OACIpgB,uBAAKS,UAAW0f,GACZngB,sBAAIS,UAAU,6BAA6BgiB,GAC3CziB,yBACIS,UAAU,8BACVsE,QAAQ,WAEP2d,GAEL1iB,gBAACke,EAAoB,CAAC1b,GAAG,UAAUgc,SAAUA,EAAUja,SAAUmC,KAAK0b,gCACtEpiB,0BAAQS,UAAU,oCAAoCyC,SAAUwD,KAAKma,WAAYte,QAASmE,KAAK2Y,UAAY3Y,KAAK/F,MAAMgiB,YAAc,cAQxItD,WACC3Y,KAAKma,YACNna,KAAK/F,MAAM4gB,cAAc,CACrBxF,QAASrV,KAAKkc,mBAUlBR,8BAA8BS,GAC9BA,IACAnc,KAAKkc,iBAAmBC,EAAWze,OAIrB,iBAClB,OAAQsC,KAAKkc,iBAGY,wBACzB,MAAMtgB,EAAQ,IAAIyf,EACZe,QAAkBC,EAAczgB,EAAOoE,KAAK/F,MAAM4J,eACxD7D,KAAKyb,WAAaW,IA5EV3O,sBAAXC,KAAW,uCAEAD,sBAAXC,KAAW,iCAPV8N,EAAoC,sBADzC5N,KACK4N,GAqFSA,IChGGc,EAKAC,EA+CAC,ED4CHhB,I,WChGf,SAAkBc,GACdA,sBACAA,kBAFJ,CAAkBA,MAAc,KAKhC,SAAkBC,GACdA,0BACAA,kDACAA,kDAHJ,CAAkBA,MAAyB,KA+C3C,SAAkBC,GACdA,UACAA,UACAA,UACAA,UACAA,UACAA,UANJ,CAAkBA,MAAQ,KC5C1B,IAAMC,EAAN,cAAoCnjB,YAKhCqG,YAAY1F,GACR2F,MAAM3F,GALU,KAAAyiB,SAAmB,EAMnC1c,KAAK2c,OAAS1iB,EAAM2iB,MACpBC,YACI,IAAM7c,KAAK/F,MAAM6iB,QAChBC,IACG/c,KAAK0c,QAAUK,IAIvB/c,KAAKuB,MAAM,CACPyb,eAAc,GAGlBhd,KAAKid,aAAejd,KAAKid,aAAapS,KAAK7K,MAGxCuE,SACH,MAAM,aACF2Y,EADE,aAEFC,GACAnd,KAAK/F,MAAMuK,OAAO4Y,mBAAqB,CAACF,aAAa,gBAAiBC,aAAa,iBACvF,OACI7jB,uBAAKS,UAAU,0BAEPiG,KAAKqd,aAAe/jB,0BAChBS,UAAU,gCACV8B,QAASmE,KAAKid,aAAY,gBACXjd,KAAKuB,MAAMyb,eAExBhd,KAAK0c,QAAWQ,EAAeC,GAGxCnd,KAAKsd,mBAKK,kBACnB,OAAOtd,KAAK/F,MAAMuK,OAAO+X,4BAA8BA,EAA0BgB,WAG5D,oBACrB,OAAOvd,KAAK/F,MAAMuK,OAAO+X,4BAA8BA,EAA0BiB,uBAG7EP,eACJjd,KAAK0c,SAAW1c,KAAK0c,QACrB1c,KAAK2B,SAAS,CACVqb,eAAgBhd,KAAKuB,MAAMyb,gBAI3BM,kBAEJ,MAAMG,EAAiBC,YAAK1d,KAAK2c,QACjCc,EAAKE,OAEL,MAAMC,EACFtkB,sBAAIS,UAAU,gCACT0jB,EAAKliB,IAAI,CAACsiB,EAAM9e,IAAWzF,sBAAImC,IAAKsD,EAAOhF,UAAU,+BAA+B8jB,KAI7F,OAAI7d,KAAK8d,eAAiB9d,KAAK2c,QAE1B3c,KAAK0c,SAAY1c,KAAK2c,OAFqBiB,OAEhD,IAtEQnQ,sBAAXC,KAAW,8BADV+O,EAAqB,sBAD1B7O,KACK6O,GA+ESA,QCpER,MAAMsB,EAAgB9jB,IACzB,MAAM+jB,EAAc/jB,EAAM+jB,cAAe,EACzC,MAAmB,OAAf/jB,EAAMH,KAEFR,uBAAKS,UAAU,mCACXT,sBAAIS,UAAU,0CACRikB,GAAkB/jB,EAAMgkB,aAAT,IADrB,IACgDhkB,EAAM+D,MAEtD1E,uBAAKS,UAAU,wCACXT,uBAAKS,UAAU,4CAA4CE,EAAMsgB,UACjEjhB,uBAAKS,UAAU,yCACXT,uBAAKS,UAAU,4CAA4CE,EAAMikB,SAAjE,UACA5kB,qBACIoI,OAAO,SAAQ,aACJ,+CACX3H,UAAU,sCACVgD,KAAM,8BACD9C,EAAMkkB,QAA6C/b,WAEnDnI,EAAMkkB,QAA6CC,QAC/CnkB,EAAM+D,QACXqgB,IAAI,cACVpkB,EAAMuK,OAAO8Z,SAAW,cAIlChlB,gBAACmjB,EAAqB,CAClBG,MAAO3iB,EAAM2iB,MACbpY,OAAQvK,EAAMuK,OACdvE,UAAWhG,EAAMgG,UACjB6c,QAAS7iB,EAAM6iB,WAMvBxjB,uBAAKS,UAAU,8BACXT,sBAAIS,UAAU,qCAAqCikB,GAAkB/jB,EAAMgkB,aAAT,IAAlE,IAA6FhkB,EAAM+D,MACnG1E,uBAAKS,UAAU,mCACXT,uBAAKS,UAAU,uCAAuCE,EAAMsgB,UAC5DjhB,uBAAKS,UAAU,iCAAiCE,EAAMskB,aAGjDtkB,EAAMukB,SAAWvkB,EAAMukB,QAAQhc,OAAS,EACrClJ,qBACIoI,OAAO,SACP3H,UAAU,0CACVgD,KAAM,KAAK9C,EAAMukB,QACjBH,IAAI,cAEHpkB,EAAMgG,UAAUwe,uCAEpBnlB,+BC9CvB,MAAOolB,UAA6BplB,IAAMqlB,UAE5Chf,YAAY1F,GACR2F,MAAM3F,GAEN+F,KAAK4e,WAAa5e,KAAK4e,WAAW/T,KAAK7K,MAGpCuE,SACH,MAAMsa,EAAY7e,KAAK/F,MAAM6kB,iBAAiBjJ,WACxCE,EAAO/V,KAAK/F,MAAMoa,aAAa0B,MAAQ,EAC7C,OACIzc,yBAAKS,UAAU,qBACXT,yBAAKS,UAAU,0BACViG,KAAK+e,sBAGNhJ,EAAO8I,GACPvlB,4BACIuC,QAASmE,KAAK4e,WACd7kB,UAAU,+BAETiG,KAAK/F,MAAM+kB,eAYxBD,qBACJ,MAAMf,EAAche,KAAK/F,MAAM+jB,cAAe,EAE9C,OAAKhe,KAAK/F,MAAMglB,YAAYzc,OAIE,aAA1BxC,KAAK/F,MAAMilB,WACHlf,KAAK/F,MAAMglB,YACf1jB,IAAI,CAAC4b,EAAU1b,IAEPnC,kBAACykB,EAAY,CACTvZ,OAAQxE,KAAK/F,MAAMuK,OACnB1K,KAAK,KACLygB,SAAU,GAAGpD,EAAS/U,WAAW+U,EAASgI,SAAShI,EAAS5V,UAAU4V,EAASiH,MAC/EpgB,KAAMmZ,EAASnZ,KACfkgB,SAAU/G,EAAS+G,SACnBziB,IAAK0b,EAASpO,KACdkV,cAAgBje,KAAK/F,MAAM6kB,iBAAiB/I,KAAO,GAAK/V,KAAK/F,MAAMuK,OAAO4a,SAAa3jB,EAAM,GAC7F0iB,QACI,CACI/b,QAAS+U,EAAS/U,QAClBgc,IAAKjH,EAASiH,KAGtBxB,MAAO5c,KAAKqf,aAAalI,EAASvL,UAClC3L,UAAWD,KAAK/F,MAAMgG,UACtB6c,QAAS9c,KAAK/F,MAAM6iB,QACpBkB,YAAaA,KAMrBhe,KAAK/F,MAAMglB,YACd1jB,IAAK0a,GAEE3c,kBAACykB,EAAY,CACTvZ,OAAQxE,KAAK/F,MAAMuK,OACnB1K,KAAK,gBACLygB,SAAU,GAAGtE,EAAYkJ,SAASlJ,EAAYZ,QAAQyG,MACtD9d,KAAMiY,EAAYjY,KAClBugB,YAAatI,EAAYqJ,MACzBd,QAASvI,EAAY9F,IACrB1U,IAAKwa,EAAYsJ,qBACjBtf,UAAWD,KAAK/F,MAAMgG,UACtB6c,QAAS9c,KAAK/F,MAAM6iB,QACpBkB,YAAaA,KA3CtB,CAAE1kB,yBAAKmC,IAAK,sBAAuB1B,UAAU,0BAA0BiG,KAAK/F,MAAMgG,UAAUuf,wBAuDnGH,aAAaI,GACjB,OAAOA,EAAalkB,IAAI2U,GAAWA,EAAQiL,aAGvB,yBACdnb,KAAK/F,MAAMylB,iBAAiB1f,KAAK/F,MAAMoa,eCxHrD,MAAMsL,UAAwBrmB,YAMnBiL,SAUH,OACIjL,uBAAKS,UAAU,mBAEXT,0BAAQS,UAAW,kCAAiCiG,KAAK4f,mBAAqB,2BAA6B,IAAMpjB,WAAUwD,KAAK4f,mBAAmC/jB,QAX3J,KACZmE,KAAK6f,gBAAgB,SAUkK,KAGlL7f,KAAK8f,eAENxmB,0BAAQS,UAAW,qCAAoCiG,KAAK+f,kBAAoB,2BAA6B,IAAMvjB,WAAUwD,KAAK+f,kBAAkClkB,QAZ5J,KACZmE,KAAK6f,gBAAgB,SAWmK,MAWlK,yBAC1B,OAA4B,IAArB7f,KAAKggB,MAAMC,MAGO,wBACzB,OAAOjgB,KAAKggB,MAAME,SAAWlgB,KAAK/F,MAAM4b,WAKpCgK,gBAAgBM,GACH,QAAbA,EACAngB,KAAK/F,MAAMmmB,aAAa,GAExBpgB,KAAK/F,MAAMmmB,aAAapgB,KAAK/F,MAAM4b,YAS1B,YACb,MAAMwK,EAAcvF,OAAO9a,KAAK/F,MAAMomB,aAChCC,EAAaC,KAAKC,IAAI,EAAGH,EAAc,GAE7C,MAAO,CAAEJ,MAAOK,EAAYJ,OADRK,KAAKE,IAAIzgB,KAAK/F,MAAM4b,WAAYyK,EAAa,IAO7DR,eACJ,MAAME,EAAQhgB,KAAKggB,MACnB,OAAOU,MAAMV,EAAME,OAASF,EAAMC,OAAOU,KAAK,GAAGplB,IAAI,CAACmC,EAAOqB,KACzD,MAAM6hB,EAAYZ,EAAMC,MAAQlhB,EAAQ,EACxC,OAAI6hB,IAAc9F,OAAO9a,KAAK/F,MAAMomB,aAG5B/mB,0BAAQS,UAAU,uDAAuD0B,IAAKsD,EAAOlD,QAAS,IAAMmE,KAAK/F,MAAMmmB,aAAaQ,IACvHA,GAMLtnB,0BAAQS,UAAU,2BAA2B0B,IAAKsD,EAAOlD,QAAS,IAAMmE,KAAK/F,MAAMmmB,aAAaQ,IAC3FA,MAQVjB,QChFf,MAAMkB,UAA0BvnB,YAM5BqG,YAAmB1F,GACf2F,MAAM3F,GAEN+F,KAAK8gB,kBAAoB9gB,KAAK8gB,kBAAkBjW,KAAK7K,MAGlDuE,SACH,OACIjL,uBAAKS,UAAU,qBACXT,uBAAKS,UAAU,0BACViG,KAAK+gB,uBACNznB,uBAAKS,UAAU,+BACXT,uBAAKS,UAAU,sCAEPiG,KAAK/F,MAAM+mB,aAAa5W,KAAK5H,QAC7BlJ,uBAAKS,UAAU,iDAAf,cAA2EiG,KAAK/F,MAAM+mB,aAAajL,KAAnG,OAA6G/V,KAAK/F,MAAM+mB,aAAanL,WAArI,UAIA7V,KAAK/F,MAAM+mB,aAAa5W,KAAK5H,QAC7BlJ,gBAACqmB,EAAe,CACZU,YAAargB,KAAK/F,MAAM+mB,aAAajL,KACrCF,WAAY7V,KAAK/F,MAAM+mB,aAAanL,WACpCuK,aAAcpgB,KAAK8gB,wBAmB3CA,kBAAkBG,GACtB,MAAMC,EAAWlhB,KAAK/F,MAAMoa,aAC5B6M,EAASnL,KAAOkL,EAChBjhB,KAAK/F,MAAMmmB,aAAac,GASpBH,uBACJ,MAAM/C,EAAche,KAAK/F,MAAM+jB,cAAe,EAC9C,IAAKhe,KAAK/F,MAAM+mB,aAAa5W,KAAK5H,OAC9B,MAAO,CAAElJ,uBAAKmC,IAAK,sBAAuB1B,UAAU,0BAA0BiG,KAAK/F,MAAMgG,UAAUuf,wBAEvG,OAAQxf,KAAK/F,MAAMilB,YACf,IAAK,WACD,OAAQlf,KAAK/F,MAAM+mB,aAA4C5W,KAC3D7O,IAAI,CAAC4b,EAAU1b,IAEPnC,gBAACykB,EAAY,CACTvZ,OAAQxE,KAAK/F,MAAMuK,OACnB1K,KAAK,KACLygB,SAAU,GAAGpD,EAAS/U,WAAW+U,EAASgI,SAAShI,EAAS5V,UAAU4V,EAASiH,MAC/EpgB,KAAMmZ,EAASnZ,KACfkgB,SAAU/G,EAAS+G,SACnBziB,IAAK0b,EAASpO,KACdkV,cAAgBje,KAAK/F,MAAM+mB,aAAajL,KAAO,GAAK/V,KAAK/F,MAAMuK,OAAO4a,SAAa3jB,EAAM,GACzF0iB,QACI,CACI/b,QAAS+U,EAAS/U,QAClBgc,IAAKjH,EAASiH,KAGtBxB,MAAO5c,KAAKqf,aAAalI,EAASvL,UAClC3L,UAAWD,KAAK/F,MAAMgG,UACtB6c,QAAS9c,KAAK/F,MAAM6iB,QACpBkB,YAAaA,KAIjC,QAEI,OAAQhe,KAAK/F,MAAM+mB,aAAqD5W,KACnE7O,IAAK0a,GAEE3c,gBAACykB,EAAY,CACTvZ,OAAQxE,KAAK/F,MAAMuK,OACnB1K,KAAK,gBACLygB,SAAU,GAAGtE,EAAYkJ,SAASlJ,EAAYZ,QAAQyG,MACtD9d,KAAMiY,EAAYjY,KAClBugB,YAAatI,EAAYqJ,MACzBd,QAASvI,EAAY9F,IACrB1U,IAAKwa,EAAYsJ,qBACjBtf,UAAWD,KAAK/F,MAAMgG,UACtB6c,QAAS9c,KAAK/F,MAAM6iB,QACpBkB,YAAaA,MAYjCqB,aAAaI,GACjB,OAAOA,EAAalkB,IAAI2U,GAAWA,EAAQiL,cAIpC0F,IC3HJM,ED2HIN,KC3Hf,SAAWM,GACPA,UACAA,gCAFJ,CAAWA,MAAW,KActB,IAAMC,EAAN,cAAuB9nB,YAuDnBqG,YAAmB1F,GACf2F,MAAM3F,GA3CU,KAAAonB,WAAkC,QAKlC,KAAAC,UAAoB,EAepB,KAAAC,aAAuB,KAEnC,KAAAC,qBAAmG,GAUnG,KAAAC,oBAAwF,CAC5FpM,QAAS,MACTkF,SAAU,GACVhD,MAAOvX,KAAK/F,MAAMuK,OAAO+S,OAWzBvX,KAAK0hB,iBAAmB1hB,KAAK0hB,iBAAiB7W,KAAK7K,MACnDA,KAAK2hB,iBAAmB3hB,KAAK2hB,iBAAiB9W,KAAK7K,MACnDA,KAAK4hB,kBAAoB5hB,KAAK4hB,kBAAkB/W,KAAK7K,MACrDA,KAAK6hB,8BAAgC7hB,KAAK6hB,8BAA8BhX,KAAK7K,MAC7EA,KAAK8gB,kBAAoB9gB,KAAK8gB,kBAAkBjW,KAAK7K,MACrDA,KAAK8hB,sBAAwB9hB,KAAK8hB,sBAAsBjX,KAAK7K,MAC7DA,KAAKid,aAAejd,KAAKid,aAAapS,KAAK7K,MAC3CA,KAAK+hB,aAAe/hB,KAAK+hB,aAAalX,KAAK7K,MAC3CA,KAAKgiB,wBAA0BhiB,KAAKgiB,wBAAwBnX,KAAK7K,MAGjE6c,YACI,IAAe7c,KAAKiiB,UACpB,KAAQjiB,KAAK2B,SAAS,MAE1B3B,KAAKuB,MAAM,CACPyb,eAAc,GAIfhS,oBACChL,KAAK/F,MAAMuK,OAAOsV,qBACb9Z,KAAK2hB,mBAIXpd,SACH,OAAIvE,KAAK/F,MAAMuK,OAAO0d,WAEd5oB,uBAAKS,UAAU,gCACViG,KAAKmiB,eACe,YAApBniB,KAAKqhB,YAA4BrhB,KAAKoiB,kBAK3B,UAApBpiB,KAAKqhB,WACErhB,KAAKmiB,eAELniB,KAAKqiB,mBAQZA,mBAIJ,MAAiB,cADCriB,KAAKghB,aAAgB,WAAa,gBACrBhhB,KAAKghB,cAAkD,IAAlChhB,KAAKghB,aAAa5W,KAAK5H,OAChExC,KAAKsiB,mBAETtiB,KAAKoiB,iBAIRL,eACJ/hB,KAAKuhB,aAAe,KAIhBS,0BACJhiB,KAAKuhB,aAAe,gBAGhBY,eACJ,MAAM,kBACFI,EADE,aAEFC,EAFE,kBAGFC,EAHE,aAIFjJ,EAJE,YAKFkJ,EALE,uBAMFC,GACA3iB,KAAK/F,MAAMuK,OACToe,EAAa5iB,KAAKuhB,eAAiBJ,EAAY0B,GAAG,0BAA0B,mBAC5EC,EAAwB9iB,KAAKuhB,eAAiBJ,EAAY4B,cAAc,qCAAqC,8BACnH,OACIzpB,uBAAKS,UAAU,aACXT,uBAAKS,UAAU,uBACXT,uBAAKS,UAAU,uBACViG,KAAKgjB,OACLhjB,KAAKijB,cAILV,GACDjpB,uBAAKS,UAAU,iBACXT,0BAAQS,UAAW6oB,EAAY/mB,QAASmE,KAAK+hB,cACxCW,GAELppB,0BAAQS,UAAW+oB,EAAuBjnB,QAASmE,KAAKgiB,yBACnDW,IAKbrpB,gBAAC0e,EAAuB,CACpBiB,cAAeuJ,EACfxI,eAAgByI,EAChB5H,cAAe7a,KAAK0hB,iBACpBzhB,UAAWD,KAAK/F,MAAMgG,UACtBuZ,aAAcA,EACdhV,OAAQxE,KAAK/F,MAAMuK,OACnBoH,SAAU5L,KAAKiiB,UACfvI,OAAQ1Z,KAAKuhB,eAAiBJ,EAAY0B,MAGzCN,GACDjpB,gBAACkiB,EAAoC,CACjCvb,UAAWD,KAAK/F,MAAMgG,UACtB4D,cAAe7D,KAAK/F,MAAM4I,QAAQgB,cAClCgX,cAAe7a,KAAK6hB,8BACpB5F,WAAYjc,KAAK/F,MAAMuK,OAAO6V,iBAC9BX,OAAQ1Z,KAAKuhB,eAAiBJ,EAAY4B,kBAW1DX,iBACJ,MAAM,uBAAEc,EAAF,2BAA0BC,GAA+BnjB,KAAK/F,MAAMgG,UACpEmjB,EAAYpjB,KAAKghB,aAAgB,WAAa,cAC9CA,EAAgBhhB,KAAKghB,aAAgBhhB,KAAKghB,aAAehhB,KAAKqjB,0BAC9DC,EAAsD,aAArCtjB,KAAK/F,MAAMuK,OAAO8X,eAEjChjB,gBAACunB,EAAiB,CACdrc,OAAQxE,KAAK/F,MAAMuK,OACnB0a,WAAYkE,EACZhD,aAAcpgB,KAAK8gB,kBACnBzM,aAAcrU,KAAKyhB,oBACnBT,aAAcA,EACd/gB,UAAWD,KAAK/F,MAAMgG,UACtB6c,QAAS9c,KAAKshB,SACdtD,YAAahe,KAAK/F,MAAMuK,OAAOwZ,cAAe,IAIlD1kB,gBAAColB,EAAoB,CACjBla,OAAQxE,KAAK/F,MAAMuK,OACnBwa,aAAcmE,EACdjE,WAAYkE,EACZ1D,iBAAkB1f,KAAK8hB,sBACvB7C,YAAajf,KAAKwhB,qBAClBnN,aAAcrU,KAAKyhB,oBACnB3C,iBAAkBkC,EAClB/gB,UAAWD,KAAK/F,MAAMgG,UACtB6c,QAAS9c,KAAKshB,SACdtD,YAAahe,KAAK/F,MAAMuK,OAAOwZ,cAAe,IAG1D,OACI1kB,uBAAKS,UAAU,oBACXT,uBAAKS,UAAU,+BAENiG,KAAK/F,MAAMuK,OAAO0d,YACnB5oB,qBAAGS,UAAU,6BAA6BwpB,SAAU,EAAG1nB,QAASmE,KAAK4hB,kBAAmBxH,WAAYpa,KAAK4hB,mBAAoBsB,GAEhIljB,KAAK/F,MAAMuK,OAAOgf,uBAAyBxjB,KAAKyjB,2BAChDH,IASTG,2BACJ,MAAM,gBACFC,EADE,gBAEFC,GACA3jB,KAAK/F,MAAMuK,OAAOof,sBAAwB,CAACF,gBAAgB,oBAAqBC,gBAAgB,qBACpG,OACIrqB,uBAAKS,UAAU,6BACXT,qBAAGS,UAAU,mCAAmCwpB,SAAU,EAAG1nB,QAASmE,KAAKid,aAAY,gBAAiBjd,KAAKuB,MAAMyb,cAAe5C,WAAYpa,KAAKid,cAC9Ijd,KAAKshB,SAAWoC,EAAkBC,IAM3C1G,eACJjd,KAAKshB,UAAYthB,KAAKshB,SACtBthB,KAAK2B,SAAS,CACVqb,eAAgBhd,KAAKuB,MAAMyb,gBAS3BsF,mBACJ,MAAM,uBACFY,EADE,sBAEF1D,EAFE,wBAGFqE,GACA7jB,KAAK/F,MAAMgG,UACf,OACI3G,uBAAKS,UAAU,uBACXT,uBAAKS,UAAU,iCACXT,qBAAG6D,KAAK,SAASpD,UAAU,gCAAgC8B,QAASmE,KAAK4hB,mBAAoBsB,GAC7F5pB,uBAAKS,UAAU,6BACViG,KAAKgjB,OACN1pB,yBAAIkmB,GACJlmB,0BAAQS,UAAU,mCAAmC8B,QAASmE,KAAK4hB,mBAAoBiC,MAOzF,aACd,MAAMzV,EAAQpO,KAAK/F,MAAMuK,OAAO4J,MAChC,OAAIA,GAASA,EAAMjS,KAEX7C,gBAACwL,UAAOtL,iBACA4U,EAAK,CACT0V,WAAY1V,EAAMM,IAClB3U,UAAU,qBAIf,KAGY,kBACnB,MAAM,WAAEgqB,GAAe/jB,KAAK/F,MAAMuK,OAClC,OAAIuf,EAGIzqB,gBAAC2M,oBAAiB,CACdlM,UAAU,wBACVoC,KAAM4nB,IAKX,KAMHnC,oBACJ5hB,KAAKqhB,WAAa,QASS,wBAACvN,GACxB9T,KAAKghB,mBACChhB,KAAK0hB,iBAAiB5N,SAEtB9T,KAAK6hB,8BAA8B/N,GAKd,4BAACA,GAMhC,GALKA,EAAQiC,KAGTjC,EAAQiC,OAFRjC,EAAQiC,KAAO,EAIf/V,KAAKghB,aAAc,CAClBlN,EAAyCyD,MAAQvX,KAAK/F,MAAMuK,OAAO+S,MACpE,MAAMyM,EAAoB,IAAIhN,EAAqBlD,GAC7CmQ,QAAiBC,EAAgBF,EAAmBhkB,KAAK/F,MAAM4I,QAAQgB,eAC7E7D,KAAKwhB,qBAAuB,IAAIxhB,KAAKwhB,wBAAyByC,EAAS7Z,UACpE,CACF0J,EAA8CsB,WAAapV,KAAK/F,MAAMuK,OAAO+S,MAC9E,MAAMyM,EAAoB,IAAI9O,EAAkCpB,GAC1DmQ,QAAiBE,EAA6BH,EAAmBhkB,KAAK/F,MAAM4I,QAAQgB,eAC1F7D,KAAKwhB,qBAAuB,IAAIxhB,KAAKwhB,wBAAyByC,EAAS7Z,MAE3EpK,KAAK2B,SAAS,IAYY,uBAACmS,GAC3B9T,KAAKshB,UAAW,EAChBxN,EAAQyD,MAAQvX,KAAK/F,MAAMuK,OAAO+S,MAClCzD,EAAQsQ,SAAWpkB,KAAK/F,MAAMuK,OAAO4a,SAAW,EAChD,MAAM4E,EAAoB,IAAIhN,EAAqBlD,GACnD9T,KAAKyhB,oBAAsB3N,EAC3B,MAAMuQ,QAAoBH,EAAgBF,EAAmBhkB,KAAK/F,MAAM4I,QAAQgB,eAMhF,OALA7D,KAAKwhB,qBAAuB6C,EAAYja,KACxCpK,KAAKghB,aAAeqD,EAEpBrkB,KAAKqjB,+BAA4BnlB,EACjC8B,KAAKqhB,WAAa,UACXrhB,KAAKghB,aAQ2B,oCAAClN,GACxCA,EAAQsB,WAAapV,KAAK/F,MAAMuK,OAAO+S,MACvCzD,EAAQsQ,SAAWpkB,KAAK/F,MAAMuK,OAAO4a,SAAW,EAChD,MAAM4E,EAAoB,IAAI9O,EAAkCpB,GAC1DuQ,QAAoBF,EAA6BH,EAAmBhkB,KAAK/F,MAAM4I,QAAQgB,eAO7F,OANA7D,KAAKwhB,qBAAuB6C,EAAYja,KACxCpK,KAAKqjB,0BAA4BgB,EACjCrkB,KAAKyhB,oBAAsB3N,EAE3B9T,KAAKghB,kBAAe9iB,EACpB8B,KAAKqhB,WAAa,UACXrhB,KAAKqjB,0BAQc,yBAC1B,MAAMiB,EAAsC,CAAC/M,MAAOvX,KAAK/F,MAAMuK,OAAO+S,OAChEyM,EAAoB,IAAI1M,EAAqBgN,GAC7C1Y,QAAiB2Y,EAAgBP,EAAmBhkB,KAAK/F,MAAM4I,QAAQgB,eAC7E7D,KAAKiiB,UAAYrW,IArYT6B,sBAAXC,KAAW,iCAKAD,sBAAXC,KAAW,+BAKAD,sBAAXC,KAAW,gCAKAD,sBAAXC,KAAW,mCAKAD,sBAAXC,KAAW,mCAOAD,sBAAXC,KAAW,gDAxCV0T,EAAQ,sBADbxT,KACKwT,GAsZSA,a,+ECtbf,MAsDMoD,EAA0B,CAACC,EAAyChZ,EAAkCiZ,IACjGprB,eAAmBmrB,EAAWvrB,MAAO,GAAIurB,EAAWE,YAAaC,EAAgBH,EAAYhZ,EAAYiZ,GAAiBD,EAAWI,aAG1ID,EAAkB,CAAC3qB,EAAoCwR,EAAkCiZ,IACvFA,EACOprB,eAAmBW,EAAMd,UAAW,GAAI2rB,EAAWJ,GAAiBK,EAActZ,IAEtF,KAGLsZ,EAAiB9qB,IACnB,MAAM,SAAE+qB,EAAF,oBAAYC,EAAZ,wBAAiCC,GAA4BjrB,EACnE,OAAI+qB,EAEI1rB,gBAACC,OAAIC,iBAAK0rB,GACN5rB,gBAACC,OAAIC,iBAAKyrB,GACLD,EAASzpB,IAAI,CAAC4pB,EAASpmB,IACpBzF,gBAACA,WAAc,CAACmC,IAAKsD,GAChBomB,MAOlB,MAGLL,EAAc7qB,IAChB,MAAM,iBAAEmrB,EAAF,eAAoBV,GAAmBzqB,EAC7C,OAAIyqB,EAEIprB,gBAACC,OAAIC,iBAAK4rB,GACLV,GAIN,MAGLW,EAA2BprB,IAC7B,MAAM,2BAAEqrB,EAAF,sBAA8BC,EAA9B,2BAAqDC,GAA+BvrB,EAC1F,OAAIsrB,EAEIjsB,gBAACC,OAAIC,iBAAK8rB,GACLC,EAAsBhqB,IAAI,CAACkqB,EAAU1mB,IAClCzF,gBAACA,WAAc,CAACmC,IAAKsD,GAChB0mB,EACAF,GAAyBA,EAAsBxmB,EAAQ,IAAMymB,KAO3E,MAGLE,EAAezrB,IACjB,MAAM,MAAEmU,EAAF,eAASuX,GAAmB1rB,EAClC,OAAImU,EAEI9U,gBAACC,OAAIC,iBAAKmsB,GACNrsB,0BACK8U,EAAMwX,YACNxX,EAAMyX,UAFX,IAGOzX,EAAM0X,WAHb,MAQL,MAGIC,UAjI8D9rB,IACzE,MAAM,sBAAE+rB,EAAF,SAAyBpa,EAAzB,WAAmCqa,EAAnC,kBAA+CC,EAA/C,wBAAkEC,EAAlE,cAA2Fza,EAA3F,SAA0GL,EAA1G,YAAoH+a,EAApH,kBAAiIC,EAAjI,eAAoJC,EAApJ,WACF7a,EADE,kBACUoE,EADV,cAC6B0W,EAD7B,qBAC4CC,EAD5C,iCACkEC,EADlE,aACoGtnB,EADpG,uBACkHunB,EADlH,mBAC0IC,GAAuB1sB,EACvK,OAAIoR,EAEI/R,gBAACyB,SAAMvB,iBAAKwsB,GACPnW,GAAqBwV,EAAwBxV,GAC7C6V,EAAYY,GACZ5a,EACA0a,EACA5B,EAAwB6B,EAAmB5a,EAAY8a,GACxDjtB,gBAACC,OAAIC,iBAAKktB,GACLC,GAELrtB,gBAACC,OAAIC,iBAAK0sB,GACL/mB,EACAyM,GAEJqa,GAKT3sB,gBAACyB,SAAMvB,iBAAKwsB,GACRnW,GACIvW,gBAACC,OAAIC,iBAAKgtB,GACTnB,EAAwBxV,IAG7BvW,gBAACC,OAAIC,iBAAKitB,GACThb,GAAcsZ,EAActZ,GAC7BnS,gBAACC,OAAIC,iBAAK2sB,GACN7sB,gBAACC,OAAIC,iBAAKktB,GACLC,GAELrtB,uBAAKS,UAAU,iDACVusB,GAAkBZ,EAAYY,GAC9B5a,GAELpS,uBAAKS,UAAU,6CACVwsB,GAAiBzB,EAAWyB,IAEjCjtB,gBAACC,OAAIC,iBAAK0sB,GACT/mB,EACIyM,GAEJqa,O;;;;;ACrCV,MAAMW,UAAmBttB,gBAErBiL,SACH,MAAM,QAAEO,EAAF,gBAAWmD,EAAX,OAA4BC,EAA5B,MAAoCE,EAApC,sBAA2CG,GAA0BvI,KAAK/F,MAEhF,OACIX,gBAACyB,SAAMvB,iBAAKyO,GACPG,EACAG,IAAmD,IAA1BA,EACtBjP,gCACKwL,EACAoD,GACE,OAKZ0e,a,izBCaf,IAAMC,EAAN,cAAkBvtB,YAIhBqG,YAAY1F,GACV2F,MAAM3F,GAJQ,KAAA6sB,cAAwB,YAiEjC,KAAA9U,oBAAuB3Q,GAAyCrB,KAAK/F,MAAMuK,OAAOC,QAAStI,KAAOkF,EAAMK,OAAOhE,MAgD9G,KAAAqpB,SAAW,CAAChoB,EAAejD,IAAgB8d,IACjD,MAAMoN,EAAiB,CAAEC,mBAAoBloB,EAAOmoB,MAAOprB,GAC3DkE,KAAK/F,MAAM4I,QAAQgB,cAAckP,OAAOoU,8BAAoBH,GAAiBA,GAC7EhnB,KAAK2B,SAAS,CAAEylB,gBAAiBroB,IAEjC,MAAMgP,EAAiB/N,KAAK/F,MAAM4I,QAAQsB,QACpCkjB,EAASrnB,KAAKsnB,iBAAiBvZ,EAAgB/N,KAAK8mB,cAAe,GAAG9mB,KAAK/F,MAAM6B,MAAMyrB,OAAOxoB,EAAQ,MAC5GgP,GAAkB9C,OAAOuF,QAAQgX,UAAU,CAAEC,KAAMJ,GAAU,GAAIA,IAG3D,KAAAK,WAAa,CAAC3oB,EAAejD,IAAgB8d,IAEnD,GAAkB,KAAdA,EAAE+N,QAAgB,CACpB,MAAMX,EAAiB,CAAEC,mBAAoBloB,EAAOmoB,MAAOprB,GAC3DkE,KAAK/F,MAAM4I,QAAQgB,cAAckP,OAAOoU,8BAAoBH,GAAiBA,GAC7EhnB,KAAK2B,SAAS,CAAEylB,gBAAiBroB,IAEjC,MAAMgP,EAAiB/N,KAAK/F,MAAM4I,QAAQsB,QACpCkjB,EAASrnB,KAAKsnB,iBAAiBvZ,EAAgB/N,KAAK8mB,cAAe,GAAG9mB,KAAK/F,MAAM6B,MAAMyrB,OAAOxoB,EAAQ,MAC5GgP,GAAkB9C,OAAOuF,QAAQgX,UAAU,CAAEC,KAAMJ,GAAU,GAAIA,GAGnE,GAAkB,KAAdzN,EAAE+N,SAAgC,KAAd/N,EAAE+N,QAAgB,CACxC,MAAM,MAAEziB,GAAUlF,KAAK/F,MACjB2tB,EAAa1iB,GAASA,EAAM2iB,UAAY3iB,EAAM2iB,SAASrlB,QAAU,EAEvE,GAAkB,KAAdoX,EAAE+N,QAAgB,CAGhB5oB,EAAQ,IAAM6oB,IAChB7oB,GAAS,GAEX,MAAMioB,EAAiB,CAAEC,mBAAoBloB,EAAQ,EAAGmoB,MAAOprB,GAC/DkE,KAAK/F,MAAM4I,QAAQgB,cAAckP,OAAOoU,8BAAoBH,GAAiBA,GAC7EhnB,KAAK2B,SAAS,CAAEylB,gBAAiBroB,EAAQ,IAEzC,MAAMgP,EAAiB/N,KAAK/F,MAAM4I,QAAQsB,QACpCkjB,EAASrnB,KAAKsnB,iBAAiBvZ,EAAgB/N,KAAK8mB,cAAe,GAAG9mB,KAAK/F,MAAM6B,MAAMyrB,OAAOxoB,EAAQ,MAC5GgP,GAAkB9C,OAAOuF,QAAQgX,UAAU,CAAEC,KAAMJ,GAAU,GAAIA,QAG5D,GAAkB,KAAdzN,EAAE+N,QAAgB,CAEb,IAAV5oB,IACFA,EAAQ6oB,GAEV,MAAMZ,EAAiB,CAAEC,mBAAoBloB,EAAQ,EAAGmoB,MAAOprB,GAC/DkE,KAAK/F,MAAM4I,QAAQgB,cAAckP,OAAOoU,8BAAoBH,GAAiBA,GAC7EhnB,KAAK2B,SAAS,CAAEylB,gBAAiBroB,EAAQ,IAEzC,MAAMgP,EAAiB/N,KAAK/F,MAAM4I,QAAQsB,QACpCkjB,EAASrnB,KAAKsnB,iBAAiBvZ,EAAgB/N,KAAK8mB,cAAe,GAAG9mB,KAAK/F,MAAM6B,MAAMyrB,OAAOxoB,MACpGgP,GAAkB9C,OAAOuF,QAAQgX,UAAU,CAAEC,KAAMJ,GAAU,GAAIA,MAhKrE,MAAM,gBAAES,GAAoB9nB,KAAK/F,MAAMuK,QACjC,MAAEU,GAAUlF,KAAK/F,MACjB2tB,EAAa1iB,GAASA,EAAM2iB,UAAY3iB,EAAM2iB,SAASrlB,QAAU,EACvE,IAAIulB,EAAeD,GAAmBA,GAAmBF,GAAcE,EAAkB,EAAIA,EAAkB,EAAI,EACnH,MAAMvT,EAAsBvU,KAAK/F,MAAM4I,SAAW7C,KAAK/F,MAAM4I,QAAQsB,SAAWnE,KAAK/F,MAAM4I,QAAQsB,QAAQwM,OAAS3Q,KAAK/F,MAAM4I,QAAQsB,QAAQwM,MAAMqX,WAAa,GAClK,IAAIC,EAAwB,EAC5B,GAAI1T,EAAY2T,QAAQ,KAAO,EAAG,CAChC,MAAMC,EAAM5T,EAAY6T,MAAM,KACbD,EAAI,KACJnoB,KAAK/F,MAAM6B,KAC1BmsB,EAAgB1qB,SAAS4qB,EAAI,GAAI,KAGrCJ,EAAeE,EAAgB,GAAKA,GAAiBL,EAAaK,EAAgB,EAAIF,EACtF/nB,KAAKuB,MAAQ,CAAE6lB,gBAAiBW,GAEhC/nB,KAAKqoB,cAAgBroB,KAAKqoB,cAAcxd,KAAK7K,MAC7CA,KAAKsoB,eAAiBtoB,KAAKsoB,eAAezd,KAAK7K,MAC/CA,KAAK+mB,SAAW/mB,KAAK+mB,SAASlc,KAAK7K,MACnCA,KAAK0nB,WAAa1nB,KAAK0nB,WAAW7c,KAAK7K,MACvCA,KAAKsnB,iBAAmBtnB,KAAKsnB,iBAAiBzc,KAAK7K,MACnDA,KAAKuoB,WAAa,KAEbhkB,SACL,MAAM,MAAEW,GAAUlF,KAAK/F,OACjB,QAAEwK,EAAF,UAAW1K,GAAciG,KAAK/F,MAAMuK,OAEpCgkB,EAAmB/jB,GACvBnL,gBAACsX,OAAa,CACZ7W,UAAU,iCACV2U,IAAKjK,EAAQiK,KAAO,KACpBvS,KAAMsI,EAAQtI,KACd2R,UAAW,CAAEE,OAAQhO,KAAKgS,oBAAqBjE,eAAgB/N,KAAK/F,MAAM4I,QAAQsB,WAGhFyjB,EAAa1iB,GAASA,EAAM2iB,UAAY3iB,EAAM2iB,SAASrlB,QAAU,EAKjEimB,EAAY,OACbzoB,KAAK/F,OADQ,IAEhByuB,aAAc,CACZ9jB,YAAa5E,KAAK/F,MAClBF,UAAWmD,IAAW,SAAUnD,IAElC4uB,cAAe,CAAE5uB,UAAW,yBAC5B6uB,YAAa,CAAE7uB,UAAW,sBAAuB2U,IAAK,KAAiBvR,KAAM,WAC7EsH,QAAS+jB,EACThkB,OAAQxE,KAAK/F,OAAS+F,KAAK/F,MAAMuK,OACjCqkB,iBAAkB,CAChBna,IAAK,MACL3U,UAAW,0BAEb+uB,YAAalB,EAAa,GAAK1iB,EAAM2iB,SAAStsB,IAAI,CAACC,EAAuBuD,IAAkBiB,KAAKsoB,eAAe9sB,EAAMuD,IACtHgqB,WAAYnB,EAAa,GAAK1iB,EAAM2iB,SAAStsB,IAAI,CAACC,EAAuBuD,IAAkBiB,KAAKqoB,cAAc7sB,EAAMuD,MAEtH,OAAOiB,KAAK/F,MAAMgL,WAAWwjB,GAKxBO,qBACL,MAAM,KAAE5e,GAASpK,KAAK/F,MAChBgvB,EAAkB7e,GAAQA,EAAK4c,gBAAkB5c,EAAK4c,eAAe1c,QAAUF,EAAK4c,eAAe1c,OAAO4c,MAChH,GAAI+B,EACEjpB,KAAK/F,MAAM6B,KAAOmtB,GACpBjpB,KAAKuoB,YAAcvoB,KAAKuoB,WAAWW,YAEhC,CACL,MAAM3U,EAAsBvU,KAAK/F,MAAM4I,SAAW7C,KAAK/F,MAAM4I,QAAQsB,SAAWnE,KAAK/F,MAAM4I,QAAQsB,QAAQwM,OAAS3Q,KAAK/F,MAAM4I,QAAQsB,QAAQwM,MAAMqX,WAAa,GAClK,GAAIzT,EAAY2T,QAAQ,KAAO,EAAG,CACpB3T,EAAY6T,MAAM,KACT,KACJpoB,KAAK/F,MAAM6B,IAC1BkE,KAAKuoB,YAAcvoB,KAAKuoB,WAAWW,UAMnCb,cAAc7sB,EAAuBuD,GAC3C,MAAM,KAAEqL,GAASpK,KAAK/F,MAChBgtB,EAAqB7c,GAAQA,EAAK4c,gBAAkB5c,EAAK4c,eAAe1c,QAAUF,EAAK4c,eAAe1c,OAAO2c,mBAC7GgC,EAAkB7e,GAAQA,EAAK4c,gBAAkB5c,EAAK4c,eAAe1c,QAAUF,EAAK4c,eAAe1c,OAAO4c,MAC1GiC,OAAkCjrB,IAAvB+oB,GAAoCgC,IAAoBjpB,KAAK/F,MAAM6B,GAAKmrB,IAAuBloB,EAAQiB,KAAKuB,MAAM6lB,kBAAoBroB,EACjJqqB,EAAYC,uBAAatqB,EAAOiB,KAAK/F,MAAM6B,IAEjD,OACExC,sBACEmC,IAAKsD,EACLhF,UAAU,yBACVwpB,SAAU4F,EAAW,GAAK,EAC1BttB,QAASmE,KAAK+mB,SAAShoB,EAAOiB,KAAK/F,MAAM6B,IACzCwtB,UAAWtpB,KAAK0nB,WAAW3oB,EAAOiB,KAAK/F,MAAM6B,IAE7C8M,IAAKnM,IAAcsC,IAAUiB,KAAKuB,MAAM6lB,kBAAmBpnB,KAAKuoB,WAAa9rB,IAAS,gBACvE2sB,EAAS,gBACTD,EACfhsB,KAAK,OAEL7D,gBAACA,WAAc,CAACmC,IAAKsD,GAClBzF,eAAmBkC,EAA4B,CAAE4K,YAAaM,cAAYG,UAAW0iB,WAAYxqB,IAAUiB,KAAKuB,MAAM6lB,gBAAiBoC,UAAWzqB,EAAOmoB,MAAOlnB,KAAK/F,MAAM6B,OA+D5KwsB,eAAe9sB,EAAuBuD,GAC5C,OACEzF,gBAACA,WAAc,CAACmC,IAAKsD,GAClBzF,eAAmBkC,EAA4B,CAAE4K,YAAaM,cAAYC,WAAY4iB,WAAYxqB,IAAUiB,KAAKuB,MAAM6lB,gBAAiBoC,UAAWzqB,EAAOmoB,MAAOlnB,KAAK/F,MAAM6B,MAK3KwrB,iBAAiBvZ,EAA0C0b,EAAmBC,GACpF,IAAIvZ,EAGFA,EADES,mBAA0BC,UACtB,IAAIlJ,IAAIsD,OAAOsP,SAASxd,MAExB,IAAI4K,IAAIoG,EAAeoC,IAAIC,WAAWrT,MAG9C,MAAM4sB,EAAS,IAAI1e,OAAO2e,gBAAgBzZ,EAAI0Z,QAG9C,OAFAF,EAAOG,IAAIL,EAAWC,GACtBvZ,EAAI0Z,OAASE,mBAAmBJ,EAAO5f,YAChCoG,EAAIpG,aA/LT8c,EAAG,sBADRjZ,KACKiZ,GAmMSA,a,+ECnOf,MA2DM5tB,EAA0C,IAK3C,IAL4C,MAC7CC,EAD6C,UAE7CC,EAF6C,KAG7CC,EAH6C,QAI7CC,GACC,EACD,OACIC,gBAACC,OAAIC,iBAAKN,GACNI,gBAACC,OAAIC,iBAAKL,GACLC,EACAC,KA4CXI,EAAgB,KAClB,MAAMC,EAAgBC,SAASC,eAAe,YACxCC,EAAcF,SAASC,eAAe,yBACxCF,GAAiBG,IACjBH,EAAcI,KAA8B,aAAvBJ,EAAcI,KAAsB,OAAS,WAClED,EAAYE,UAAsC,uBAA1BF,EAAYE,UAAqC,qBAAsB,uBAIxFC,UA/CgCC,IAE3C,MAAM,OACFC,EADE,UAEFC,EAFE,QAGFC,EAHE,mBAIFC,EAJE,YAKFC,EALE,cAMFC,EANE,cAOFC,EAPE,qBAQFC,EARE,mBASFC,EATE,oBAUFC,EAVE,qBAWFC,EAXE,kBAYFC,EAZE,WAaFC,GACAb,EAEJ,OACIX,gBAACyB,SAAMvB,iBAAKU,GACPC,EAAUa,eAAiB1B,gBAACC,OAAIC,iBAAKa,IACrCF,EAAUa,eAAiB1B,gBAACL,EAAaO,iBAAKY,IAC/Cd,gBAACC,OAAIC,iBAAKc,GACNhB,gBAACC,OAAIC,iBAAKe,GACLE,EAnG+B,KAO/C,IAPgD,aACjDQ,EADiD,MAEjDC,EAFiD,eAGjDC,EAHiD,WAIjDC,EAJiD,MAKjDC,EALiD,aAMjDC,GACC,EAED,OACIhC,gBAACC,OAAIC,iBAAKyB,GACLC,GAASA,EAAMK,IAAKC,GACA,aAAbA,EAAKC,IAEDnC,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,MACNtC,0BAAQS,UAAU,wBAAuB,cAAa,OAAO8B,QAASpC,GAClEH,qBAAGwC,GAAG,wBAAwB/B,UAAU,yBAMpDT,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,QAIjBR,EACAC,EACAC,EACDhC,uBAAKS,UAAU,yCAAyCoB,KAiE/CY,CAAarB,GA5DoB,KAGjD,IAHkD,eACnDsB,EADmD,MAEnDd,GACC,EAED,OACI5B,gBAACC,OAAIC,iBAAKwC,GACLd,GAASA,EAAMK,IAAKC,GAEblC,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKS,QACzBT,EAAKU,MACLV,EAAKW,SAkDTC,CAAczB,IAEnBrB,gBAACC,OAAIC,iBAAKgB,GACLI,EACAC,EACAC,O,wKC1FrB,IAAakvB,EAAb,cAAuC1wB,YAYnCqG,YAAmB1F,GACf2F,MAAM3F,GAPU,KAAAgwB,eAAyB,GAQzCjqB,KAAKiqB,eAAiBhwB,EAAMiwB,aAE5BlqB,KAAKoB,eAAiBpB,KAAKoB,eAAeyJ,KAAK7K,MAC/CA,KAAKmqB,QAAUnqB,KAAKmqB,QAAQtf,KAAK7K,MAG9BuE,SACH,OACIjL,uBAAKS,UAAU,0CACXT,yBAAOS,UAAU,oCAAoCiG,KAAK/F,MAAM0B,OAChErC,yBACIS,UAAU,mCACVD,KAAK,OACL4D,MAAOsC,KAAKiqB,eACZpsB,SAAUmC,KAAKoB,eACfgpB,OAAQpqB,KAAKmqB,QACbtQ,YAAa7Z,KAAK/F,MAAM4f,cAE3B7Z,KAAKqqB,qBASVF,UACJnqB,KAAK/F,MAAMqwB,iBAAiBtqB,KAAK/F,MAAM+D,MAGnCoD,eAAeC,GACnBrB,KAAKiqB,eAAiB5oB,EAAMK,OAAOhE,MACnCsC,KAAK/F,MAAMswB,cAAclpB,EAAMK,OAAOhE,OAOlC2sB,oBACJ,IAAKrqB,KAAK/F,MAAMuwB,cAAkCtsB,IAAvB8B,KAAK/F,MAAMuwB,QAClC,OACIlxB,qBAAGS,UAAU,oCACRiG,KAAKyqB,oBAMQ,yBAC1B,OAAQzqB,KAAK/F,MAAMywB,kBAAqB1qB,KAAK/F,MAAMywB,kBAAoB1qB,KAAK/F,MAAMkF,eA3D1EsO,sBAAXC,KAAW,qCANHsc,EAAiB,sBAD7Bpc,KACYoc,GCAb,IAAMW,EAAN,cAAsCrxB,YAalCqG,YAAY1F,GACR2F,MAAM3F,GARU,KAAA2wB,OAA0B,CAC1CjvB,MAAO,QACP+B,MAAO,IAGH,KAAAmtB,YAAsB,mIAI1B7qB,KAAK8qB,cAAgB9qB,KAAK8qB,cAAcjgB,KAAK7K,MAC7CA,KAAK+qB,eAAiB/qB,KAAK+qB,eAAelgB,KAAK7K,MAC/CA,KAAKgrB,WAAahrB,KAAKgrB,WAAWngB,KAAK7K,MAGpCuE,SACH,MAAM,MACF6J,EADE,YAEF+M,EAFE,UAGFphB,EAHE,UAIFkxB,EAJE,gBAKFC,EALE,iBAMFC,GACAnrB,KAAK/F,MAAMuK,OAEf,OACIlL,uBAAKS,UAAWmD,IAAW,6BAA8BnD,KACnDqU,GAAS+M,IACP7hB,uBAAKS,UAAU,sCACVqU,GAAS9U,gBAACwL,UAAOtL,iBAAK4U,EAAK,CAAErU,UAAU,8CACvCohB,GAAe7hB,gBAAC2M,oBAAiB,CAAC9J,KAAMgf,EAAaphB,UAAU,oDAGxET,uBAAKS,UAAU,mCACXT,gBAAC0wB,EAAiB,CACdE,aAAclqB,KAAK4qB,OAAOltB,MAC1BM,KAAMgC,KAAK4qB,OAAOjvB,MAClBA,MAAOsvB,EACPpR,YAAaqR,EACbV,QAASxqB,KAAK4qB,OAAOJ,QACrBE,kBAAmB1qB,KAAK4qB,OAAOzrB,aAC/BA,aAAca,KAAK/F,MAAMgG,UAAUmrB,sCACnCb,cAAevqB,KAAK+qB,eACpBT,iBAAkBtqB,KAAKgrB,aAE3B1xB,0BACIS,UAAU,oCACV8B,QAASmE,KAAK8qB,cACdtuB,SAAUwD,KAAKqrB,qBAEbF,GAAqBA,KAOnCJ,eAAeO,GACnBtrB,KAAK4qB,OAAOltB,MAAQ4tB,EAEftrB,KAAK4qB,OAAOW,cACjBvrB,KAAKwrB,oBAAoBxrB,KAAK4qB,OAAQ,oCAClC5qB,KAAK4qB,OAAOJ,SACZxqB,KAAKyrB,cAAczrB,KAAK4qB,OAAQ5qB,KAAK6qB,YAAa,wCAIlDG,WAAWrvB,GAIf,OAAQA,GACJ,KAAKqE,KAAK4qB,OAAOjvB,MAEb,OADAqE,KAAK4qB,OAAOW,aAAc,EACnBvrB,KAAK+qB,eAAe/qB,KAAK4qB,OAAOltB,OAC3C,QACI,OAAO6X,QAAQsG,KAAK,wFAIxB2P,oBAAoBE,EAAwBvsB,GACrB,IAAvBusB,EAAMhuB,MAAM8E,QACZkpB,EAAMlB,SAAU,EAChBkB,EAAMvsB,aAAeA,GAErBusB,EAAMlB,SAAU,EAEpBxqB,KAAK2B,SAAS,IAGV8pB,cAAcC,EAAwBC,EAAexsB,GACrDwsB,EAAM5Q,KAAK2Q,EAAMhuB,OACjBguB,EAAMlB,SAAU,GAEhBkB,EAAMlB,SAAU,EAChBkB,EAAMvsB,aAAeA,GAIrBksB,oBAIJ,OAASrrB,KAAK4qB,OAAOltB,MAGjBotB,gBACJ,IAAK9qB,KAAK4qB,OAAOJ,QAAW,OAC5B,IAAIoB,EAAc5rB,KAAK/F,MAAMuK,OAAOonB,YAAYjmB,QAAQC,eACxDgmB,GAA4C,IAA9BA,EAAY1D,QAAQ,KAAc,GAAG0D,mBAA6BC,mBAAmB7rB,KAAK4qB,OAAOltB,SAAW,GAAGkuB,mBAA6BC,mBAAmB7rB,KAAK4qB,OAAOltB,SACzLuN,OAAOsP,SAASuR,OAAOF,KA7Gfne,sBAAXC,KAAW,6BANVid,EAAuB,sBAD5B/c,KACK+c,GAuHSA,a,+ECvIf,MA6DM1xB,EAA0C,IAK3C,IAL4C,MAC7CC,EAD6C,UAE7CC,EAF6C,KAG7CC,EAH6C,QAI7CC,GACC,EACD,OACIC,gBAACC,OAAIC,iBAAKN,GACNI,gBAACC,OAAIC,iBAAKL,GACLC,EACAC,KA4CXI,EAAgB,KAClB,MAAMC,EAAgBC,SAASC,eAAe,YACxCC,EAAcF,SAASC,eAAe,yBACxCF,GAAiBG,IACjBH,EAAcI,KAA8B,aAAvBJ,EAAcI,KAAsB,OAAS,WAClED,EAAYE,UAAsC,uBAA1BF,EAAYE,UAAqC,qBAAuB,uBAIzFC,UA/CgCC,IAE3C,MAAM,OACFC,EADE,UAEFC,EAFE,QAGFC,EAHE,mBAIFC,EAJE,YAKFC,EALE,cAMFC,EANE,cAOFC,EAPE,qBAQFC,EARE,mBASFC,EATE,oBAUFC,EAVE,qBAWFC,EAXE,kBAYFC,EAZE,WAaFC,GACAb,EAEJ,OACIX,gBAACyB,SAAMvB,iBAAKU,GACPC,EAAUa,eAAiB1B,gBAACC,OAAIC,iBAAKa,IACrCF,EAAUa,eAAiB1B,gBAACL,EAAaO,iBAAKY,IAC/Cd,gBAACC,OAAIC,iBAAKc,GACNhB,gBAACC,OAAIC,iBAAKe,GACLE,EArG+B,KAO/C,IAPgD,aACjDQ,EADiD,MAEjDC,EAFiD,eAGjDC,EAHiD,WAIjDC,EAJiD,MAKjDC,EALiD,aAMjDC,GACC,EAED,OACIhC,gBAACC,OAAIC,iBAAKyB,GACLC,GAASA,EAAMK,IAAKC,GACA,aAAbA,EAAKC,IAEDnC,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,MACNtC,0BAAQS,UAAU,wBAAuB,cAAa,OAAO8B,QAASpC,GAClEH,qBAAGwC,GAAG,wBAAwB/B,UAAU,yBAMpDT,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,QAIjBR,EACAC,EACAC,EACDhC,uBAAKS,UAAU,yCACVoB,KAkEIY,CAAarB,GA5DoB,KAGjD,IAHkD,eACnDsB,EADmD,MAEnDd,GACC,EAED,OACI5B,gBAACC,OAAIC,iBAAKwC,GACLd,GAASA,EAAMK,IAAKC,GAEblC,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKS,QACzBT,EAAKU,MACLV,EAAKW,SAkDTC,CAAczB,IAEnBrB,gBAACC,OAAIC,iBAAKgB,GACLI,EACAC,EACAC,O,+EC/GrB,MAAMixB,EAAoD,IAMrD,IANsD,QACvDrwB,EADuD,MAEvDC,EAFuD,aAGvDwD,EAHuD,MAIvDvD,EAJuD,eAKvDyD,GACC,EAGD,OACI/F,gBAACC,OAAIC,iBAAKkC,IACJ2D,GAAkB1D,GAClB0D,GAAkBF,EACnBvD,IA0CEowB,UArC+C/xB,IAE1D,MAAM,eAAE0K,EAAF,iBAAkBE,EAAlB,QAAoCJ,EAApC,mBAA6CM,GAAuB9K,GAEpE,YAAE8L,EAAF,QAAeC,EAAf,MAAwB9K,EAAxB,aAA+BiE,EAA/B,WAA6C/D,GAAe2J,EAElE,OACIzL,gBAACyB,SAAMvB,iBAAKmL,GACRrL,gBAACC,OAAIC,iBAAKqL,GACLJ,EACDnL,gBAACC,OAAIC,iBAAKuM,GACL7K,GAASA,EAAMK,IAAKC,GAEblC,gBAACyyB,EAAkBvyB,eAACiC,IAAKD,EAAKM,IAAQN,KAG7C2D,GAAgBA,EAAa5D,IAAI,CAACF,EAAwB0D,IAEnDzF,gBAACA,WAAc,CAACmC,IAAKsD,GAChB1D,IAIZ2K,GAAWA,EAAQzK,IAAI,CAACU,EAAyB8C,IAE1CzF,gBAACA,WAAc,CAACmC,IAAKsD,GAChB9C,IAIZb,O,+EC7CrB,MA0CMnC,EAA0C,IAK3C,IAL4C,MAC7CC,EAD6C,UAE7CC,EAF6C,KAG7CC,EAH6C,QAI7CC,GACC,EACD,OACIC,gBAACC,OAAIC,iBAAKN,GACNI,gBAACC,OAAIC,iBAAKL,GACLC,EACAC,KAsCXI,EAAgB,KAClB,MAAMC,EAAgBC,SAASC,eAAe,YACxCC,EAAcF,SAASC,eAAe,oBACxCF,GAAiBG,IACjBH,EAAcI,KAA+B,aAAvBJ,EAAcI,KAAuB,OAAS,WACpED,EAAYE,UAAuC,6DAA1BF,EAAYE,UAC/B,2DACA,6DAICC,UA3CgCC,IAE3C,MAAM,OACFC,EADE,UAEFC,EAFE,QAGFC,EAHE,mBAIFC,EAJE,YAKFC,EALE,cAMFC,EANE,cAOFC,EAPE,qBAQFC,EARE,mBASFC,EATE,WAUFI,GACAb,EAEJ,OACIX,gBAACyB,SAAMvB,iBAAKU,GACPC,EAAUa,eAAiB1B,gBAACC,OAAIC,iBAAKa,IACrCF,EAAUa,eAAiB1B,gBAACL,EAAaO,iBAAKY,IAC/Cd,gBAACC,OAAIC,iBAAKc,GACNhB,gBAACC,OAAIC,iBAAKe,GACLE,EA/E+B,KAO/C,IAPgD,aACjDQ,EADiD,MAEjDC,EAFiD,eAGjDC,EAHiD,WAIjDC,EAJiD,MAKjDC,EALiD,aAMjDC,GACC,EACD,OACIhC,gBAACC,OAAIC,iBAAKyB,GACLC,GAASA,EAAMK,IAAKC,GACA,aAAbA,EAAKC,IAEDnC,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,MACNtC,qBACIwC,GAAG,mBACH/B,UAAU,2DACVoD,KAAK,SACLtB,QAASpC,KAMrBH,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,QAIjBR,EACAC,EACAC,EACAH,IA2CQY,CAAarB,IAElBpB,gBAACC,OAAIC,iBAAKgB,GACLM,O,2FClErB,MAAMmxB,UAAqB3yB,YAEvBqG,YAAY1F,GACR2F,MAAM3F,GACN+F,KAAKksB,YAAclsB,KAAKksB,YAAYrhB,KAAK7K,MAatCgL,oBAKH,IACImhB,YAAY3nB,OAAO4nB,iCAAiC/b,KALzC,sBAMb,MAAOuJ,GAGuB,oBAAhBuS,aAAgCA,YAAY3nB,SAAW2nB,YAAY3nB,OAAO4nB,iCAClFD,YAAY3nB,OAAO4nB,iCAAmC,CAV/C,sBAcP7W,QAAQsG,KAAK,uCAMrB7b,KAAKqsB,cAAcrsB,KAAK/F,MAAMuK,OAAO8nB,UAAY,cAK9C/nB,SAEH,OACIjL,gCACIA,2BAASS,UAAU,iBACfT,uBAAKS,UAAU,OACViG,KAAKusB,OAENjzB,uBAAKS,UAAWiG,KAAKwsB,uBAChBxsB,KAAKysB,SACLzsB,KAAK0sB,aACL1sB,KAAK2sB,iBAeZ,aACd,MAAM,MAAEzwB,GAAU8D,KAAK/F,MAAMuK,OAEvBooB,EAAuC,CACzCC,UAAW,CACPzf,GAAI,CAAE0f,EAAG,gBAAiBzf,EAAG,EAAG0f,EAAG,GACnCvf,GAAI,CAAEsf,EAAG,gBAAiBzf,EAAG,EAAG0f,EAAG,IAEvCC,UAAU,GAGd,OAAI9wB,EAEI5C,uBAAKS,UAAU,YACXT,0BAAQS,UAAU,uBACdT,gBAAC2zB,QAAKzzB,iBACE0C,EAAK,CACTiR,aAAcnN,KAAK/F,MAAM4I,QAAQsB,QAAQgJ,aACzC+f,cAAehxB,EAAMgxB,eAAiBN,OAOnD,KAMS,eAEhB,OACItzB,gBAACA,WAAc,KACV0G,KAAKmtB,QACLntB,KAAKotB,OAQC,cACf,MAAM,OAAEnjB,GAAWjK,KAAK/F,MAAMuK,OAE9B,OAAIyF,GAAUA,EAAO9N,KAEb7C,gBAACwL,UAAO,CACJ/K,UAAU,uBACV+pB,WAAY7Z,EAAOyE,IACnBvS,KAAM8N,EAAO9N,OAMlB,KAMM,YACb,MAAM,QAAEmS,GAAYtO,KAAK/F,MAAMuK,OAE/B,OACIlL,uBAAKS,UAAU,yBACVuU,GACGhV,uBAAK+zB,wBAAyBC,0BAAgBhf,MAQtC,mBACpB,MAAM,WAAEif,EAAF,YAAcC,EAAd,eAA2BC,EAA3B,cAA2CC,EAA3C,mBAA0DC,GAAuB3tB,KAAK/F,MAAMuK,OAClG,OAAIipB,EAEIn0B,uBAAKwC,GAAG,yBACJxC,gBAAC2M,oBAAiB,CAAC9J,KAAMqxB,GAAe,KACxCl0B,0BAAQS,UAAU,uBAAuB8B,QAASmE,KAAKksB,aAAcqB,GACrEj0B,gBAAC2M,oBAAiB,CAAClM,UAAW4zB,EAAoBxxB,KAAMuxB,GAAiB,MAI1E,KAOS,mBACpB,MAAM,MAAE7W,EAAF,eAAS4W,GAAmBztB,KAAK/F,MAAMuK,OAE7C,OACIlL,uBAAKS,UAAU,qBACXT,uBAAKwC,GAAG,YAAY/B,UAAW0zB,EAAiB,uBAAyB,GAAI5W,MAAOA,GAChFvd,uBAAKmP,IAAI,kDAAkDmlB,IAAI,cAY9C,4BAG7B,OAAQ5tB,KAAK/F,MAAMuK,OAAOtI,MAAS,WAAa,MAM5CmwB,cAAc3qB,GAElB,GAAwB,oBAAb/H,SAA0B,CACjC,MAAMk0B,EAASl0B,SAASm0B,cAAc,UACtCD,EAAOE,OAAQ,EACfF,EAAOG,aAAa,KAAM,aAC1BH,EAAOG,aAAa,YAAatsB,GACjCmsB,EAAOplB,IAAM,2DACb9O,SAASs0B,qBAAqB,QAAQ,GAAGC,YAAYL,IAMrD3B,cACJ,MAAMiC,EAASx0B,SAASC,eAAe,aACjCw0B,EAAcz0B,SAASC,eAAe,yBACxCu0B,GAAUC,IACVD,EAAOp0B,UAAY,GACnBq0B,EAAYr0B,UAAY,yBAKrBkyB,a,kCCrPf;;;;GAWgBhyB,cAAqC,UACjD,OAAyD,KAArD,UAAAA,EAAMmQ,KAAKC,SAASC,cAApB,mBAA4BC,OAAOC,aAAnC,eAA0ChI,QAAuBlJ,4BAEjEA,uBAAKS,UAAWmD,IAAW,iBAAkBjD,EAAMuK,OAAOzK,YACrDE,EAAMuK,OAAOC,SACVnL,gBAACwL,UAAO,CACJ/K,UAAU,0BACV+pB,WAAY7pB,EAAMuK,OAAOC,QAAQiK,IACjCvS,KAAMlC,EAAMuK,OAAOC,QAAQtI,OAGnC7C,uBAAKS,UAAU,6BAEPs0B,iBACIp0B,EAAMgG,UAAUquB,8BAChB,UAAAr0B,EAAMmQ,KAAKC,SAASC,cAApB,eAA4BC,OAAOgkB,oBAAqB,IAIpEj1B,uBAAKS,UAAU,yBACVE,EAAMgQ,OACNhQ,EAAMkQ,OAEX7Q,gBAAC2M,oBAAiB,CAAClM,UAAU,0BAA0BoC,KAAMlC,EAAMuK,OAAOgqB,UAAY,Q,2ICzB3F,MAAMC,EAAyDx0B,IAClE,MAAM,WAACuU,EAAD,WAAaC,EAAb,eAAyBE,GAAkB1U,EACjD,OAAIuU,GAAeA,EAAWhM,OAK1BlJ,kBAACyB,SAAMvB,iBAAKiV,GACND,EAAWjT,IAAI,CAACkqB,EAAqB1mB,IAE3BzF,kBAACC,OAAIC,iBAAKmV,EAAc,CAAElT,IAAKsD,IAC1B0mB,MARrBxrB,EAAM4I,QAAQyB,UAAUjJ,MAAM,+CACvB,OAgBAozB,a,+ECjBf,MA2DMx1B,EAA0C,IAK3C,IAL4C,MAC7CC,EAD6C,UAE7CC,EAF6C,KAG7CC,EAH6C,QAI7CC,GACC,EACD,OACIC,gBAACC,OAAIC,iBAAKN,GACNI,gBAACC,OAAIC,iBAAKL,GACLC,EACAC,KA4CXI,EAAgB,KAClB,MAAMC,EAAgBC,SAASC,eAAe,YACxCC,EAAcF,SAASC,eAAe,yBACxCF,GAAiBG,IACjBH,EAAcI,KAA8B,aAAvBJ,EAAcI,KAAsB,OAAS,WAClED,EAAYE,UAAsC,uBAA1BF,EAAYE,UAAqC,qBAAsB,uBAIxFC,UA/CgCC,IAE3C,MAAM,OACFC,EADE,UAEFC,EAFE,QAGFC,EAHE,mBAIFC,EAJE,YAKFC,EALE,cAMFC,EANE,cAOFC,EAPE,qBAQFC,EARE,mBASFC,EATE,oBAUFC,EAVE,qBAWFC,EAXE,kBAYFC,EAZE,WAaFC,GACAb,EAEJ,OACIX,gBAACyB,SAAMvB,iBAAKU,GACPC,EAAUa,eAAiB1B,gBAACC,OAAIC,iBAAKa,IACrCF,EAAUa,eAAiB1B,gBAACL,EAAaO,iBAAKY,IAC/Cd,gBAACC,OAAIC,iBAAKc,GACNhB,gBAACC,OAAIC,iBAAKe,GACLE,EAnG+B,KAO/C,IAPgD,aACjDQ,EADiD,MAEjDC,EAFiD,eAGjDC,EAHiD,WAIjDC,EAJiD,MAKjDC,EALiD,aAMjDC,GACC,EAED,OACIhC,gBAACC,OAAIC,iBAAKyB,GACLC,GAASA,EAAMK,IAAKC,GACA,aAAbA,EAAKC,IAEDnC,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,MACNtC,0BAAQS,UAAU,wBAAuB,cAAa,OAAO8B,QAASpC,GAClEH,qBAAGwC,GAAG,wBAAwB/B,UAAU,yBAMpDT,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,QAIjBT,EACAC,EACAC,EACAC,IAiEQS,CAAarB,GA5DoB,KAGjD,IAHkD,eACnDsB,EADmD,MAEnDd,GACC,EAED,OACI5B,gBAACC,OAAIC,iBAAKwC,GACLd,GAASA,EAAMK,IAAKC,GAEblC,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKS,QACzBT,EAAKU,MACLV,EAAKW,SAkDTC,CAAczB,IAEnBrB,gBAACC,OAAIC,iBAAKgB,GACLI,EACAC,EACAC,O,mLCvGd,MAAM4zB,EAA4D,QAAC,MAAErzB,GAAH,SACrE/B,wBAAMS,UAAU,2CACXsB,IAIIszB,EAA6D,IAAwD,IAAvD,cAAEC,EAAF,eAAiBC,EAAjB,MAAiCnxB,EAAjC,UAAwC3D,GAAe,EAC9H,OACIT,uBAAKS,UAAWA,GACX60B,EACDt1B,wBAAMS,UAAU,2CACX2D,GAEJmxB,I,gBCLb,MAiBMC,EAAoB,CAACC,EAAwBxyB,KAC/C,IAAIwyB,GAAgC,IAApBA,EAASvsB,OACrB,OAAO,KAEX,MAAMwsB,EAAuC,GACvCtyB,EAAUC,2BAAiB,QAASJ,EAAmB,IAiB7D,OAfAwyB,EAASttB,QAAQ,CAAChF,EAAKsC,KACnBrC,EAAQqS,cAAcC,MAAQvS,EAAKqS,SACnC,MAAMlS,EAAaC,iCAAuBN,EAAmBG,GACvDuyB,EAAoC,CACtC3yB,UAAWG,EAAKH,UAChBvC,UAAW,yCACX+U,SAAUrS,EAAKqS,SACfnJ,QAASlJ,EAAKkJ,QAAQC,eACtBspB,aAAczyB,EAAKyyB,aACnB/xB,KAAM,SACNgyB,qBAAsBvyB,GAE1BoyB,EAAc3e,KAAK4e,KAGhBD,GAGII,MA1CqE,IAA8D,IAA7D,MAAEpoB,EAAF,iBAASzK,EAAT,aAA2BqW,EAA3B,eAAyC7E,GAAoB,EAC9I,GAAqB,IAAjB/G,EAAMxE,OACN,OAAO,KAEX,MAAMwsB,EAAgBF,EAAkB9nB,EAAOzK,GAC/C,OACIjD,uBAAKS,UAAU,2CACTi1B,GAAiBA,EAAcxsB,OAC7BlJ,gBAACua,QAAc,CACX7M,MAAQgoB,EACRlhB,UAAW,CAAC8E,aAAcA,EAAc7E,eAAgBA,KAE1D,O,ykBCFlB,MAAM2F,UAAmCpa,YAUrCqG,YAAY1F,GACR2F,MAAM3F,GAEN+F,KAAKzD,iBAAmB2H,6BAAmBlE,KAAK/F,MAAM4I,QAAQsB,QAAQC,kBAAoBpE,KAAK/F,MAAMoK,aAAcrE,KAAK/F,MAAMqK,WAG9HtE,KAAKuB,MAAL,KAAkBvB,KAAKqvB,cAEvBxS,YACI,IAAM7c,KAAKT,SACX,KACIS,KAAK/F,MAAM4I,QAAQyB,UAAUjJ,MAAM,6CACnC2E,KAAK2B,SAAS,CACV2M,QAAShV,gBAACo1B,EAAc,CAAChxB,MAAOsC,KAAK/F,MAAMgG,UAAUqvB,6BAnB/C,eAClB,MAAkD,YAA3CC,IAAIvvB,KAAK/F,MAAO,uBAwBkB,sCACzC,MAAMu1B,EAAiBD,IAAIvvB,KAAK/F,MAAO,mCAEjCw1B,IAAwBD,GAAiBA,EAAeE,sBACxDC,IAAgBH,GAAiBA,EAAeI,MAChDC,EAA+BN,IAAIvvB,KAAK/F,MAAO,6DAErD,OACIw1B,IACkC,QAAjCI,GACqC,QAAjCA,GAA0CF,GACT,QAAjCE,IAA2CF,GAIjDprB,SACH,IAAKvE,KAAK8vB,gCACN,OAAOx2B,gBAACA,WAAc,MAG1B,MAAM,UAAES,EAAF,QAAa0K,EAAb,MAAsBuC,GAAUhH,KAAK/F,MAAMuK,OAC3CE,EAAS,OACR1E,KAAK/F,OADG,IAEXyZ,2BAA4B,CACxB9O,YAAa5E,KAAK/F,MAClBF,UAAWmD,IAAW,mCAAoCnD,IAE9D0K,QAASA,GACLnL,gBAACwL,UAAO,CAAC/K,UAAU,4CAA4C+pB,WAAYrf,EAAQiK,IAAKvS,KAAMsI,EAAQtI,OAE1GmS,QAAStO,KAAKuB,MAAM+M,QACpBtH,MAAOhH,KAAKuB,MAAMwuB,wBACdz2B,gBAAC02B,EAAcx2B,iBACP,CACAwN,MAAOA,EACP4L,aAAe7T,GAAmBsC,MAClC0M,eAAgB/N,KAAK/F,MAAM4I,QAAQsB,QACnC5H,iBAAkByD,KAAKzD,sBAMvC,OAAOyD,KAAK/F,MAAMgL,WAAWP,GAGzB2qB,aACJ,MAAMY,EAAUV,IAAIvvB,KAAK/F,MAAO,uBAEhC,IAAIqU,EACAyhB,GAAyB,EAE7B,GAAI/vB,KAAKT,SACLS,KAAK/F,MAAMqK,UAAUjJ,MAAM,6CAC3BiT,EAAUhV,gBAACo1B,EAAc,CAACrzB,MAAO2E,KAAK/F,MAAMgG,UAAUqvB,8BACnD,GAAwB,IAApBW,EAAQC,SAAyC,IAAxBD,EAAQE,YAExC7hB,EAAUhV,gBAACo1B,EAAc,CAACrzB,MAAO2E,KAAK/F,MAAMgG,UAAUmwB,2BACnD,CAEH,MAAM,2BAAEC,EAAF,4BAA8BC,GAAgCtwB,KAAK/F,MAAMgG,UACzEswB,EAAehB,IAAIvvB,KAAK/F,MAAO,oCAE/Bu2B,EAA2B,GADVjB,IAAIvvB,KAAK/F,MAAO,0CACHw2B,CAAeR,EAAQC,QAAQQ,QAAQ,GAAIH,GAE/ER,GAAyB,EACzBzhB,EACIhV,gBAACq1B,EAAe,CACZC,cAAeyB,EACf3yB,MAAO8yB,EACP3B,eAAgByB,EAChBv2B,UAAW,8CAKvB,MAAO,CAAEuU,UAASyhB,2BArGZtiB,sBAATE,KAAS,6BAyBAF,sBAATE,KAAS,oDAgFC+F,a,kCC9If,oEAsBA,MAAMid,UAA4Br3B,gBAIvBiL,SACH,MAAM,OAAEC,EAAF,MAAUU,GAAUlF,KAAK/F,MACzB22B,EAAW1rB,GAASA,EAAM2rB,cAAgB3rB,EAAM2rB,aAAaruB,OAEnE,OACIlJ,uBAAKS,UAAWyR,IAAU,wBAAyBhH,EAAOzK,YACrDyK,GAAUxE,KAAK8wB,cAActsB,KAC5BA,WAAQrI,OAAQ+I,EAAM6rB,wBAA0B/wB,KAAKgxB,iBAAiB9rB,EAAM6rB,wBAC7EH,GAAY5wB,KAAKgxB,iBAAiB9rB,EAAM2rB,eAO7CC,cAActsB,GAClB,OACIlL,uBAAKS,UAAU,iCACVyK,aAAA,EAAAA,EAAQ4J,QAASpO,KAAKixB,mBAAmBzsB,IACzCA,aAAA,EAAAA,EAAQrI,OAEL7C,uBACIS,UAAU,6BACVszB,wBAAyBC,0BAAgB9oB,EAAOrI,SAS5D80B,mBAAmBzsB,GAAkC,QACzD,OAAIA,SAAJ,UAAIA,EAAQ/H,YAAZ,iBAAI,EAAckJ,eAAlB,OAAI,EAAuBC,eAEnBtM,qBACIS,UAAU,mCACVgD,KAAMyH,EAAO/H,KAAKkJ,QAAQC,eAAc,aAC5BpB,EAAO/H,KAAKH,UACxBoF,OAAQ8C,EAAO/H,KAAKyyB,aAAe,cAAWhxB,EAAWmgB,IAAI,cAE5Dre,KAAKkxB,aAAa1sB,EAAO4J,QAI3BpO,KAAKkxB,aAAa1sB,EAAO4J,OAMhC8iB,aAAa9iB,GACjB,OAAIA,SAASA,KAAOjS,KAEZ7C,gBAACwL,UAAO,CACJ/K,UAAU,8BACV+pB,WAAY1V,EAAMM,IAClBvS,KAAMiS,EAAMjS,OAIjB,KAKH60B,iBAAiB91B,GACrB,OACI5B,uBAAKS,UAAU,+BACVmB,EAAMK,IAAI,CAAC41B,EAAuBpyB,IAC/BzF,gBAACA,WAAc,CAACmC,IAAKsD,GAChBoyB,MAQVR,a,+EC7Ff,MA0CM13B,EAA0C,IAK3C,IAL4C,MAC7CC,EAD6C,UAE7CC,EAF6C,KAG7CC,EAH6C,QAI7CC,GACC,EACD,OACIC,gBAACC,OAAIC,iBAAKN,GACNI,gBAACC,OAAIC,iBAAKL,GACLC,EACAC,KAsCXI,EAAgB,KAClB,MAAMC,EAAgBC,SAASC,eAAe,YACxCC,EAAcF,SAASC,eAAe,oBACxCF,GAAiBG,IACjBH,EAAcI,KAA+B,aAAvBJ,EAAcI,KAAuB,OAAS,WACpED,EAAYE,UAAuC,6DAA1BF,EAAYE,UAC/B,2DACA,6DAICC,UA3CgCC,IAE3C,MAAM,OACFC,EADE,UAEFC,EAFE,QAGFC,EAHE,mBAIFC,EAJE,YAKFC,EALE,cAMFC,EANE,cAOFC,EAPE,qBAQFC,EARE,mBASFC,EATE,WAUFI,GACAb,EAEJ,OACIX,gBAACyB,SAAMvB,iBAAKU,GACPC,EAAUa,eAAiB1B,gBAACC,OAAIC,iBAAKa,IACrCF,EAAUa,eAAiB1B,gBAACL,EAAaO,iBAAKY,IAC/Cd,gBAACC,OAAIC,iBAAKc,GACNhB,gBAACC,OAAIC,iBAAKe,GACLE,EA/E+B,KAO/C,IAPgD,aACjDQ,EADiD,MAEjDC,EAFiD,eAGjDC,EAHiD,WAIjDC,EAJiD,MAKjDC,EALiD,aAMjDC,GACC,EACD,OACIhC,gBAACC,OAAIC,iBAAKyB,GACLC,GAASA,EAAMK,IAAKC,GACA,aAAbA,EAAKC,IAEDnC,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,MACNtC,qBACIwC,GAAG,mBACH/B,UAAU,2DACVoD,KAAK,SACLtB,QAASpC,KAMrBH,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,QAIjBR,EACAC,EACAC,EACAH,IA2CQY,CAAarB,IAElBpB,gBAACC,OAAIC,iBAAKgB,GACLM,O,gJCnET4L,E,+oBAAZ,SAAYA,GACRA,6BACAA,+BAFJ,CAAYA,MAAW,KAUvB,IAAM0qB,EAAN,cAAsB93B,YAIlBqG,YAAY1F,GACR2F,MAAM3F,GAJF,KAAAo3B,uBAAiC,sBACjC,KAAAC,sBAAgC,qBAIpCtxB,KAAKuxB,iBAAmBvxB,KAAKuxB,iBAAiB1mB,KAAK7K,MAGhDuE,SACH,MAAM,MAAEW,EAAF,WAASD,EAAT,OAAqBT,EAArB,KAA6B4F,EAA7B,WAAmCmf,EAAnC,UAA+CC,GAAcxpB,KAAK/F,MAClE8E,EAAQyqB,GAAa,EACrBJ,EAAYC,EAAatqB,EAAOiB,KAAK/F,MAAMitB,OAAS,IACpDsK,EAAwBpnB,GAAQA,EAAK4c,gBAAkB5c,EAAK4c,eAAe1c,OAC3EmnB,EAAQD,GAAyBA,EAAsBtK,QAAUlnB,KAAK/F,MAAMitB,YAAsDhpB,IAA7CszB,EAAsBvK,mBAC7GuK,EAAsBvK,qBAAuBloB,EAAQwqB,IAAc,EAsBvE,OAAOtkB,EArBQ,OACPjF,KAAK/F,OADE,IAEXqM,oBAAqB,CACjB1B,YAAa5E,KAAK/F,MAClBF,UAAWmD,IAAW8C,KAAKqxB,uBAAwB7sB,EAAOzK,YAE9DwM,mBAAoB,CAChB3B,YAAa5E,KAAK/F,MAClBF,UAAWmD,IAAW8C,KAAKsxB,sBAAuB9sB,EAAOzK,YAE7DyM,eAAgB,CACZzM,UAAW,+BACX2U,IAAK,UACL,eAAgB+iB,EAChBt0B,KAAM,WACNomB,SAAUkO,EAAQ,GAAK,EACvB31B,GAAIstB,GAER3iB,UAAWzG,KAAKuxB,mBAChBlrB,SAAUnB,KAMVqsB,mBACJ,OACIj4B,gCACK0G,KAAK/F,MAAMuK,OAAOktB,gBA5C7BN,EAAO,sBADZxjB,KACKwjB,GAmDC,MAAM/H,EAAe,CAACtqB,EAAejD,IACnC,oBAAoBA,KAAMiD,IAGpBqyB,a,wHClCf,MAAMO,EAAsBC,IACxB,MAAMC,EAAWD,GAAsBA,EAAmBtnB,OAC1D,OACIhR,gCAAGu4B,EAAWA,EAAS/xB,WAAa+xB,EAAS/hB,KAAO,KAqE5D,SAASgiB,EAAqB52B,GAC1B,OACI5B,gBAACA,WAAc,KACV4B,GAASA,EAAMsH,OACVtH,EAAMK,IAAI,CAAC41B,EAAuBpyB,IACvBzF,gBAACA,WAAc,CAACmC,IAAKsD,GAAQoyB,IAExC,MAKHY,UAlIgC93B,IAC3C,MAAM,UACF+3B,EADE,gBAEFC,EAFE,sBAGFC,EAHE,QAIFC,GACAl4B,EACJ,OACIX,gBAACyB,SAAMvB,iBAAKw4B,GACR14B,gBAACC,OAAIC,iBAAKy4B,GACN34B,gBAACC,OAAIC,iBAAK04B,GACLj4B,EAAMm4B,QACNn4B,EAAMo4B,KACNP,EAAqB73B,EAAM4vB,QAC3B5vB,EAAMq4B,eAsE3B,SAA6Br4B,EAAyBs4B,GAClD,MAAM,mCACFC,EADE,0CAEFC,EAFE,0BAGFC,EAHE,YAIFC,EAJE,WAKFC,EALE,aAMFC,GACA54B,EAEJ,GAAIu4B,EAAoC,CACpC,MAAMM,EAAmB51B,IAAWs1B,EAAmCz4B,UAAWw4B,EAAkB,iBAAmB,mBACvH,GAAIE,EACA,OACIn5B,gBAACC,OAAIC,iBAAKg5B,EAAkC,CAAEz4B,UAAW+4B,IACpDJ,EACDp5B,gBAACC,OAAIC,iBAAKi5B,KACJI,GAAeA,EAAat3B,IAAKkB,GAA0BA,GAC5Dk2B,IAIV,GAAIC,EACP,OACIt5B,gBAACC,OAAIC,iBAAKg5B,EAAkC,CAAEz4B,UAAW+4B,IACpDF,GAMjB,OAAO,KApGUG,CAAoB94B,GAAO,GAC3BA,EAAM+4B,oBACP15B,gBAACC,OAAIC,iBAAK24B,IACTl4B,EAAMg5B,SACNnB,EAAqB73B,EAAMi5B,cAWhD,SAA6Bj5B,GACzB,MAAM,QAACk4B,EAAD,yBAAUgB,EAAV,oBAAoCC,GAAuBn5B,EACjE,OACIX,gBAAC+5B,WAAQ,CAACt5B,UAAW,mCAAoCsS,QAAS+mB,GAC9D95B,gBAACC,OAAIC,iBAAK25B,GACLrB,EAAqB73B,EAAM4vB,QAkB5C,SAAmC5vB,EAAyBs4B,GACxD,MAAM,mCACFC,EADE,YAEFG,EAFE,WAGFC,EAHE,KAIFxoB,EAJE,aAKFyoB,GAAgB54B,EAEpB,GAAIu4B,EAAoC,CACpC,MAAMM,EAAmB51B,IAAW,oBAAqBs1B,EAAmCz4B,UAAWw4B,EAAkB,iBAAmB,mBAE5I,GAAIM,EACA,OACIv5B,gBAACg6B,SAAM,CAACv5B,UAAW+4B,EAAkBS,UAAU,yBAAyBC,WAAW,0BAA0BC,eAAe,MAAMhhB,iBAAkBkf,EAAmBvnB,EAAKwnB,qBACxKt4B,6BACMu5B,GAAeA,EAAat3B,IAAKkB,GAA0BA,GAC5Dk2B,IAIV,GAAIC,EACP,OACIt5B,gBAACC,OAAIC,iBAAKg5B,EAAkC,CAAEz4B,UAAW+4B,IACpDF,GAKjB,OAAO,KA7CMc,CAA0Bz5B,GAAO,GAChCA,EAAM05B,mBACP15B,EAAMi5B,aAEX55B,gBAACC,OAAIC,iBAAK24B,IACTL,EAAqB73B,EAAM25B,UApBvBC,CAAoB55B,GACrBX,gBAACC,OAAI,CAACQ,UAAW,2BACZ+3B,EAAqB73B,EAAM25B,c,+ECxBhD,MA0CM36B,EAA0C,IAK3C,IAL4C,MAC7CC,EAD6C,UAE7CC,EAF6C,KAG7CC,EAH6C,QAI7CC,GACC,EACD,OACIC,gBAACC,OAAIC,iBAAKN,GACNI,gBAACC,OAAIC,iBAAKL,GACLC,EACAC,KAsCXI,EAAgB,KAClB,MAAMC,EAAgBC,SAASC,eAAe,YACxCC,EAAcF,SAASC,eAAe,oBACxCF,GAAiBG,IACjBH,EAAcI,KAA+B,aAAvBJ,EAAcI,KAAuB,OAAS,WACpED,EAAYE,UAAuC,6DAA1BF,EAAYE,UAC/B,2DACA,6DAICC,UA3CgCC,IAE3C,MAAM,OACFC,EADE,UAEFC,EAFE,QAGFC,EAHE,mBAIFC,EAJE,YAKFC,EALE,cAMFC,EANE,cAOFC,EAPE,qBAQFC,EARE,mBASFC,EATE,WAUFI,GACAb,EAEJ,OACIX,gBAACyB,SAAMvB,iBAAKU,GACPC,EAAUa,eAAiB1B,gBAACC,OAAIC,iBAAKa,IACrCF,EAAUa,eAAiB1B,gBAACL,EAAaO,iBAAKY,IAC/Cd,gBAACC,OAAIC,iBAAKc,GACNhB,gBAACC,OAAIC,iBAAKe,GACLE,EA/E+B,KAO/C,IAPgD,aACjDQ,EADiD,MAEjDC,EAFiD,eAGjDC,EAHiD,WAIjDC,EAJiD,MAKjDC,EALiD,aAMjDC,GACC,EACD,OACIhC,gBAACC,OAAIC,iBAAKyB,GACLC,GAASA,EAAMK,IAAKC,GACA,aAAbA,EAAKC,IAEDnC,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,MACNtC,qBACIwC,GAAG,mBACH/B,UAAU,2DACVoD,KAAK,SACLtB,QAASpC,KAMrBH,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,QAIjBR,EACAC,EACAC,EACAH,IA2CQY,CAAarB,IAElBpB,gBAACC,OAAIC,iBAAKgB,GACLM,O,+ECnFrB,MA2DM7B,EAA0C,IAK3C,IAL4C,MAC7CC,EAD6C,UAE7CC,EAF6C,KAG7CC,EAH6C,QAI7CC,GACC,EACD,OACIC,gBAACC,OAAIC,iBAAKN,GACNI,gBAACC,OAAIC,iBAAKL,GACLC,EACAC,KA4CXI,EAAgB,KAClB,MAAMC,EAAgBC,SAASC,eAAe,YACxCC,EAAcF,SAASC,eAAe,yBACxCF,GAAiBG,IACjBH,EAAcI,KAA8B,aAAvBJ,EAAcI,KAAsB,OAAS,WAClED,EAAYE,UAAsC,uBAA1BF,EAAYE,UAAqC,qBAAsB,uBAIxFC,UA/CgCC,IAE3C,MAAM,OACFC,EADE,UAEFC,EAFE,QAGFC,EAHE,mBAIFC,EAJE,YAKFC,EALE,cAMFC,EANE,cAOFC,EAPE,qBAQFC,EARE,mBASFC,EATE,oBAUFC,EAVE,qBAWFC,EAXE,kBAYFC,EAZE,WAaFC,GACAb,EAEJ,OACIX,gBAACyB,SAAMvB,iBAAKU,GACPC,EAAUa,eAAiB1B,gBAACC,OAAIC,iBAAKa,IACrCF,EAAUa,eAAiB1B,gBAACL,EAAaO,iBAAKY,IAC/Cd,gBAACC,OAAIC,iBAAKc,GACNhB,gBAACC,OAAIC,iBAAKe,GACLE,EAnG+B,KAO/C,IAPgD,aACjDQ,EADiD,MAEjDC,EAFiD,eAGjDC,EAHiD,WAIjDC,EAJiD,MAKjDC,EALiD,aAMjDC,GACC,EAED,OACIhC,gBAACC,OAAIC,iBAAKyB,GACLC,GAASA,EAAMK,IAAKC,GACA,aAAbA,EAAKC,IAEDnC,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,MACNtC,0BAAQS,UAAU,wBAAuB,cAAa,OAAO8B,QAASpC,GAClEH,qBAAGwC,GAAG,wBAAwB/B,UAAU,yBAMpDT,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,QAIjBR,EACAC,EACAC,EACDhC,uBAAKS,UAAU,yCAAyCoB,KAiE/CY,CAAarB,GA5DoB,KAGjD,IAHkD,eACnDsB,EADmD,MAEnDd,GACC,EAED,OACI5B,gBAACC,OAAIC,iBAAKwC,GACLd,GAASA,EAAMK,IAAKC,GAEblC,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKS,QACzBT,EAAKU,MACLV,EAAKW,SAkDTC,CAAczB,IAEnBrB,gBAACC,OAAIC,iBAAKgB,GACLI,EACAC,EACAC,O,+ECzFNg5B,UArB0B75B,IACvC,MAAM,QAAEwK,EAAF,aAAWikB,EAAX,WAAyBK,EAAzB,YAAqCD,GAAgB7uB,EAC3D,OAAIA,EAAMwK,SAAYxK,EAAM8uB,YAAe9uB,EAAM6uB,YAK3CxvB,gBAACyB,SAAMvB,iBAAKkvB,GACRpvB,gBAACC,OAAIC,iBAAKS,EAAM0uB,eACXlkB,GAELnL,gBAACC,OAAIC,iBAAKS,EAAM2uB,aACXG,GAELzvB,gBAACC,OAAIC,iBAAKS,EAAM4uB,kBACXC,KAZb7uB,EAAM4I,QAAQyB,UAAUjJ,MAAM,4CACvB,Q,+ECAX,MA2DMpC,EAA0C,IAK3C,IAL4C,MAC7CC,EAD6C,UAE7CC,EAF6C,KAG7CC,EAH6C,QAI7CC,GACC,EACD,OACIC,gBAACC,OAAIC,iBAAKN,GACNI,gBAACC,OAAIC,iBAAKL,GACLC,EACAC,KA4CXI,EAAgB,KAClB,MAAMC,EAAgBC,SAASC,eAAe,YACxCC,EAAcF,SAASC,eAAe,yBACxCF,GAAiBG,IACjBH,EAAcI,KAA8B,aAAvBJ,EAAcI,KAAsB,OAAS,WAClED,EAAYE,UAAsC,uBAA1BF,EAAYE,UAAqC,qBAAsB,uBAIxFC,UA/CgCC,IAE3C,MAAM,OACFC,EADE,UAEFC,EAFE,QAGFC,EAHE,mBAIFC,EAJE,YAKFC,EALE,cAMFC,EANE,cAOFC,EAPE,qBAQFC,EARE,mBASFC,EATE,oBAUFC,EAVE,qBAWFC,EAXE,kBAYFC,EAZE,WAaFC,GACAb,EAEJ,OACIX,gBAACyB,SAAMvB,iBAAKU,GACPC,EAAUa,eAAiB1B,gBAACC,OAAIC,iBAAKa,IACrCF,EAAUa,eAAiB1B,gBAACL,EAAaO,iBAAKY,IAC/Cd,gBAACC,OAAIC,iBAAKc,GACNhB,gBAACC,OAAIC,iBAAKe,GACLE,EAnG+B,KAO/C,IAPgD,aACjDQ,EADiD,MAEjDC,EAFiD,eAGjDC,EAHiD,WAIjDC,EAJiD,MAKjDC,EALiD,aAMjDC,GACC,EAED,OACIhC,gBAACC,OAAIC,iBAAKyB,GACLC,GAASA,EAAMK,IAAKC,GACA,aAAbA,EAAKC,IAEDnC,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,MACNtC,0BAAQS,UAAU,wBAAuB,aAAY,qBAAqB8B,QAASpC,GAC/EH,qBAAGwC,GAAG,wBAAwB/B,UAAU,yBAMpDT,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,QAIjBR,EACAC,EACAC,EACDhC,uBAAKS,UAAU,yCAAyCoB,KAiE/CY,CAAarB,GA5DoB,KAGjD,IAHkD,eACnDsB,EADmD,MAEnDd,GACC,EAED,OACI5B,gBAACC,OAAIC,iBAAKwC,GACLd,GAASA,EAAMK,IAAKC,GAEblC,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKS,QACzBT,EAAKU,MACLV,EAAKW,SAkDTC,CAAczB,IAEnBrB,gBAACC,OAAIC,iBAAKgB,GACLI,EACAC,EACAC,O,+EC1GrB,MA2DM7B,EAA0C,IAK3C,IAL4C,MAC7CC,EAD6C,UAE7CC,EAF6C,KAG7CC,EAH6C,QAI7CC,GACC,EACD,OACIC,gBAACC,OAAIC,iBAAKN,GACNI,gBAACC,OAAIC,iBAAKL,GACLC,EACAC,KA4CXI,EAAgB,KAClB,MAAMC,EAAgBC,SAASC,eAAe,YACxCC,EAAcF,SAASC,eAAe,yBACxCF,GAAiBG,IACjBH,EAAcI,KAA8B,aAAvBJ,EAAcI,KAAsB,OAAS,WAClED,EAAYE,UAAsC,uBAA1BF,EAAYE,UAAqC,qBAAsB,uBAIxFC,UA/CgCC,IAE3C,MAAM,OACFC,EADE,UAEFC,EAFE,QAGFC,EAHE,mBAIFC,EAJE,YAKFC,EALE,cAMFC,EANE,cAOFC,EAPE,qBAQFC,EARE,mBASFC,EATE,oBAUFC,EAVE,qBAWFC,EAXE,kBAYFC,EAZE,WAaFC,GACAb,EAEJ,OACIX,gBAACyB,SAAMvB,iBAAKU,GACPC,EAAUa,eAAiB1B,gBAACC,OAAIC,iBAAKa,IACrCF,EAAUa,eAAiB1B,gBAACL,EAAaO,iBAAKY,IAC/Cd,gBAACC,OAAIC,iBAAKc,GACNhB,gBAACC,OAAIC,iBAAKe,GACLE,EAnG+B,KAO/C,IAPgD,aACjDQ,EADiD,MAEjDC,EAFiD,eAGjDC,EAHiD,WAIjDC,EAJiD,MAKjDC,EALiD,aAMjDC,GACC,EAED,OACIhC,gBAACC,OAAIC,iBAAKyB,GACLC,GAASA,EAAMK,IAAKC,GACA,aAAbA,EAAKC,IAEDnC,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,MACNtC,0BAAQS,UAAU,wBAAuB,cAAa,OAAO8B,QAASpC,GAClEH,qBAAGwC,GAAG,wBAAwB/B,UAAU,yBAMpDT,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,QAIjBR,EACAC,EACAC,EACDhC,uBAAKS,UAAU,yCAAyCoB,KAiE/CY,CAAarB,GA5DoB,KAGjD,IAHkD,eACnDsB,EADmD,MAEnDd,GACC,EAED,OACI5B,gBAACC,OAAIC,iBAAKwC,GACLd,GAASA,EAAMK,IAAKC,GAEblC,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKS,QACzBT,EAAKU,MACLV,EAAKW,SAkDTC,CAAczB,IAEnBrB,gBAACC,OAAIC,iBAAKgB,GACLI,EACAC,EACAC,O,6LCvEd,MAAMi5B,EAAqB95B,IAC9B,MAAMyC,EAAUC,2BAAiB,QAAS1C,EAAMsC,iBAAmBy3B,oBAAkBC,oBAC/EC,EAA8Br3B,iCAAuB5C,EAAMsC,iBAAmBG,GACpFA,EAAQqS,cAAcC,MAAQglB,oBAAkBG,mBAChD,MAAMC,EAA8Bv3B,iCAAuB5C,EAAMsC,iBAAmBG,GACpFA,EAAQqS,cAAcC,MAAQglB,oBAAkBK,kBAChD,MAAMC,EAAgCz3B,iCAAuB5C,EAAMsC,iBAAkBG,GACrF,MAAO,CACHxD,MAAO,CAACwV,IAAK1C,QAAOjS,UAAW,0BAA2BuS,OAAQrS,EAAM0Y,SAAUxG,gBAAiB,aAAcE,OAAQpS,EAAMoS,OAAQD,eAAgBnS,EAAMs6B,WAC7J5P,YAAa,CAACjW,IAAK/B,cAAa5S,UAAW,iCAAkCuS,OAAQrS,EAAM0Y,UAC3FkS,YAAa,CAACnW,IAAK7B,cAAa9S,UAAW,kCAC3CZ,UAAW,CAACuV,IAAK9B,YAAW7S,UAAW,gCACvCy6B,aAAcl7B,kBAACwD,SAAMtD,eAACO,UAAU,2BAA2B8B,QAAS5B,EAAM0Y,UAAcuhB,GAA+Bj6B,EAAMgG,UAAUw0B,wBACvIC,aAAcp7B,kBAACwD,SAAMtD,eAACO,UAAU,2BAA2B8B,QAAS5B,EAAM0f,SAAUnd,UAAWvC,EAAMigB,SAAaka,GAA+Bn6B,EAAMgG,UAAU00B,sBACjKlwB,QAASnL,uBAAGS,UAAU,6BAA6BE,EAAMgG,UAAU20B,qBACnEC,MAAO56B,EAAM46B,MACbC,aAAc,CAAC/6B,UAAW,mCAC1Bg7B,SAAUz7B,yCAAOS,UAAU,8BAAiCu6B,EAA6B,CAAEx6B,KAAK,WAAWogB,QAASjgB,EAAMigB,QAAO,eAAgBjgB,EAAMigB,QAASrc,SAAU5D,EAAM+6B,WAChLC,UAAW37B,uBAAGS,UAAU,2BAA2BE,EAAMgG,UAAUi1B,uB,ykBC5B3E,MAAMC,UAAqB77B,YAIvBqG,YAAmB1F,GACf2F,MAAM3F,GACN+F,KAAKo1B,QAAUp1B,KAAKo1B,QAAQvqB,KAAK7K,MACjCA,KAAKq1B,QAAUr1B,KAAKq1B,QAAQxqB,KAAK7K,MACjCA,KAAKs1B,iBAAmBt1B,KAAKs1B,iBAAiBzqB,KAAK7K,MACnDA,KAAKu1B,UAAYj8B,cACjB0G,KAAKzD,iBAAmB2H,6BAAmBlE,KAAK/F,MAAM4I,QAAQsB,QAAQC,kBAAoBpE,KAAK/F,MAAMoK,aAAcrE,KAAK/F,MAAMqK,WAC9H,IAAIulB,EAAS7pB,KAAK/F,MAAM4I,QAAQsB,QAAQgM,IAAIC,WAAWyZ,OACnD2L,GAAY,EAChB,GAAI3L,EAAQ,CACRA,EAASA,EAAO4L,UAAU,GAC1B,MAAMC,EAAO7L,EAAOzB,MAAM,KAC1B,IAAK,IAAI7lB,EAAI,EAAGA,EAAImzB,EAAKlzB,OAAQD,IAAK,CAClC,MAAMozB,EAAWD,EAAKnzB,GAAG6lB,MAAM,KAE/B,GADAoN,EAA4B,mBAAhBG,EAAS,IAA2C,SAAhBA,EAAS,GACtDH,EACC,OAKZx1B,KAAKuB,MAAQ,CACTq0B,YAAaJ,EACbtb,SAAS,EACT2b,SAAS,GAIVtxB,SACH,MACIC,QAAQ,UAAEzK,EAAF,WAAa+7B,GADnB,UAEF71B,EACAiF,OAAO,aAAE6wB,GACT3rB,MAAM,YAAE4rB,GACRnzB,SACIsB,SACI8xB,MAAM,gBACFC,MAIZl2B,KAAK/F,MACHk8B,EAAgB3qB,IAAU,mBAAoBzR,GAE9C2K,EAAS,OACR1E,KAAK/F,OADG,IAEXF,UAAWo8B,EACXhB,aAAc,CACVvwB,YAAa5E,KAAK/F,MAClBF,UAAWo8B,GAEf/7B,QAAgC,YAAvB47B,EAAYI,OACrBhQ,aAA6B,IAAf0P,GAAwBx8B,gBAACwD,SAAM,CAAC/C,UAAU,2BAA2B8B,QAASmE,KAAKo1B,QAASvpB,SAAU7L,KAAKu1B,WAAYt1B,EAAUo2B,4BAC/In9B,MAAOg9B,GAAmBF,EAAY1rB,aAA4CpM,IAAlC83B,EAAY1rB,OAAOgsB,YAA4BvC,EAAkB,CAC7G9zB,UAAU,EAAD,GAAMA,GACfs0B,UAAWv0B,KAAKu1B,UAChBrb,QAASla,KAAKuB,MAAM2Y,QACpB7N,OAAQrM,KAAKuB,MAAMq0B,YACnBf,MAAOkB,EACPx5B,iBAAkByD,KAAKzD,iBACvBoW,SAAU3S,KAAKo1B,QACfzb,SAAU3Z,KAAKq1B,QACfL,QAASh1B,KAAKs1B,qBAItB,OAAOt1B,KAAK/F,MAAMgL,WAAWP,GAGzB0wB,UACJp1B,KAAK2B,SAAS,CAACi0B,aAAc51B,KAAKuB,MAAMq0B,YAAa1b,SAAS,IAG1Dmb,UACJ,GAAIr1B,KAAK/F,MAAM4I,QAAQsB,QAAQ8xB,KAAKC,kBAAoBl2B,KAAKuB,MAAMs0B,QAAS,CACxE71B,KAAK2B,SAAS,CAAEk0B,SAAS,IACzB,MAAMj6B,EAAQ,IAAI26B,oBAAkBv2B,KAAK/F,MAAM4I,QAAQsB,QAAQsS,aAE/D+f,uBAAa56B,EAAOoE,KAAK/F,MAAM4I,QAAQgB,eAClC4yB,KAAMC,IACC12B,KAAK/F,MAAMuK,OAAOmyB,kBAClB1rB,OAAOsP,SAASuR,OAAOjmB,qBAAW,UAAW7F,KAAK/F,MAAM4I,QAAQgB,gBAAkB,IAElF+yB,YAAoB,CAAEhzB,cAAe5D,KAAK/F,MAAM4I,QAAQgB,eAAiB6yB,EAAKJ,YAAc,IACvFG,KAAMI,IACH72B,KAAK/F,MAAM4I,QAAQgB,cAAckP,OAAO,IAAI+jB,sBAAoB92B,KAAK/F,MAAM4I,QAAQsB,QAAQsS,aAAcogB,KAE5G/yB,MAAOzI,IACJ2E,KAAK/F,MAAM4I,QAAQgB,cAAckP,OAAO,IAAI+jB,sBAAoB92B,KAAK/F,MAAM4I,QAAQsB,QAAQsS,aAAcigB,GACzG12B,KAAK/F,MAAMqK,UAAUjJ,MAAMA,EAAMhC,SACjC2G,KAAK/F,MAAMqK,UAAUyyB,MAAM,oCAI1CjzB,MAAOzI,IACJ2E,KAAK2B,SAAS,CAAEk0B,SAAS,IACzB71B,KAAK/F,MAAMqK,UAAUjJ,MAAMA,EAAMhC,SACjC2G,KAAK/F,MAAMqK,UAAUyyB,MAAM,mCAKnCzB,mBACJt1B,KAAK2B,SAAS,CAACuY,SAAUla,KAAKuB,MAAM2Y,WAI7Bib,a,+ECxIf,MA6DMl8B,EAA0C,IAK3C,IAL4C,MAC7CC,EAD6C,UAE7CC,EAF6C,KAG7CC,EAH6C,QAI7CC,GACC,EACD,OACIC,gBAACC,OAAIC,iBAAKN,GACNI,gBAACC,OAAIC,iBAAKL,GACLC,EACAC,KA4CXI,EAAgB,KAClB,MAAMC,EAAgBC,SAASC,eAAe,YACxCC,EAAcF,SAASC,eAAe,yBACxCF,GAAiBG,IACjBH,EAAcI,KAA8B,aAAvBJ,EAAcI,KAAsB,OAAS,WAClED,EAAYE,UAAsC,uBAA1BF,EAAYE,UAAqC,qBAAsB,uBAIxFC,UA/CgCC,IAE3C,MAAM,OACFC,EADE,UAEFC,EAFE,QAGFC,EAHE,mBAIFC,EAJE,YAKFC,EALE,cAMFC,EANE,cAOFC,EAPE,qBAQFC,EARE,mBASFC,EATE,oBAUFC,EAVE,qBAWFC,EAXE,kBAYFC,EAZE,WAaFC,GACAb,EAEJ,OACIX,gBAACyB,SAAMvB,iBAAKU,GACPC,EAAUa,eAAiB1B,gBAACC,OAAIC,iBAAKa,IACrCF,EAAUa,eAAiB1B,gBAACL,EAAaO,iBAAKY,IAC/Cd,gBAACC,OAAIC,iBAAKc,GACNhB,gBAACC,OAAIC,iBAAKe,GACLE,EArG+B,KAO/C,IAPgD,aACjDQ,EADiD,MAEjDC,EAFiD,eAGjDC,EAHiD,WAIjDC,EAJiD,MAKjDC,EALiD,aAMjDC,GACC,EAED,OACIhC,gBAACC,OAAIC,iBAAKyB,GACLC,GAASA,EAAMK,IAAKC,GACA,aAAbA,EAAKC,IAEDnC,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,MACNtC,0BAAQS,UAAU,wBAAuB,cAAa,OAAO8B,QAASpC,GAClEH,qBAAGwC,GAAG,wBAAwB/B,UAAU,yBAMpDT,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,QAIjBR,EACAC,EACAC,EACDhC,uBAAKS,UAAU,yCACVoB,KAkEIY,CAAarB,GA5DoB,KAGjD,IAHkD,eACnDsB,EADmD,MAEnDd,GACC,EAED,OACI5B,gBAACC,OAAIC,iBAAKwC,GACLd,GAASA,EAAMK,IAAKC,GAEblC,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKS,QACzBT,EAAKU,MACLV,EAAKW,SAkDTC,CAAczB,IAEnBrB,gBAACC,OAAIC,iBAAKgB,GACLI,EACAC,EACAC,O,0MC7Gd,MAAMk8B,EAAsD,QAAC,UAAEj9B,EAAF,KAAaoC,GAAd,SAC/D7C,qBAAGS,UAAYA,GAAcoC,IASpB86B,EAAgE,QAAC,UAAEl9B,EAAF,KAAaoC,EAAb,SAAmB+6B,GAApB,SACzE59B,yBAAOS,UAAYA,EAAYsE,QAAU64B,GAAc/6B,EAAvD,M,ykBCoEJ,IAAMg7B,EAAN,cAA6B79B,gBAMzBqG,YAAY1F,GACR2F,MAAM3F,GA+GH,KAAA+X,oBAAuB3Q,GAAyCrB,KAAK/F,MAAMuK,OAAOC,QAAStI,KAAMkF,EAAMK,OAAOhE,MAiN7G,KAAA05B,mBAAqB,CAACC,EAAwCrB,EAA0BsB,EAA0CC,IAAsB,KAC5J,IAAKvB,IAAgBA,EAAYM,aAAegB,EAAqBE,cAEjE,OADAx3B,KAAK/F,MAAM4I,QAAQyB,UAAUjJ,MAAM,2CAC5B,KAGX,MAAM,cAAEwI,GAAkB7D,KAAK/F,MAAM4I,QAErC7C,KAAK2B,SAAS,CACVi0B,aAAa,EACb6B,iBAAkBH,EAClBI,gBAAiBH,EACjBI,QAAS,GACTC,aAAcP,IAGdE,EACAM,YAAwC,CAAEj0B,cAAeC,EAAei0B,oBAAqB,IAAM9B,EAAYM,WAAYgB,EAAqBE,cAAe,IAC1Jf,KAAMsB,IACH/3B,KAAK2B,SAAS,CAACq2B,eAAgBD,MAElCj0B,MAAOzI,IACJ2E,KAAK/F,MAAMqK,UAAUsD,UAAUvM,GAC/B2E,KAAK/F,MAAMqK,UAAUyyB,MAAM,yCAGnCkB,YAA2C,CAAEr0B,cAAeC,EAAei0B,oBAAqB,IAAM9B,EAAYM,WAAYgB,EAAqBE,eAC9If,KAAMsB,IACH/3B,KAAK2B,SAAS,CAACq2B,eAAgBD,MAElCj0B,MAAOzI,IACJ2E,KAAK/F,MAAMqK,UAAUjJ,MAAMA,EAAMhC,SACjC2G,KAAK/F,MAAMqK,UAAUyyB,MAAM,0CAOnC,KAAAmB,YAAc,KAClBl4B,KAAK2B,SAAS,CACVi0B,aAAa,EACb6B,sBAAkBv5B,EAClB85B,oBAAgB95B,KA1WpB8B,KAAKm4B,oBAAsB7+B,cAC3B0G,KAAKo4B,iBAAmB9+B,cACxB0G,KAAKuB,MAAQ,CACTq0B,aAAa,EACb6B,sBAAkBv5B,EAClBw5B,iBAAiB,EACjBC,QAAS,GACTK,oBAAgB95B,GAEpB8B,KAAKzD,iBAAmB2H,6BAAmBlE,KAAK/F,MAAM4I,QAAQsB,QAAQC,kBAAoBpE,KAAK/F,MAAMoK,aAAcrE,KAAK/F,MAAMqK,WAC9HtE,KAAKtD,QAAUC,2BAAiB,QAASqD,KAAKzD,iBAAkBy3B,oBAAkBqE,gBAG/E9zB,SACH,MAAM,UAAExK,EAAF,QAAa0K,GAAYzE,KAAK/F,MAAMuK,QACpC,YAAEwxB,GAAgBh2B,KAAK/F,MAAMmQ,MAC7B,iBAAEkuB,EAAF,0BAAoBC,EAApB,mBAA+CC,GAAuBx4B,KAAK/F,MAAMgG,WACjF,cAAE4D,GAAkB7D,KAAK/F,MAAM4I,SAC/B,YAAE+yB,GAAgB51B,KAAKuB,MACvBk3B,EAAuB57B,iCAAuBmD,KAAKzD,iBAAmByD,KAAKtD,SAEjF,IAAKs5B,IAAgBA,EAAY1rB,SAAY0rB,EAAY1rB,OAAOgsB,WAE5D,OADAt2B,KAAK/F,MAAM4I,QAAQyB,UAAUjJ,MAAM,qDAC5B,KAGX,MAAMq9B,EAAkB1C,EAAY1rB,OAC9BquB,EAAe3C,GAAe0C,EAAgBE,aAC9CC,EAAWhlB,aAAoB,OAAQhQ,IAAkB,GAEzDa,EAAS,OACR1E,KAAK/F,OADG,IAEXk9B,eAAgB,CACZvyB,YAAa5E,KAAK/F,MAClBF,UAAWmD,IAAW,qBAAsBnD,IAEhD++B,YAAaH,GAAgB34B,KAAK+4B,kBAClCh/B,UAAWmD,IAAW,sBAAuBnD,GAC7C4+B,aAAcD,EAAgBE,cAAgBF,EAAgBE,aAAap2B,OAAS,GAAKxC,KAAKg5B,oBAAoBN,GAClHO,YAAarD,GAAe51B,KAAKk5B,gBAAkB,CAAE7sB,QAAQ,EAAOD,eAAgBpM,KAAKuB,MAAMq2B,cAC/FuB,KAAM,CAAEp/B,UAAW,4BACnBq/B,OAAQ,CAAEr/B,UAAW,8BACrBs/B,UAAW,CAAEt/B,UAAW,iCACxB6+B,aAAc,CAAE7+B,UAAW,qCAC3Bu/B,gBAAiB,CAAEv/B,UAAW,uCAC9B+C,OAAQ,CAAE/C,UAAW,4BACrB0K,QAASA,GAEDnL,gBAACua,OAAa,CACV9Z,UAAU,8BACVoC,KAAMsI,EAAQtI,KACduS,IAAKjK,EAAQiK,KAAO,KACpBZ,UAAa,CAACE,OAAQhO,KAAKgS,oBAAqBjE,eAAgB/N,KAAK/F,MAAM4I,QAAQsB,WAK/Fo1B,UAEQjgC,gBAAC09B,EAAmB,CAChBj9B,UAAU,iCACVoC,KAAMm8B,IAGlBkB,WAEQlgC,gBAAC09B,EAAmB,CAChBj9B,UAAU,kCACVoC,KAAMu8B,EAAgBpC,aAGlCmD,SAEQngC,gBAAC09B,EAAmB,CAChBj9B,UAAU,gCACVoC,KAAM6D,KAAK05B,gBAAgB15B,KAAK25B,WAAWjB,EAAgBkB,+BAKvEC,YAEQvgC,gBAAC09B,EAAmB,CAChBj9B,UAAU,yCACVoC,KAAMo8B,IAGlBR,OAAQY,GAEAr/B,gBAAC09B,EAAmB,CAChBj9B,UAAU,mCACVoC,KAAM6D,KAAK+4B,oBAIvBe,WAAYnB,GAEJr/B,mCACIS,UAAU,wCACVgD,KAAM87B,GACFJ,GAEFD,KAKlB,OAAOx4B,KAAK/F,MAAMgL,WAAWP,GAKzBg1B,gBAAgBK,GACpB,OAAO1L,iBAAOruB,KAAK/F,MAAMgG,UAAU+5B,kBACrB,IAAIC,KAAKC,eAAel6B,KAAK/F,MAAM4I,QAAQgB,cAAckK,eAAeosB,OAAQ,CAAEC,MAAO,OAAQC,IAAK,UAAWC,KAAM,YAAajM,OAAO,IAAIkM,KAAKR,KAG9Jf,oBAAoBhD,GACxB,OAAOA,EAAY4C,aAAcr9B,IAAI,CAACi/B,EAAez7B,KACjD,MAAM07B,EAAeD,EAAchD,eAAiB,GAAIgD,EAAchD,2BAA6Bz4B,KAAY,mBACzG27B,EAAaF,EAAchD,eAAiB,GAAIgD,EAAchD,0BAA4Bz4B,KAAY,mBACtG,qBAAE47B,EAAF,0BAAwBC,GAA8B56B,KAAK/F,MAAMgG,UACvED,KAAKtD,QAAQqS,cAAcC,MAAQglB,oBAAkB6G,gBACrD,MAAMC,EAA4Bj+B,iCAAuBmD,KAAKzD,iBAAmByD,KAAKtD,SACtFsD,KAAKtD,QAAQqS,cAAcC,MAAQglB,oBAAkB+G,eACrD,MAAMC,EAA2Bn+B,iCAAuBmD,KAAKzD,iBAAmByD,KAAKtD,SAErF,MAAQ,CACJf,MAEQrC,gBAAC29B,EAAwB,CACrBl9B,UAAU,mCACVoC,KAAMq+B,EAAcS,cAGhCC,yBAAoDh9B,IAA/Bs8B,EAAcW,cAE3B7hC,gBAAC29B,EAAwB,CACrBl9B,UAAU,6CACVoC,KAAMw+B,EACNzD,SAAUuD,IAGtBW,2BAAsDl9B,IAA/Bs8B,EAAcW,cAE7B7hC,gBAACwD,SAAMtD,eACHO,UAAU,qCACV+R,MAAM,OACNjQ,QAASmE,KAAKo3B,mBAAmBp3B,KAAKm4B,oBAAqBnC,EAAawE,GAAe,GACvF3uB,SAAU7L,KAAKm4B,qBACX2C,GAEHN,EAAcW,aAAapxB,YAGxCsxB,wBAAyDn9B,IAArCs8B,EAAcc,oBAE1BhiC,gBAAC29B,EAAwB,CACrBl9B,UAAU,4CACVoC,KAAMkyB,iBAAOuM,EAA2B,IACxC1D,SAAUwD,IAGtBa,0BAA2Dr9B,IAArCs8B,EAAcc,oBAE5BhiC,gBAACwD,SAAMtD,eACHO,UAAU,qCACV+R,MAAM,OACNjQ,QAASmE,KAAKo3B,mBAAmBp3B,KAAKo4B,iBAAkBpC,EAAawE,GAAe,GACpF3uB,SAAU7L,KAAKo4B,kBACX4C,GAEHR,EAAcc,mBAAmBvxB,eAOlDmvB,eACJ,MAAM,0BAAEX,EAAF,yBAA6BiD,EAA7B,4BAAuDC,GAAgCz7B,KAAK/F,MAAMgG,WAClG,YAAE21B,EAAF,iBAAe6B,GAAqBz3B,KAAKuB,MAE/C,OAAKq0B,GAAgB6B,EAMd,CACHprB,OAAQupB,EACRxpB,eAAgBpM,KAAKuB,MAAMq2B,aAC3BrrB,mBAAoB,SACpBC,iBAAkB,SAClBC,eAAgB,mCAChBivB,qBAAsB,0CACtB/W,YAAa8S,EAAiBwD,aAAe,GAC7CU,mBAAoB,wCACpBC,aAAc,CAAE7hC,UAAW,6CAC3B8hC,iBAAkB,CAAE9hC,UAAW,gDAC/B+hC,qBAAsB97B,KAAK+7B,wBAC3BC,kBAEQ1iC,gBAAC09B,EAAmB,CAChBj9B,UAAU,wCACVoC,KAAMo8B,IAGlBO,YAEQx/B,gBAAC09B,EAAmB,CAChBj9B,UAAU,yCACVoC,KAAM6D,KAAKi8B,eAGvBlC,KAEQzgC,gBAAC09B,EAAmB,CAChBj9B,UAAU,wCACVoC,KAAMq/B,IAGlBU,aAEQ5iC,gBAAC09B,EAAmB,CAChBj9B,UAAU,2CACVoC,KAAMs/B,IAGlBU,QAASn8B,KAAKk4B,cA5Cdl4B,KAAK/F,MAAM4I,QAAQyB,UAAUjJ,MAAM,8DAC5B,MA+CP09B,kBACJ,MAAMJ,EAAe34B,KAAK/F,MAAMmQ,KAAK4rB,YAAY1rB,QAAUtK,KAAK/F,MAAMmQ,KAAK4rB,YAAY1rB,OAAOsuB,aAE9F,IAAIwD,EAAQ,EAKZ,OAJAzD,EAAcl3B,QAAQ+4B,IAClB4B,GAAS5B,EAAcW,cAAgB,IAGpCiB,EAGHH,aACJ,MAAM,iBAAExE,EAAF,gBAAoBC,GAAoB13B,KAAKuB,MAEnD,MAAO,KAAIm2B,EAAkBD,EAAkB6D,mBAAqB7D,EAAkB0D,eAAiB,GAGnGY,wBACJ,MAAM,eAAE/D,GAAmBh4B,KAAKuB,MAEhC,GAAKy2B,EAKL,OAAOA,EAAez8B,IAAK8gC,IACf,CACJC,SAAU,CAAEviC,UAAW,6CACvBwiC,aAEQjjC,gBAAC09B,EAAmB,CAChBj9B,UAAU,wCACVoC,KAAM6D,KAAKw8B,iBAAiBH,KAGxCI,aAEQnjC,gBAAC09B,EAAmB,CAChBj9B,UAAU,wCACVoC,KAAM6D,KAAK/F,MAAM4I,QAAQ65B,iBAAiBC,WAAW38B,KAAK25B,WAAW0C,EAASO,iBAG1FC,eAEQvjC,gBAAC09B,EAAmB,CAChBj9B,UAAU,0CACVoC,KAAMkgC,EAASS,eAAiBT,EAASS,eAAiB,QAzB1E98B,KAAK/F,MAAM4I,QAAQyB,UAAUjJ,MAAM,wDAgCnCs+B,WAAWI,GAGf,GAAoB,iBAATA,EAAmB,CAC1B,IAAIgD,EAAahD,EAAKhwB,WAGtB,OAFAgzB,EAAaA,EAAWlzB,QAAQ,KAAM,KACtCkzB,EAAaA,EAAWtH,UAAU,EAAG,IAC9B,IAAI8E,KAAKwC,GAEhB,OAAO,IAAIxC,KAAKR,EAAKiD,iBAAkBjD,EAAKkD,cAAelD,EAAKmD,cAIhEV,iBAAiBW,GACrB,GAAIA,EAAcC,oCACd,OAAOD,EAAcC,oCAGzB,MAAM,kBAAEC,EAAF,oBAAqBC,EAArB,oBAA0CC,EAA1C,oBAA+DC,GAAwBx9B,KAAK/F,MAAMgG,UACxG,OAAQk9B,EAAcM,oDAClB,KAAK,EACD,OAAOJ,EACX,KAAK,EACD,OAAOG,EACX,KAAK,EACD,OAAOF,EACX,KAAK,EACD,OAAOC,EACX,QACI,MAAO,MAnUjBpG,EAAc,sBADnBvpB,KACKupB,GAuXSA,a,+ECjbAuG,UA1B4CzjC,IACvD,MAAM,aAACk7B,EAAD,YAAe/O,EAAf,MAA4BltB,EAA5B,QAAmCkB,GAAYH,EAErD,OAAQG,GAAWlB,EACXI,gBAACyB,SAAMvB,iBAAK27B,GACP/O,EACD9sB,gBAACC,OAAIC,iBAAKN,EAAMA,OACZI,gBAACC,OAAIC,iBAAKN,EAAMyrB,aACXzrB,EAAMuL,SAEXnL,gBAACC,OAAIC,iBAAKN,EAAMC,WACXD,EAAM27B,MACPv7B,gBAACC,OAAIC,iBAAKN,EAAM47B,cACX57B,EAAM67B,SACN77B,EAAM+7B,YAGf37B,gBAACC,OAAIC,iBAAKN,EAAM2rB,aACX3rB,EAAMw7B,aACNx7B,EAAMs7B,gBAItB,O,+ECjBT,MA6DMv7B,EAA0C,IAK3C,IAL4C,MAC7CC,EAD6C,UAE7CC,EAF6C,KAG7CC,EAH6C,QAI7CC,GACC,EACD,OACIC,gBAACC,OAAIC,iBAAKN,GACNI,gBAACC,OAAIC,iBAAKL,GACLC,EACAC,KA4CXI,EAAgB,KAClB,MAAMC,EAAgBC,SAASC,eAAe,YACxCC,EAAcF,SAASC,eAAe,yBACxCF,GAAiBG,IACjBH,EAAcI,KAA8B,aAAvBJ,EAAcI,KAAsB,OAAS,WAClED,EAAYE,UAAsC,uBAA1BF,EAAYE,UAAqC,qBAAsB,uBAIxFC,UA/CgCC,IAE3C,MAAM,OACFC,EADE,UAEFC,EAFE,QAGFC,EAHE,mBAIFC,EAJE,YAKFC,EALE,cAMFC,EANE,cAOFC,EAPE,qBAQFC,EARE,mBASFC,EATE,oBAUFC,EAVE,qBAWFC,EAXE,kBAYFC,EAZE,WAaFC,GACAb,EAEJ,OACIX,gBAACyB,SAAMvB,iBAAKU,GACPC,EAAUa,eAAiB1B,gBAACC,OAAIC,iBAAKa,IACrCF,EAAUa,eAAiB1B,gBAACL,EAAaO,iBAAKY,IAC/Cd,gBAACC,OAAIC,iBAAKc,GACNhB,gBAACC,OAAIC,iBAAKe,GACLE,EArG+B,KAO/C,IAPgD,aACjDQ,EADiD,MAEjDC,EAFiD,eAGjDC,EAHiD,WAIjDC,EAJiD,MAKjDC,EALiD,aAMjDC,GACC,EAED,OACIhC,gBAACC,OAAIC,iBAAKyB,GACLC,GAASA,EAAMK,IAAKC,GACA,aAAbA,EAAKC,IAEDnC,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,MACNtC,0BAAQS,UAAU,wBAAuB,cAAa,OAAO8B,QAASpC,GAClEH,qBAAGwC,GAAG,wBAAwB/B,UAAU,yBAMpDT,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,QAIjBR,EACAC,EACAC,EACDhC,uBAAKS,UAAU,yCACVoB,KAkEIY,CAAarB,GA5DoB,KAGjD,IAHkD,eACnDsB,EADmD,MAEnDd,GACC,EAED,OACI5B,gBAACC,OAAIC,iBAAKwC,GACLd,GAASA,EAAMK,IAAKC,GAEblC,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKS,QACzBT,EAAKU,MACLV,EAAKW,SAkDTC,CAAczB,IAEnBrB,gBAACC,OAAIC,iBAAKgB,GACLI,EACAC,EACAC,O,8ZCtGd,MAAM6iC,EAA+C,QAAC,sBACzDC,EADyD,QAEzDC,EAFyD,UAGzDC,EAHyD,YAIzDC,EAJyD,MAKzDC,EALyD,OAMzDC,EANyD,mBAOzDC,EAPyD,YAQzDC,EARyD,eASzDC,GATwD,SAWpD9kC,gBAACC,OAAIC,iBAAKokC,GACLO,EACAC,EACAP,EACAC,EACAC,EACAC,EACAC,EACAC,IAIAG,EAAkC,QAAC,eAAEC,EAAF,UAAkBC,EAAlB,eAA6BC,GAA9B,SAC3CllC,gBAACC,OAAIC,iBAAK8kC,GACLC,EACAC,IAIIC,EAA0C,QAAC,cAAEC,EAAF,QAAiBj6B,EAAjB,MAA0Bu5B,EAA1B,aAAiCW,EAAjC,mBAA+CC,GAAhD,SACnDtlC,gBAACC,OAAIC,iBAAKklC,GACLj6B,EACAu5B,EACuB,YAAvBY,EAAmC,KAAOD,IAItCE,EAA0B,QAAC,WAAEC,EAAF,SAAcC,EAAd,QAAwB38B,EAAxB,gBAAiC48B,EAAjC,WAAkDC,GAAnD,SACnC3lC,gBAACC,OAAIC,iBAAKslC,GACLC,GAAYzlC,gBAACmlC,EAAajlC,iBAAKulC,IAChCzlC,gBAACC,OAAI,CAACQ,UAAU,2CACXklC,GACG3lC,gBAACC,OAAIC,iBAAKwlC,GACLC,EAAW1jC,IAAIgjC,GACZjlC,gBAACA,WAAc,CAACmC,IAAK8iC,EAAUn0B,KAAKm0B,UAAUW,QACT,SAAhCX,EAAUn0B,KAAK+0B,cAA2BZ,EAAUn0B,KAAKg1B,SAAWb,EAAUI,aAAe,KAC9FrlC,gBAAC+kC,EAAS7kC,iBAAK+kC,IACdA,EAAUc,gBAKzBN,EAASO,cAAgBl9B,EAC1B28B,EAASO,cACNhmC,gBAACC,OAAIC,iBAAKulC,EAASQ,aACdn9B,EACA28B,EAASS,uBAOjBC,EAA4B,QAAC,YAAEC,EAAF,OAAeC,GAAhB,SACrCrmC,gBAACC,OAAIC,iBAAKkmC,GACLC,EAAOpkC,IAAI,CAACqkC,EAAO7gC,IAChBzF,gBAACulC,EAAKrlC,eAACiC,IAAKsD,GAAW6gC,OAKtBC,EAAwC,QAAC,kBAAEC,EAAF,QAAqBr7B,EAArB,SAA8Bs7B,EAA9B,SAAwCC,EAAxC,IAAkDC,EAAlD,YAAuDC,EAAvD,aAAoEC,GAArE,SACjD7mC,gBAACC,OAAIC,iBAAKsmC,GACLr7B,EACAs7B,EACAC,EACAC,EACAC,EACAC,IAIIC,EAAqC,QAAC,oBAAEC,EAAF,MAAuBjyB,EAAvB,QAA8BkyB,GAA/B,SAC9ChnC,gBAACC,OAAIC,iBAAK6mC,GACLjyB,EACAkyB,IAIIC,EAAwB,QAAC,UAAEC,EAAF,cAAaC,EAAb,oBAA4BC,EAA5B,cAAiDC,GAAlD,SACjCrnC,gBAACC,OAAIC,iBAAKgnC,GACLC,EACAC,EACAC,IA+BMC,UA3B4C,IAUtD,IAVuD,YACxDh8B,EADwD,QAExDH,EAFwD,MAGxD2D,EAHwD,QAIxDhO,EAJwD,gBAKxDymC,EALwD,aAMxDC,EANwD,QAOxDC,EAPwD,KAQxDC,EARwD,OASxDrB,GACC,EACD,OACIrmC,gBAACyB,SAAMvB,iBAAKoL,GACPH,EACA2D,EACAhO,EACAymC,GAAmBvnC,gBAACqkC,EAAenkC,iBAAKqnC,IACxClB,GAAUrmC,gBAACmmC,EAAMjmC,iBAAKmmC,IACvBrmC,gBAACC,OAAI,CAACQ,UAAU,6CACX+mC,GAAgBxnC,gBAACumC,EAAYrmC,iBAAKsnC,IAClCC,GAAWznC,gBAAC8mC,EAAO5mC,iBAAKunC,KAE5BC,GAAQ1nC,gBAACinC,EAAI/mC,iBAAKwnC,O,+ECvChBC,UAzFgDhnC,IAE3D,MAAM,eAAEk9B,EAAF,KAAkBgC,EAAlB,OAAwBC,EAAxB,UAAgCC,EAAhC,aAA2CT,EAA3C,gBAAyDU,EAAzD,OAA0Ex8B,EAA1E,QAAkF2H,EAAlF,UAA2F80B,EAA3F,WAAsGC,EAAtG,SAAkHC,EAAlH,YAA4HI,EAA5H,OAAyI9B,EAAzI,aAAiJY,EAAjJ,WAA+JmB,EAA/J,YAA2Kb,GAAgBh/B,GAC3L,aAAE2hC,EAAF,iBAAgBC,GAAqB5C,EAC3C,OACI3/B,gBAACyB,SAAMvB,iBAAK29B,GACP1yB,EACDnL,gBAACC,OAAIC,iBAAK2/B,GACLI,EACAC,EACAC,GAELngC,gBAACC,OAAIC,iBAAK4/B,GACLS,EACA9B,EAEDz+B,gBAACC,OAAIC,iBAAK6/B,GACLV,GAAgBA,EAAap9B,IAAI,CAAC8gC,EAAUt9B,IAGrCzF,gBAACC,OAAIC,eAACiC,IAAKsD,GAAW65B,GACjByD,EAAS1gC,MACVrC,gBAACC,OAAIC,iBAAK8/B,GACL+C,EAASnB,oBACTmB,EAASjB,uBAGd9hC,gBAACC,OAAIC,iBAAK8/B,GACL+C,EAAShB,mBACTgB,EAASd,0BAQlCjiC,gBAACC,OAAIC,iBAAKsD,GACLg9B,IAGHb,EAAY5sB,QACV/S,gBAAC0S,QAAK,CACFI,eAAgB6sB,EAAY7sB,kBAEhC9S,gBAACyB,SAAMvB,eACHkV,IAAK1C,SACDmrB,EAAc,CAClBlrB,WAAW,EACXC,MAAM,EACNE,eAAgB6sB,EAAY7sB,eAC5BC,OAAQ4sB,EAAY5sB,OACpBE,mBAAoB0sB,EAAY1sB,mBAChCC,iBAAkBysB,EAAYzsB,iBAC9BzS,UAAWk/B,EAAYxsB,eACvBC,OAAQ,KACRw0B,SAAUjI,EAAYkD,QACtB7vB,OAAQ2sB,EAAYkD,UAGpB7iC,gBAACqT,cAAW,CAACL,OAAQ2sB,EAAYkD,QAASpiC,UAAWk/B,EAAYyC,sBAC5DzC,EAAYtU,aAEjBrrB,gBAACsT,YAAS,CAAC7S,UAAWk/B,EAAY0C,oBAC9BriC,gBAACC,OAAIC,iBAAKoiC,GACL3C,EAAY+C,kBACZ/C,EAAYH,aAEjBx/B,gBAACC,OAAIC,iBAAKqiC,GACL5C,EAAYc,KACZd,EAAYiD,cAEhBjD,EAAY6C,sBAAwB7C,EAAY6C,qBAAqBvgC,IAAI,CAAC8gC,EAAUt9B,KACjF,MAAM,SAAEu9B,EAAF,aAAYC,EAAZ,aAA0BE,EAA1B,eAAwCI,GAAmBR,EACjE,OACI/iC,gBAACC,OAAIC,iBAAK8iC,EAAQ,CAAE7gC,IAAKsD,IACpBw9B,EACAE,EACAI,U,+EC5ErC,MA0CM5jC,EAA0C,IAK3C,IAL4C,MAC7CC,EAD6C,UAE7CC,EAF6C,KAG7CC,EAH6C,QAI7CC,GACC,EACD,OACIC,gBAACC,OAAIC,iBAAKN,GACNI,gBAACC,OAAIC,iBAAKL,GACLC,EACAC,KAsCXI,EAAgB,KAClB,MAAMC,EAAgBC,SAASC,eAAe,YACxCC,EAAcF,SAASC,eAAe,oBACxCF,GAAiBG,IACjBH,EAAcI,KAA+B,aAAvBJ,EAAcI,KAAuB,OAAS,WACpED,EAAYE,UAAuC,6DAA1BF,EAAYE,UAC/B,2DACA,6DAICC,UA3CgCC,IAE3C,MAAM,OACFC,EADE,UAEFC,EAFE,QAGFC,EAHE,mBAIFC,EAJE,YAKFC,EALE,cAMFC,EANE,cAOFC,EAPE,qBAQFC,EARE,mBASFC,EATE,WAUFI,GACAb,EAEJ,OACIX,gBAACyB,SAAMvB,iBAAKU,GACPC,EAAUa,eAAiB1B,gBAACC,OAAIC,iBAAKa,IACrCF,EAAUa,eAAiB1B,gBAACL,EAAaO,iBAAKY,IAC/Cd,gBAACC,OAAIC,iBAAKc,GACNhB,gBAACC,OAAIC,iBAAKe,GACLE,EA/E+B,KAO/C,IAPgD,aACjDQ,EADiD,MAEjDC,EAFiD,eAGjDC,EAHiD,WAIjDC,EAJiD,MAKjDC,EALiD,aAMjDC,GACC,EACD,OACIhC,gBAACC,OAAIC,iBAAKyB,GACLC,GAASA,EAAMK,IAAKC,GACA,aAAbA,EAAKC,IAEDnC,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,MACNtC,qBACIwC,GAAG,mBACH/B,UAAU,2DACVoD,KAAK,SACLtB,QAASpC,KAMrBH,gBAACC,OAAIC,eAACiC,IAAKD,EAAKC,KAASD,EAAKE,SACzBF,EAAKG,MACLH,EAAKH,MACLG,EAAKI,QAIjBR,EACAC,EACAC,EACAH,IA2CQY,CAAarB,IAElBpB,gBAACC,OAAIC,iBAAKgB,GACLM","file":"static/js/4.97f76c35f0016bd7394b.chunk.js","sourcesContent":["import * as React from 'react';\r\n\r\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport {\r\n ISignInItem, ISignInLoading, ISignInLocalAccount, ISignInSocialAccount, ISignInSocialItem,\r\n ISignInViewProps\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/sign-in/sign-in';\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n forgetPassword,\r\n disclaimer,\r\n error,\r\n signInButton\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: ISignInItem) => {\r\n if (item.key === 'password') {\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n \r\n );\r\n }\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n );\r\n })}\r\n {forgetPassword}\r\n {disclaimer}\r\n {error}\r\n {signInButton}\r\n \r\n );\r\n};\r\n\r\nconst SocialAccount: React.FC = ({\r\n socialAccounts,\r\n items,\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: ISignInSocialItem) => {\r\n return (\r\n \r\n {item.image}\r\n {item.text}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst SignInLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message,\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignInView: React.FC = props => {\r\n\r\n const {\r\n signIn,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n signInSection,\r\n signUpSection,\r\n signInSectionHeading,\r\n signInLocalAccount,\r\n signInSocialAccount,\r\n signUpSectionHeading,\r\n signUpDescription,\r\n signUpLink\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n \r\n {signInSectionHeading}\r\n {LocalAccount(signInLocalAccount)}\r\n {SocialAccount(signInSocialAccount)}\r\n \r\n \r\n {signUpSectionHeading}\r\n {signUpDescription}\r\n {signUpLink}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst _showPassword = () => {\r\n const passwordState = document.getElementById('password') as HTMLInputElement;\r\n const iconElement = document.getElementById('sign-in-password-icon');\r\n if (passwordState && iconElement) {\r\n passwordState.type = passwordState.type === 'password' ? 'text' : 'password';\r\n iconElement.className = iconElement.className === 'icon-show-password' ? 'icon-hide-password' :'icon-show-password';\r\n }\r\n};\r\n\r\nexport default SignInView;\r\n","import * as React from 'react';\r\n\r\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport {\r\n ISignInItem, ISignInLoading, ISignInLocalAccount, ISignInSocialAccount, ISignInSocialItem,\r\n ISignInViewProps\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/sign-in/sign-in';\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n forgetPassword,\r\n disclaimer,\r\n error,\r\n signInButton\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: ISignInItem) => {\r\n if (item.key === 'password') {\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n \r\n );\r\n }\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n );\r\n })}\r\n {disclaimer}\r\n {error}\r\n {signInButton}\r\n
{forgetPassword}
\r\n
\r\n );\r\n};\r\n\r\nconst SocialAccount: React.FC = ({\r\n socialAccounts,\r\n items,\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: ISignInSocialItem) => {\r\n return (\r\n \r\n {item.image}\r\n {item.text}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst SignInLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message,\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignInView: React.FC = props => {\r\n\r\n const {\r\n signIn,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n signInSection,\r\n signUpSection,\r\n signInSectionHeading,\r\n signInLocalAccount,\r\n signInSocialAccount,\r\n signUpSectionHeading,\r\n signUpDescription,\r\n signUpLink\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n \r\n {signInSectionHeading}\r\n {LocalAccount(signInLocalAccount)}\r\n {SocialAccount(signInSocialAccount)}\r\n \r\n \r\n {signUpSectionHeading}\r\n {signUpDescription}\r\n {signUpLink}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst _showPassword = () => {\r\n const passwordState = document.getElementById('password') as HTMLInputElement;\r\n const iconElement = document.getElementById('sign-in-password-icon');\r\n if (passwordState && iconElement) {\r\n passwordState.type = passwordState.type === 'password' ? 'text' : 'password';\r\n iconElement.className = iconElement.className === 'icon-show-password' ? 'icon-hide-password' :'icon-show-password';\r\n }\r\n};\r\n\r\nexport default SignInView;\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IBusinessSignUpButtonProps {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n link?: string;\n telemetryContent: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nexport const SignUpButton: React.FC = ({ id, className, text, ariaLabel, telemetryContent, disabled, link, onClick }) => {\n const payLoad = getPayloadObject('click', telemetryContent, text);\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\n return (\n \n {text}\n \n );\n};\n\nexport default SignUpButton;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IBusinessSignUpErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nexport const SignUpError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n\n};\n\nexport default SignUpError;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport { InputType } from '../business-sign-up';\n\nexport interface IBusinessSignUpInputProps {\n id?: string;\n type: InputType;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n isRequired: boolean;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface IBusinessSignUpInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nexport const SignUpInput: React.FC = ({ id, type, value, pattern, className, maxLength, isRequired, onChange }) => {\n if (type === InputType.TextArea) {\n return (\n \n );\n }\n\n return (\n \n );\n};\n\nexport default SignUpInput;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nexport interface IBusinessSignUpLabelProps {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nexport const SignUpLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default SignUpLabel;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nimport { getTelemetryObject, Heading, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { getUrlSync, RichTextComponent } from '@msdyn365-commerce/core';\nimport { Address, BusinessPartnerProspect } from '@msdyn365-commerce/retail-proxy';\nimport { createProspectAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport classnames from 'classnames';\nimport { IBusinessSignUpConfig, IBusinessSignUpProps } from './business-sign-up.props.autogenerated';\nimport { SignUpButton, SignUpError, SignUpInput, SignUpLabel } from './components';\n\nexport interface IBusinessSignUpExtendedProps extends IBusinessSignUpProps {\n formItems?: IFormItem[];\n}\n\nexport interface IBusinessSignUpItem {\n wrapper: INodeProps;\n isAddressInput?: boolean;\n id: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input?: React.ReactNode;\n}\n\nexport interface IBusinessState {\n isReady: boolean;\n formItems: IFormItem[];\n addressHasErrors: boolean;\n showAddressErrors: boolean;\n hasSubmitErrors: boolean;\n}\n\nexport interface IBusinessSignUpLocalAccount {\n FormWrapper: INodeProps;\n items: IBusinessSignUpItem[];\n buttons: React.ReactNode[];\n errorMessage: React.ReactNode[];\n disclaimer: React.ReactNode;\n}\n\nexport interface IBusinessSignUpViewProps {\n className: string;\n businessSignUp: IModuleProps;\n ContainerWrapper: INodeProps;\n heading: React.ReactNode;\n businessSignUpForm: IBusinessSignUpLocalAccount;\n formItems: IFormItem[];\n}\n\nexport interface IFormItem {\n id: string;\n type: InputType;\n label: string;\n value: string;\n maxChars?: string;\n isRequired: boolean;\n pattern?: string;\n address?: Address;\n customClass?: string;\n}\n\nexport enum InputType {\n Text = 'text',\n Address = 'address',\n Email = 'email',\n TextArea = 'textarea'\n}\n\nexport enum InputID {\n FirstName = 'FirstName',\n LastName = 'LastName',\n Email = 'CompanyEmail',\n CompanyName = 'CompanyName',\n Address = 'CompanyAddress',\n JobTitle = 'JobTitle',\n Size = 'CompanySize',\n Department = 'Department',\n Comment = 'Comment'\n}\n\nexport const renderInputSection = (inputs: IFormItem[], className: string, needToReset: boolean, onInputChange: (event: React.ChangeEvent) => void,\n showErrors: boolean, addressForm?: React.ReactNode, updateAddress?: (errors: boolean, currAddress?: Address) => void): IBusinessSignUpItem[] => {\n return inputs.map((element, index) => {\n const { id, type, label, maxChars, isRequired, pattern, customClass, value } = element;\n\n const baseSignUpItem: IBusinessSignUpItem = {\n wrapper: {\n className: classnames(className, `${className}-${id}`, customClass)\n },\n id: id,\n label: ,\n errorMessage: ,\n };\n\n if (type === InputType.Address) {\n if (addressForm) {\n baseSignUpItem.isAddressInput = true;\n baseSignUpItem.input = (\n \n {React.cloneElement(addressForm as React.ReactElement, { updateForm: updateAddress, hasError: showErrors, isRequired: isRequired === undefined ? false : isRequired, resetAddress: needToReset })}\n \n );\n } else {\n // if the address slot is not filled, remove this input from the form\n inputs.splice(index, 1);\n }\n } else {\n baseSignUpItem.input = (\n \n );\n }\n\n return baseSignUpItem;\n });\n};\n\n/**\n *\n * Business Request Form Modules\n * Form that a business can use to submit a request to become a partner with Microsoft.\n * @extends {React.Component>}\n */\nclass BusinessSignUp extends React.Component {\n // used as default data\n public BusinessSignUpDefaultInputs: IFormItem[] = [\n {\n id: InputID.FirstName,\n type: InputType.Text,\n label: this.props.resources.firstNameLabel,\n value: '',\n isRequired: true,\n customClass: 'width-25'\n },\n {\n id: InputID.LastName,\n type: InputType.Text,\n label: this.props.resources.lastNameLabel,\n value: '',\n isRequired: true,\n customClass: 'width-25'\n },\n {\n id: InputID.Email,\n type: InputType.Email,\n label: this.props.resources.emailAddressLabel,\n value: '',\n isRequired: true,\n pattern: '^[a-zA-Z0-9.!#$%&\\'^_`{}~-]+@[a-zA-Z0-9-]+(?:\\\\.[a-zA-Z0-9-]+)*$',\n customClass: 'width-50'\n },\n {\n id: InputID.CompanyName,\n type: InputType.Text,\n label: this.props.resources.companyLabel,\n value: '',\n isRequired: true,\n customClass: 'width-50'\n },\n {\n id: InputID.Department,\n type: InputType.Text,\n label: this.props.resources.departmentLabel,\n value: '',\n isRequired: false,\n customClass: 'width-50'\n },\n {\n id: InputID.JobTitle,\n type: InputType.Text,\n label: this.props.resources.jobTitleLabel,\n value: '',\n isRequired: false,\n customClass: 'width-50'\n },\n {\n id: InputID.Size,\n type: InputType.Text,\n label: this.props.resources.companySizeLabel,\n value: '',\n isRequired: false,\n customClass: 'width-50'\n },\n {\n id: InputID.Address,\n type: InputType.Address,\n label: this.props.resources.companyAddressLabel,\n value: '',\n isRequired: false,\n customClass: 'width-100'\n },\n {\n id: InputID.Comment,\n type: InputType.TextArea,\n label: this.props.resources.commentLabel,\n value: '',\n isRequired: false,\n customClass: 'width-100'\n }\n ];\n\n private moduleClassName: string = 'ms-business-sign-up';\n private needsToReset: boolean = false;\n private telemetryContent: ITelemetryContent;\n\n constructor(props: IBusinessSignUpExtendedProps) {\n super(props);\n\n this.state = {\n isReady: false,\n formItems: this.props.formItems || this.BusinessSignUpDefaultInputs,\n addressHasErrors: false,\n showAddressErrors: false,\n hasSubmitErrors: false\n };\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n }\n\n public render(): JSX.Element {\n const { config } = this.props;\n const { formItems } = this.state;\n const { className, heading } = config;\n\n const viewProps = {\n ...this.props,\n businessSignUp: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, className)\n },\n ContainerWrapper: {\n className: `${this.moduleClassName}__container`\n },\n heading: ,\n businessSignUpForm: this._renderForm(),\n formItems: formItems\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _renderForm(): IBusinessSignUpLocalAccount {\n const { config, resources, slots } = this.props;\n const { showAddressErrors, hasSubmitErrors, isReady, formItems } = this.state;\n const { signUpButtonArialabel, signUpButtonText, cancelButtonArialabel, cancelButtonText, errorMessage, partialAddressErrorMessage } = resources;\n const addressForm = slots && slots.addressSlot && slots.addressSlot.length > 0 && slots.addressSlot[0] || undefined;\n const successPageURL = config.confirmationLink && config.confirmationLink.linkUrl && config.confirmationLink.linkUrl.destinationUrl || getUrlSync('home', this.props.context.actionContext);\n\n const form = {\n FormWrapper: {\n className: `${this.moduleClassName}__form `\n },\n items: renderInputSection(formItems, `${this.moduleClassName}__form-item`, this.needsToReset, this._onInputChange, showAddressErrors, addressForm, this._onAddressChange),\n buttons: [\n // tslint:disable-next-line:max-line-length\n ,\n \n ],\n errorMessage: [\n hasSubmitErrors && ,\n showAddressErrors && \n ],\n disclaimer: config.disclaimer && ,\n };\n\n if (this.needsToReset) {\n this.needsToReset = false;\n }\n\n return form;\n }\n\n private _onInputChange = (event: React.ChangeEvent): void => {\n const newForm = this.state.formItems;\n newForm.forEach(item => {\n if (item.id === event.target.id) {\n item.value = event.target.value;\n }\n });\n\n // check if form is ready, update state object with latest values, values have changed so reset hasSubmitErrros\n this.setState({\n isReady: this._isFormReady(),\n formItems: newForm,\n hasSubmitErrors: false\n });\n }\n\n private _onAddressChange = (errors: boolean, currentAddress?: Address): void => {\n // find address item\n const newForm = this.state.formItems;\n const addressItem = newForm.find((item) => {\n return item.type === InputType.Address;\n });\n\n // if found --> set to currentAddress\n if (addressItem) {\n addressItem.address = currentAddress;\n\n // update state with new values and set errors to false if address is not required field\n this.setState({\n isReady: this._isFormReady(),\n formItems: newForm,\n addressHasErrors: errors,\n showAddressErrors: false\n });\n }\n }\n\n private _isFormReady = (): boolean => {\n const { formItems } = this.state;\n\n for (let i = 0; i < formItems.length; i++) {\n // will return FALSE if:\n // - input field is required\n // IF is address AND addressHasErrors === true\n // ELSE value is undefined OR empty\n // OR\n // - pattern provided and value does not match pattern\n const currentInput = formItems[i];\n\n if (currentInput.isRequired) {\n if (currentInput.type === InputType.Address) {\n if (this.state.addressHasErrors) {\n return false;\n }\n } else {\n if (currentInput.value === undefined || currentInput.value === '') {\n return false;\n }\n }\n }\n if (currentInput.pattern !== undefined && currentInput.value.match(formItems[i].pattern as string) === null) {\n return false;\n }\n }\n\n return true;\n }\n\n private _onSubmit = (event: React.MouseEvent) => {\n if (this.state.addressHasErrors) {\n this.setState({\n showAddressErrors: true\n });\n\n event.preventDefault();\n return;\n }\n\n const { context } = this.props;\n\n // check for matching id and if not empty\n const firstName = this._getItem(InputID.FirstName);\n const lastName = this._getItem(InputID.LastName);\n const companyName = this._getItem(InputID.CompanyName);\n const companyEmail = this._getItem(InputID.Email);\n const companyAddress = this._getItem(InputID.Address, true);\n const jobTitle = this._getItem(InputID.JobTitle);\n const department = this._getItem(InputID.Department);\n const companySize = this._getItem(InputID.Size);\n const comments = this._getItem(InputID.Comment);\n\n // API gets email as part of the address object, but I do not use the email input from the address component, thus we need to copy it over\n if (companyEmail && companyEmail.value && companyAddress && companyAddress.address) {\n companyAddress.address.Email = companyEmail.value;\n }\n\n const newPartner: BusinessPartnerProspect = {\n FirstName: firstName && firstName.value,\n LastName: lastName && lastName.value,\n CompanyName: companyName && companyName.value,\n Address: companyAddress && companyAddress.address && companyAddress.address,\n JobTitle: jobTitle && jobTitle.value,\n Department: department && department.value,\n CompanySize: companySize && parseInt(companySize.value, 10) || 0,\n Comments: comments && comments.value,\n };\n\n // create business partner request\n createProspectAsync({ callerContext: context.actionContext }, newPartner)\n .catch(() => {\n this.setState({\n hasSubmitErrors: true,\n isReady: false\n });\n });\n }\n\n private _onCancel = () => {\n // reset values of the form\n const cleanForm = this.state.formItems;\n cleanForm.forEach(input => {input.value = '';});\n\n // set reset flag so address input will get reset on next renderInputSection() call\n this.needsToReset = true;\n\n this.setState({\n isReady: false,\n formItems: cleanForm,\n addressHasErrors: true,\n showAddressErrors: false,\n hasSubmitErrors: false\n });\n }\n\n private _getItem = (id: string, isAddress: boolean = false) => {\n if (isAddress) {\n return this.state.formItems.find((item) => { return item.id === id && item.address;});\n }\n return this.state.formItems.find((item) => { return item.id === id && item.value !== '';});\n }\n}\n\nexport default BusinessSignUp;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport { ITabItemViewProps, TabItemType } from './tab-item';\n\nconst TabItemView: React.FC = props => {\n const { tabItemType, tabSlots, TabContentContainer, TabHeaderContainer, TabItemContent, tabHeader } = props;\n\n switch (tabItemType) {\n case TabItemType.TabContent:\n return (\n \n \n {tabSlots && tabSlots.tabItemContent && tabSlots.tabItemContent.length && (_renderTabItemContent(tabSlots.tabItemContent))}\n \n \n );\n case TabItemType.TabHeader:\n return (\n \n {tabHeader}\n \n );\n default:\n return null;\n }\n};\n\nconst _renderTabItemContent = (items: React.ReactNode[]): JSX.Element | null => {\n return (\n <>\n {items && items.length ? (\n items.map((item: React.ReactNode, index: number) => {\n return (\n \n {item}\n \n );\n })\n ) : null}\n \n );\n};\nexport default TabItemView;","/*!\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 classnames from 'classnames';\nimport * as React from 'react';\nimport { IBreadcrumbViewProps } from './breadcrumb';\n\nconst BreadCrumbView: React.FC = props => {\n const { root, links, backButton, BreadcrumbContainer, BreadcrumbList, BreadcrumbListItem, separator } = props;\n if (!root && !links && !backButton) {\n props.context.telemetry.error('BreadCrumb content is empty, module wont render');\n return null;\n }\n return (\n \n \n {root &&\n \n {root}\n {links && separator}\n \n }\n {backButton &&\n \n {backButton}\n \n }\n {links && links.map((link, index) => (\n \n \n {link}\n {links[index + 1] && separator}\n \n \n ))}\n \n \n );\n};\n\nexport default BreadCrumbView;","import * as React from 'react';\r\n\r\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport {\r\n ISignInItem, ISignInLoading, ISignInLocalAccount, ISignInSocialAccount, ISignInSocialItem,\r\n ISignInViewProps\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/sign-in/sign-in';\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n forgetPassword,\r\n disclaimer,\r\n error,\r\n signInButton\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: ISignInItem) => {\r\n if (item.key === 'password') {\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n \r\n );\r\n }\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n );\r\n })}\r\n {disclaimer}\r\n {error}\r\n {signInButton}\r\n
{forgetPassword}
\r\n
\r\n );\r\n};\r\n\r\nconst SocialAccount: React.FC = ({\r\n socialAccounts,\r\n items,\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: ISignInSocialItem) => {\r\n return (\r\n \r\n {item.image}\r\n {item.text}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst SignInLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message,\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignInView: React.FC = props => {\r\n\r\n const {\r\n signIn,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n signInSection,\r\n signUpSection,\r\n signInSectionHeading,\r\n signInLocalAccount,\r\n signInSocialAccount,\r\n signUpSectionHeading,\r\n signUpDescription,\r\n signUpLink\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n \r\n {signInSectionHeading}\r\n {LocalAccount(signInLocalAccount)}\r\n {SocialAccount(signInSocialAccount)}\r\n \r\n \r\n {signUpSectionHeading}\r\n {signUpDescription}\r\n {signUpLink}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst _showPassword = () => {\r\n const passwordState = document.getElementById('password') as HTMLInputElement;\r\n const iconElement = document.getElementById('sign-in-password-icon');\r\n if (passwordState && iconElement) {\r\n passwordState.type = passwordState.type === 'password' ? 'text' : 'password';\r\n iconElement.className = iconElement.className === 'icon-show-password' ? 'icon-hide-password' :'icon-show-password';\r\n }\r\n};\r\n\r\nexport default SignInView;\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt 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';\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 iframeRef: React.RefObject;\n constructor(props: IIframeProps) {\n super(props);\n this.iframeRef = React.createRef();\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 === false) {\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) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _renderAlert(message: string): React.ReactNode | null {\n return (\n

\n {message}\n

);\n }\n\n private _createIframe(): React.ReactNode | null {\n const { config } = this.props;\n const targetURL = config.target.destinationUrl;\n\n return (\n // tslint:disable-next-line: react-iframe-missing-sandbox\n \n );\n }\n\n}\n\nexport default Iframe;\n","import { ICoreContext, RichText } from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\nimport { IrsmFriendsAndFamilyCode } from '../../../dataActions/DataServiceEntities.g';\r\nimport { IFamilyAndFriendsConfig, IFamilyAndFriendsResources } from '../family-and-friends.props.autogenerated';\r\ninterface IFamilyAndFriendsCodeComponentProps {\r\n code: IrsmFriendsAndFamilyCode;\r\n config: IFamilyAndFriendsConfig;\r\n resources: IFamilyAndFriendsResources;\r\n // tslint:disable-next-line: no-any\r\n context: ICoreContext<{ [x: string]: any }>;\r\n}\r\n\r\n/**\r\n * renders a single row (code) for the family and friends table\r\n */\r\nexport class FamilyAndFriendsCodeComponent extends React.Component {\r\n constructor(props: IFamilyAndFriendsCodeComponentProps) {\r\n super(props);\r\n }\r\n\r\n public render(): JSX.Element {\r\n return (\r\n
\r\n
\r\n
{this.props.resources.familyFriends_codeLabel}
\r\n
{this.props.code.Code}
\r\n
\r\n
\r\n
{this.props.resources.familyFriends_recipientLabel}
\r\n
{this._recipientColumnAction}
\r\n
\r\n
\r\n
{this.props.resources.familyFriends_activationDateLabel}
\r\n
{this.props.code.ActivationDate}
\r\n
\r\n
\r\n );\r\n }\r\n\r\n private get _recipientColumnAction(): JSX.Element {\r\n if (this._hasBeenRecieved) {\r\n return
{this.props.code.RecipientEmailAddress}
;\r\n }\r\n return (\r\n \r\n );\r\n }\r\n\r\n private get mailToLink(): string {\r\n const { mailSubject, mailBody } = this.props.config;\r\n return `mailto:?subject=${this._sanitizeMailTo(mailSubject, true)}&body=${this._sanitizeMailTo(mailBody)}${this.props.code.Code}`;\r\n }\r\n\r\n //-------------------------------------------------------\r\n // mailto doesn't support HTML tags, and is fairly picky\r\n // and limited.\r\n // The CMS places all text in

blocks, randomly converts\r\n // some spaces to   and sanitizes certain characters\r\n // like single quotes (used as apostrophes!)\r\n // We need to convert all of that wackiness into something\r\n // that CMS authors would expect.\r\n //\r\n // stripOnly:\r\n // The Mail Subject was created in the definition file\r\n // as RichText, which was a bad idea. It's always a\r\n // short, unformatted string. RichText is surrounded in\r\n // a

tag, so for the mail subject we want to strip\r\n // it instead of replacing with CRLF.\r\n //-------------------------------------------------------\r\n private _sanitizeMailTo(value: RichText | undefined, stripOnly?: boolean): string {\r\n if (!value) { return ''; }\r\n\r\n return value\r\n .replace(/

/g, '') // Remove opening

tags\r\n .replace(/<\\/p>/g, stripOnly ? '' : '%0D%0A%0D%0A') // Remove or convert closing

tags\r\n .replace(/ /g, ' ') // Convert nbsp; to space\r\n .replace(/
/g, '%0D%0A') // Convert
to %0D%0A\r\n .replace(/&#(\\d\\d);/g, // Convert &#dd; values to %xx format (decimal --> hex)\r\n (match, p1) => {return `%${(+p1).toString(16)}`;});\r\n }\r\n\r\n private get _hasBeenRecieved(): boolean {\r\n return !!this.props.code.RecipientEmailAddress;\r\n }\r\n}","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as React from 'react';\r\n\r\nimport { FamilyAndFriendsCodeComponent } from './components/family-and-friends-code-item';\r\nimport { IFamilyAndFriendsData } from './family-and-friends.data';\r\nimport { IFamilyAndFriendsProps } from './family-and-friends.props.autogenerated';\r\n\r\nexport interface IFamilyAndFriendsViewProps extends IFamilyAndFriendsProps {\r\n header: React.ReactNode;\r\n codes: React.ReactNode[] | undefined;\r\n}\r\n\r\n/**\r\n *\r\n * FamilyAndFriends component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass FamilyAndFriends extends React.PureComponent> {\r\n public render(): JSX.Element | null {\r\n this.props.context.actionContext;\r\n const viewProps: IFamilyAndFriendsViewProps = {\r\n ...this.props,\r\n header: this._headerJSX,\r\n codes: this.props.data.codeList.result?.Result.Codes?.map(\r\n (code) =>\r\n (\r\n \r\n )\r\n )\r\n };\r\n return this.props.renderView(viewProps);\r\n }\r\n\r\n private get _headerJSX(): JSX.Element {\r\n return (\r\n

\r\n
{this.props.resources.familyFriends_codeLabel}
\r\n
{this.props.resources.familyFriends_recipientLabel}
\r\n
{this.props.resources.familyFriends_activationDateLabel}
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default FamilyAndFriends;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Button, Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\r\nimport classname from 'classnames';\r\nimport { computed, observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { ISortAndFilterContainerProps } from './sort-and-filter-container.props.autogenerated';\r\nimport { GridSize, ISortAndFilterContainerState } from './sort-and-filter-container.state';\r\n\r\n/**\r\n *\r\n * SortAndFilterContainer component.\r\n * @extends {React.Component, ISortAndFilterContainerState>}\r\n */\r\n@observer\r\nclass SortAndFilterContainer extends React.Component, ISortAndFilterContainerState> {\r\n @observable\r\n private _viewport: GridSize;\r\n\r\n private _modalExampleBtn: React.RefObject;\r\n\r\n constructor(props: ISortAndFilterContainerProps<{}>) {\r\n super(props);\r\n\r\n this._viewport = 'lg';\r\n this._modalExampleBtn = React.createRef();\r\n this._toggleModal = this._toggleModal.bind(this);\r\n this._updateViewport = this._updateViewport.bind(this);\r\n\r\n this.state = {\r\n modalIsOpen: false\r\n };\r\n }\r\n\r\n @computed get isMobile(): boolean {\r\n return (this._viewport === 'xs' || this._viewport === 'sm' || this._viewport === 'md');\r\n }\r\n\r\n public componentDidMount(): void {\r\n // tslint:disable-next-line: no-typeof-undefined\r\n if (typeof window !== 'undefined' && window.addEventListener) {\r\n window.addEventListener('resize', this._updateViewport);\r\n this._updateViewport();\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n // tslint:disable-next-line: no-typeof-undefined\r\n if (typeof window !== 'undefined' && window.addEventListener) {\r\n window.removeEventListener('resize', this._updateViewport);\r\n }\r\n }\r\n\r\n /**\r\n * Renders both desktop and mobile versions of this container. The expectation is for the theme\r\n * to show/hide each based on viewport size.\r\n */\r\n public render(): JSX.Element {\r\n if (this.isMobile) {\r\n return this._renderMobile();\r\n }\r\n return this._renderDesktop();\r\n }\r\n\r\n private _renderDesktop(): JSX.Element {\r\n const { slots } = this.props;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n {slots.refineMenu}\r\n
\r\n
\r\n
\r\n
\r\n {slots.choiceSummary}\r\n
\r\n
\r\n {slots.sorting}\r\n
\r\n
\r\n
\r\n
\r\n {slots.products}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n private _renderMobile(): JSX.Element {\r\n const { slots, resources } = this.props;\r\n const { modalIsOpen } = this.state;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {slots.choiceSummary}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n {resources.mobileModalTitle}\r\n \r\n \r\n {resources.mobileModalTitle}\r\n \r\n
{slots.sorting}
\r\n
\r\n
{slots.refineMenu}
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n {slots.products}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n private _toggleModal(): void {\r\n this.setState({\r\n modalIsOpen: !this.state.modalIsOpen\r\n });\r\n }\r\n\r\n private _updateViewport(): void {\r\n this._viewport = this._getViewport();\r\n\r\n if (this.isMobile && this.state.modalIsOpen && !this.isMobile) {\r\n this._toggleModal();\r\n }\r\n }\r\n\r\n // TODO: if DCR 22025838 is approved then move this logic to SDK and reuse across Starter Kit modules\r\n private _getViewport(): GridSize {\r\n const { context } = this.props;\r\n\r\n // always render in mobile viewport on a mobile device\r\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\r\n return 'xs';\r\n }\r\n\r\n if (typeof window !== undefined && window.innerWidth) {\r\n const gridSettings = context.request.gridSettings;\r\n if (gridSettings) {\r\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\r\n return 'xs';\r\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\r\n return 'sm';\r\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\r\n return 'md';\r\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\r\n return 'lg';\r\n } else {\r\n return 'xl';\r\n }\r\n }\r\n }\r\n\r\n return 'xs';\r\n }\r\n}\r\n\r\nexport default SortAndFilterContainer;\r\n","import * as React from 'react';\r\n\r\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport {\r\n ISignInItem,\r\n ISignInLoading,\r\n ISignInLocalAccount,\r\n ISignInSocialAccount,\r\n ISignInSocialItem,\r\n ISignInViewProps,\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/sign-in/sign-in';\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n forgetPassword,\r\n disclaimer,\r\n error,\r\n signInButton,\r\n}) => {\r\n return (\r\n \r\n {items &&\r\n items.map((item: ISignInItem) => {\r\n if (item.key === 'password') {\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n );\r\n }\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n );\r\n })}\r\n {disclaimer}\r\n {error}\r\n {signInButton}\r\n
\r\n {forgetPassword}\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst SocialAccount: React.FC = ({\r\n socialAccounts,\r\n items,\r\n}) => {\r\n return (\r\n \r\n {items &&\r\n items.map((item: ISignInSocialItem) => {\r\n return (\r\n \r\n {item.image}\r\n {item.text}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst SignInLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message,\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignInView: React.FC = (props) => {\r\n const {\r\n signIn,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n signInSection,\r\n signUpSection,\r\n signInSectionHeading,\r\n signInLocalAccount,\r\n signInSocialAccount,\r\n signUpSectionHeading,\r\n signUpDescription,\r\n signUpLink\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n \r\n {signInSectionHeading}\r\n {LocalAccount(signInLocalAccount)}\r\n {SocialAccount(signInSocialAccount)}\r\n \r\n \r\n {signUpSectionHeading}\r\n {signUpDescription}\r\n {signUpLink}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst _showPassword = () => {\r\n const passwordState = document.getElementById('password') as HTMLInputElement;\r\n const iconElement = document.getElementById('sign-in-password-icon');\r\n if (passwordState && iconElement) {\r\n passwordState.type =\r\n passwordState.type === 'password' ? 'text' : 'password';\r\n iconElement.className =\r\n iconElement.className === 'icon-show-password'\r\n ? 'icon-hide-password'\r\n : 'icon-show-password';\r\n }\r\n};\r\n\r\nexport default SignInView;\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { BackToTop, getTelemetryObject, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport * as React from 'react';\nimport { IBackTopFooterProps } from './back-top-footer.props.autogenerated';\n\n/**\n *\n * BackTopFooter component\n * @extends {React.PureComponent>}\n */\nclass BackTopFooter extends React.PureComponent> {\n private editProps: Msdyn365.ITextEditProps = {\n requestContext: this.props.context.request,\n onEdit: (event: Msdyn365.ContentEditableEvent) => this.props.config.backtoTopText = event.target.value\n };\n private telemetryContent?: ITelemetryContent;\n constructor(props: IBackTopFooterProps<{}>) {\n super(props);\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n }\n\n public render(): JSX.Element | null {\n if (!this.props.config.destination) {\n this.props.telemetry.error('BackToTop.destination has not been provided, module wont render.');\n return null;\n }\n\n return (\n \n );\n }\n}\n\nexport default BackTopFooter;\n","import * as React from 'react';\r\n\r\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport {\r\n ISignInItem, ISignInLoading, ISignInLocalAccount, ISignInSocialAccount, ISignInSocialItem,\r\n ISignInViewProps\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/sign-in/sign-in';\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n forgetPassword,\r\n disclaimer,\r\n error,\r\n signInButton\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: ISignInItem) => {\r\n if (item.key === 'password') {\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n \r\n );\r\n }\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n );\r\n })}\r\n {disclaimer}\r\n {error}\r\n {signInButton}\r\n
\r\n {forgetPassword}\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst SocialAccount: React.FC = ({\r\n socialAccounts,\r\n items,\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: ISignInSocialItem) => {\r\n return (\r\n \r\n {item.image}\r\n {item.text}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst SignInLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message,\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignInView: React.FC = props => {\r\n\r\n const {\r\n signIn,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n signInSection,\r\n signUpSection,\r\n signInSectionHeading,\r\n signInLocalAccount,\r\n signInSocialAccount,\r\n signUpSectionHeading,\r\n signUpDescription,\r\n signUpLink\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n \r\n {signInSectionHeading}\r\n {LocalAccount(signInLocalAccount)}\r\n {SocialAccount(signInSocialAccount)}\r\n \r\n \r\n {signUpSectionHeading}\r\n {signUpDescription}\r\n {signUpLink}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst _showPassword = () => {\r\n const passwordState = document.getElementById('password') as HTMLInputElement;\r\n const iconElement = document.getElementById('sign-in-password-icon');\r\n if (passwordState && iconElement) {\r\n passwordState.type = passwordState.type === 'password' ? 'text' : 'password';\r\n iconElement.className = iconElement.className === 'icon-show-password' ? 'icon-hide-password' : 'icon-show-password';\r\n }\r\n};\r\n\r\nexport default SignInView;\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\nimport { IFooterCategoryConfig, IFooterCategoryProps } from './footer-category.props.autogenerated';\n\nexport interface IFooterCategoryViewProps extends IFooterCategoryProps {\n categories: React.ReactNode[];\n FooterList: IModuleProps;\n FooterListItem: INodeProps;\n}\n\n/**\n *\n * FooterCategory component\n * @extends {React.PureComponent>}\n */\nclass FooterCategory extends React.PureComponent> {\n public render(): JSX.Element | null {\n if(!this.props.slots || !this.props.slots.content || !this.props.slots.content.length) {\n this.props.context.telemetry.error('footer slots content is empty, module wont render');\n return null;\n }\n const viewprops = {\n ...this.props,\n categories: this.props.slots.content,\n FooterList: {\n moduleProps: this.props,\n className: classnames('ms-footer__list', this.props.config.className),\n tag:'ul'\n },\n FooterListItem: {\n className: classnames('ms-footer__list-item', this.props.config.className),\n tag: 'li'\n },\n };\n\n return this.props.renderView(viewprops) as React.ReactElement;\n }\n}\n\nexport default FooterCategory;\n","import { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface ILink {\n className?: string;\n text?: string;\n href?: string;\n ariaLabel?: string;\n index: string;\n noclick?: boolean;\n telemetryContent: ITelemetryContent;\n}\n\nexport const Link: React.FC = ({ text, className, href, ariaLabel, index, noclick, telemetryContent }) => {\n\n const payLoad = getPayloadObject('click', telemetryContent, '', '');\n\n const linkText = text !== undefined ? text : '';\n payLoad.contentAction.etext = linkText;\n // Construct telemetry attribute to render\n const attribute = getTelemetryAttributes(telemetryContent, payLoad);\n\n return (\n \n \n {linkText}\n \n \n \n );\n};","import * as React from 'react';\ninterface ISeparator {\n separator: string;\n}\n\nexport const Separator: React.FC = ({ separator }) => ( {separator} );","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport { ICategoryUrl } from '@msdyn365-commerce/core-internal/dist/types/interfaces/ICategoryPathInterfaces';\nimport classnames from 'classnames';\nimport * as React from 'react';\nimport { IBreadcrumbData } from './breadcrumb.data';\nimport { IBreadcrumbProps, ILinksData } from './breadcrumb.props.autogenerated';\nimport { Link } from './components/link';\nimport { Separator } from './components/separator';\n\nexport interface IBreadcrumbViewProps extends IBreadcrumbProps {\n root?: React.ReactNode;\n links?: React.ReactNode[];\n backButton?: React.ReactNode;\n separator?: React.ReactNode;\n BreadcrumbContainer: IModuleProps;\n BreadcrumbList: INodeProps;\n BreadcrumbListItem: INodeProps;\n}\n\n/**\n *\n * Breadcrumb component\n * @extends {React.PureComponent>}\n */\nclass Breadcrumb extends React.PureComponent> {\n private _pageType: string | undefined = this.props.context.request.urlTokens.pageType;\n private telemetryContent: ITelemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry);\n public render(): JSX.Element | null {\n\n const { className } = this.props.config;\n let rootLink = null;\n let breadcrumbLinks = null;\n let backButtonComponent = null;\n rootLink = this._getRootLink();\n const itemPosition = rootLink ? 1 : 0;\n if (this._pageType === 'Category') {\n breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\n if (!breadcrumbLinks) {\n breadcrumbLinks = this._getCategoryHierarchy(itemPosition);\n }\n } else if (this._pageType === 'Product') {\n breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\n if (!breadcrumbLinks) {\n const breaCrumbType = this.props.context.app.config.breadcrumbType;\n if (breaCrumbType === 'category') {\n breadcrumbLinks = this._getPDPLinks(itemPosition);\n }\n if (breaCrumbType === 'categoryAndBack') {\n backButtonComponent = this._getPDPBackButton();\n breadcrumbLinks = this._getPDPLinks(itemPosition);\n }\n if (breaCrumbType === 'back') {\n backButtonComponent = this._getPDPBackButton();\n if(backButtonComponent === null) {\n breadcrumbLinks = this._getPDPLinks(itemPosition);\n }\n }\n }\n\n } else {\n breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\n }\n const linkSeparator = ;\n\n const breadcrumbViewProps = {\n ...this.props,\n BreadcrumbContainer: {\n moduleProps: this.props,\n className: classnames('ms-breadcrumb', className),\n tag: 'nav',\n role: 'navigation',\n },\n BreadcrumbList: {\n tag: 'ol' as NodeTag,\n className: 'ms-breadcrumb_list'\n },\n BreadcrumbListItem: {\n tag: 'li',\n className: 'ms-breadcrumb_item'\n },\n root: rootLink,\n links: breadcrumbLinks,\n backButton: backButtonComponent,\n separator: linkSeparator\n };\n return this.props.renderView(breadcrumbViewProps) as React.ReactElement;\n }\n private _getRootLink = (): JSX.Element | null => {\n const { root } = this.props.config;\n if (!root || !root.linkUrl || !root.linkUrl.destinationUrl) {\n this.props.context.telemetry.error('BreadCrumb link url content is empty, link wont render');\n return null;\n }\n return (\n );\n\n }\n\n private _getCustomBreadcrumbLinks = (itemPosition: number): JSX.Element[] | null => {\n const { links } = this.props.config;\n\n if (!links || !(links.length > 0)) {\n this.props.context.telemetry.error('BreadCrumb links content is empty, links wont render');\n return null;\n }\n return (\n links.map((value: ILinksData, index: number) => {\n itemPosition++;\n return (\n \n );\n }));\n }\n\n private _getCategoryHierarchy = (itemPosition: number): JSX.Element[] | null => {\n const { data } = this.props;\n const categoryHierarchy = data.categoryHierarchy.result;\n if (!categoryHierarchy) {\n this.props.context.telemetry.error('Category Hierarchy content is empty, module wont render');\n return null;\n }\n return (\n categoryHierarchy.map((value: CategoryHierarchy, index: number) => {\n itemPosition++;\n return (\n \n );\n }));\n\n }\n\n private _getPDPLinks = (itemPosition: number): JSX.Element[] | null => {\n const { data, config } = this.props;\n const categoryHierarchy = data.categoryPaths.result;\n const product = data.product.result;\n const url = this.props.context.request.url.requestUrl.href;\n if (!categoryHierarchy) {\n this.props.context.telemetry.error('Category path content is empty for the product');\n return null;\n }\n const links: JSX.Element[] = [];\n\n categoryHierarchy.map((value: ICategoryUrl, index: number) => {\n itemPosition++;\n links.push(\n \n );\n });\n if (product && !config.hideProductName) {\n itemPosition++;\n links.push(\n \n );\n }\n return links;\n\n }\n\n private _goBack = (): void => {\n window.history.back();\n }\n\n private _getPDPBackButton = (): JSX.Element | null => {\n const isBackAllowed = this.props.context && this.props.context.request && this.props.context.request.query && this.props.context.request.query.back;\n if (!isBackAllowed) {\n return null;\n }\n if (MsDyn365.isBrowser && (document.referrer === '' || window.history.length < 2)) {\n return null;\n }\n return (\n \n {this.props.resources.backToResultsText}\n \n );\n\n }\n}\n\nexport default Breadcrumb;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport { IAccordionItemViewProps } from './accordion-item';\n\nconst AccordionItemView: React.FC = props => {\n const { drawer, accordionSlots, AccordionItemContainer, AccordionItemContent } = props;\n return (\n \n \n \n {accordionSlots && accordionSlots.accordionItemContent && accordionSlots.accordionItemContent.length && (_renderAccordionItemContent(accordionSlots.accordionItemContent))}\n \n \n \n );\n };\n\nconst _renderAccordionItemContent = (items: React.ReactNode[]): JSX.Element | null => {\n return (\n <>\n {items && items.length ? (\n items.map((item: React.ReactNode, index: number) => {\n return (\n \n {item}\n \n );\n })\n ) : null}\n \n );\n};\nexport default AccordionItemView;","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { ControlledDrawer, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { IDrawerState } from '@msdyn365-commerce-modules/utilities/dist/types/drawer/Drawer';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { createAccordionStateInput } from '../../data-actions/accordion-state-data-action';\nimport { interactionStyle } from '../accordion/accordion.props.autogenerated';\nimport { IAccordionItemData } from './accordion-item.data';\nimport {IAccordionItemProps } from './accordion-item.props.autogenerated';\n\nexport interface IAccordionItemViewProps {\n AccordionItemContainer: IModuleProps;\n drawer: INodeProps;\n accordionSlots: INodeProps;\n AccordionItemContent: INodeProps;\n className: string;\n}\n\nexport interface IAccordionItemExtentedProps extends IAccordionItemProps {\n interactionStyle?: interactionStyle;\n}\n\n/**\n *\n * AccordionItem component\n * @extends {React.Component}\n */\n@observer\nclass AccordionItem extends React.Component {\n\n private moduleClassName: string = 'ms-accordion-item';\n private telemetryContent?: ITelemetryContent;\n\n constructor(props: IAccordionItemProps) {\n super(props);\n this._onToggle = this._onToggle.bind(this);\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n }\n\n public render(): JSX.Element {\n const {slots, renderView, config, data } = this.props;\n const accordionExpandedStateResult = data && data.accordionExpandedState && data.accordionExpandedState.result;\n const expanded = accordionExpandedStateResult && accordionExpandedStateResult.isAllExpanded === undefined ?\n data && config.isExpandedOnInitialLoad :\n (accordionExpandedStateResult && accordionExpandedStateResult.isAllExpanded);\n const viewProps = {\n ... this.props,\n AccordionItemContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n AccordionItemContent: {\n className: 'ms-accordion-item-content',\n },\n drawer:{\n tag: ControlledDrawer,\n className: `${this.moduleClassName}__drawer`,\n toggleButtonText: (config.accordionItemTitle && config.accordionItemTitle) || '',\n collapseProps: {isOpen: expanded},\n onToggle: this._onToggle,\n onTextChange: this.handleHeadingChange,\n requestContext: this.props.context.request,\n telemetryContent: this.telemetryContent\n },\n accordionSlots: slots,\n };\n return renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.accordionItemTitle = event.target.value;\n\n private _onToggle(state: IDrawerState): void {\n if(!state.isOpen && this.props.interactionStyle === interactionStyle.ExpandOneItemOnly) {\n const accordionState = { isAllExpanded: false };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n }\n }\n\n}\nexport default AccordionItem;","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\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 * 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';\nimport { IAccountCustomerBalanceTileViewProps } from './account-customer-balance-tile';\n\nconst AccountCustomerBalanceTileView: React.FC = props => {\n const { AccountCustomerBalanceTile, heading, content, links } = props;\n\n return (\n \n {heading}\n {content}\n {links}\n \n );\n};\n\nexport default AccountCustomerBalanceTileView;\n","export const apiToken: string = 'cd6dd0b2c43c360ae4d59b5147d52fd3';","import * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { apiToken } from './get-wine-api-token';\r\n\r\n/**\r\n * Class Definition for constructing the wine location query\r\n */\r\nexport class GetWineFilterable extends Msdyn365.CommerceEntityInput implements Msdyn365.IActionInput {\r\n\r\n public queryFilters: Filters;\r\n\r\n private readonly _token: string = apiToken;\r\n\r\n // TODO: Determine if the results of this get action should cache the results and if so provide\r\n // a cache object type and an appropriate cache key\r\n constructor(filters: Filters) {\r\n super({\r\n dataCacheType: 'request',\r\n cacheObjectType: 'IGetWineLocationData',\r\n cacheKey: JSON.stringify(filters)\r\n });\r\n this.queryFilters = filters;\r\n return this;\r\n }\r\n\r\n get token(): string {\r\n return this._token;\r\n }\r\n\r\n /**\r\n * generates an http styled query string to append to the end of a url\r\n *\r\n * @returns http query string\r\n */\r\n public filtersToHTTPQueryString(): string {\r\n let queryString = '';\r\n Object.keys(this.queryFilters).forEach(queryKey => {\r\n const queryValue = this.queryFilters[queryKey];\r\n queryString += `${queryKey}=${queryValue}&`;\r\n });\r\n queryString = queryString.substr(0, queryString.length - 1);\r\n return (queryString.length > 0) ? `?${queryString}` : '';\r\n }\r\n}","/**\r\n * Class definition for the output controller of the API. Acts as a middle layer\r\n * and ensures that the data stays consistent internally\r\n */\r\nexport class WineMapper {\r\n protected _input: Input;\r\n constructor(input: Input) {\r\n this._input = input;\r\n }\r\n\r\n protected _applyMap(\r\n inputData: data,\r\n inputMap: map\r\n ): T {\r\n const mappedOutput = {};\r\n Object.keys(inputMap).forEach(key => {\r\n mappedOutput[key] = inputData[inputMap[key]];\r\n });\r\n return mappedOutput;\r\n }\r\n}","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { GetWineFilterable } from './get-wine-filterable-class';\r\nimport { WineMapper } from './get-wine-mapper-class';\r\n\r\n/**\r\n * GetWineInternationalLocation Input Action\r\n */\r\n\r\nexport class GetWineInternationalLocationInput extends GetWineFilterable {\r\n\r\n private readonly _url: string = 'https://api.smwe.com';\r\n\r\n public get url(): string {\r\n const { brand_code, country } = this.queryFilters;\r\n\r\n const fullUrl = `${this._url}/v1/${brand_code}/distributors?country=${country}`;\r\n if (!brand_code) {\r\n console.error('Brand Code is not declared. This is required for the module to do calls');\r\n }\r\n return fullUrl;\r\n }\r\n}\r\n\r\n// =============================================================================\r\n// MAPPER\r\n// =============================================================================\r\n\r\nenum GetWineInternationalLocationMap {\r\n totalResults = 'total_results',\r\n totalPages = 'total_pages',\r\n page = 'page'\r\n}\r\n\r\nenum GetWineInternationalLocationDistributorMap {\r\n jdeDistributorNumber = 'jde_distributor_number',\r\n brandCode = 'brand_code',\r\n name = 'name',\r\n city = 'city',\r\n state = 'state',\r\n zip = 'zip',\r\n phone = 'phone',\r\n url = 'url'\r\n}\r\n\r\nenum GetWineInternationalLocationCountryMap {\r\n iso = 'iso',\r\n name = 'name',\r\n printableName = 'printable_name',\r\n iso3 = 'iso3',\r\n numCode = 'numcode'\r\n}\r\n\r\n/**\r\n * Class definition for the output controller of the API. Acts as a middle layer\r\n * and ensures that the data stays consistent internally\r\n */\r\nclass GetWineLocationInternationalMapper extends WineMapper {\r\n public get output(): IGetWineInternationalLocationOutput {\r\n const output: IGetWineInternationalLocationOutput = {\r\n data: [],\r\n totalPages: this._input[GetWineInternationalLocationMap.totalPages],\r\n totalResults: this._input[GetWineInternationalLocationMap.totalResults],\r\n page: this._input[GetWineInternationalLocationMap.page]\r\n };\r\n\r\n this._input.distributors.forEach(distributor => {\r\n const distributorOutput =\r\n this._applyMap(distributor, GetWineInternationalLocationDistributorMap);\r\n distributorOutput.country =\r\n this._applyMap(distributor.country, GetWineInternationalLocationCountryMap);\r\n output.data.push(distributorOutput);\r\n });\r\n return output;\r\n }\r\n}\r\n\r\n// =============================================================================\r\n// INTERFACES\r\n// =============================================================================\r\n\r\nexport interface IGetWineInternationalQueryFilters {\r\n brand_code?: string;\r\n country: string;\r\n pagination?: boolean;\r\n page?: number;\r\n per_page?: number;\r\n}\r\n\r\n// =============================================================================\r\n// OUTPUT INTERFACES\r\n// =============================================================================\r\n\r\nexport interface IGetWineInternationalLocationOutput {\r\n totalResults: number;\r\n totalPages: number;\r\n page: number;\r\n data: IGetWineInternationalDistributorOuput[];\r\n}\r\n\r\nexport interface IGetWineInternationalDistributorOuput {\r\n jdeDistributorNumber: number;\r\n brandCode: string;\r\n name: string;\r\n city: string;\r\n state: string;\r\n country: IGetWineInternationalDistributorCountryOutput;\r\n zip: string;\r\n phone: string;\r\n url: string;\r\n}\r\n\r\ninterface IGetWineInternationalDistributorCountryOutput {\r\n iso: string;\r\n name: string;\r\n printableName: string;\r\n iso3: string;\r\n numCode: number;\r\n}\r\n\r\n// =============================================================================\r\n// INPUT INTERFACES\r\n// =============================================================================\r\n\r\ninterface IGetWineInternationalLocationInput {\r\n total_results: number;\r\n total_pages: number;\r\n distributors: IGetWineInternationalDistributorInput[];\r\n}\r\n\r\ninterface IGetWineInternationalDistributorInput {\r\n jde_distributor_number: number;\r\n brand_code: string;\r\n name: string;\r\n city: string;\r\n state: string;\r\n country: IGetWineInternationalDistributorCountryInput;\r\n zip: string;\r\n phone: string;\r\n url: string;\r\n}\r\n\r\ninterface IGetWineInternationalDistributorCountryInput {\r\n iso: string;\r\n name: string;\r\n printable_name: string;\r\n iso3: string;\r\n numcode: number;\r\n}\r\n\r\n/**\r\n * TODO: Use this function to create the input required to make the API call\r\n */\r\nconst createWineInternationalLocationInput =\r\n (args: Msdyn365.ICreateActionContext): Msdyn365.IActionInput => {\r\n if (!args.config) {\r\n throw new Error(`[createWineInternationalLocationInput] configuration was invalid: ${args.config}`);\r\n }\r\n return new GetWineInternationalLocationInput(args.config);\r\n };\r\n\r\n/**\r\n * TODO: Use this function to call your API and process the results as needed\r\n */\r\nasync function action(input: GetWineInternationalLocationInput, ctx: Msdyn365.IActionContext): Promise {\r\n const apiSettings = Msdyn365.msdyn365Commerce.apiSettings;\r\n\r\n const response = await Msdyn365.sendRequest(input.url, 'get', apiSettings, {\r\n headers: {\r\n Authorization: `Token token=\"${input.token}\"`\r\n }\r\n });\r\n return new GetWineLocationInternationalMapper(response.data).output;\r\n}\r\n\r\nexport default Msdyn365.createDataAction({\r\n action: >action,\r\n input: createWineInternationalLocationInput\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { GetWineFilterable } from './get-wine-filterable-class';\r\nimport { WineMapper } from './get-wine-mapper-class';\r\n\r\n// =============================================================================\r\n// API CONSTRUCTION\r\n// =============================================================================\r\n/**\r\n * Class Definition for constructing the wine location query\r\n */\r\nexport class GetWineLocationInput extends GetWineFilterable {\r\n\r\n private readonly _url: string = 'https://api.smwe.com/v1/XXX/retailers';\r\n\r\n get url(): string {\r\n return this._url;\r\n }\r\n}\r\n\r\n// =============================================================================\r\n// API MAPPER\r\n// =============================================================================\r\n\r\nenum GetWineLocationMap {\r\n totalResults = 'total_results',\r\n totalPages = 'total_pages',\r\n page = 'page'\r\n}\r\n\r\nenum GetWineLocationRetailerMap {\r\n code = 'code',\r\n name = 'name',\r\n address = 'address',\r\n city = 'city',\r\n state = 'state',\r\n zip = 'zip',\r\n lon = 'lon',\r\n lat = 'lat',\r\n onPremise = 'on_premise',\r\n distance = 'distance'\r\n}\r\n\r\nenum GetWineLocationProductMap {\r\n productKey = 'product_key',\r\n brandCode = 'brand_code',\r\n productCode = 'product_code',\r\n description = 'description',\r\n}\r\n\r\n/**\r\n * Class definition for the output controller of the API. Acts as a middle layer\r\n * and ensures that the data stays consistent internally\r\n */\r\nclass GetWineLocationMapper extends WineMapper {\r\n public get output(): IGetWineLocationDataOutput {\r\n const output: IGetWineLocationDataOutput = {\r\n data: [],\r\n totalPages: this._input[GetWineLocationMap.totalPages],\r\n totalResults: this._input[GetWineLocationMap.totalResults],\r\n page: this._input[GetWineLocationMap.page]\r\n };\r\n\r\n this._input.retailers.forEach(retailer => {\r\n const retailerProducts: IGetWineLocationProductOutput[] = [];\r\n const mappedRetailer =\r\n this._applyMap(retailer, GetWineLocationRetailerMap);\r\n mappedRetailer.products = retailerProducts;\r\n output.data.push(mappedRetailer);\r\n\r\n retailer.products.forEach(product => {\r\n retailerProducts.push(\r\n this._applyMap(product, GetWineLocationProductMap)\r\n );\r\n });\r\n });\r\n\r\n return output;\r\n }\r\n}\r\n\r\n// =============================================================================\r\n// WINE LOCATION INTERFACE OUTPUT\r\n// =============================================================================\r\n\r\nexport interface IGetWineLocationDataOutput {\r\n 'totalResults': number;\r\n 'totalPages': number;\r\n 'page': number;\r\n 'data': IGetWineLocationRetailerOutput[];\r\n}\r\n\r\nexport interface IGetWineLocationRetailerOutput {\r\n 'code': number;\r\n 'name': string;\r\n 'address': string;\r\n 'city': string;\r\n 'state': string;\r\n 'zip': string;\r\n 'lon': number;\r\n 'lat': number;\r\n 'onPremise': boolean;\r\n 'distance': number;\r\n 'products': IGetWineLocationProductOutput[];\r\n}\r\n\r\nexport interface IGetWineLocationProductOutput {\r\n 'productKey': string;\r\n 'brandCode': string;\r\n 'productCode': string;\r\n 'description': string;\r\n}\r\n\r\n// =============================================================================\r\n// WINE LOCATION INTERFACE INPUT\r\n// =============================================================================\r\n\r\ninterface IGetWineLocationDataInput {\r\n 'total_results': number;\r\n 'total_pages': number;\r\n 'page': number;\r\n 'retailers': IGetWineLocationRetailerInput[];\r\n}\r\n\r\ninterface IGetWineLocationRetailerInput {\r\n 'code': number;\r\n 'name': string;\r\n 'address': string;\r\n 'city': string;\r\n 'state': string;\r\n 'zip': string;\r\n 'lon': number;\r\n 'lat': number;\r\n 'on_premise': boolean;\r\n 'distance': number;\r\n 'products': IGetWineLocationProductInput[];\r\n}\r\n\r\ninterface IGetWineLocationProductInput {\r\n 'product_key': string;\r\n 'brand_code': string;\r\n 'product_code': string;\r\n 'description': string;\r\n}\r\n\r\n/**\r\n * query filter definition\r\n */\r\nexport interface IGetWineLocationQueryFilters {\r\n product?: string;\r\n brand?: string;\r\n radius?: number;\r\n pagination?: boolean;\r\n page?: number;\r\n per_page?: number;\r\n on_premise?: boolean;\r\n location: string;\r\n}\r\n\r\n// =============================================================================\r\n// CREATE INPUT\r\n// =============================================================================\r\n/**\r\n * constructs a wine location query and returns it to the action\r\n */\r\nconst createWineLocationInput = (args: Msdyn365.ICreateActionContext): Msdyn365.IActionInput => {\r\n if (!args.config) { throw new Error(`[createWineLocationInput] configuration was invalid: ${args.config}`); }\r\n return new GetWineLocationInput(args.config);\r\n};\r\n\r\n// =============================================================================\r\n// RUN INPUT / ACTION\r\n// =============================================================================\r\n/**\r\n * api runner\r\n * @returns the location data\r\n */\r\nasync function getWineLocationAction(input: GetWineLocationInput, ctx: Msdyn365.IActionContext): Promise {\r\n const apiSettings = Msdyn365.msdyn365Commerce.apiSettings;\r\n\r\n // query request and return response full of locations to purchase wine\r\n const response = await Msdyn365.sendRequest(`${input.url}${input.filtersToHTTPQueryString()}`, 'get', apiSettings, {\r\n headers: {\r\n Authorization: `Token token=\"${input.token}\"`\r\n }\r\n });\r\n return new GetWineLocationMapper(response.data).output;\r\n}\r\n\r\nexport default Msdyn365.createDataAction({\r\n action: >getWineLocationAction,\r\n input: createWineLocationInput\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { GetWineFilterable } from './get-wine-filterable-class';\r\n\r\n/**\r\n * query filter definition\r\n */\r\nexport interface IGetWineProductQueryFilters {\r\n brand?: string;\r\n}\r\n\r\n/**\r\n * GetWineProducts Input Action\r\n */\r\n\r\nexport class GetWineProductsInput extends GetWineFilterable {\r\n\r\n private readonly _url: string = 'https://api.smwe.com';\r\n\r\n public get url(): string {\r\n const { brand } = this.queryFilters;\r\n\r\n const fullUrl = `${this._url}/v1/${brand}/products`;\r\n if (!brand) {\r\n console.error('Brand Code is not declared. This is required for the module to do calls');\r\n }\r\n return fullUrl;\r\n }\r\n}\r\n\r\nexport interface IGetWineProductsData {\r\n product_key: string;\r\n brand_code: string;\r\n product_code: string;\r\n description: string;\r\n}\r\n\r\nexport interface IGetWineCountriesDataOutput {\r\n iso: string;\r\n iso3: string;\r\n name: string;\r\n printableName: string;\r\n numCode: number;\r\n}\r\n\r\nconst createInput = (args: Msdyn365.ICreateActionContext): Msdyn365.IActionInput => {\r\n if (!args.config) { throw new Error(`[createWineProductsInput] configuration was invalid: ${args.config}`); }\r\n return new GetWineProductsInput(args.config);\r\n};\r\n\r\n/**\r\n * action that retrieves the list of wine products\r\n */\r\nasync function action(input: GetWineProductsInput, ctx: Msdyn365.IActionContext): Promise {\r\n const apiSettings = Msdyn365.msdyn365Commerce.apiSettings;\r\n\r\n const response = await Msdyn365.sendRequest(input.url, 'get', apiSettings, {\r\n headers: {\r\n Authorization: `Token token=\"${input.token}\"`\r\n }\r\n });\r\n return response.data;\r\n}\r\n\r\nexport default Msdyn365.createDataAction({\r\n action: >action,\r\n input: createInput\r\n});\r\n","import { observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nexport type FindWineDropdownItem = { label: string | number; value: string | number };\r\n\r\ninterface IFindWineDropdownMenuProps {\r\n itemList: FindWineDropdownItem[];\r\n defaultValue?: string;\r\n id?: string;\r\n onChange(newItem: FindWineDropdownItem | undefined): unknown;\r\n}\r\n\r\n/**\r\n * class definition for creating a dropdown menu for the wine page\r\n */\r\n@observer\r\nexport class FindWineDropdownMenu extends React.Component {\r\n\r\n /**\r\n * field representation on the current value of what is selected\r\n */\r\n @observable private _value: string = this.props.defaultValue || '';\r\n public constructor(props: IFindWineDropdownMenuProps) {\r\n super(props);\r\n\r\n this._handleOnChange = this._handleOnChange.bind(this);\r\n }\r\n\r\n public render(): JSX.Element {\r\n let items = this._constructItems();\r\n if (!this._value) {\r\n items = [\r\n (\r\n \r\n {'Select Country'}\r\n \r\n )\r\n , ...items];\r\n }\r\n return (\r\n \r\n );\r\n }\r\n\r\n /**\r\n * handles for changing selection\r\n *\r\n * @param event change event\r\n */\r\n private _handleOnChange(event: React.ChangeEvent): void {\r\n const newItem = this.props.itemList.find(item => event.target.value === item.value.toString());\r\n this._value = event.target.value;\r\n this.props.onChange(newItem);\r\n }\r\n\r\n /**\r\n * constructs a list of JSX elements representing options for a select tag\r\n */\r\n private _constructItems(): JSX.Element[] {\r\n return this.props.itemList.map(\r\n (item, index) => {\r\n const isAriaSelected = item.value === this._value;\r\n return (\r\n \r\n {item.label}\r\n \r\n );\r\n }\r\n );\r\n }\r\n}","import { observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { IGetWineLocationQueryFilters } from './actions/get-wine-location';\r\nimport { IGetWineProductsData } from './actions/get-wine-products';\r\nimport { FindWineDropdownItem, FindWineDropdownMenu } from './wine-finder-dropdown-menu';\r\nimport { IPlaceholdersData, IWineFinderFormConfig, IWineFinderFormResources } from './wine-finder-form.props.autogenerated';\r\n\r\ninterface IWineFinderQueryLocationProps {\r\n defaultRadius: number;\r\n resources: IWineFinderFormResources;\r\n displayFilters: boolean;\r\n placeholders?: IPlaceholdersData;\r\n config: IWineFinderFormConfig;\r\n products: IGetWineProductsData[] | undefined;\r\n active?: boolean;\r\n onQuerySearch(filters: IGetWineLocationQueryFilters): unknown;\r\n}\r\n\r\n/**\r\n * Class definition responsible for generating valid queries for getting wine\r\n */\r\n@observer\r\nclass WineFinderQueryLocation extends React.Component {\r\n\r\n // =========================================================================\r\n // OBSERVABLES AND FIELDS\r\n // =========================================================================\r\n\r\n /**\r\n * field representing the location being typed in by the user\r\n */\r\n @observable private _queryLocation: string = '';\r\n\r\n /**\r\n * field represneting the radius or furthest distance from the location\r\n * typed in by the user\r\n */\r\n @observable private _queryRadius: number = 5;\r\n\r\n @observable private _allowRetail: boolean = false;\r\n @observable private _allowRestaurant: boolean = false;\r\n\r\n /**\r\n * keeps the selected product in the wine product dropdownlist\r\n */\r\n @observable private _product: string = '';\r\n\r\n /**\r\n * list of choosable radii to select in dropdown menu\r\n */\r\n private _queryRadii: number[] = [5, 10, 20, 50];\r\n\r\n // =========================================================================\r\n // PUBLIC METHODS\r\n // =========================================================================\r\n\r\n public constructor(props: IWineFinderQueryLocationProps) {\r\n super(props);\r\n this._handleQueryLocationChange = this._handleQueryLocationChange.bind(this);\r\n this._handleSearchRadiusChange = this._handleSearchRadiusChange.bind(this);\r\n this._toggleRetail = this._toggleRetail.bind(this);\r\n this._toggleRestaurant = this._toggleRestaurant.bind(this);\r\n this._doQuery = this._doQuery.bind(this);\r\n this._handleOnChange = this._handleOnChange.bind(this);\r\n\r\n this._allowRetail = !!props.config.defaultFilters?.retail;\r\n this._allowRestaurant = !!props.config.defaultFilters?.restaurant;\r\n }\r\n\r\n public render(): JSX.Element {\r\n const itemList = this._queryRadii.map(radii => { return { label: radii, value: radii }; });\r\n const allowRadiiDisplay = this.props.defaultRadius === 0;\r\n const {\r\n resources: {\r\n wineFinder__domesticTitle,\r\n wineFinder__domesticSearchRadiusLabel,\r\n wineFinder__retailFilterText,\r\n wineFinder__restaurantFilterText\r\n }\r\n } = this.props;\r\n const { domesticSearch, enablePlaceholders } = this.props.placeholders || {};\r\n const isActive = this.props.active || false;\r\n\r\n const cssClass = isActive?'find-wine-query active':'find-wine-query';\r\n\r\n const onFormSubmit=(e: { preventDefault: any; })=>{\r\n e.preventDefault();\r\n this._doQuery();\r\n };\r\n\r\n return (\r\n
\r\n
\r\n
\r\n {wineFinder__domesticTitle &&

{wineFinder__domesticTitle}

}\r\n \r\n {enablePlaceholders ? domesticSearch : ''}\r\n \r\n \r\n {allowRadiiDisplay &&\r\n
\r\n \r\n {wineFinder__domesticSearchRadiusLabel}\r\n\r\n \r\n \r\n
\r\n }\r\n {this.props.config.showChooseWineInput && this._renderProductsDropdownList()}\r\n {\r\n (this.props.displayFilters && this._hasFilterActive) &&\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n }\r\n \r\n
\r\n {(this._isInvalid() && this._queryLocation.length >= 5) &&
{'Zip Code is invalid'}
}\r\n
\r\n
\r\n );\r\n }\r\n\r\n // =========================================================================\r\n // PRIVATE METHODS\r\n // =========================================================================\r\n\r\n /**\r\n * process to send the query with appropriate fields to the parent component\r\n */\r\n private _doQuery(): undefined {\r\n let queryRadius = this.props.defaultRadius;\r\n if (queryRadius === 0) {\r\n queryRadius = this._queryRadius;\r\n }\r\n\r\n const filters: IGetWineLocationQueryFilters = {\r\n location: this._queryLocation,\r\n radius: queryRadius,\r\n on_premise: this._allowRestaurant\r\n };\r\n\r\n // if both are checked or both are unchecked search for everything\r\n if (this._allowRestaurant === this._allowRetail) {\r\n delete filters.on_premise;\r\n }\r\n\r\n if (!this._hasFilterActive) {\r\n const { filterState } = this.props.config;\r\n\r\n // idea here is essentially the author has forced the premise type boolean\r\n // through the configuration state by disabling all adjustable filters. thats\r\n // why logic looks small\r\n filters.on_premise = !!filterState?.restaurantActive;\r\n\r\n // just to make sure that it returns everything if both are unchecked\r\n if (!filterState?.restaurantActive && !filterState?.retailActive) {\r\n delete filters.on_premise;\r\n }\r\n }\r\n\r\n if (this.props.config.showChooseWineInput && this._product) {\r\n filters.product = this._product;\r\n }\r\n\r\n this.props.onQuerySearch(filters);\r\n return undefined;\r\n }\r\n\r\n private get _hasFilterActive(): boolean {\r\n const { filterState } = this.props.config;\r\n return !!(filterState?.restaurantActive && filterState?.retailActive);\r\n }\r\n\r\n /**\r\n * handles changes for the radius\r\n */\r\n private _handleSearchRadiusChange(item: FindWineDropdownItem | undefined): void {\r\n if (item) {\r\n this._queryRadius = Number(item.value);\r\n }\r\n }\r\n\r\n private _toggleRetail(): void {\r\n this._allowRetail = !this._allowRetail;\r\n }\r\n\r\n private _toggleRestaurant(): void {\r\n this._allowRestaurant = !this._allowRestaurant;\r\n }\r\n\r\n /**\r\n * handles changes for the location entered\r\n */\r\n private _handleQueryLocationChange(event: React.ChangeEvent): void {\r\n this._queryLocation = event.target.value;\r\n return undefined;\r\n }\r\n\r\n private _isInvalid(): boolean {\r\n const regex = /^\\d{5}$/;\r\n return (!regex.test(this._queryLocation));\r\n }\r\n\r\n /**\r\n * Display a Wine products dropdownlist\r\n */\r\n private _renderProductsDropdownList(): JSX.Element {\r\n return(\r\n
\r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n /**\r\n * handles for changing selection on the wine products dropdownlist\r\n *\r\n * @param event change event\r\n */\r\n private _handleOnChange(event: React.ChangeEvent): void {\r\n this._product = event.target.value;\r\n }\r\n\r\n // Render dropdown options from array.\r\n private _renderProductOptions(): JSX.Element[] {\r\n const options: IGetWineProductsData[] | undefined = this.props.products ? this.props.products : [];\r\n return options.map((option, index) => {\r\n return (\r\n \r\n {option.description}\r\n \r\n );\r\n });\r\n }\r\n}\r\n\r\nexport default WineFinderQueryLocation;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { apiToken } from './get-wine-api-token';\r\nimport { WineMapper } from './get-wine-mapper-class';\r\n\r\n/**\r\n * GetWineCountries Input Action\r\n */\r\n\r\nexport class GetWineCountriesInput extends Msdyn365.CommerceEntityInput implements Msdyn365.IActionInput {\r\n\r\n private readonly _url: string = 'https://api.smwe.com/v1/SLR/countries';\r\n\r\n private readonly _token: string = apiToken;\r\n\r\n constructor() {\r\n super({ shouldCacheOutput: true, cacheObjectType: 'IGetWineCountriesData', cacheKey: 'SINGLE' });\r\n }\r\n\r\n public get url(): string { return this._url; }\r\n public get token(): string { return this._token; }\r\n}\r\n\r\nenum IGetWineCountriesMap {\r\n iso = 'iso',\r\n iso3 = 'iso3',\r\n name = 'name',\r\n printableName = 'printable_name',\r\n numCode = 'numcode'\r\n}\r\n\r\n/**\r\n * class definition for the output controller of the API\r\n */\r\nclass GetWineCountriesMapper extends WineMapper {\r\n public get output(): IGetWineCountriesDataOutput[] {\r\n return this._input.map(country => {\r\n return this._applyMap<\r\n IGetWineCountriesDataOutput,\r\n IGetWineCountriesData,\r\n typeof IGetWineCountriesMap\r\n >(country, IGetWineCountriesMap);\r\n });\r\n }\r\n}\r\n\r\nexport interface IGetWineCountriesData {\r\n iso: string;\r\n iso3: string;\r\n name: string;\r\n printable_name: string;\r\n numcode: number;\r\n}\r\n\r\nexport interface IGetWineCountriesDataOutput {\r\n iso: string;\r\n iso3: string;\r\n name: string;\r\n printableName: string;\r\n numCode: number;\r\n}\r\n\r\nconst createInput = (args: Msdyn365.ICreateActionContext): Msdyn365.IActionInput => {\r\n return new GetWineCountriesInput();\r\n};\r\n\r\n/**\r\n * action that retrieves the list of countries\r\n */\r\nasync function action(input: GetWineCountriesInput, ctx: Msdyn365.IActionContext): Promise {\r\n const apiSettings = Msdyn365.msdyn365Commerce.apiSettings;\r\n\r\n const response = await Msdyn365.sendRequest(input.url, 'get', apiSettings, {\r\n headers: {\r\n Authorization: `Token token=\"${input.token}\"`\r\n }\r\n });\r\n return new GetWineCountriesMapper(response.data).output;\r\n}\r\n\r\nexport default Msdyn365.createDataAction({\r\n action: >action,\r\n input: createInput\r\n});\r\n","import { IActionContext } from '@msdyn365-commerce/core';\r\nimport { observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport WineCountries, { GetWineCountriesInput, IGetWineCountriesDataOutput } from './actions/get-wine-countries';\r\nimport { IGetWineInternationalQueryFilters } from './actions/get-wine-international-location';\r\nimport { FindWineDropdownItem, FindWineDropdownMenu } from './wine-finder-dropdown-menu';\r\nimport { IWineFinderFormResources } from './wine-finder-form.props.autogenerated';\r\n\r\ninterface IWineFinderQueryLocationInternational {\r\n actionContext: IActionContext;\r\n resources: IWineFinderFormResources;\r\n submitText: string | undefined;\r\n active?: boolean;\r\n onQuerySearch(filters: IGetWineInternationalQueryFilters): unknown;\r\n}\r\n/**\r\n * class definition for the component responsible for querying internationally\r\n */\r\n@observer\r\nclass WineFinderQueryLocationInternational extends React.Component {\r\n\r\n /**\r\n * field representing the country key currently selected by the selector\r\n */\r\n @observable private _selectedCountry: string | undefined;\r\n\r\n @observable private _countries: IGetWineCountriesDataOutput[] = [];\r\n\r\n constructor(props: IWineFinderQueryLocationInternational) {\r\n super(props);\r\n\r\n this._handleCountrySelectionChange = this._handleCountrySelectionChange.bind(this);\r\n this._doQuery = this._doQuery.bind(this);\r\n\r\n }\r\n\r\n public componentDidMount(): void {\r\n this._queryCountries().catch(err => console.warn(err));\r\n }\r\n\r\n public render(): JSX.Element {\r\n const itemList = this._countries.map(country => {\r\n return {\r\n label: country.name,\r\n value: country.iso\r\n } as FindWineDropdownItem;\r\n });\r\n\r\n const {\r\n wineFinder__internationalTitle,\r\n wineFinder__internationalCountryLabel\r\n } = this.props.resources;\r\n const isActive = this.props.active || false;\r\n\r\n const cssClass = isActive?'find-wine-query-int active':'find-wine-query-int';\r\n\r\n return (\r\n
\r\n

{wineFinder__internationalTitle}

\r\n \r\n {wineFinder__internationalCountryLabel}\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n /**\r\n * triggers the api call for country\r\n */\r\n private _doQuery(): void {\r\n if (!this._isInvalid) {\r\n this.props.onQuerySearch({\r\n country: this._selectedCountry as string\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * sets the selected country to a new country code\r\n *\r\n * @param newCountry new country to switch to\r\n */\r\n private _handleCountrySelectionChange(newCountry: FindWineDropdownItem | undefined): void {\r\n if (newCountry) {\r\n this._selectedCountry = newCountry.value as string;\r\n }\r\n }\r\n\r\n private get _isInvalid(): boolean {\r\n return !this._selectedCountry;\r\n }\r\n\r\n private async _queryCountries(): Promise {\r\n const input = new GetWineCountriesInput();\r\n const countries = await WineCountries(input, this.props.actionContext);\r\n this._countries = countries;\r\n }\r\n}\r\n\r\nexport default WineFinderQueryLocationInternational;","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * IWineFinderForm contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum resultsDisplay {\r\n paginate = 'paginate',\r\n append = 'append'\r\n}\r\n\r\nexport const enum showProductsConfiguration {\r\n showButton = 'showButton',\r\n hideProductsHideButton = 'hideProductsHideButton',\r\n showProductsHideButton = 'showProductsHideButton'\r\n}\r\n\r\nexport interface IWineFinderFormConfig extends Msdyn365.IModuleConfig {\r\n perPage?: number;\r\n resultsDisplay?: resultsDisplay;\r\n singlePage?: boolean;\r\n brand?: string;\r\n title?: ITitleData;\r\n searchText?: Msdyn365.RichText;\r\n hideInternational?: boolean;\r\n searchRadius: number;\r\n showFilterButtons: boolean;\r\n showProductsConfiguration?: showProductsConfiguration;\r\n showChooseWineInput?: boolean;\r\n showAllProductsToggle?: boolean;\r\n showAllProductsLabel?: IShowAllProductsLabelData;\r\n showProductsLabel?: IShowProductsLabelData;\r\n placeholders?: IPlaceholdersData;\r\n defaultFilters?: IDefaultFiltersData;\r\n filterState?: IFilterStateData;\r\n wineFinderSubmit?: string;\r\n mapText?: string;\r\n hideNumbers?: boolean;\r\n USLabelText?: string;\r\n internationalLabelText?: string;\r\n}\r\n\r\nexport interface IWineFinderFormResources {\r\n wineFinder__internationalTitle: string;\r\n wineFinder__internationalCountryLabel: string;\r\n wineFinder__domesticTitle: string;\r\n wineFinder__domesticSearchRadiusLabel: string;\r\n wineFinder__backToFind: string;\r\n wineFinder__noResults: string;\r\n wineFinder__searchAgain: string;\r\n wineFinder__showMoreButton: string;\r\n wineFinder__showProducts: string;\r\n wineFinder__hideProducts: string;\r\n wineFinder__internationalWebsiteLabel: string;\r\n wineFinder__retailFilterText: string;\r\n wineFinder__restaurantFilterText: string;\r\n}\r\n\r\nexport const enum TitleTag {\r\n h1 = 'h1',\r\n h2 = 'h2',\r\n h3 = 'h3',\r\n h4 = 'h4',\r\n h5 = 'h5',\r\n h6 = 'h6'\r\n}\r\n\r\nexport interface ITitleData {\r\n text: string;\r\n tag?: TitleTag;\r\n}\r\n\r\nexport interface IShowAllProductsLabelData {\r\n hideAllProducts?: string;\r\n showAllProducts?: string;\r\n}\r\n\r\nexport interface IShowProductsLabelData {\r\n hideProducts?: string;\r\n showProducts?: string;\r\n}\r\n\r\nexport interface IPlaceholdersData {\r\n enablePlaceholders?: boolean;\r\n domesticSearch?: string;\r\n}\r\n\r\nexport interface IDefaultFiltersData {\r\n retail?: boolean;\r\n restaurant?: boolean;\r\n}\r\n\r\nexport interface IFilterStateData {\r\n retailActive?: boolean;\r\n restaurantActive?: boolean;\r\n}\r\n\r\nexport interface IWineFinderFormProps extends Msdyn365.IModule {\r\n resources: IWineFinderFormResources;\r\n config: IWineFinderFormConfig;\r\n}\r\n","import { observable, reaction, toJS } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { IExpandedState } from './wine-finder-form';\r\nimport { IWineFinderFormConfig, IWineFinderFormResources, showProductsConfiguration } from './wine-finder-form.props.autogenerated';\r\n\r\ninterface IWineFinderWineDisplayProps {\r\n wines?: string[];\r\n resources: IWineFinderFormResources;\r\n config: IWineFinderFormConfig;\r\n allOpen: boolean;\r\n}\r\n\r\n/**\r\n * displays a list of wines\r\n */\r\n@observer\r\nclass WineFinderWineDisplay extends React.Component {\r\n @observable private _isOpen: boolean = false;\r\n\r\n private _wines?: string[];\r\n\r\n constructor(props: IWineFinderWineDisplayProps) {\r\n super(props);\r\n this._wines = props.wines;\r\n reaction(\r\n () => this.props.allOpen,\r\n (open) => {\r\n this._isOpen = open;\r\n }\r\n );\r\n\r\n this.state={\r\n expandedState:false\r\n };\r\n\r\n this._closeToggle = this._closeToggle.bind(this);\r\n }\r\n\r\n public render(): JSX.Element {\r\n const {\r\n hideProducts,\r\n showProducts\r\n } = this.props.config.showProductsLabel || {hideProducts:'Hide Products', showProducts:'Show Products'};\r\n return (\r\n
\r\n {\r\n this._showButton && \r\n {(this._isOpen) ? hideProducts : showProducts}\r\n \r\n }\r\n {this._renderWineList()}\r\n
\r\n );\r\n }\r\n\r\n private get _showButton(): boolean {\r\n return this.props.config.showProductsConfiguration === showProductsConfiguration.showButton;\r\n }\r\n\r\n private get _showProducts(): boolean {\r\n return this.props.config.showProductsConfiguration === showProductsConfiguration.showProductsHideButton;\r\n }\r\n\r\n private _closeToggle(): void {\r\n this._isOpen = !this._isOpen;\r\n this.setState({\r\n expandedState: !this.state.expandedState\r\n });\r\n }\r\n\r\n private _renderWineList(): JSX.Element | undefined {\r\n\r\n const list: string[] = toJS(this._wines) as string[];\r\n list.sort();\r\n\r\n const wineList = (\r\n
    \r\n {list.map((wine, index) => (
  • {wine}
  • ))}\r\n
\r\n );\r\n\r\n if (this._showProducts && this._wines) { return wineList; }\r\n\r\n if (!this._isOpen || !this._wines) {\r\n return;\r\n }\r\n\r\n return wineList;\r\n }\r\n}\r\n\r\nexport default WineFinderWineDisplay;\r\n","import * as React from 'react';\r\nimport { IWineFinderFormConfig, IWineFinderFormResources } from './wine-finder-form.props.autogenerated';\r\nimport WineFinderWineDisplay from './wine-finder-wine-display';\r\n\r\ninterface IFindWineItemProps {\r\n distance?: number;\r\n website?: string;\r\n phoneNumber?: string;\r\n location: string;\r\n name: string;\r\n numberInList?: number;\r\n type: 'international' | 'US';\r\n mapData?: {\r\n address: string;\r\n zip: string;\r\n };\r\n wines?: string[];\r\n config: IWineFinderFormConfig;\r\n resources: IWineFinderFormResources;\r\n allOpen: boolean;\r\n hideNumbers?: boolean;\r\n}\r\n\r\n/**\r\n * creates tsx for a single retailer, READ ONLY\r\n *\r\n * @param props data on retailers\r\n */\r\nexport const FindWineItem = (props: IFindWineItemProps): JSX.Element => {\r\n const hideNumbers = props.hideNumbers || false;\r\n if (props.type === 'US') {\r\n return (\r\n
\r\n

\r\n {!hideNumbers && `${props.numberInList}.`} {props.name}\r\n

\r\n
\r\n
{props.location}
\r\n
\r\n
{props.distance} miles
\r\n {props.config.mapText || 'Show Map'}\r\n \r\n
\r\n
\r\n \r\n
\r\n );\r\n } else {\r\n return (\r\n
\r\n

{!hideNumbers && `${props.numberInList}.`} {props.name}

\r\n
\r\n
{props.location}
\r\n
{props.phoneNumber}
\r\n {\r\n // hack for getting the '↵' symbol when no website is here\r\n (props.website && props.website.length > 2) ? (\r\n \r\n {props.resources.wineFinder__internationalWebsiteLabel}\r\n \r\n ) : (
)\r\n }\r\n
\r\n
\r\n );\r\n }\r\n};","import React from 'react';\r\nimport {\r\n IGetWineInternationalDistributorOuput,\r\n IGetWineInternationalLocationOutput,\r\n IGetWineInternationalQueryFilters\r\n} from './actions/get-wine-international-location';\r\nimport {\r\n IGetWineLocationDataOutput,\r\n IGetWineLocationProductOutput,\r\n IGetWineLocationQueryFilters,\r\n IGetWineLocationRetailerOutput\r\n} from './actions/get-wine-location';\r\nimport { FindWineItem } from './wine-finder-display-item';\r\nimport { IWineFinderFormConfig, IWineFinderFormResources } from './wine-finder-form.props.autogenerated';\r\n\r\ntype wineResultContent = (IGetWineLocationRetailerOutput | IGetWineInternationalDistributorOuput)[];\r\n\r\ninterface IWineFinderScrollableProps {\r\n showMoreText: string;\r\n resultType: 'retailer' | 'distributor';\r\n queryFilters: IGetWineLocationQueryFilters | IGetWineInternationalQueryFilters;\r\n wineLocationData: IGetWineLocationDataOutput | IGetWineInternationalLocationOutput;\r\n wineResults: wineResultContent;\r\n config: IWineFinderFormConfig;\r\n resources: IWineFinderFormResources;\r\n allOpen: boolean;\r\n hideNumbers?: boolean;\r\n onGetMoreContent(filters: IGetWineLocationQueryFilters | IGetWineInternationalQueryFilters): Promise;\r\n}\r\n\r\n/**\r\n * uses a \"show more\" feature to add to the current wine results instead of\r\n * pagination\r\n */\r\nexport class WineFinderScrollable extends React.Component {\r\n\r\n constructor(props: IWineFinderScrollableProps) {\r\n super(props);\r\n\r\n this._onAddMore = this._onAddMore.bind(this);\r\n }\r\n\r\n public render(): JSX.Element {\r\n const pageCount = this.props.wineLocationData.totalPages;\r\n const page = this.props.queryFilters.page || 1;\r\n return (\r\n
\r\n
\r\n {this._renderWineResults()}\r\n
\r\n {\r\n page < pageCount &&\r\n \r\n {this.props.showMoreText}\r\n \r\n }\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * renders a list of wine locations\r\n *\r\n * @returns array of JSX Elements to render\r\n */\r\n private _renderWineResults(): JSX.Element[] {\r\n const hideNumbers = this.props.hideNumbers || false;\r\n\r\n if (!this.props.wineResults.length) {\r\n return [(
{this.props.resources.wineFinder__noResults}
)];\r\n }\r\n\r\n if (this.props.resultType === 'retailer') {\r\n return (this.props.wineResults as IGetWineLocationRetailerOutput[]).\r\n map((retailer, key) =>\r\n (\r\n \r\n )\r\n );\r\n } else {\r\n // mapping function that returns an array of jsx retailers\r\n return (this.props.wineResults as IGetWineInternationalDistributorOuput[])\r\n .map((distributor) =>\r\n (\r\n \r\n )\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * returns the name of products, if it exists\r\n *\r\n * @param productArray array of wines\r\n */\r\n private _getProducts(productArray: IGetWineLocationProductOutput[]): string[] {\r\n return productArray.map(product => product.description);\r\n }\r\n\r\n private async _onAddMore(): Promise {\r\n await this.props.onGetMoreContent(this.props.queryFilters);\r\n }\r\n}","import * as React from 'react';\r\n\r\ninterface IWineFinderPagerProps {\r\n totalPages: number;\r\n currentPage: number;\r\n onPageChange(pageChange: number): undefined;\r\n}\r\n\r\n/**\r\n * Component responsible for rendering the pagination aspect of the get wine\r\n * page\r\n */\r\nclass WineFinderPager extends React.Component {\r\n\r\n // =========================================================================\r\n // PUBLIC METHODS\r\n // =========================================================================\r\n\r\n public render(): JSX.Element {\r\n\r\n const goAsMin = () => {\r\n this._goToMinMaxPage('min');\r\n };\r\n\r\n const goAsMax = () => {\r\n this._goToMinMaxPage('max');\r\n };\r\n\r\n return (\r\n
\r\n {/* tslint:disable-next-line: react-this-binding-issue */}\r\n \r\n {this._renderPages()}\r\n {/* tslint:disable-next-line: react-this-binding-issue */}\r\n \r\n
\r\n );\r\n }\r\n\r\n // =========================================================================\r\n // PRIVATE METHODS\r\n // =========================================================================\r\n\r\n private get _isFirstPagination(): boolean {\r\n return this.range.lower === 0;\r\n }\r\n\r\n private get _isLastPagination(): boolean {\r\n return this.range.higher === this.props.totalPages;\r\n }\r\n /**\r\n * jump to the lowest or highest page\r\n */\r\n private _goToMinMaxPage(minOrMax: 'min' | 'max'): void {\r\n if (minOrMax === 'min') {\r\n this.props.onPageChange(1);\r\n } else {\r\n this.props.onPageChange(this.props.totalPages);\r\n }\r\n }\r\n\r\n /**\r\n * get the range (in bounds) of what indexes are to be rendered\r\n *\r\n * @returns bounds\r\n */\r\n private get range(): { lower: number; higher: number } {\r\n const currentPage = Number(this.props.currentPage);\r\n const lowerBound = Math.max(0, currentPage - 3);\r\n const higherBound = Math.min(this.props.totalPages, lowerBound + 5);\r\n return { lower: lowerBound, higher: higherBound };\r\n }\r\n\r\n /**\r\n * returns JSX elements representing a list of pages clickable and to go to\r\n */\r\n private _renderPages(): JSX.Element[] {\r\n const range = this.range;\r\n return Array(range.higher - range.lower).fill(0).map((value, index) => {\r\n const pageValue = range.lower + index + 1;\r\n if (pageValue === Number(this.props.currentPage)) {\r\n return (\r\n // tslint:disable-next-line: jsx-no-lambda react-this-binding-issue\r\n \r\n );\r\n } else {\r\n return (\r\n // tslint:disable-next-line: jsx-no-lambda react-this-binding-issue\r\n \r\n );\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default WineFinderPager;","//import { observable, toJS } from 'mobx';\r\n//import { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { IGetWineInternationalLocationOutput, IGetWineInternationalQueryFilters } from './actions/get-wine-international-location';\r\nimport { IGetWineLocationDataOutput, IGetWineLocationProductOutput, IGetWineLocationQueryFilters } from './actions/get-wine-location';\r\nimport { FindWineItem } from './wine-finder-display-item';\r\nimport { IWineFinderFormConfig, IWineFinderFormResources } from './wine-finder-form.props.autogenerated';\r\nimport WineFinderPager from './wine-finder-pager';\r\n\r\ninterface IWineFinderResultsProps {\r\n resultType: 'retailer' | 'distributor';\r\n queryFilters: IGetWineLocationQueryFilters | IGetWineInternationalQueryFilters;\r\n wineLocation: IGetWineLocationDataOutput | IGetWineInternationalLocationOutput;\r\n resources: IWineFinderFormResources;\r\n config: IWineFinderFormConfig;\r\n allOpen: boolean;\r\n hideNumbers?: boolean;\r\n onPageChange(filters: IGetWineLocationQueryFilters | IGetWineInternationalQueryFilters): void;\r\n}\r\n\r\n/**\r\n * displays results from a get wine location query\r\n */\r\nclass WineFinderResults extends React.Component {\r\n\r\n // =========================================================================\r\n // PUBLIC METHODS\r\n // =========================================================================\r\n\r\n public constructor(props: IWineFinderResultsProps) {\r\n super(props);\r\n\r\n this._handlePageChange = this._handlePageChange.bind(this);\r\n }\r\n\r\n public render(): JSX.Element {\r\n return (\r\n
\r\n
\r\n {this._renderWineLocations()}\r\n
\r\n
\r\n {\r\n this.props.wineLocation.data.length &&\r\n
Displaying {this.props.wineLocation.page} of {this.props.wineLocation.totalPages} pages
\r\n\r\n }\r\n {\r\n this.props.wineLocation.data.length &&\r\n \r\n }\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n // =========================================================================\r\n // PRIVATE METHODS\r\n // =========================================================================\r\n\r\n /**\r\n * handler for changing page\r\n *\r\n * @param pageChange the number that the page will change to\r\n */\r\n private _handlePageChange(pageChange: number): undefined {\r\n const newQuery = this.props.queryFilters;\r\n newQuery.page = pageChange;\r\n this.props.onPageChange(newQuery);\r\n return undefined;\r\n }\r\n\r\n /**\r\n * renders a list of wine locations\r\n *\r\n * @returns array of JSX Elements to render\r\n */\r\n private _renderWineLocations(): JSX.Element[] {\r\n const hideNumbers = this.props.hideNumbers || false;\r\n if (!this.props.wineLocation.data.length) {\r\n return [(
{this.props.resources.wineFinder__noResults}
)];\r\n }\r\n switch (this.props.resultType) {\r\n case 'retailer':\r\n return (this.props.wineLocation as IGetWineLocationDataOutput).data.\r\n map((retailer, key) =>\r\n (\r\n \r\n )\r\n );\r\n default:\r\n // mapping function that returns an array of jsx retailers\r\n return (this.props.wineLocation as IGetWineInternationalLocationOutput).data\r\n .map((distributor) =>\r\n (\r\n \r\n )\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * returns the name of products, if it exists\r\n *\r\n * @param productArray array of wines\r\n */\r\n private _getProducts(productArray: IGetWineLocationProductOutput[]): string[] {\r\n return productArray.map(product => product.description);\r\n }\r\n}\r\n\r\nexport default WineFinderResults;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as React from 'react';\r\n\r\nimport { Heading } from '@msdyn365-commerce-modules/utilities';\r\nimport { RichTextComponent } from '@msdyn365-commerce/core';\r\nimport { observable, reaction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport GetInternationalWineLocation, { GetWineInternationalLocationInput, IGetWineInternationalDistributorOuput, IGetWineInternationalLocationOutput, IGetWineInternationalQueryFilters } from './actions/get-wine-international-location';\r\nimport GetWineLocation, { GetWineLocationInput, IGetWineLocationDataOutput, IGetWineLocationQueryFilters, IGetWineLocationRetailerOutput } from './actions/get-wine-location';\r\nimport getWineProducts, { GetWineProductsInput, IGetWineProductQueryFilters, IGetWineProductsData } from './actions/get-wine-products';\r\nimport { IWineFinderFormConfig, IWineFinderFormProps } from './wine-finder-form.props.autogenerated';\r\nimport WineFinderQueryLocation from './wine-finder-query-location';\r\nimport WineFinderQueryLocationInternational from './wine-finder-query-location-international';\r\nimport { WineFinderScrollable } from './wine-finder-scrollable';\r\nimport WineFinderResults from './wine-finder-wine-results';\r\n\r\n// =============================================================================\r\n// INTERFACES AND CONSTANTS\r\n// =============================================================================\r\nconst enum selectedTab {\r\n us = 'us',\r\n international = 'international'\r\n}\r\nexport interface IExpandedState{\r\n expandedState:boolean;\r\n}\r\n\r\n/**\r\n * GetWine component: Component responsible for displaying local wineries based\r\n * on the query input\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nclass FindWine extends React.Component, IExpandedState> {\r\n\r\n\r\n // =========================================================================\r\n // OBSERVABLES AND FIELDS\r\n // =========================================================================\r\n\r\n /**\r\n * manages which type of page is supposed to be currently rendered\r\n *\r\n * - query: when _pageState is query the search page, will be rendered\r\n * - results: when _pageState is results a list of results will be rendered\r\n */\r\n @observable private _pageState: 'query' | 'results' = 'query';\r\n\r\n /**\r\n * keep the state of the 'Show All Products' toggle\r\n */\r\n @observable private _allOpen: boolean = false;\r\n\r\n /**\r\n * List of wine products\r\n */\r\n @observable private _products: IGetWineProductsData[] | undefined;\r\n\r\n /**\r\n * contains data on the previous domestic wine locations api request\r\n */\r\n @observable private wineLocation: IGetWineLocationDataOutput | undefined;\r\n\r\n /**\r\n * Indicates which is the current selected tab\r\n */\r\n @observable private _selectedTab: string = 'us';\r\n\r\n private _wineLocationDataSet: (IGetWineInternationalDistributorOuput | IGetWineLocationRetailerOutput)[] = [];\r\n\r\n /**\r\n * contains data on the previous international wine locations api request\r\n */\r\n @observable private internationalWineLocation: IGetWineInternationalLocationOutput | undefined;\r\n\r\n /**\r\n * the filters previously used for the last api request\r\n */\r\n private _querySearchFilters: IGetWineLocationQueryFilters | IGetWineInternationalQueryFilters = {\r\n country: 'all',\r\n location: '',\r\n brand: this.props.config.brand\r\n };\r\n\r\n // =========================================================================\r\n // PUBLIC METHODS\r\n // =========================================================================\r\n\r\n public constructor(props: IWineFinderFormProps) {\r\n super(props);\r\n\r\n // bindings for all functions used within the render\r\n this._setWineLocation = this._setWineLocation.bind(this);\r\n this._setWineProducts = this._setWineProducts.bind(this);\r\n this._handleBackToFind = this._handleBackToFind.bind(this);\r\n this._setInternationalWineLocation = this._setInternationalWineLocation.bind(this);\r\n this._handlePageChange = this._handlePageChange.bind(this);\r\n this._getMoreWineLocations = this._getMoreWineLocations.bind(this);\r\n this._closeToggle = this._closeToggle.bind(this);\r\n this._selectUSTab = this._selectUSTab.bind(this);\r\n this._selectInternationalTab = this._selectInternationalTab.bind(this);\r\n\r\n // safeguard product list\r\n reaction(\r\n () => { return this._products; },\r\n () => { this.setState({}); }\r\n );\r\n this.state={\r\n expandedState:false\r\n };\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (this.props.config.showChooseWineInput) {\r\n void this._setWineProducts();\r\n }\r\n }\r\n\r\n public render(): JSX.Element {\r\n if (this.props.config.singlePage) {\r\n return (\r\n
\r\n {this._renderQuery()}\r\n {this._pageState === 'results' && this._renderResults()}\r\n
\r\n );\r\n }\r\n\r\n if (this._pageState === 'query') {\r\n return this._renderQuery();\r\n } else {\r\n return this._renderJSXResult();\r\n }\r\n }\r\n\r\n // ==========================================================================\r\n // JSX CONSTRUCTORS\r\n // ==========================================================================\r\n\r\n private _renderJSXResult(): JSX.Element {\r\n // if we are rendering retailer and the search returned nothing,\r\n // display a special error page stating no results were found\r\n const wineType = (this.wineLocation) ? 'retailer' : 'distributor';\r\n if (wineType === 'retailer' && this.wineLocation && this.wineLocation.data.length === 0) {\r\n return this._renderNoResults();\r\n }\r\n return this._renderResults();\r\n }\r\n\r\n // Select US tab with US search form\r\n private _selectUSTab(): void {\r\n this._selectedTab = 'us';\r\n }\r\n\r\n // Select International tab with International search form\r\n private _selectInternationalTab(): void {\r\n this._selectedTab = 'international';\r\n }\r\n\r\n private _renderQuery(): JSX.Element {\r\n const {\r\n hideInternational,\r\n searchRadius,\r\n showFilterButtons,\r\n placeholders,\r\n USLabelText,\r\n internationalLabelText\r\n } = this.props.config;\r\n const USCssClass = this._selectedTab === selectedTab.us?'find-wine-tab-us active':'find-wine-tab-us';\r\n const internationalCssClass = this._selectedTab === selectedTab.international?'find-wine-tab-international active':'find-wine-tab-international';\r\n return (\r\n
\r\n
\r\n
\r\n {this._title}\r\n {this._searchText}\r\n
\r\n\r\n {\r\n !hideInternational &&\r\n
\r\n \r\n \r\n
\r\n }\r\n\r\n \r\n {\r\n !hideInternational &&\r\n \r\n }\r\n
\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * JSX for the result page\r\n */\r\n private _renderResults(): JSX.Element {\r\n const { wineFinder__backToFind, wineFinder__showMoreButton } = this.props.resources;\r\n const wineType = (this.wineLocation) ? 'retailer' : 'distributor';\r\n const wineLocation = (this.wineLocation) ? this.wineLocation : this.internationalWineLocation;\r\n const resultDisplay = (this.props.config.resultsDisplay === 'paginate') ?\r\n (\r\n \r\n ) :\r\n (\r\n \r\n );\r\n return (\r\n
\r\n
\r\n {\r\n !this.props.config.singlePage &&\r\n {wineFinder__backToFind}\r\n }\r\n {this.props.config.showAllProductsToggle && this._renderAllProductsToggle()}\r\n {resultDisplay}\r\n
\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * JSX for the 'Show All Products' toggle\r\n */\r\n private _renderAllProductsToggle(): JSX.Element {\r\n const {\r\n hideAllProducts,\r\n showAllProducts\r\n } = this.props.config.showAllProductsLabel || {hideAllProducts:'Hide All Products', showAllProducts:'Show All Products'};\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _closeToggle(): void {\r\n this._allOpen = !this._allOpen;\r\n this.setState({\r\n expandedState: !this.state.expandedState\r\n });\r\n }\r\n\r\n /**\r\n * JSX for results failed page\r\n *\r\n * this is only for retailer / domestic search\r\n */\r\n private _renderNoResults(): JSX.Element {\r\n const {\r\n wineFinder__backToFind,\r\n wineFinder__noResults,\r\n wineFinder__searchAgain\r\n } = this.props.resources;\r\n return (\r\n
\r\n
\r\n {wineFinder__backToFind}\r\n
\r\n {this._title}\r\n

{wineFinder__noResults}

\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n private get _title(): JSX.Element | null {\r\n const title = this.props.config.title;\r\n if (title && title.text) {\r\n return (\r\n \r\n );\r\n }\r\n return null;\r\n }\r\n\r\n private get _searchText(): JSX.Element | null {\r\n const { searchText } = this.props.config;\r\n if (searchText) {\r\n return (\r\n // tslint:disable-next-line:react-no-dangerous-html\r\n \r\n );\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * return back to query page\r\n */\r\n private _handleBackToFind(): undefined {\r\n this._pageState = 'query';\r\n return undefined;\r\n }\r\n\r\n /**\r\n * handles a re-request to change pages\r\n *\r\n * @param filters query filter for either domestic or international searching\r\n */\r\n private async _handlePageChange(filters: IGetWineLocationQueryFilters | IGetWineInternationalQueryFilters): Promise {\r\n if (this.wineLocation) {\r\n await this._setWineLocation(filters as IGetWineLocationQueryFilters);\r\n } else {\r\n await this._setInternationalWineLocation(filters as IGetWineInternationalQueryFilters);\r\n }\r\n return undefined;\r\n }\r\n\r\n private async _getMoreWineLocations(filters: IGetWineLocationQueryFilters | IGetWineInternationalQueryFilters): Promise {\r\n if (!filters.page) {\r\n filters.page = 2;\r\n } else {\r\n filters.page++;\r\n }\r\n if (this.wineLocation) {\r\n (filters as IGetWineLocationQueryFilters).brand = this.props.config.brand;\r\n const wineLocationInput = new GetWineLocationInput(filters as IGetWineLocationQueryFilters);\r\n const moreData = await GetWineLocation(wineLocationInput, this.props.context.actionContext);\r\n this._wineLocationDataSet = [...this._wineLocationDataSet, ...moreData.data];\r\n } else {\r\n (filters as IGetWineInternationalQueryFilters).brand_code = this.props.config.brand;\r\n const wineLocationInput = new GetWineInternationalLocationInput(filters as IGetWineInternationalQueryFilters);\r\n const moreData = await GetInternationalWineLocation(wineLocationInput, this.props.context.actionContext);\r\n this._wineLocationDataSet = [...this._wineLocationDataSet, ...moreData.data];\r\n }\r\n this.setState({});\r\n }\r\n\r\n // =========================================================================\r\n // DATA ACTIONS AND QUERIES\r\n // =========================================================================\r\n\r\n /**\r\n * runs the users data query and applies the new results to the component\r\n *\r\n * @param filters query filters for the call\r\n */\r\n private async _setWineLocation(filters: IGetWineLocationQueryFilters): Promise {\r\n this._allOpen = false;\r\n filters.brand = this.props.config.brand;\r\n filters.per_page = this.props.config.perPage || 5;\r\n const wineLocationInput = new GetWineLocationInput(filters);\r\n this._querySearchFilters = filters;\r\n const newLocation = await GetWineLocation(wineLocationInput, this.props.context.actionContext);\r\n this._wineLocationDataSet = newLocation.data;\r\n this.wineLocation = newLocation;\r\n // must be set to undefined to keep which was previous call consistent\r\n this.internationalWineLocation = undefined;\r\n this._pageState = 'results';\r\n return this.wineLocation;\r\n }\r\n\r\n /**\r\n * runs the users data query and applies the new results to the component\r\n *\r\n * @param filters query filters for the call\r\n */\r\n private async _setInternationalWineLocation(filters: IGetWineInternationalQueryFilters): Promise {\r\n filters.brand_code = this.props.config.brand;\r\n filters.per_page = this.props.config.perPage || 5;\r\n const wineLocationInput = new GetWineInternationalLocationInput(filters);\r\n const newLocation = await GetInternationalWineLocation(wineLocationInput, this.props.context.actionContext);\r\n this._wineLocationDataSet = newLocation.data;\r\n this.internationalWineLocation = newLocation;\r\n this._querySearchFilters = filters;\r\n // must be set to undefined to keep which was previous call consistent\r\n this.wineLocation = undefined;\r\n this._pageState = 'results';\r\n return this.internationalWineLocation;\r\n }\r\n\r\n /**\r\n * get a list of products\r\n *\r\n * @param filters query filters for the call\r\n */\r\n private async _setWineProducts(): Promise {\r\n const filter: IGetWineProductQueryFilters = {brand: this.props.config.brand};\r\n const wineLocationInput = new GetWineProductsInput(filter);\r\n const products = await getWineProducts(wineLocationInput, this.props.context.actionContext);\r\n this._products = products;\r\n }\r\n}\r\n\r\nexport default FindWine;\r\n","\nimport { ICategoryHierarchyViewProps, IRefineMenuViewProps, ISearchResultContainerViewProps, ISearchResultModalViewProps, ISortByViewProps, ITitleViewProps } from '@msdyn365-commerce-modules/search-result-container';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst SearchResultContainerView: React.FC = props => {\n const { SearchResultContainer, products, pagination, ProductsContainer, ProductSectionContainer, choiceSummary, isMobile, modalToggle, searchResultModal, TitleViewProps,\n refineMenu, categoryHierarchy, sortByOptions, CategoryNavContainer, RefineAndProductSectionContainer, errorMessage, FeatureSearchContainer, similarLookProduct } = props;\n if (isMobile) {\n return (\n \n {categoryHierarchy && renderCategoryHierarchy(categoryHierarchy)}\n {renderTitle(TitleViewProps)}\n {choiceSummary}\n {modalToggle}\n {createSearchResultModal(searchResultModal, refineMenu, sortByOptions)}\n \n {similarLookProduct}\n \n \n {errorMessage}\n {products}\n \n {pagination}\n \n );\n }\n return (\n \n {categoryHierarchy &&\n \n {renderCategoryHierarchy(categoryHierarchy)}\n \n }\n \n {refineMenu && renderRefiner(refineMenu)}\n \n \n {similarLookProduct}\n \n
\n {TitleViewProps && renderTitle(TitleViewProps)}\n {choiceSummary}\n
\n
\n {sortByOptions && renderSort(sortByOptions)}\n
\n \n {errorMessage}\n {products}\n \n {pagination}\n
\n
\n
\n );\n\n};\n\nconst createSearchResultModal = (modalProps: ISearchResultModalViewProps, refineMenu: IRefineMenuViewProps, sortByDropDown: ISortByViewProps): JSX.Element => {\n return React.cloneElement(modalProps.modal, {}, modalProps.modalHeader, createModalBody(modalProps, refineMenu, sortByDropDown), modalProps.modalFooter);\n};\n\nconst createModalBody = (props: ISearchResultModalViewProps, refineMenu: IRefineMenuViewProps, sortByDropDown: ISortByViewProps): JSX.Element | null => {\n if (sortByDropDown) {\n return React.cloneElement(props.modalBody, {}, renderSort(sortByDropDown), renderRefiner(refineMenu));\n }\n return null;\n};\n\nconst renderRefiner = (props: IRefineMenuViewProps): JSX.Element | null => {\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\n if (refiners) {\n return (\n \n \n {refiners.map((submenu, index) => (\n \n {submenu}\n \n ))}\n \n \n );\n }\n return null;\n};\n\nconst renderSort = (props: ISortByViewProps): JSX.Element | null => {\n const { SortingContainer, sortByDropDown } = props;\n if (sortByDropDown) {\n return (\n \n {sortByDropDown}\n \n );\n }\n return null;\n};\n\nconst renderCategoryHierarchy = (props: ICategoryHierarchyViewProps): JSX.Element | null => {\n const { CategoryHierarchyContainer, categoryHierarchyList, categoryHierarchySeparator } = props;\n if (categoryHierarchyList) {\n return (\n \n {categoryHierarchyList.map((category, index) => (\n \n {category}\n {categoryHierarchyList && categoryHierarchyList[index + 1] && categoryHierarchySeparator}\n \n ))}\n \n );\n }\n\n return null;\n};\n\nconst renderTitle = (props: ITitleViewProps): JSX.Element | null => {\n const { title, TitleContainer } = props;\n if (title) {\n return (\n \n

\n {title.titlePrefix}\n {title.titleText}\n ({title.titleCount})\n

\n
\n );\n }\n return null;\n};\n\nexport default SearchResultContainerView;","/*!\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';\nimport { IIframeViewProps } from './iframe';\n\n/**\n *\n * IFrameView component\n * @extends {React.PureComponent}\n */\nexport class IFrameView extends React.PureComponent {\n\n public render(): JSX.Element | null {\n const { Heading, IframeContainer, IFrame, alert, cookieConsentAccepted } = this.props;\n\n return (\n \n {alert}\n {cookieConsentAccepted && cookieConsentAccepted === true ? (\n <>\n {Heading}\n {IFrame}\n ) : null}\n \n );\n }\n}\nexport default IFrameView;","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { IModuleProps, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { createTabStateInput } from '../../data-actions/tab-state-data-action';\nimport { getContentID, TabItemType } from '../tab-item/tab-item';\nimport { ITabData } from './tab.data';\nimport { ITabProps } from './tab.props.autogenerated';\n\n/**\n *\n * Tab component\n * @extends {React.PureComponent>}\n */\n\nexport interface ICallToActionProps {\n link: INodeProps[];\n}\n\nexport interface ITabViewProps extends ITabProps<{}> {\n heading?: React.ReactNode;\n TabContainer: IModuleProps;\n headerSection: INodeProps;\n tabHeaderSection: INodeProps;\n tabsSection: INodeProps;\n tabItemContainer: INodeProps;\n tabHeaders: React.ReactNode;\n tabContents: React.ReactNode;\n}\n\nexport interface ITabViewStates {\n currentTabIndex: number;\n}\n/**\n *\n * Tab component\n * @extends {React.Component>}\n */\n@observer\nclass Tab extends React.Component, ITabViewStates> {\n public readonly tabIndexQuery: string = 'activeTab';\n private activeLink: HTMLLIElement | null;\n\n constructor(props: ITabProps) {\n super(props);\n const { defaultTabIndex } = this.props.config;\n const { slots } = this.props;\n const slotLength = slots && slots.tabItems && slots.tabItems.length || 0;\n let initialIndex = defaultTabIndex && defaultTabIndex <= slotLength && defaultTabIndex > 0 ? defaultTabIndex - 1 : 0;\n const queryString: string = this.props.context && this.props.context.request && this.props.context.request.query && this.props.context.request.query.activeTab || '';\n let queryTabIndex: number = 0;\n if (queryString.indexOf(':') > 0) {\n const arr = queryString.split(':');\n const moduleId = arr[0];\n if (moduleId === this.props.id) {\n queryTabIndex = parseInt(arr[1], 10);\n }\n }\n initialIndex = queryTabIndex > 0 && queryTabIndex <= slotLength ? queryTabIndex - 1 : initialIndex;\n this.state = { currentTabIndex: initialIndex };\n\n this._getTabHeader = this._getTabHeader.bind(this);\n this._getTabContent = this._getTabContent.bind(this);\n this._onClick = this._onClick.bind(this);\n this._onKeyDown = this._onKeyDown.bind(this);\n this._setGetParameter = this._setGetParameter.bind(this);\n this.activeLink = null;\n }\n public render(): JSX.Element {\n const { slots } = this.props;\n const { heading, className } = this.props.config;\n\n const headingComponent = heading && (\n \n );\n const slotLength = slots && slots.tabItems && slots.tabItems.length || 0;\n // const queryTabIndex = this.props.context && this.props.context.request && this.props.context.request.query && +this.props.context.request.query.activeTabIndex || 0;\n // let activeIndex = defaultTabIndex && defaultTabIndex <= slotLength && defaultTabIndex > 0 ? defaultTabIndex - 1 : 0;\n // activeIndex = queryTabIndex > 0 && queryTabIndex <= slotLength ? queryTabIndex - 1 : activeIndex;\n\n const tabViewProps = {\n ...this.props,\n TabContainer: {\n moduleProps: this.props,\n className: classnames('ms-tab', className)\n },\n headerSection: { className: 'ms-tab-header-section' },\n tabsSection: { className: 'ms-tab-tabs-section', tag: 'ul' as NodeTag, role: 'tablist' },\n heading: headingComponent,\n config: this.props && this.props.config,\n tabItemContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-tab-content-section',\n },\n tabContents: slotLength > 0 && slots.tabItems.map((item: React.ReactNode, index: number) => this._getTabContent(item, index)),\n tabHeaders: slotLength > 0 && slots.tabItems.map((item: React.ReactNode, index: number) => this._getTabHeader(item, index)),\n };\n return this.props.renderView(tabViewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: MsDyn365.ContentEditableEvent) => this.props.config.heading!.text = event.target.value;\n\n public componentDidUpdate(): void {\n const { data } = this.props;\n const dataActionTabId = data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.tabId;\n if (dataActionTabId) {\n if (this.props.id === dataActionTabId) {\n this.activeLink && this.activeLink.focus();\n }\n } else {\n const queryString: string = this.props.context && this.props.context.request && this.props.context.request.query && this.props.context.request.query.activeTab || '';\n if (queryString.indexOf(':') > 0) {\n const arr = queryString.split(':');\n const moduleId = arr[0];\n if (moduleId === this.props.id) {\n this.activeLink && this.activeLink.focus();\n }\n }\n }\n }\n\n private _getTabHeader(item: React.ReactNode, index: number): React.ReactNode {\n const { data } = this.props;\n const activeContentIndex = data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.activeContentIndex;\n const dataActionTabId = data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.tabId;\n const selected = activeContentIndex !== undefined && dataActionTabId === this.props.id ? activeContentIndex === index : this.state.currentTabIndex === index;\n const contentID = getContentID(index, this.props.id);\n\n return (\n { if (index === this.state.currentTabIndex) { this.activeLink = link; } }}\n aria-controls={contentID}\n aria-selected={selected}\n role='tab'\n >\n \n {React.cloneElement(item as React.ReactElement, { tabItemType: TabItemType.TabHeader, isSelected: index === this.state.currentTabIndex, itemIndex: index, tabId: this.props.id })}\n \n \n );\n }\n\n private _onClick = (index: number, id: string) => (e: React.MouseEvent) => {\n const activeTabState = { activeContentIndex: index, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index });\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 1)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n }\n\n private _onKeyDown = (index: number, id: string) => (e: React.KeyboardEvent) => {\n debugger;\n if (e.keyCode === 13) {\n const activeTabState = { activeContentIndex: index, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index });\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 1)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n }\n\n if (e.keyCode === 39 || e.keyCode === 37) {\n const { slots } = this.props;\n const slotLength = slots && slots.tabItems && slots.tabItems.length || 0;\n\n if (e.keyCode === 39) {\n\n // If we're at the end, go to the start\n if (index + 1 === slotLength) {\n index = -1;\n }\n const activeTabState = { activeContentIndex: index + 1, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index + 1 });\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 2)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n\n // Move left\n } else if (e.keyCode === 37) {\n // If we're at the start, move to the end\n if (index === 0) {\n index = slotLength;\n }\n const activeTabState = { activeContentIndex: index - 1, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index - 1 });\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n }\n }\n }\n\n private _getTabContent(item: React.ReactNode, index: number): React.ReactNode {\n return (\n \n {React.cloneElement(item as React.ReactElement, { tabItemType: TabItemType.TabContent, isSelected: index === this.state.currentTabIndex, itemIndex: index, tabId: this.props.id })}\n \n );\n }\n\n private _setGetParameter(requestContext: MsDyn365.IRequestContext, paramName: string, paramValue: string): string {\n let url;\n\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n url = new URL(window.location.href);\n } else {\n url = new URL(requestContext.url.requestUrl.href);\n }\n\n const params = new window.URLSearchParams(url.search);\n params.set(paramName, paramValue);\n url.search = decodeURIComponent(params.toString());\n return url.toString();\n }\n}\n\nexport default Tab;\n","import * as React from 'react';\r\n\r\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport {\r\n ISignInItem, ISignInLoading, ISignInLocalAccount, ISignInSocialAccount, ISignInSocialItem,\r\n ISignInViewProps\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/sign-in/sign-in';\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n forgetPassword,\r\n disclaimer,\r\n error,\r\n signInButton\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: ISignInItem) => {\r\n if (item.key === 'password') {\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n \r\n );\r\n }\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n );\r\n })}\r\n {disclaimer}\r\n {error}\r\n {signInButton}\r\n
{forgetPassword}
\r\n
\r\n );\r\n};\r\n\r\nconst SocialAccount: React.FC = ({\r\n socialAccounts,\r\n items,\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: ISignInSocialItem) => {\r\n return (\r\n \r\n {item.image}\r\n {item.text}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst SignInLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message,\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignInView: React.FC = props => {\r\n\r\n const {\r\n signIn,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n signInSection,\r\n signUpSection,\r\n signInSectionHeading,\r\n signInLocalAccount,\r\n signInSocialAccount,\r\n signUpSectionHeading,\r\n signUpDescription,\r\n signUpLink\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n \r\n {signInSectionHeading}\r\n {LocalAccount(signInLocalAccount)}\r\n {SocialAccount(signInSocialAccount)}\r\n \r\n \r\n {signUpSectionHeading}\r\n {signUpDescription}\r\n {signUpLink}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst _showPassword = () => {\r\n const passwordState = document.getElementById('password') as HTMLInputElement;\r\n const iconElement = document.getElementById('sign-in-password-icon');\r\n if (passwordState && iconElement) {\r\n passwordState.type = passwordState.type === 'password' ? 'text' : 'password';\r\n iconElement.className = iconElement.className === 'icon-show-password' ? 'icon-hide-password' :'icon-show-password';\r\n }\r\n};\r\n\r\nexport default SignInView;\r\n","import { observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\n// ==============================================================================\r\n// TYPE DEFINITIONS\r\n// ==============================================================================\r\n\r\ninterface IMailingInputGroupProps {\r\n label?: string;\r\n name: string;\r\n isValid?: boolean;\r\n placeholder?:string;\r\n validationMessage?: string;\r\n initialValue: string;\r\n errorMessage: string;\r\n onValueChange(newValue: string): void;\r\n onLoseFirstFocus(labelBlurred: string): void;\r\n}\r\n\r\n// ==============================================================================\r\n// CLASS DEFINITIONS\r\n// ==============================================================================\r\n\r\n/**\r\n * class definition for a control group for mailing\r\n */\r\n@observer\r\nexport class MailingInputGroup extends React.Component {\r\n\r\n // ==========================================================================\r\n // FIELDS\r\n // ==========================================================================\r\n\r\n @observable private _internalValue: string = '';\r\n\r\n // ==========================================================================\r\n // PUBLIC METHODS\r\n // ==========================================================================\r\n\r\n public constructor(props: IMailingInputGroupProps) {\r\n super(props);\r\n this._internalValue = props.initialValue;\r\n\r\n this._onInputChange = this._onInputChange.bind(this);\r\n this._onBlur = this._onBlur.bind(this);\r\n }\r\n\r\n public render(): JSX.Element {\r\n return (\r\n
\r\n \r\n \r\n {this._renderValidation()}\r\n
\r\n );\r\n }\r\n\r\n // ==========================================================================\r\n // COMPONENT EVENTS\r\n // ==========================================================================\r\n\r\n private _onBlur(): void {\r\n this.props.onLoseFirstFocus(this.props.name);\r\n }\r\n\r\n private _onInputChange(event: React.ChangeEvent): void {\r\n this._internalValue = event.target.value;\r\n this.props.onValueChange(event.target.value);\r\n }\r\n\r\n // ==========================================================================\r\n // PRIVATE METHODS\r\n // ==========================================================================\r\n\r\n private _renderValidation(): JSX.Element | void {\r\n if (!this.props.isValid && this.props.isValid !== undefined) {\r\n return (\r\n

\r\n {this._validationMessage}\r\n

\r\n );\r\n }\r\n }\r\n\r\n private get _validationMessage(): string {\r\n return (this.props.validationMessage) ? this.props.validationMessage : this.props.errorMessage;\r\n }\r\n\r\n}","import { Heading } from '@msdyn365-commerce-modules/utilities';\r\nimport { RichTextComponent } from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport { observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { MailingInputGroup } from './mailing-list-redirect-form-input-group';\r\n\r\nimport { IMailingListRedirectFormProps } from './mailing-list-redirect-form.props.autogenerated';\r\n\r\nexport interface IMailingListRedirectFormViewProps extends IMailingListRedirectFormProps<{}> {\r\n\r\n}\r\n\r\ntype validationField = {\r\n value: string;\r\n label: string;\r\n isValid?: boolean;\r\n errorMessage?: string;\r\n beenBlurred?: boolean;\r\n};\r\n\r\n/**\r\n *\r\n * MailingListRedirectForm component\r\n * @extends {React.Component}\r\n */\r\n@observer\r\nclass MailingListRedirectForm extends React.Component> {\r\n\r\n // ==========================================================================\r\n // FIELDS\r\n // ==========================================================================\r\n\r\n @observable private _email: validationField = {\r\n label: 'Email',\r\n value: ''\r\n };\r\n\r\n private _emailRegex: RegExp = /^[-a-z0-9!#$%&'*+/=?^_`{|}~]+(?:\\.[-a-z0-9!#$%&'*+/=?^_`{|}~]+)*@(?:[a-z0-9]+(?:-+[a-z0-9]+)*\\.)+(?:xn--[a-z0-9]+|[a-z]{2,16})$/i;\r\n\r\n constructor(props: IMailingListRedirectFormProps<{}>) {\r\n super(props);\r\n this._onSubmitForm = this._onSubmitForm.bind(this);\r\n this._onEmailChange = this._onEmailChange.bind(this);\r\n this._lostFocus = this._lostFocus.bind(this);\r\n }\r\n\r\n public render(): JSX.Element {\r\n const {\r\n title,\r\n description,\r\n className,\r\n formLabel,\r\n formPlaceholder,\r\n submitButtonText\r\n } = this.props.config;\r\n\r\n return (\r\n
\r\n {(title || description) &&\r\n
\r\n {title && }\r\n {description && }\r\n
\r\n }\r\n
\r\n \r\n \r\n {(submitButtonText) && submitButtonText}\r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n private _onEmailChange(email: string): void {\r\n this._email.value = email;\r\n\r\n if (!this._email.beenBlurred) { return; }\r\n this._testForRequirement(this._email, 'Please enter your email address.');\r\n if (this._email.isValid) {\r\n this._testForRegex(this._email, this._emailRegex, 'Please enter a valid email address.');\r\n }\r\n }\r\n\r\n private _lostFocus(label: string): unknown {\r\n\r\n // also run all change events related to the field so that the proper\r\n // errors propogate on blur\r\n switch (label) {\r\n case this._email.label:\r\n this._email.beenBlurred = true;\r\n return this._onEmailChange(this._email.value);\r\n default:\r\n return console.warn('[mailing-list-redirect-form:MailingFormComponent._lostFocus] failed to link a field');\r\n }\r\n }\r\n\r\n private _testForRequirement(field: validationField, errorMessage: string): void {\r\n if (field.value.length === 0) {\r\n field.isValid = false;\r\n field.errorMessage = errorMessage;\r\n } else {\r\n field.isValid = true;\r\n }\r\n this.setState({});\r\n }\r\n\r\n private _testForRegex(field: validationField, regex: RegExp, errorMessage: string): void {\r\n if (regex.test(field.value)) {\r\n field.isValid = true;\r\n } else {\r\n field.isValid = false;\r\n field.errorMessage = errorMessage;\r\n }\r\n }\r\n\r\n private _isButtonDisabled(): boolean {\r\n\r\n // button will only be disabled if all input fields are considered invalid\r\n // or undefined (meaning not filled out or touched)\r\n return !(this._email.value);\r\n }\r\n\r\n private _onSubmitForm(): void {\r\n if (!this._email.isValid) { return; }\r\n let redirectUrl = this.props.config.redirectUrl.linkUrl.destinationUrl;\r\n redirectUrl = redirectUrl.indexOf('?') === -1 ? `${redirectUrl}?mailFormEmail=${encodeURIComponent(this._email.value)}` : `${redirectUrl}&mailFormEmail=${encodeURIComponent(this._email.value)}`;\r\n window.location.assign(redirectUrl);\r\n }\r\n}\r\n\r\nexport default MailingListRedirectForm;\r\n","import * as React from 'react';\r\n\r\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport {\r\n ISignInItem, ISignInLoading, ISignInLocalAccount, ISignInSocialAccount, ISignInSocialItem,\r\n ISignInViewProps\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/sign-in/sign-in';\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n forgetPassword,\r\n disclaimer,\r\n error,\r\n signInButton\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: ISignInItem) => {\r\n if (item.key === 'password') {\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n \r\n );\r\n }\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n );\r\n })}\r\n {disclaimer}\r\n {error}\r\n {signInButton}\r\n
\r\n {forgetPassword}\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst SocialAccount: React.FC = ({\r\n socialAccounts,\r\n items,\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: ISignInSocialItem) => {\r\n return (\r\n \r\n {item.image}\r\n {item.text}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst SignInLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message,\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignInView: React.FC = props => {\r\n\r\n const {\r\n signIn,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n signInSection,\r\n signUpSection,\r\n signInSectionHeading,\r\n signInLocalAccount,\r\n signInSocialAccount,\r\n signUpSectionHeading,\r\n signUpDescription,\r\n signUpLink\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n \r\n {signInSectionHeading}\r\n {LocalAccount(signInLocalAccount)}\r\n {SocialAccount(signInSocialAccount)}\r\n \r\n \r\n {signUpSectionHeading}\r\n {signUpDescription}\r\n {signUpLink}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst _showPassword = () => {\r\n const passwordState = document.getElementById('password') as HTMLInputElement;\r\n const iconElement = document.getElementById('sign-in-password-icon');\r\n if (passwordState && iconElement) {\r\n passwordState.type = passwordState.type === 'password' ? 'text' : 'password';\r\n iconElement.className = iconElement.className === 'icon-show-password' ? 'icon-hide-password' : 'icon-show-password';\r\n }\r\n};\r\n\r\nexport default SignInView;\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport { IBusinessSignUpItem, IBusinessSignUpViewProps } from './business-sign-up';\n\nconst BusinessSignUpItem: React.FC = ({\n wrapper,\n label,\n errorMessage,\n input,\n isAddressInput\n}) => {\n\n // hide label and error message if rendering address section\n return (\n \n {!isAddressInput && label}\n {!isAddressInput && errorMessage}\n {input}\n \n );\n};\n\nconst BusinesSignUpView: React.FC = props => {\n\n const { businessSignUp, ContainerWrapper, heading, businessSignUpForm } = props;\n\n const { FormWrapper, buttons, items, errorMessage, disclaimer } = businessSignUpForm;\n\n return (\n \n \n {heading}\n \n {items && items.map((item: IBusinessSignUpItem) => {\n return (\n \n );\n })}\n {errorMessage && errorMessage.map((error: React.ReactNode, index: number) => {\n return (\n \n {error}\n \n );\n })}\n {buttons && buttons.map((button: React.ReactNode, index: number) => {\n return (\n \n {button}\n \n );\n })}\n {disclaimer}\n \n \n \n );\n};\n\nexport default BusinesSignUpView;\n","\r\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport {\r\n ISignInItem, ISignInLoading, ISignInLocalAccount, ISignInViewProps\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/sign-in/sign-in';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n forgetPassword,\r\n disclaimer,\r\n error,\r\n signInButton\r\n}) => {\r\n return (\r\n \r\n {items && items.map((item: ISignInItem) => {\r\n if (item.key === 'password') {\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n \r\n );\r\n }\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n );\r\n })}\r\n {disclaimer}\r\n {error}\r\n {signInButton}\r\n {forgetPassword}\r\n \r\n );\r\n};\r\n\r\nconst SignInLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message,\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignInView: React.FC = props => {\r\n\r\n const {\r\n signIn,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n signInSection,\r\n signUpSection,\r\n signInSectionHeading,\r\n signInLocalAccount,\r\n signUpLink\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n \r\n {signInSectionHeading}\r\n {LocalAccount(signInLocalAccount)}\r\n \r\n \r\n {signUpLink}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst _showPassword = () => {\r\n const passwordState = document.getElementById('password') as HTMLInputElement;\r\n const iconElement = document.getElementById('showPasswordIcon');\r\n if (passwordState && iconElement) {\r\n passwordState.type = (passwordState.type === 'password') ? 'text' : 'password';\r\n iconElement.className = (iconElement.className === 'ms-sign-in__password-icon ms-sign-in__password-icon-show')\r\n ? 'ms-sign-in__password-icon ms-sign-in__password-icon-hide'\r\n : 'ms-sign-in__password-icon ms-sign-in__password-icon-show';\r\n }\r\n};\r\n\r\nexport default SignInView;\r\n","/*---------------------------------------------------------------------------------------------\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Heading } from '@msdyn365-commerce-modules/utilities';\r\nimport { getRichTextHtml, IImageSettings, Image, RichTextComponent } from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\nimport { ITastingToursData } from './all-purpose-tasting-tours.data';\r\nimport { IAllPurposeTastingToursProps } from './all-purpose-tasting-tours.props.autogenerated';\r\n\r\n// =============================================================================\r\n// INTERFACES\r\n// =============================================================================\r\n\r\ndeclare module 'react' {\r\n // tslint:disable-next-line:interface-name\r\n interface HTMLAttributes extends DOMAttributes {\r\n token?: string;\r\n }\r\n}\r\n\r\n// tslint:disable-next-line: no-any\r\ndeclare var appInsights: any;\r\n\r\n/**\r\n *\r\n * TastingTours component: Shows information about tasting flights and tours\r\n * offered and loads third-party application for making reservations\r\n * @extends {React.Component>}\r\n */\r\nclass TastingTours extends React.Component> {\r\n\r\n constructor(props: IAllPurposeTastingToursProps) {\r\n super(props);\r\n this._showWidget = this._showWidget.bind(this);\r\n }\r\n\r\n // ========================================================================\r\n // PUBLIC METHODS\r\n // =========================================================================\r\n\r\n // ------------------------------------------------------\r\n // HACK: Disable logging to reservecloud domain\r\n // Without this, we're getting a CORS error because\r\n // appInsights is injecting resource-id into the header\r\n // of all AJAX calls.\r\n // ------------------------------------------------------\r\n public componentDidMount(): void {\r\n const domain = '*.reservecloud.com';\r\n\r\n // There are at least three paths, based on timing and async operations:\r\n // One: everything is initialized and we just need to add the target domain\r\n try {\r\n appInsights.config.correlationHeaderExcludedDomains.push(domain);\r\n } catch (e) {\r\n // Two: appInsights.config exists, but correlationHeaderExcludedDomains doesn't exist yet\r\n // tslint:disable-next-line: no-typeof-undefined\r\n if ((typeof appInsights !== 'undefined') && appInsights.config && !appInsights.config.correlationHeaderExcludedDomains) {\r\n appInsights.config.correlationHeaderExcludedDomains = [domain];\r\n } else {\r\n // THREE: appInsights is defined, but not appInsights.config. In this case we can either wait around,\r\n // or close our eyes and hope for the best.\r\n console.warn('AppInsights Domain Exclusion Failed');\r\n }\r\n }\r\n\r\n // Load the ReserveCloud script and inject it -- we can't do it via JSX\r\n // Pick a default target in case it's missing (even though it's required)\r\n this._injectScript(this.props.config.rcTarget || 'guestLists');\r\n }\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n public render(): JSX.Element {\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n {this._image}\r\n\r\n
\r\n {this._content}\r\n {this._consentGate}\r\n {this._integration}\r\n
\r\n
\r\n
\r\n \r\n );\r\n }\r\n\r\n // ==========================================================================\r\n // JSX CONSTRUCTORS\r\n // ==========================================================================\r\n\r\n // ------------------------------------------------------\r\n // Displays an optional image next to the content\r\n // ------------------------------------------------------\r\n private get _image(): JSX.Element | null {\r\n const { image } = this.props.config;\r\n\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: `w=24&h=24&m=6`, w: 0, h: 0 },\r\n lg: { q: `w=24&h=24&m=6`, w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n\r\n if (image) {\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n return null;\r\n }\r\n\r\n // ------------------------------------------------------\r\n // Display the reservation content\r\n // ------------------------------------------------------\r\n private get _content(): JSX.Element | null {\r\n\r\n return (\r\n \r\n {this._header}\r\n {this._body}\r\n \r\n );\r\n }\r\n\r\n // ------------------------------------------------------\r\n // Optional Header above body text\r\n // ------------------------------------------------------\r\n private get _header(): JSX.Element | null {\r\n const { header } = this.props.config;\r\n\r\n if (header && header.text) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n // No header specified\r\n return null;\r\n }\r\n\r\n // ------------------------------------------------------\r\n // Main body text\r\n // ------------------------------------------------------\r\n private get _body(): JSX.Element | null {\r\n const { content } = this.props.config;\r\n\r\n return (\r\n
\r\n {content && // tslint:disable-next-line:react-no-dangerous-html\r\n
}\r\n
\r\n\r\n );\r\n }\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n private get _consentGate(): JSX.Element | null {\r\n const { consentCTA, consentText, requireConsent, consentFooter, consentFooterClass } = this.props.config;\r\n if (requireConsent) {\r\n return (\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n // ------------------------------------------------------\r\n // ReserveCloud-specific JSX\r\n // ------------------------------------------------------\r\n private get _integration(): JSX.Element {\r\n const { token, requireConsent } = this.props.config;\r\n\r\n return (\r\n
\r\n
\r\n Loading\r\n
\r\n
\r\n );\r\n }\r\n\r\n // ==========================================================================\r\n // PRIVATE METHODS\r\n // ==========================================================================\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n private get _reservationClassName(): string {\r\n // if there is an image available, then use sm-8 instead to match the\r\n // images sm-4\r\n return (this.props.config.image) ? 'col-sm-8' : 'col';\r\n }\r\n\r\n // ------------------------------------------------------\r\n // Load the ReserveCloud script and inject it -- we can't do it via JSX\r\n // ------------------------------------------------------\r\n private _injectScript(target: string): void {\r\n // tslint:disable-next-line: no-typeof-undefined\r\n if (typeof document !== 'undefined') {\r\n const script = document.createElement('script');\r\n script.defer = true;\r\n script.setAttribute('id', 'rc-script');\r\n script.setAttribute('rc-target', target);\r\n script.src = 'https://www.reservecloud.com/scripts/portals/rcPortal.js';\r\n document.getElementsByTagName('head')[0].appendChild(script);\r\n }\r\n }\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n private _showWidget(): void {\r\n const widget = document.getElementById('rc-portal') as HTMLInputElement;\r\n const consentGate = document.getElementById('tasting-tours-consent') as HTMLInputElement;\r\n if (widget && consentGate) {\r\n widget.className = '';\r\n consentGate.className = 'tasting-tours-hidden';\r\n }\r\n }\r\n}\r\n\r\nexport default TastingTours;\r\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 { format, Heading } from '@msdyn365-commerce-modules/utilities';\r\nimport { RichTextComponent } from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { IFamilyAndFriendsViewProps } from './family-and-friends';\r\n\r\nexport default (props: IFamilyAndFriendsViewProps) => {\r\n if (props.data.codeList.result?.Result.Codes?.length === 0) { return
; } // don't show if no codes\r\n return (\r\n
\r\n {props.config.heading &&\r\n \r\n }\r\n
\r\n {\r\n format(\r\n props.resources.familyFriends_codesRemaining,\r\n props.data.codeList.result?.Result.QuantityAvailable || 0\r\n )\r\n }\r\n
\r\n
\r\n {props.header}\r\n {props.codes}\r\n
\r\n \r\n
\r\n );\r\n};\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n*--------------------------------------------------------------------------------------------*/\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\nimport { IFooterCategoryViewProps } from './footer-category';\n\nexport const FooterCategoryView: React.FC = props => {\n const {categories, FooterList, FooterListItem} = props;\n if(!categories || !categories.length) {\n props.context.telemetry.error('Footer content is empty, module wont render');\n return null;\n }\n return(\n \n { categories.map((category: ReactNode, index: number) => {\n return (\n \n {category}\n \n );\n })\n }\n \n );\n};\n\nexport default FooterCategoryView;","import * as React from 'react';\r\n\r\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport {\r\n ISignInItem, ISignInLoading, ISignInLocalAccount, ISignInSocialAccount, ISignInSocialItem,\r\n ISignInViewProps\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/sign-in/sign-in';\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n forgetPassword,\r\n disclaimer,\r\n error,\r\n signInButton\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: ISignInItem) => {\r\n if (item.key === 'password') {\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n \r\n );\r\n }\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n );\r\n })}\r\n {forgetPassword}\r\n {disclaimer}\r\n {error}\r\n {signInButton}\r\n \r\n );\r\n};\r\n\r\nconst SocialAccount: React.FC = ({\r\n socialAccounts,\r\n items,\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: ISignInSocialItem) => {\r\n return (\r\n \r\n {item.image}\r\n {item.text}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst SignInLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message,\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignInView: React.FC = props => {\r\n\r\n const {\r\n signIn,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n signInSection,\r\n signUpSection,\r\n signInSectionHeading,\r\n signInLocalAccount,\r\n signInSocialAccount,\r\n signUpSectionHeading,\r\n signUpDescription,\r\n signUpLink\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n \r\n {signInSectionHeading}\r\n {LocalAccount(signInLocalAccount)}\r\n {SocialAccount(signInSocialAccount)}\r\n \r\n \r\n {signUpSectionHeading}\r\n {signUpDescription}\r\n {signUpLink}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst _showPassword = () => {\r\n const passwordState = document.getElementById('password') as HTMLInputElement;\r\n const iconElement = document.getElementById('sign-in-password-icon');\r\n if (passwordState && iconElement) {\r\n passwordState.type = passwordState.type === 'password' ? 'text' : 'password';\r\n iconElement.className = iconElement.className === 'icon-show-password' ? 'icon-hide-password' :'icon-show-password';\r\n }\r\n};\r\n\r\nexport default SignInView;\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\ninterface IAccountCustomerBalanceTileInfo {\n label?: string;\n value?: string;\n verbagePrefix?: string;\n verbagePostfix?: string;\n className?: string;\n error?: string;\n}\n\nexport const ErrorComponent: React.FC = ({ error }) => (\n \n {error}\n \n);\n\nexport const CreditComponent: React.FC = ({ verbagePrefix, verbagePostfix, value, className }) => {\n return (\n
\n {verbagePrefix}\n \n {value}\n \n {verbagePostfix}\n
\n );\n};\n\nexport const InfoComponent: React.FC = ({ label, value, className }) => (\n
\n \n {label}\n \n \n {value}\n \n
\n);","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\ninterface ILinksData {\n linkText?: string;\n linkUrl: Msdyn365.ILinkData;\n ariaLabel?: string;\n openInNewTab?: boolean;\n}\n\nexport interface IAccountCustomerBalanceTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n /** The telemetry content */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountCustomerBalanceTileLinks: React.FC = ({ links, telemetryContent, onTextChange, requestContext }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n { editableLinks && editableLinks.length ?\n \n : null\n }\n
\n );\n};\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if(!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n\n linkdata.forEach((link,index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-customer-balance-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'button',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountCustomerBalanceTileLinks;","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { getTelemetryObject, Heading, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport get from 'lodash/get';\nimport { computed, reaction } from 'mobx';\nimport * as React from 'react';\nimport { IAccountCustomerBalanceTileData } from './account-customer-balance-tile.data';\nimport { IAccountCustomerBalanceTileProps } from './account-customer-balance-tile.props.autogenerated';\nimport { CreditComponent, ErrorComponent } from './components/account-customer-balance-tile-info';\nimport LinksComponent from './components/account-customer-balance-tile-links';\n\nexport interface IAccountCustomerBalanceTileViewProps extends IAccountCustomerBalanceTileProps {\n AccountCustomerBalanceTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n content: React.ReactNode;\n links: React.ReactNode;\n}\n\nexport interface IAccountCustomerBalanceTileViewState {\n isDetailsLinkDisplayed: boolean;\n content: React.ReactNode;\n}\n\n/**\n *\n * AccountCustomerBalanceTile component\n * @extends {React.Component>}\n */\nclass AccountCustomerBalanceTile extends React.Component<\n IAccountCustomerBalanceTileProps,\n IAccountCustomerBalanceTileViewState\n> {\n @computed get hasError(): boolean {\n return get(this.props, 'data.balance.status') !== 'SUCCESS';\n }\n\n private telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountCustomerBalanceTileProps) {\n super(props);\n\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n\n // @ts-ignore\n this.state = { ...this._initState() };\n\n reaction(\n () => this.hasError,\n () => {\n this.props.context.telemetry.error('Error retrieving customer account balance');\n this.setState({\n content: \n });\n }\n );\n }\n\n @computed get isCustomerAccountPaymentEnabled(): boolean {\n const customerResult = get(this.props, 'data.customerInformation.result');\n\n const allowOnAccountPayment = customerResult ? customerResult.AllowOnAccountPayment : false;\n const isB2BCustomer = customerResult ? customerResult.IsB2B : false;\n const enableCustomerAccountPayment = get(this.props, 'context.request.app.platform.enableCustomerAccountPayment');\n\n return (\n allowOnAccountPayment &&\n (enableCustomerAccountPayment === 'all' ||\n (enableCustomerAccountPayment === 'b2b' && isB2BCustomer) ||\n (enableCustomerAccountPayment === 'b2c' && !isB2BCustomer))\n );\n }\n\n public render(): JSX.Element {\n if (!this.isCustomerAccountPaymentEnabled) {\n return ;\n }\n\n const { className, heading, links } = this.props.config;\n const viewProps = {\n ...this.props,\n AccountCustomerBalanceTile: {\n moduleProps: this.props,\n className: classnames('ms-account-customer-balance-tile', className)\n },\n heading: heading && (\n \n ),\n content: this.state.content,\n links: this.state.isDetailsLinkDisplayed && (\n (event: Msdyn365.ContentEditableEvent) => void 0,\n requestContext: this.props.context.request,\n telemetryContent: this.telemetryContent\n }}\n />\n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _initState(): IAccountCustomerBalanceTileViewState {\n const account = get(this.props, 'data.balance.result');\n\n let content: React.ReactNode;\n let isDetailsLinkDisplayed = false;\n\n if (this.hasError) {\n this.props.telemetry.error('Error retrieving customer account balance');\n content = ;\n } else if (account.Balance === 0 && account.CreditLimit === 0) {\n // non-established credit\n content = ;\n } else {\n // successfully retrieved balance\n const { accountCreditVerbagePrefix, accountCreditVerbagePostfix } = this.props.resources;\n const currencyCode = get(this.props, 'context.request.channel.Currency');\n const formatCurrency = get(this.props, 'context.cultureFormatter.formatCurrency');\n const customerBalanceFormatted = `${formatCurrency(account.Balance.toFixed(2), currencyCode)}`;\n\n isDetailsLinkDisplayed = true;\n content = (\n \n );\n }\n\n return { content, isDetailsLinkDisplayed };\n }\n}\n\nexport default AccountCustomerBalanceTile;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Heading } from '@msdyn365-commerce-modules/utilities';\r\nimport { getRichTextHtml } from '@msdyn365-commerce/core';\r\nimport classname from 'classnames';\r\nimport * as React from 'react';\r\nimport { IContainerWithHeaderData } from './container-with-header.data';\r\nimport {\r\n IContainerWithHeaderConfig,\r\n IContainerWithHeaderProps,\r\n ITitleData\r\n} from './container-with-header.props.autogenerated';\r\n\r\n// ==============================================================================\r\n/**\r\n * ContainerWithHeader component\r\n * @extends {React.PureComponent>}\r\n */\r\n// ==============================================================================\r\nclass ContainerWithHeader extends React.PureComponent> {\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n public render(): JSX.Element {\r\n const { config, slots } = this.props;\r\n const hasSlots = slots && slots.contentBlock && slots.contentBlock.length;\r\n\r\n return (\r\n
\r\n {config && this._renderHeader(config)}\r\n {!config?.text && slots.contentBlockNoHeadings && this._renderSlotItems(slots.contentBlockNoHeadings)}\r\n {hasSlots && this._renderSlotItems(slots.contentBlock)}\r\n
\r\n );\r\n }\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n private _renderHeader(config: IContainerWithHeaderConfig): JSX.Element {\r\n return (\r\n
\r\n {config?.title && this._renderLinkedTitle(config)}\r\n {config?.text &&\r\n // tslint:disable-next-line:react-no-dangerous-html\r\n \r\n }\r\n
\r\n );\r\n }\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n private _renderLinkedTitle(config: IContainerWithHeaderConfig): JSX.Element | null {\r\n if (config?.link?.linkUrl?.destinationUrl) {\r\n return (\r\n \r\n {this._renderTitle(config.title!)}\r\n \r\n );\r\n } else {\r\n return this._renderTitle(config.title!);\r\n }\r\n }\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n private _renderTitle(title: ITitleData): JSX.Element | null {\r\n if (title && title?.text) {\r\n return (\r\n \r\n );\r\n }\r\n return null;\r\n }\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n private _renderSlotItems(items: React.ReactNode[]): JSX.Element {\r\n return (\r\n
\r\n {items.map((slot: React.ReactNode, index: number) => (\r\n \r\n {slot}\r\n \r\n ))}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default ContainerWithHeader;","\r\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport {\r\n ISignInItem, ISignInLoading, ISignInLocalAccount, ISignInViewProps\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/sign-in/sign-in';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n forgetPassword,\r\n disclaimer,\r\n error,\r\n signInButton\r\n}) => {\r\n return (\r\n \r\n {items && items.map((item: ISignInItem) => {\r\n if (item.key === 'password') {\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n \r\n );\r\n }\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n );\r\n })}\r\n {disclaimer}\r\n {error}\r\n {signInButton}\r\n {forgetPassword}\r\n \r\n );\r\n};\r\n\r\nconst SignInLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message,\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignInView: React.FC = props => {\r\n\r\n const {\r\n signIn,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n signInSection,\r\n signUpSection,\r\n signInSectionHeading,\r\n signInLocalAccount,\r\n signUpLink\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n \r\n {signInSectionHeading}\r\n {LocalAccount(signInLocalAccount)}\r\n \r\n \r\n {signUpLink}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst _showPassword = () => {\r\n const passwordState = document.getElementById('password') as HTMLInputElement;\r\n const iconElement = document.getElementById('showPasswordIcon');\r\n if (passwordState && iconElement) {\r\n passwordState.type = (passwordState.type === 'password') ? 'text' : 'password';\r\n iconElement.className = (iconElement.className === 'ms-sign-in__password-icon ms-sign-in__password-icon-show')\r\n ? 'ms-sign-in__password-icon ms-sign-in__password-icon-hide'\r\n : 'ms-sign-in__password-icon ms-sign-in__password-icon-show';\r\n }\r\n};\r\n\r\nexport default SignInView;\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { IModuleProps, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { ITabItemData } from './tab-item.data';\nimport { ITabItemProps } from './tab-item.props.autogenerated';\n\nexport interface ITabItemViewProps {\n TabContentContainer: IModuleProps;\n TabHeaderContainer: IModuleProps;\n tabSlots: INodeProps;\n TabItemContent: INodeProps;\n tabItemType?: TabItemType;\n tabHeader: React.ReactNode;\n}\n\nexport interface ITabItemExtentedProps extends ITabItemProps {\n tabItemType?: TabItemType;\n isSelected?: boolean;\n itemIndex?: number;\n tabId?: string;\n}\n\nexport enum TabItemType {\n TabHeader,\n TabContent\n}\n/**\n *\n * TabItem component\n * @extends {React.Component}\n */\n@observer\nclass TabItem extends React.Component {\n private moduleContentClassName: string = 'ms-tab-item-content';\n private moduleHeaderClassName: string = 'ms-tab-item-header';\n\n constructor(props: ITabItemProps) {\n super(props);\n this._renderTabHeader = this._renderTabHeader.bind(this);\n }\n\n public render(): JSX.Element {\n const { slots, renderView, config, data, isSelected, itemIndex } = this.props;\n const index = itemIndex || 0;\n const contentID = getContentID(index, this.props.tabId || '');\n const activeContentIDResult = data && data.activeTabState && data.activeTabState.result;\n const shown = activeContentIDResult && activeContentIDResult.tabId === this.props.tabId && activeContentIDResult.activeContentIndex !== undefined ?\n activeContentIDResult.activeContentIndex === index : isSelected || false;\n const viewProps = {\n ... this.props,\n TabContentContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleContentClassName, config.className)\n },\n TabHeaderContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleHeaderClassName, config.className),\n },\n TabItemContent: {\n className: 'ms-tab-item-content__content',\n tag: 'section' as NodeTag,\n 'aria-hidden': !shown,\n role: 'tabpanel',\n tabIndex: shown ? 0 : -1,\n id: contentID\n },\n tabHeader: this._renderTabHeader(),\n tabSlots: slots,\n };\n return renderView(viewProps) as React.ReactElement;\n\n }\n\n private _renderTabHeader(): React.ReactNode {\n return (\n <>\n {this.props.config.tabItemTitle}\n \n );\n }\n\n}\n\nexport const getContentID = (index: number, id: string) => {\n return `tab-item-content-${id}-${index}`;\n};\n\nexport default TabItem;","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header';\nimport { Collapse, Drawer, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport { AsyncResult } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\n\nconst headerView: React.FC = props => {\n const {\n HeaderTag,\n HeaderContainer,\n HeaderTopBarContainer,\n Divider,\n } = 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 \n {_renderReactFragment(props.menuBar)}\n \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 (\n <>{customer ? customer.FirstName || customer.Name : ''}\n );\n};\n\nfunction _renderMobileAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const {\n AccountInfoDropdownParentContainer,\n signOutLink,\n signInLink,\n data,\n accountLinks} = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames('ms-header__drawer', AccountInfoDropdownParentContainer.className, renderForMobile ? 'account-mobile' : 'account-desktop');\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(AccountInfoDropdownParentContainer.className, renderForMobile ? 'account-mobile' : 'account-desktop');\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\n ? items.map((slot: React.ReactNode, index: number) => {\n return {slot};\n })\n : null}\n \n );\n}\n\nexport default headerView;","\r\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport {\r\n ISignInItem, ISignInLoading, ISignInLocalAccount, ISignInViewProps\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/sign-in/sign-in';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n forgetPassword,\r\n disclaimer,\r\n error,\r\n signInButton\r\n}) => {\r\n return (\r\n \r\n {items && items.map((item: ISignInItem) => {\r\n if (item.key === 'password') {\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n \r\n );\r\n }\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n );\r\n })}\r\n {disclaimer}\r\n {error}\r\n {signInButton}\r\n {forgetPassword}\r\n \r\n );\r\n};\r\n\r\nconst SignInLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message,\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignInView: React.FC = props => {\r\n\r\n const {\r\n signIn,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n signInSection,\r\n signUpSection,\r\n signInSectionHeading,\r\n signInLocalAccount,\r\n signUpLink\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n \r\n {signInSectionHeading}\r\n {LocalAccount(signInLocalAccount)}\r\n \r\n \r\n {signUpLink}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst _showPassword = () => {\r\n const passwordState = document.getElementById('password') as HTMLInputElement;\r\n const iconElement = document.getElementById('showPasswordIcon');\r\n if (passwordState && iconElement) {\r\n passwordState.type = (passwordState.type === 'password') ? 'text' : 'password';\r\n iconElement.className = (iconElement.className === 'ms-sign-in__password-icon ms-sign-in__password-icon-show')\r\n ? 'ms-sign-in__password-icon ms-sign-in__password-icon-hide'\r\n : 'ms-sign-in__password-icon ms-sign-in__password-icon-show';\r\n }\r\n};\r\n\r\nexport default SignInView;\r\n","import * as React from 'react';\r\n\r\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport {\r\n ISignInItem, ISignInLoading, ISignInLocalAccount, ISignInSocialAccount, ISignInSocialItem,\r\n ISignInViewProps\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/sign-in/sign-in';\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n forgetPassword,\r\n disclaimer,\r\n error,\r\n signInButton\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: ISignInItem) => {\r\n if (item.key === 'password') {\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n \r\n );\r\n }\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n );\r\n })}\r\n {disclaimer}\r\n {error}\r\n {signInButton}\r\n
{forgetPassword}
\r\n
\r\n );\r\n};\r\n\r\nconst SocialAccount: React.FC = ({\r\n socialAccounts,\r\n items,\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: ISignInSocialItem) => {\r\n return (\r\n \r\n {item.image}\r\n {item.text}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst SignInLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message,\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignInView: React.FC = props => {\r\n\r\n const {\r\n signIn,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n signInSection,\r\n signUpSection,\r\n signInSectionHeading,\r\n signInLocalAccount,\r\n signInSocialAccount,\r\n signUpSectionHeading,\r\n signUpDescription,\r\n signUpLink\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n \r\n {signInSectionHeading}\r\n {LocalAccount(signInLocalAccount)}\r\n {SocialAccount(signInSocialAccount)}\r\n \r\n \r\n {signUpSectionHeading}\r\n {signUpDescription}\r\n {signUpLink}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst _showPassword = () => {\r\n const passwordState = document.getElementById('password') as HTMLInputElement;\r\n const iconElement = document.getElementById('sign-in-password-icon');\r\n if (passwordState && iconElement) {\r\n passwordState.type = passwordState.type === 'password' ? 'text' : 'password';\r\n iconElement.className = iconElement.className === 'icon-show-password' ? 'icon-hide-password' :'icon-show-password';\r\n }\r\n};\r\n\r\nexport default SignInView;\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport { ITabViewProps } from './tab';\n\nconst tabView: React.FC = props => {\n const { heading, TabContainer, tabHeaders, tabContents } = props;\n if(!props.heading && !props.tabHeaders && !props.tabContents) {\n props.context.telemetry.error('Tab content is empty, module wont render');\n return null;\n }\n return (\n \n \n {heading}\n \n \n {tabHeaders}\n \n \n {tabContents}\n \n \n );\n};\n\nexport default tabView;","import * as React from 'react';\r\n\r\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport {\r\n ISignInItem, ISignInLoading, ISignInLocalAccount, ISignInSocialAccount, ISignInSocialItem,\r\n ISignInViewProps\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/sign-in/sign-in';\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n forgetPassword,\r\n disclaimer,\r\n error,\r\n signInButton\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: ISignInItem) => {\r\n if (item.key === 'password') {\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n \r\n );\r\n }\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n );\r\n })}\r\n {disclaimer}\r\n {error}\r\n {signInButton}\r\n
{forgetPassword}
\r\n
\r\n );\r\n};\r\n\r\nconst SocialAccount: React.FC = ({\r\n socialAccounts,\r\n items,\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: ISignInSocialItem) => {\r\n return (\r\n \r\n {item.image}\r\n {item.text}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst SignInLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message,\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignInView: React.FC = props => {\r\n\r\n const {\r\n signIn,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n signInSection,\r\n signUpSection,\r\n signInSectionHeading,\r\n signInLocalAccount,\r\n signInSocialAccount,\r\n signUpSectionHeading,\r\n signUpDescription,\r\n signUpLink\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n \r\n {signInSectionHeading}\r\n {LocalAccount(signInLocalAccount)}\r\n {SocialAccount(signInSocialAccount)}\r\n \r\n \r\n {signUpSectionHeading}\r\n {signUpDescription}\r\n {signUpLink}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst _showPassword = () => {\r\n const passwordState = document.getElementById('password') as HTMLInputElement;\r\n const iconElement = document.getElementById('sign-in-password-icon');\r\n if (passwordState && iconElement) {\r\n passwordState.type = passwordState.type === 'password' ? 'text' : 'password';\r\n iconElement.className = iconElement.className === 'icon-show-password' ? 'icon-hide-password' :'icon-show-password';\r\n }\r\n};\r\n\r\nexport default SignInView;\r\n","import * as React from 'react';\r\n\r\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport {\r\n ISignInItem, ISignInLoading, ISignInLocalAccount, ISignInSocialAccount, ISignInSocialItem,\r\n ISignInViewProps\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/sign-in/sign-in';\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n forgetPassword,\r\n disclaimer,\r\n error,\r\n signInButton\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: ISignInItem) => {\r\n if (item.key === 'password') {\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n \r\n );\r\n }\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n );\r\n })}\r\n {disclaimer}\r\n {error}\r\n {signInButton}\r\n
{forgetPassword}
\r\n
\r\n );\r\n};\r\n\r\nconst SocialAccount: React.FC = ({\r\n socialAccounts,\r\n items,\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: ISignInSocialItem) => {\r\n return (\r\n \r\n {item.image}\r\n {item.text}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst SignInLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message,\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignInView: React.FC = props => {\r\n\r\n const {\r\n signIn,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n signInSection,\r\n signUpSection,\r\n signInSectionHeading,\r\n signInLocalAccount,\r\n signInSocialAccount,\r\n signUpSectionHeading,\r\n signUpDescription,\r\n signUpLink\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n \r\n {signInSectionHeading}\r\n {LocalAccount(signInLocalAccount)}\r\n {SocialAccount(signInSocialAccount)}\r\n \r\n \r\n {signUpSectionHeading}\r\n {signUpDescription}\r\n {signUpLink}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst _showPassword = () => {\r\n const passwordState = document.getElementById('password') as HTMLInputElement;\r\n const iconElement = document.getElementById('sign-in-password-icon');\r\n if (passwordState && iconElement) {\r\n passwordState.type = passwordState.type === 'password' ? 'text' : 'password';\r\n iconElement.className = iconElement.className === 'icon-show-password' ? 'icon-hide-password' :'icon-show-password';\r\n }\r\n};\r\n\r\nexport default SignInView;\r\n","import {\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: {tag: Modal, className: 'ms-loyalty-terms__modal', toggle: props.onToggle, applicationNode: 'renderPage', isOpen: props.isOpen, returnFocusRef: props.returnRef},\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 submitButton: ,\n heading:

{props.resources.loyaltyTermsHeading}

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

{props.resources.loyaltyAgreeToTerms}

\n };\n};","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { GetLoyaltyCardInput, issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { getLoyaltyCardAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\n\nimport {\n Button,\n getTelemetryObject,\n IModuleProps,\n ITelemetryContent\n} from '@msdyn365-commerce-modules/utilities';\nimport { getUrlSync } from '@msdyn365-commerce/core';\nimport classname from 'classnames';\nimport * as React from 'react';\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 toggleRef: React.RefObject;\n private 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(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\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 (let i = 0; i < qsps.length; i++) {\n const splitQsp = qsps[i].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 render(): JSX.Element | null {\n const {\n config: { className, hideToggle },\n resources,\n slots: { serviceTerms },\n data: { loyaltyCard },\n context: {\n request: {\n user: {\n isAuthenticated\n }\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 modal: isAuthenticated && loyaltyCard.result && loyaltyCard.result.CardNumber === undefined && 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(new GetLoyaltyCardInput(this.props.context.request.apiSettings), fullCard);\n })\n .catch((error: Error) => {\n this.props.context.actionContext.update(new GetLoyaltyCardInput(this.props.context.request.apiSettings), card);\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;","import * as React from 'react';\r\n\r\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport {\r\n ISignInItem, ISignInLoading, ISignInLocalAccount, ISignInSocialAccount, ISignInSocialItem,\r\n ISignInViewProps\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/sign-in/sign-in';\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n forgetPassword,\r\n disclaimer,\r\n error,\r\n signInButton\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: ISignInItem) => {\r\n if (item.key === 'password') {\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n \r\n );\r\n }\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n );\r\n })}\r\n {disclaimer}\r\n {error}\r\n {signInButton}\r\n
\r\n {forgetPassword}\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst SocialAccount: React.FC = ({\r\n socialAccounts,\r\n items,\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: ISignInSocialItem) => {\r\n return (\r\n \r\n {item.image}\r\n {item.text}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst SignInLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message,\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignInView: React.FC = props => {\r\n\r\n const {\r\n signIn,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n signInSection,\r\n signUpSection,\r\n signInSectionHeading,\r\n signInLocalAccount,\r\n signInSocialAccount,\r\n signUpSectionHeading,\r\n signUpDescription,\r\n signUpLink\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n \r\n {signInSectionHeading}\r\n {LocalAccount(signInLocalAccount)}\r\n {SocialAccount(signInSocialAccount)}\r\n \r\n \r\n {signUpSectionHeading}\r\n {signUpDescription}\r\n {signUpLink}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst _showPassword = () => {\r\n const passwordState = document.getElementById('password') as HTMLInputElement;\r\n const iconElement = document.getElementById('sign-in-password-icon');\r\n if (passwordState && iconElement) {\r\n passwordState.type = passwordState.type === 'password' ? 'text' : 'password';\r\n iconElement.className = iconElement.className === 'icon-show-password' ? 'icon-hide-password' :'icon-show-password';\r\n }\r\n};\r\n\r\nexport default SignInView;\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nexport interface IAccountLoyaltyLabel {\n className?: string;\n text?: string | number;\n}\n\nexport const AccountLoyaltyLabel: React.FC = ({ className, text }) => (\n

{ text }

\n);\n\nexport interface IAccountLoyaltyModalLabel {\n className?: string;\n text?: string | number;\n labelFor?: string;\n}\n\nexport const AccountLoyaltyModalLabel: React.FC = ({ className, text, labelFor }) => (\n \n);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Button, format, getPayloadObject, getTelemetryAttributes, getTelemetryObject, IModuleProps, INodeProps, IPayLoad, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { LoyaltyCard, LoyaltyRewardPoint, LoyaltyRewardPointActivity } from '@msdyn365-commerce/retail-proxy';\nimport { getLoyaltyRewardPointActivityTimelineAsync, getLoyaltyRewardPointsExpiringSoonAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { IAccountLoyaltyData } from './account-loyalty.data';\nimport { IAccountLoyaltyProps } from './account-loyalty.props.autogenerated';\nimport { AccountLoyaltyLabel, AccountLoyaltyModalLabel } from './components';\n\nexport interface IAccountLoyaltyViewProps extends IAccountLoyaltyProps<{}> {\n AccountLoyalty: IModuleProps;\n className: string;\n totalPoints: number;\n heading?: React.ReactNode;\n Info: INodeProps;\n infoLabel: React.ReactNode;\n cardNumber: React.ReactNode;\n joinDate: React.ReactNode;\n Points: INodeProps;\n pointsLabel: React.ReactNode;\n points: React.ReactNode;\n Breakdown: INodeProps;\n RewardPoints: INodeProps;\n PointsBreakdown: INodeProps;\n rewardPoints?: IAccountLoyaltyRewardPointProps[];\n Button: INodeProps;\n homeButton: React.ReactNode;\n pointsModal: IAccountLoyaltyModalProps;\n}\n\nexport interface IAccountLoyaltyState {\n isModalOpen: boolean;\n currentModalData?: LoyaltyRewardPoint;\n isModalExpiring: boolean;\n modalID: string;\n currentFocus?: React.RefObject;\n pointsActivity: LoyaltyRewardPointActivity[] | undefined;\n}\n\nexport interface IAccountLoyaltyRewardPointProps {\n label: React.ReactNode;\n availableModalLabel: React.ReactNode;\n availableModalTrigger: React.ReactNode;\n expiringModalLabel: React.ReactNode;\n expiringModalTrigger: React.ReactNode;\n}\n\nexport type horizontalModalPosition = 'left' | 'center' | 'right';\nexport type verticalModalPosition = 'top' | 'center' | 'bottom';\n\nexport interface IAccountLoyaltyModalProps {\n isOpen: boolean;\n horizontalPosition?: horizontalModalPosition;\n verticalPosition?: verticalModalPosition;\n modalClassName?: string;\n modalHeaderClassName?: string;\n modalHeader?: string;\n modalBodyClassName?: string;\n ModalBodyTop: INodeProps;\n pointsDescription?: React.ReactNode;\n totalPoints?: React.ReactNode;\n ModalBodyHeaders: INodeProps;\n date?: React.ReactNode;\n balanceLabel?: React.ReactNode;\n rewardPointsActivity?: IAccountLoyaltyActivityProps[];\n returnFocusRef?: React.RefObject;\n onClose(): void;\n}\n\nexport interface IAccountLoyaltyActivityProps {\n Activity: INodeProps;\n activityType: React.ReactNode;\n activityDate: React.ReactNode;\n activityPoints: React.ReactNode;\n}\n\nexport interface IProps extends IAccountLoyaltyProps { }\n\n/**\n *\n * AccountLoyalty component\n * @extends {React.Component>}\n */\n@observer\nclass AccountLoyalty extends React.PureComponent {\n private _buttonAvailableRef: React.RefObject;\n private _buttonExpireRef: React.RefObject;\n private telemetryContent?: ITelemetryContent;\n private payLoad: IPayLoad;\n\n constructor(props: IAccountLoyaltyProps) {\n super(props);\n this._buttonAvailableRef = React.createRef();\n this._buttonExpireRef = React.createRef();\n this.state = {\n isModalOpen: false,\n currentModalData: undefined,\n isModalExpiring: false,\n modalID: '',\n pointsActivity: undefined\n };\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n this.payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.BackToShopping);\n }\n\n public render(): JSX.Element | null {\n const { className, heading } = this.props.config;\n const { loyaltyCard } = this.props.data;\n const { loyaltyCardLabel, totalAvailablePointsLabel, backToShoppingText } = this.props.resources;\n const { actionContext } = this.props.context;\n const { isModalOpen } = this.state;\n const backToShopAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n\n if (!loyaltyCard || !loyaltyCard.result || !loyaltyCard.result.CardNumber) {\n this.props.context.telemetry.error('Loyalty card content is empty, module wont render');\n return null;\n }\n\n const loyaltyCardData = loyaltyCard.result;\n const rewardPoints = loyaltyCard && loyaltyCardData.RewardPoints;\n const homeLink = Msdyn365.getUrlSync('home', actionContext) || '';\n\n const viewProps = {\n ...this.props,\n AccountLoyalty: {\n moduleProps: this.props,\n className: classnames('ms-account-loyalty', className),\n },\n totalPoints: rewardPoints && this._getTotalPoints(),\n className: classnames('msc-account-loyalty', className),\n rewardPoints: loyaltyCardData.RewardPoints && loyaltyCardData.RewardPoints.length > 0 && this._renderRewardPoints(loyaltyCardData),\n pointsModal: isModalOpen && this._renderModal() || { isOpen: false, returnFocusRef: this.state.currentFocus },\n Info: { className: 'ms-account-loyalty__info' },\n Points: { className: 'ms-account-loyalty__points' },\n Breakdown: { className: 'ms-account-loyalty__breakdown' },\n RewardPoints: { className: 'ms-account-loyalty__reward-points' },\n PointsBreakdown: { className: 'ms-account-loyalty__point-breakdown' },\n Button: { className: 'ms-account-loyalty__link' },\n heading: heading &&\n (\n \n ),\n\n // account info\n infoLabel:\n (\n \n ),\n cardNumber:\n (\n \n ),\n joinDate:\n (\n \n ),\n\n // points\n pointsLabel:\n (\n \n ),\n points: rewardPoints &&\n (\n \n ),\n\n homeButton: rewardPoints &&\n (\n \n { backToShoppingText }\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 private _formatJoinDate(date: Date): string {\n return format(this.props.resources.joinDateFormatted,\n new Intl.DateTimeFormat(this.props.context.actionContext.requestContext.locale, { month: 'long', day: 'numeric', year: 'numeric' }).format(new Date(date)));\n }\n\n private _renderRewardPoints(loyaltyCard: LoyaltyCard): IAccountLoyaltyRewardPointProps[] {\n return loyaltyCard.RewardPoints!.map((loyaltyPoints, index) => {\n const availableId = loyaltyPoints.RewardPointId && `${ loyaltyPoints.RewardPointId }-available-${ index }` || 'available-points';\n const expiringId = loyaltyPoints.RewardPointId && `${ loyaltyPoints.RewardPointId }-expiring-${ index }` || 'expiring-points';\n const { availablePointsLabel, expiringPointsFormatLabel } = this.props.resources;\n this.payLoad.contentAction.etext = TelemetryConstant.AvailablePoints;\n const availablePointsAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = TelemetryConstant.ExpiringPoints;\n const expiringPointsAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n\n return ({\n label:\n (\n \n ),\n availableModalLabel: loyaltyPoints.ActivePoints !== undefined &&\n (\n \n ),\n availableModalTrigger: loyaltyPoints.ActivePoints !== undefined &&\n (\n \n {loyaltyPoints.ActivePoints.toString()}\n \n ),\n expiringModalLabel: loyaltyPoints.PointsExpiringSoon !== undefined &&\n (\n \n ),\n expiringModalTrigger: loyaltyPoints.PointsExpiringSoon !== undefined &&\n (\n \n {loyaltyPoints.PointsExpiringSoon.toString()}\n \n )\n });\n });\n }\n\n private _renderModal(): IAccountLoyaltyModalProps | null {\n const { totalAvailablePointsLabel, loyaltyActivityDateLabel, loyaltyActivityBalanceLabel } = this.props.resources;\n const { isModalOpen, currentModalData } = this.state;\n\n if (!isModalOpen || !currentModalData) {\n // return empty modal\n this.props.context.telemetry.error('Account loyalty modal content is empty, module wont render');\n return null;\n }\n\n return {\n isOpen: isModalOpen,\n returnFocusRef: this.state.currentFocus,\n horizontalPosition: 'center',\n verticalPosition: 'center',\n modalClassName: 'ms-account-loyalty__points-modal',\n modalHeaderClassName: 'ms-account-loyalty__points-modal-header',\n modalHeader: currentModalData.Description || '',\n modalBodyClassName: 'ms-account-loyalty__points-modal-body',\n ModalBodyTop: { className: 'ms-account-loyalty__points-modal-body-top' },\n ModalBodyHeaders: { className: 'ms-account-loyalty__points-modal-body-header' },\n rewardPointsActivity: this._renderPointsActivity(),\n pointsDescription:\n (\n \n ),\n totalPoints:\n (\n \n ),\n date:\n (\n \n ),\n balanceLabel:\n (\n \n ),\n onClose: this._closeModal\n };\n }\n\n private _getTotalPoints(): number {\n const rewardPoints = this.props.data.loyaltyCard.result && this.props.data.loyaltyCard.result.RewardPoints;\n\n let total = 0;\n rewardPoints!.forEach(loyaltyPoints => {\n total += loyaltyPoints.ActivePoints || 0;\n });\n\n return total;\n }\n\n private _getPoints(): string {\n const { currentModalData, isModalExpiring } = this.state;\n\n return `${(isModalExpiring ? currentModalData!.PointsExpiringSoon : currentModalData!.ActivePoints) || 0}`;\n }\n\n private _renderPointsActivity(): IAccountLoyaltyActivityProps[] | undefined {\n const { pointsActivity } = this.state;\n\n if (!pointsActivity) {\n this.props.context.telemetry.error('Points activity content is empty, module wont render');\n return undefined;\n }\n\n return pointsActivity.map((activity) => {\n return ({\n Activity: { className: 'ms-account-loyalty__points-modal-activity' },\n activityType:\n (\n \n ),\n activityDate:\n (\n \n ),\n activityPoints:\n (\n \n )\n });\n });\n }\n\n private _parseDate(date: Date | string): Date {\n /* Dates for loyalty are coming as formatted strings yyyy-mm-ddT:00:00.000z\n Javascript was interpreting this as an iso format, thus causing the wrong date to be rendered */\n if (typeof date === 'string') {\n let dateString = date.toString();\n dateString = dateString.replace(/-/g, '/');\n dateString = dateString.substring(0, 10);\n return new Date(dateString);\n } else {\n return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n }\n }\n\n private _getTimelineType(pointActivity: LoyaltyRewardPointActivity): string {\n if (pointActivity.LoyaltyRewardPointTimelineEntryType) {\n return pointActivity.LoyaltyRewardPointTimelineEntryType;\n }\n\n const { earnedPointsLabel, redeemedPointsLabel, adjustedPointsLabel, refundedPointsLabel } = this.props.resources;\n switch (pointActivity.ExtensibleLoyaltyRewardPointActivityEntryTypeValue) {\n case 1:\n return earnedPointsLabel;\n case 2:\n return refundedPointsLabel;\n case 3:\n return redeemedPointsLabel;\n case 5:\n return adjustedPointsLabel;\n default:\n return '';\n }\n }\n\n private _populateModalData = (focusRef: React.RefObject, loyaltyCard: LoyaltyCard, currentLoyaltyPoints: LoyaltyRewardPoint, expiring: boolean) => () => {\n if (!loyaltyCard || !loyaltyCard.CardNumber || !currentLoyaltyPoints.RewardPointId) {\n this.props.context.telemetry.error('Modal data is empty, module wont render');\n return null;\n }\n\n const { actionContext } = this.props.context;\n // open modal\n this.setState({\n isModalOpen: true,\n currentModalData: currentLoyaltyPoints,\n isModalExpiring: expiring,\n modalID: '',\n currentFocus: focusRef,\n });\n\n if (expiring) {\n getLoyaltyRewardPointsExpiringSoonAsync({ callerContext: actionContext, queryResultSettings: {} }, loyaltyCard.CardNumber, currentLoyaltyPoints.RewardPointId, 30)\n .then((points: LoyaltyRewardPointActivity[]) => {\n this.setState({pointsActivity: points});\n })\n .catch((error: Error) => {\n this.props.telemetry.exception(error);\n this.props.telemetry.debug('Failed to get reward point activity');\n });\n } else {\n getLoyaltyRewardPointActivityTimelineAsync({ callerContext: actionContext, queryResultSettings: {} }, loyaltyCard.CardNumber, currentLoyaltyPoints.RewardPointId)\n .then((points: LoyaltyRewardPointActivity[]) => {\n this.setState({pointsActivity: points});\n })\n .catch((error: Error) => {\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Failed to get reward point activity');\n });\n }\n\n return;\n }\n\n private _closeModal = () => {\n this.setState({\n isModalOpen: false,\n currentModalData: undefined,\n pointsActivity: undefined\n });\n }\n}\n\nexport default AccountLoyalty;\n","import * as React from 'react';\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\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 \n {modal.heading}\n \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","import * as React from 'react';\r\n\r\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport {\r\n ISignInItem, ISignInLoading, ISignInLocalAccount, ISignInSocialAccount, ISignInSocialItem,\r\n ISignInViewProps\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/sign-in/sign-in';\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n forgetPassword,\r\n disclaimer,\r\n error,\r\n signInButton\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: ISignInItem) => {\r\n if (item.key === 'password') {\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n \r\n );\r\n }\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n );\r\n })}\r\n {disclaimer}\r\n {error}\r\n {signInButton}\r\n
\r\n {forgetPassword}\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst SocialAccount: React.FC = ({\r\n socialAccounts,\r\n items,\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: ISignInSocialItem) => {\r\n return (\r\n \r\n {item.image}\r\n {item.text}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst SignInLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message,\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignInView: React.FC = props => {\r\n\r\n const {\r\n signIn,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n signInSection,\r\n signUpSection,\r\n signInSectionHeading,\r\n signInLocalAccount,\r\n signInSocialAccount,\r\n signUpSectionHeading,\r\n signUpDescription,\r\n signUpLink\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n \r\n {signInSectionHeading}\r\n {LocalAccount(signInLocalAccount)}\r\n {SocialAccount(signInSocialAccount)}\r\n \r\n \r\n {signUpSectionHeading}\r\n {signUpDescription}\r\n {signUpLink}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst _showPassword = () => {\r\n const passwordState = document.getElementById('password') as HTMLInputElement;\r\n const iconElement = document.getElementById('sign-in-password-icon');\r\n if (passwordState && iconElement) {\r\n passwordState.type = passwordState.type === 'password' ? 'text' : 'password';\r\n iconElement.className = iconElement.className === 'icon-show-password' ? 'icon-hide-password' :'icon-show-password';\r\n }\r\n};\r\n\r\nexport default SignInView;\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\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 }) => (\n \n {salesLine}\n {buyAgainButton}\n \n);\n\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count, trackingInfo, shippedStatusCheck }) => (\n \n {heading}\n {count}\n {shippedStatusCheck === 'shipped' ? null : trackingInfo}\n \n);\n\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines }) => (\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 {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 = ({ orderSummaryProps, heading, subtotal, shipping, tax, totalAmount, earnedPoints }) => (\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 heading,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {groups && }\n \n {orderSummary && }\n {payment && }\n \n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nimport { Modal, ModalBody, ModalHeader, Module, Node } from '@msdyn365-commerce-modules/utilities';\n\nimport { IAccountLoyaltyViewProps } from './account-loyalty';\n\nconst AccountLoyaltyView: React.FC = props => {\n\n const { AccountLoyalty, Info, Points, Breakdown, RewardPoints, PointsBreakdown, Button, heading, infoLabel, cardNumber, joinDate, pointsLabel, points, rewardPoints, homeButton, pointsModal } = props;\n const { ModalBodyTop, ModalBodyHeaders } = pointsModal;\n return (\n \n {heading}\n \n {infoLabel}\n {cardNumber}\n {joinDate}\n \n \n {pointsLabel}\n {points}\n\n \n {rewardPoints && rewardPoints.map((activity, index) => {\n return (\n // tslint:disable-next-line:jsx-key\n \n {activity.label}\n \n {activity.availableModalLabel}\n {activity.availableModalTrigger}\n \n\n \n {activity.expiringModalLabel}\n {activity.expiringModalTrigger}\n \n \n );\n })}\n \n \n\n \n {homeButton}\n \n\n {!pointsModal.isOpen &&\n ||\n \n\n \n {pointsModal.modalHeader}\n \n \n \n {pointsModal.pointsDescription}\n {pointsModal.totalPoints}\n \n \n {pointsModal.date}\n {pointsModal.balanceLabel}\n \n {pointsModal.rewardPointsActivity && pointsModal.rewardPointsActivity.map((activity, index) => {\n const { Activity, activityType, activityDate, activityPoints } = activity;\n return (\n \n {activityType}\n {activityDate}\n {activityPoints}\n \n );\n })}\n \n \n }\n \n );\n};\n\nexport default AccountLoyaltyView;\n","\r\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport {\r\n ISignInItem, ISignInLoading, ISignInLocalAccount, ISignInViewProps\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/sign-in/sign-in';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n forgetPassword,\r\n disclaimer,\r\n error,\r\n signInButton\r\n}) => {\r\n return (\r\n \r\n {items && items.map((item: ISignInItem) => {\r\n if (item.key === 'password') {\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n \r\n );\r\n }\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n );\r\n })}\r\n {disclaimer}\r\n {error}\r\n {signInButton}\r\n {forgetPassword}\r\n \r\n );\r\n};\r\n\r\nconst SignInLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message,\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignInView: React.FC = props => {\r\n\r\n const {\r\n signIn,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n signInSection,\r\n signUpSection,\r\n signInSectionHeading,\r\n signInLocalAccount,\r\n signUpLink\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n \r\n {signInSectionHeading}\r\n {LocalAccount(signInLocalAccount)}\r\n \r\n \r\n {signUpLink}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst _showPassword = () => {\r\n const passwordState = document.getElementById('password') as HTMLInputElement;\r\n const iconElement = document.getElementById('showPasswordIcon');\r\n if (passwordState && iconElement) {\r\n passwordState.type = (passwordState.type === 'password') ? 'text' : 'password';\r\n iconElement.className = (iconElement.className === 'ms-sign-in__password-icon ms-sign-in__password-icon-show')\r\n ? 'ms-sign-in__password-icon ms-sign-in__password-icon-hide'\r\n : 'ms-sign-in__password-icon ms-sign-in__password-icon-show';\r\n }\r\n};\r\n\r\nexport default SignInView;\r\n"],"sourceRoot":""}